Вопросы по CLEO-скриптингу

artF

Новичок
24
0
Ты что хочешь вывести то? Пример на него ориентирую.

Мне нужен массив, в котором будут храниться пара "ид"="имя"
И сделать проверку таким образом
Если 4@ существует в массиве(т.е есть такой ид(4@ это ид модели)) то вывести сообщение в котором будет использовано значение этого ключа
0AF8: samp add_message_to_chat " (%d)" -1 Массив[4@]
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Так..
Опять кривожоплю.
Код:
var
$SkinArray: array 59 of String
end
s$SkinArray[287] = 'Army'
s$SkinArray[191] = 'ArmyGirl'
if $SkinArray[14@]!=''
    then
        0AF8: samp add_message_to_chat " %s[%d](%.1f)(%d)" -1 6@ 0@ 5@ $SkinArray[14@]
    else
        0AF8: samp add_message_to_chat " %s[%d](%.1f)(%d)" -1 6@ 0@ 5@ 14@
end

Условие не выполняется. Как получить значение ключа массива? Что не так делаю?
Нужно так, чтобы если приходящее число было в массиве(т.е ключ) то вывести значение этого ключа. Иначе, вывести сам ключ(т,е приходящее число)


В Cleo есть глобальные $ и локальные @ переменные, глобальные используются очень редко $, массивы те что выше также нежелательны к использованию.
s$SkinArray[287] = 'Army' такие присваивания не поддерживаются
$SkinArray[14@]!='' такие сравнения тоже, нет ничего общего с php, все действия со строками в основном происходят через память
теперь к вопросу о выборе! не стоит влаживать условия один в один. стоит просто записывать их последовательно с прыжками по меткам и.т.д.

а для той задачи которая стоит нужны hex буферы текста одинакового размера
:buf
hex
"123456789" 00 //каждая строка 10 байт
"123456789" 00
"123456789" 00
"123456789" 00
end
:kod
//допустим получили ключ 3 в переменной 1@
0AC6: 0@ = label @buf offset
1@ *= 10 //Смещение
0@ += 1@
//теперь 0@ указывает на 4 строку
//указатель можно юзать в опкодах вывода текста и прочее %s 0@
а вообще дохера способов есть, авот готового map нет :/

крч если нужно неупорядоченно а по id поиметь массив то как вариант составить буфер типа
значение - смещение и перебирать циклом а по нужным смещениям во втором буфере расставить текст
:bufmap
hex //2 байта id ключ, 2 байта смещение
00000000
00000000
end
:buftext
hex
"смещение 0" 00
...
"смещение 40" 00
end
цикл

for 30@ = 0 to 1 //2 итерации
0AC6: 0@ = label @bufmap offset
0A8D: 1@ = read_memory 0@ size 2 virtual_protect 0
if 1@ == 4@
then
0@ += 2
0A8D: 1@ = read_memory 0@ size 2 virtual_protect 0
jump @exit
end
0@ += 4
end
//default
:exit
0AC6: 0@ = label @text offset
0@ += 1@
в 0@ указатель на строку
 
  • Нравится
Реакции: artF

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Мне нужен массив, в котором будут храниться пара "ид"="имя"
И сделать проверку таким образом
Если 4@ существует в массиве(т.е есть такой ид(4@ это ид модели)) то вывести сообщение в котором будет использовано значение этого ключа
0AF8: samp add_message_to_chat " (%d)" -1 Массив[4@]

У тебя несколько будет скинов или все?
 

АндрейЧотак

Известный
80
10
напиши до сравнения
var
13@: int
2@v: int
end

Переменная 13@ не объявлена.

Крч
Вот код:
Код:
{$CLEO .cs}
thread "Bri"
 
if not 0@ = SAMP.Base()    //
then 0A93: end_custom_thread//------------
end                        //  Âûçîâ  -
while not SAMP.Available()  // Sampfuncs -
        wait 100            // -----------
end                        //
 
 
0B34: samp register_client_command "Mstyle_Dno" to_label @ts1
 
alloc 8@ 256
if
8AE4:  not directory_exists "Cleo\INI"
then
0AE5: create_directory "Cleo\INI"
end
if
0AAB:  file_exists "CLEO\INI\testing.ini"
then
0AF4: 8@ = read_string_from_ini_file "CLEO\INI\testing.ini" section "TEST" key "MstyleDno"
else
0AF5: write_string "5" to_ini_file "CLEO\INI\testing.ini" section "TEST" key "MstyleDno"
end
 
 
while true
wait 0
if 12@ == 1
then
13@ += 1
wait 500
0AF8: samp add_message_to_chat "> ================================== <" color 0x666666
0AF4: 2@v = read_string_from_ini_file "CLEO\INI\testing.ini" section "TEST" key "MstyleDno"
var
2@v: int
13@: int
if 13@ == 2@v
then
12@ = false
13@ = 1
end
end
end
end
 
:ts1
if 12@ == 0
then
12@ = true
else
12@ = false
end
SAMP.CmdRet()
 

SR_team

like pancake
BH Team
4,720
6,370
Переменная 13@ не объявлена.

Крч
Вот код:
Код:
{$CLEO .cs}
thread "Bri"
 
if not 0@ = SAMP.Base()    //
then 0A93: end_custom_thread//------------
end                        //  Âûçîâ  -
while not SAMP.Available()  // Sampfuncs -
        wait 100            // -----------
end                        //
 
 
0B34: samp register_client_command "Mstyle_Dno" to_label @ts1
 
alloc 8@ 256
if
8AE4:  not directory_exists "Cleo\INI"
then
0AE5: create_directory "Cleo\INI"
end
if
0AAB:  file_exists "CLEO\INI\testing.ini"
then
0AF4: 8@ = read_string_from_ini_file "CLEO\INI\testing.ini" section "TEST" key "MstyleDno"
else
0AF5: write_string "5" to_ini_file "CLEO\INI\testing.ini" section "TEST" key "MstyleDno"
end
 
 
while true
wait 0
if 12@ == 1
then
13@ += 1
wait 500
0AF8: samp add_message_to_chat "> ================================== <" color 0x666666
0AF4: 2@v = read_string_from_ini_file "CLEO\INI\testing.ini" section "TEST" key "MstyleDno"
var
2@v: int
13@: int
if 13@ == 2@v
then
12@ = false
13@ = 1
end
end
end
end
 
:ts1
if 12@ == 0
then
12@ = true
else
12@ = false
end
SAMP.CmdRet()

Вопервых ты енд проебал, во вторых юзай табуляцию
 

TheMonstercat

Известный
75
11
Hey i need something to remove the Bullet Tracer on Lagcomp Off servers...
I got a Patch for but somehow it only works on lagcomp on :/
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
  • Нравится
Реакции: loremi735 и SR_team

vladikf1

Новичок
20
0
Как доставать значение из текста в чате.. ну или как называется я хз.
Допустим: Вас забанили на %d дней
как узнать %d??
Капец как надо и не найти нечего..
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Как доставать значение из текста в чате.. ну или как называется я хз.
Допустим: Вас забанили на %d дней
как узнать %d??
Капец как надо и не найти нечего..

0AD4: 1@ = scan_string 0@ format "Вас забанили на %d" 2@
0@ - текст с цифрой
2@ - цифра
 
  • Нравится
Реакции: vladikf1