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

D3.Pheonix

🎹
Модератор
2,821
1,601
Нужно сделать так чтобы клко работало только на одном сервере уже создавал тему с таким де вопросом и мне даже ответили я уже поход понял как получать название и ip сервера(( возможно. Если не сложно объясните это ещё )) но я непонял что делать дальше. По нику можете понять кто я...
Далее сравниваешь строку с ip и порт
Если условие не выполняется, то end custom thread
Порт вроде int, а ip - string
 
Последнее редактирование:

ARMOR

kjor32 is legend
Модератор
4,847
6,106
Далее сравниваешь строку с ip и порт
Если условие не выполняется, то end custom thread
Порт вроде int, а ip - string
Вот именно этого я не понимаю, я просто +- неделю полторы Клео учу, и сделал скрипт который удаляет TextDraw лога Аризоны и редрерит мою текстуру-лого и ставит на нужные координаты и на монсере меня бесит это лого и нужно как-то сделать работу только на Розе
 

D3.Pheonix

🎹
Модератор
2,821
1,601
Вот именно этого я не понимаю, я просто +- неделю полторы Клео учу, и сделал скрипт который удаляет TextDraw лога Аризоны и редрерит мою текстуру-лого и ставит на нужные координаты и на монсере меня бесит это лого и нужно как-то сделать работу только на Розе
Вот тебе в пример условие для проверки ip:
0C21: stricmp string1 4@ string2 "192.168.0.1"
Порт можешь сравнить обычной проверкой числа
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,776
11,230
Как можно "отсортировать" сообщения по определенному слову? Например, мне надо, что бы ВСЕ сообщения, которые содержат "123" записывались в переменную 1@.
 

xzolxzolxzol

Новичок
14
1
как отключить данную анимацию? не поставить ей время, а именно вовсе отключить
-AHeqgvEnqs.jpg
 

xzolxzolxzol

Новичок
14
1
Удали эту строку
чуток не так понял, это код клео которое ускоряет эту анимацию, а мне нужно чтобы при запросе проигровки этой анимации, ее вовсе не было(те антистан)
Удали эту строку или скинь весь код чтобы картина была ясна
тут:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP

:Noname_2
wait 0
   SAMP.Available
else_jump @Noname_2
wait 14000
chatmsg "[PrivateFastStun by AIR]: {FFFFFF}Loaded! (/FastStun [Float {ff0000}(0.1 - 10.0){ffffff}])" 3394611
0B34: samp register_client_command "FastStun" to_label @Noname_838
2@ = 1.0
if
0AAB:   file_exists "CLEO\FastStun.ini"
else_jump @Noname_227
0AF2: 2@ = get_float_from_ini_file "CLEO\FastStun.ini" section "FastStun" key "Speed"
jump @Noname_311

:Noname_227
0AF3: write_float 1.0 to_ini_file "CLEO\FastStun.ini" section "FastStun" key "Speed"
0AF2: 2@ = get_float_from_ini_file "CLEO\FastStun.ini" section "FastStun" key "Speed"

:Noname_311
wait 0
0393: actor $PLAYER_ACTOR perform_animation "DAM_armL_frmBK" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_armL_frmFT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_armL_frmLT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_armR_frmBK" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_armR_frmFT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_armR_frmRT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_LegL_frmBK" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_LegL_frmFT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_LegL_frmLT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_LegR_frmBK" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_LegR_frmFT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_LegR_frmRT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_stomach_frmBK" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_stomach_frmFT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_stomach_frmLT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_stomach_frmRT" at 2@ times_normal_rate
if and
0ADC:   test_cheat "XX"
  2@ > 0.0
   not 2@ > 200.0
else_jump @Noname_831
2@ = 1.0
0AF3: write_float 2@ to_ini_file "CLEO\FastStun.ini" section "FastStun" key "Speed"
0C48: samp textdraw 56 create "/" pos 3.0 1.0
0C4C: samp textdraw 56 set_style 2
wait 300
0C5E: samp textdraw 56 delete

:Noname_831
jump @Noname_311

:Noname_838
   SAMP.IsCommandTyped(1@)
if
0AD4: 3@ = scan_string 1@ format "%f" 5@
else_jump @Noname_1110
if and
  5@ >= 0.0
   not 5@ > 200.0
else_jump @Noname_1110
0087: 2@ = 5@ // (float)
chatmsg "[PrivateFastStun by AIR]: {ffffff}Установлена скорость: {66FF33}%.1f" 3394611 2@
chatmsg "[PrivateFastStun by AIR]: {ffffff}Стандартная скорость: {ff0000}1.0" 3394611
0AF3: write_float 2@ to_ini_file "CLEO\FastStun.ini" section "FastStun" key "Speed"
SAMP.CmdRet

:Noname_1110
chatmsg "[PrivateFastStun by AIR]: {FFFFFF}Используйте: /FastStun [Float {ff0000}(1.0 - 15.0){ffffff}]" 3394611
SAMP.CmdRet
 
Последнее редактирование:

D3.Pheonix

🎹
Модератор
2,821
1,601
чуток не так понял, это код клео которое ускоряет эту анимацию, а мне нужно чтобы при запросе проигровки этой анимации, ее вовсе не было(те антистан)

тут:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP

:Noname_2
wait 0
   SAMP.Available
else_jump @Noname_2
wait 14000
chatmsg "[PrivateFastStun by AIR]: {FFFFFF}Loaded! (/FastStun [Float {ff0000}(0.1 - 10.0){ffffff}])" 3394611
0B34: samp register_client_command "FastStun" to_label @Noname_838
2@ = 1.0
if
0AAB:   file_exists "CLEO\FastStun.ini"
else_jump @Noname_227
0AF2: 2@ = get_float_from_ini_file "CLEO\FastStun.ini" section "FastStun" key "Speed"
jump @Noname_311

:Noname_227
0AF3: write_float 1.0 to_ini_file "CLEO\FastStun.ini" section "FastStun" key "Speed"
0AF2: 2@ = get_float_from_ini_file "CLEO\FastStun.ini" section "FastStun" key "Speed"

:Noname_311
wait 0
0393: actor $PLAYER_ACTOR perform_animation "DAM_armL_frmBK" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_armL_frmFT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_armL_frmLT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_armR_frmBK" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_armR_frmFT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_armR_frmRT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_LegL_frmBK" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_LegL_frmFT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_LegL_frmLT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_LegR_frmBK" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_LegR_frmFT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_LegR_frmRT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_stomach_frmBK" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_stomach_frmFT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_stomach_frmLT" at 2@ times_normal_rate
0393: actor $PLAYER_ACTOR perform_animation "DAM_stomach_frmRT" at 2@ times_normal_rate
if and
0ADC:   test_cheat "XX"
  2@ > 0.0
   not 2@ > 200.0
else_jump @Noname_831
2@ = 1.0
0AF3: write_float 2@ to_ini_file "CLEO\FastStun.ini" section "FastStun" key "Speed"
0C48: samp textdraw 56 create "/" pos 3.0 1.0
0C4C: samp textdraw 56 set_style 2
wait 300
0C5E: samp textdraw 56 delete

:Noname_831
jump @Noname_311

:Noname_838
   SAMP.IsCommandTyped(1@)
if
0AD4: 3@ = scan_string 1@ format "%f" 5@
else_jump @Noname_1110
if and
  5@ >= 0.0
   not 5@ > 200.0
else_jump @Noname_1110
0087: 2@ = 5@ // (float)
chatmsg "[PrivateFastStun by AIR]: {ffffff}Установлена скорость: {66FF33}%.1f" 3394611 2@
chatmsg "[PrivateFastStun by AIR]: {ffffff}Стандартная скорость: {ff0000}1.0" 3394611
0AF3: write_float 2@ to_ini_file "CLEO\FastStun.ini" section "FastStun" key "Speed"
SAMP.CmdRet

:Noname_1110
chatmsg "[PrivateFastStun by AIR]: {FFFFFF}Используйте: /FastStun [Float {ff0000}(1.0 - 15.0){ffffff}]" 3394611
SAMP.CmdRet
 

Mr_Sergik

Новичок
4
0
Приветствую. Недавно занимаюсь cleo-скриптингом, пишу для себя. Начал активно использовать локальные диалоги и я наткнулся на ряд неприятностей. Данные с диалогов считываю опкодом 0B3C. Если есть диалог со списком, то диалог, который открывается первой строчкой списка прошлого диалога, - не передает никакую информацию через опкод 0B3C. А так же диалоги первого типа (только текст и кнопки) не передают никакую информацию. Как решить проблему?
 

MAHEKEH

Известный
1,992
496
Как правильно задать конкретную клавишу?
Имеются в виду такие клавиши как cntrl \ shift \ insert
К примеру нужно задать правый shift
 

Lobber

Известный
178
57
Как правильно задать конкретную клавишу?
Имеются в виду такие клавиши как cntrl \ shift \ insert
К примеру нужно задать правый shift

Полагаю, так
0AB0: key_pressed 0xA1
VK_RSHIFTA1Right SHIFT key

UPD статья
Регистрация SA-MP 0.3.7 R1 команд без использования SAMPFUNCS

CLEO:
// samp 0.3.7 R1
{$cleo .cs}
hex
    00 00
end
wait 5000

if 8AA2: 0@ = load_library "samp.dll" // IF and SET
then 0A93: end_custom_thread
end

var
    0@: integer
end
0AC6: 1@ = label @callback offset
0AC6: 2@ = label @cmdname offset

// write 31@ address to assembly code
1@ += 2
0AC7: 3@ = var 31@ offset                       
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 1
1@ -= 2
31@ = 0 // zeroing 31 var
0AB1: call_scm_func @registerClientCommand 3 dwSAMPHandle: 0@ szCommandName: 2@ CallBack: 1@

while true
    wait 0
    if 31@ == 1
    then
        print "Enable" 1000 
    else
        print "Disable" 1000
    end
end

:callback
hex
    83 35 11 11 11 11 01 // xor     [11111111], 01
    C3 // retn
end

:cmdname
hex
    "test" 0
end

:registerClientCommand // unsigned long dwSAMPHandle, char szCommandName[], CMDPROC CallBack
var
    3@: integer
    4@: integer
end

3@ = 0@ // dwSAMPHandle
3@ += 0x21A0E8 // struct
0A8D: 3@ = read_memory 3@ size 4 virtual_protect 1
4@ = 0@ // dwSAMPHandle
4@ += 0x65AD0 // function

0AA6: call_method 4@ struct 3@ num_params 2 pop 0 2@ 1@
0AB2: ret 0

upd
CLEO:
1@ += 9
0AC7: 3@ = var 30@ offset                       
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 1
1@ -= 9

1@ += 15
0AC7: 3@ = var 31@ offset                       
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 1
1@ -= 15


:callback
hex
    51                      // push     ecx
    56                      // push     esi
    8B 74 24 0C             // mov     esi, [esp+0Ch]
    89 34 25 11 11 11 11    // mov     [11111111], esi
    83 35 11 11 11 11 01    // xor     [11111111], 01
    5E                      // pop     esi
    59                      // pop     ecx
    C3 // retn
end

Есть ли возможность добавления аргументов к команде? Или исключительно работа с переменной, на которую действует эта команда? Может быть костылями/дополнениями, это было бы замечательно

Пример: изначально команда только переключает переменную с 0 на 1, есть ли возможность добавить /test %s, где %s - также переменная, которая будет меняться после ввода на ту, которая была указана пользователем

UPD
Видел нечто подобное, но без понятия как реализовать
 
Последнее редактирование:
  • Нравится
Реакции: MAHEKEH и D3.Pheonix

D3.Pheonix

🎹
Модератор
2,821
1,601
Есть ли возможность добавления аргументов к команде? Или исключительно работа с переменной, на которую действует эта команда? Может быть костылями/дополнениями, это было бы замечательно
Второй спойлер открой, это и есть оно
 
  • Нравится
Реакции: Lobber

D3.Pheonix

🎹
Модератор
2,821
1,601
А как это юзать? Вопрос крайне тупой, но я без понятия куда вставлять этот код, и тем более как это юзать. Можно пример?
А дальше как обычно, 0ad4 либо sscanf
CLEO:
{$cleo .cs}
hex
    00 00
end
wait 5000

if 8AA2: 0@ = load_library "samp.dll" // IF and SET
then 0A93: end_custom_thread
end

var
    0@: integer
end
0AC6: 1@ = label @callback offset
0AC6: 2@ = label @cmdname offset

// write 31@ address to assembly code
1@ += 9
0AC7: 3@ = var 30@ offset                       
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 1
1@ -= 9

1@ += 15
0AC7: 3@ = var 31@ offset                       
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 1
1@ -= 15
////////////////////
31@ = 0 // zeroing 31 var
0AB1: call_scm_func @registerClientCommand 3 dwSAMPHandle: 0@ szCommandName: 2@ CallBack: 1@

while true
    wait 0
    if 31@ == 1
    then
        print "Enable" 1000    
    else
        print "Disable" 1000
    end
end

:callback
hex
    51                      // push     ecx
    56                      // push     esi
    8B 74 24 0C             // mov     esi, [esp+0Ch]
    89 34 25 11 11 11 11    // mov     [11111111], esi
    83 35 11 11 11 11 01    // xor     [11111111], 01
    5E                      // pop     esi
    59                      // pop     ecx
    C3 // retn
end

:cmdname
hex
    "test" 0
end

:registerClientCommand // unsigned long dwSAMPHandle, char szCommandName[], CMDPROC CallBack
var
    3@: integer
    4@: integer
end

3@ = 0@ // dwSAMPHandle
3@ += 0x21A0E8 // struct
0A8D: 3@ = read_memory 3@ size 4 virtual_protect 1
4@ = 0@ // dwSAMPHandle
4@ += 0x65AD0 // function

0AA6: call_method 4@ struct 3@ num_params 2 pop 0 2@ 1@
0AB2: ret 0
 
  • Нравится
Реакции: Lobber