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

Vovich

HOT
Проверенный
717
197
Каким образом можно сделать телепорт игрока к себе через авто? Фейк позиция? Или как вообще?
Пытался через Фейк Координаты, Фейк Скорость на машине и почему то не выходит.
Может как-то по другому? Готовый телепорт не предлагать, мне он отдельно не нужен.
 

©Ded_Fedot

КГБ
2,139
1,261
Возможно как то из строки чата састриметь 2 слово и записать его в переменную?

Пример чат строки: Вам дал бан такой-та такой администратор.
Нужно записать в переменную слово "дал"
 

Xample

Новичок
89
1
Всем привет, такой вопрос, на старой версии СФ у меня был скрипт "Dialog Hider", его задача заключалась при нажатии кнпки "Home" скрыть открытое окно диалога, а в нужный момент при нажатии "End" развернуть его снова. Сейчас же этот скрипт не работает. Ничего не выдаёт, игра с ним запускается, просто не работает. Может знатоки помогут, что нужно подправить в коде чтоб он снова заработал? Вот код:
Код:
// 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
wait 0
if
0AA2: 1@ = load_library "kernel32.dll" // IF and SET
else_jump @Noname_334
if
0AA4: 30@ = get_proc_address "GetModuleHandleA" library 1@ // IF and SET
else_jump @Noname_334
0AA7: call_function 30@ num_params 1 pop 0 "samp.dll" 0@
if
  0@ > 0
else_jump @Noname_334
0085: 2@ = 0@ // (int)
2@ += 2173504

:Noname_132
wait 0
if or
0AB0:   key_pressed 36
0AB0:   key_pressed 35
else_jump @Noname_132
0A8D: 5@ = read_memory 2@ size 4 virtual_protect 1
if
  5@ > 10000
else_jump @Noname_132
0085: 30@ = 5@ // (int)
30@ += 40
0A8D: 31@ = read_memory 30@ size 4 virtual_protect 1
if and
  31@ == 1
0AB0:   key_pressed 36
else_jump @Noname_273
0A8C: write_memory 30@ size 4 value 0 virtual_protect 1
gosub @Noname_336
0AD1: show_formatted_text_highpriority "Dialog Hided" time 2000

:Noname_273
if and
  31@ == 0
0AB0:   key_pressed 35
else_jump @Noname_327
0A8C: write_memory 30@ size 4 value 1 virtual_protect 1
0AD1: show_formatted_text_highpriority "Dialog Showed" time 2000

:Noname_327
jump @Noname_132

:Noname_334
0A93: end_custom_thread

:Noname_336
0085: 30@ = 0@ // (int)
30@ += 2173516
0A8D: 31@ = read_memory 30@ size 4 virtual_protect 1
0085: 30@ = 0@ // (int)
30@ += 409120
0AA6: call_method 30@ struct 31@ num_params 3 pop 0 0 0 0
return
 

SR_team

like pancake
BH Team
4,720
6,368
Всем привет, такой вопрос, на старой версии СФ у меня был скрипт "Dialog Hider", его задача заключалась при нажатии кнпки "Home" скрыть открытое окно диалога, а в нужный момент при нажатии "End" развернуть его снова. Сейчас же этот скрипт не работает. Ничего не выдаёт, игра с ним запускается, просто не работает. Может знатоки помогут, что нужно подправить в коде чтоб он снова заработал? Вот код:
Код:
// 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
wait 0
if
0AA2: 1@ = load_library "kernel32.dll" // IF and SET
else_jump @Noname_334
if
0AA4: 30@ = get_proc_address "GetModuleHandleA" library 1@ // IF and SET
else_jump @Noname_334
0AA7: call_function 30@ num_params 1 pop 0 "samp.dll" 0@
if
  0@ > 0
else_jump @Noname_334
0085: 2@ = 0@ // (int)
2@ += 2173504

:Noname_132
wait 0
if or
0AB0:   key_pressed 36
0AB0:   key_pressed 35
else_jump @Noname_132
0A8D: 5@ = read_memory 2@ size 4 virtual_protect 1
if
  5@ > 10000
else_jump @Noname_132
0085: 30@ = 5@ // (int)
30@ += 40
0A8D: 31@ = read_memory 30@ size 4 virtual_protect 1
if and
  31@ == 1
0AB0:   key_pressed 36
else_jump @Noname_273
0A8C: write_memory 30@ size 4 value 0 virtual_protect 1
gosub @Noname_336
0AD1: show_formatted_text_highpriority "Dialog Hided" time 2000

:Noname_273
if and
  31@ == 0
0AB0:   key_pressed 35
else_jump @Noname_327
0A8C: write_memory 30@ size 4 value 1 virtual_protect 1
0AD1: show_formatted_text_highpriority "Dialog Showed" time 2000

:Noname_327
jump @Noname_132

:Noname_334
0A93: end_custom_thread

:Noname_336
0085: 30@ = 0@ // (int)
30@ += 2173516
0A8D: 31@ = read_memory 30@ size 4 virtual_protect 1
0085: 30@ = 0@ // (int)
30@ += 409120
0AA6: call_method 30@ struct 31@ num_params 3 pop 0 0 0 0
return
нужно править оффсет DIALOG_INFO и возможно структуру
 

SR_team

like pancake
BH Team
4,720
6,368
Возможно как то из строки чата састриметь 2 слово и записать его в переменную?

Пример чат строки: Вам дал бан такой-та такой администратор.
Нужно записать в переменную слово "дал"
возможно, просто чекни где встречается в 1 раз пробел, не помню какой именно опкод в сф ищет символ в строке
 

SR_team

like pancake
BH Team
4,720
6,368
Каким образом можно сделать телепорт игрока к себе через авто? Фейк позиция? Или как вообще?
Пытался через Фейк Координаты, Фейк Скорость на машине и почему то не выходит.
Может как-то по другому? Готовый телепорт не предлагать, мне он отдельно не нужен.
Это не стол заказов - готовое не предложат. Нужно передать серверу информацию, что машина находится под игроком - фейк координаты
 

SR_team

like pancake
BH Team
4,720
6,368
Здравствуйте. Вот код.

:Noname_135
if
SAMP.IsPlayerConnected(5@)
jf @Noname_297
6@ = SAMP.GetPlayerNickname(5@)
format 7@ "Гос. новости: %s[%d]:" 6@ 5@
if
0C18: 32@ = strstr string1 1@ string2 7@
jf @Noname_297
12@ += 1
chatmsg "Отправитель: %s[%d]. Строк: %d" 16732208 6@ 5@ 12@
wait 0

:Noname_297
5@ += 1
5@ > 1000
jf @Noname_135

Этот код чекает гос. новости. Мне надо сделать что-бы только после того как оно нашло 3 строки, которые кинул ОДИН и тот же лидер выполнялось какое-нибудь действие. Паблик постоянно обновляется, и поэтому я не могу понять как вообще определить был ли это один и тот же лидер, и было ли это 3 строки (просто можно кинуть по 1 строке в разное время). Думаю понятно расписал. Заранее спасибо за помощь.
Счетчик поставь для id или ника - с буффером будет просто сделать
 

Xample

Новичок
89
1
Я же почти всю WIKI прочекал, нихуя подобного не видел
У меня скрипт поиска слова или набора слов выглядит так:

0AC8: 0@ = allocate_memory_size 144
0AC8: 1@ = allocate_memory_size 32

:autoON
wait 0
0B75: samp get_chat_string 96 text_to 0@ prefix_to 1@ color_to 2@ prefix_color_to 0
if
0C18: 0 = strstr string1 0@ string2 "Нажмите и удерживайте пробел для работы"
else_jump @autoON2
jump @ON
:autoON2

вот пример из другого скрипта (бот отвечает на фразы содержащие ключевое слово)
Код:
:chatcheck
0000:

0AC8: 0@ = allocate_memory_size 144
0AC8: 1@ = allocate_memory_size 32
while true
wait 0
0B75: samp get_chat_string 99 text_to 0@ prefix_to 1@ color_to 2@ prefix_color_to 0
// кол-во строк в чате - 100, начиная 0 => номер последней 99
if or
  // 2@ == 0xff5030ff // цвет, шестнадцатеричная система счисления, формат: AARRGGBB
  0C18: 0 = strstr string1 0@ string2 "тойте"
  0C18: 0 = strstr string1 0@ string2 "новитесь"
  0C18: 0 = strstr string1 0@ string2 "стой"
  0C18: 0 = strstr string1 0@ string2 "Стой"
  0C18: 0 = strstr string1 0@ string2 "ут?"
  0C18: 0 = strstr string1 0@ string2 "Stop" 
then
  wait 2000
  0BFC: set_global_var "BOTSTATE" = 0
  wait 1000
0ACC: show_text_lowpriority "BOT Shahta ~g~OFF" time 1000
0AB3: var 740 = 0
0687: clear_actor $PLAYER_ACTOR task
018C: play_sound 1052 at 0.0 0.0 0.0
  wait 2000
  0AF9: samp say_msg "Что?"
  wait 2000
  0AF9: samp say_msg "что надо?"
  wait 5000
0DBF: emul_key_press 0x53 is_up 0
wait 1000
0DBF: emul_key_press 0x53 is_up 1
wait 2000
0DBF: emul_key_press 0x20 is_up 0
wait 100
0DBF: emul_key_press 0x20 is_up 1
  wait 30000
  0BFC: set_global_var "BOTSTATE" = 1
  0ACC: show_text_lowpriority "BOT Shahta ~g~ON" time 1000
018C: play_sound 1052 at 0.0 0.0 0.0
  
end
end
 

©Ded_Fedot

КГБ
2,139
1,261
У меня скрипт поиска слова или набора слов выглядит так:

0AC8: 0@ = allocate_memory_size 144
0AC8: 1@ = allocate_memory_size 32

:autoON
wait 0
0B75: samp get_chat_string 96 text_to 0@ prefix_to 1@ color_to 2@ prefix_color_to 0
if
0C18: 0 = strstr string1 0@ string2 "Нажмите и удерживайте пробел для работы"
else_jump @autoON2
jump @ON
:autoON2

вот пример из другого скрипта (бот отвечает на фразы содержащие ключевое слово)
Код:
:chatcheck
0000:

0AC8: 0@ = allocate_memory_size 144
0AC8: 1@ = allocate_memory_size 32
while true
wait 0
0B75: samp get_chat_string 99 text_to 0@ prefix_to 1@ color_to 2@ prefix_color_to 0
// кол-во строк в чате - 100, начиная 0 => номер последней 99
if or
  // 2@ == 0xff5030ff // цвет, шестнадцатеричная система счисления, формат: AARRGGBB
  0C18: 0 = strstr string1 0@ string2 "тойте"
  0C18: 0 = strstr string1 0@ string2 "новитесь"
  0C18: 0 = strstr string1 0@ string2 "стой"
  0C18: 0 = strstr string1 0@ string2 "Стой"
  0C18: 0 = strstr string1 0@ string2 "ут?"
  0C18: 0 = strstr string1 0@ string2 "Stop"
then
  wait 2000
  0BFC: set_global_var "BOTSTATE" = 0
  wait 1000
0ACC: show_text_lowpriority "BOT Shahta ~g~OFF" time 1000
0AB3: var 740 = 0
0687: clear_actor $PLAYER_ACTOR task
018C: play_sound 1052 at 0.0 0.0 0.0
  wait 2000
  0AF9: samp say_msg "Что?"
  wait 2000
  0AF9: samp say_msg "что надо?"
  wait 5000
0DBF: emul_key_press 0x53 is_up 0
wait 1000
0DBF: emul_key_press 0x53 is_up 1
wait 2000
0DBF: emul_key_press 0x20 is_up 0
wait 100
0DBF: emul_key_press 0x20 is_up 1
  wait 30000
  0BFC: set_global_var "BOTSTATE" = 1
  0ACC: show_text_lowpriority "BOT Shahta ~g~ON" time 1000
018C: play_sound 1052 at 0.0 0.0 0.0
 
end
end
Мне не это надо, это я знаю
 

©Ded_Fedot

КГБ
2,139
1,261
Всем привет, такой вопрос, на старой версии СФ у меня был скрипт "Dialog Hider", его задача заключалась при нажатии кнпки "Home" скрыть открытое окно диалога, а в нужный момент при нажатии "End" развернуть его снова. Сейчас же этот скрипт не работает. Ничего не выдаёт, игра с ним запускается, просто не работает. Может знатоки помогут, что нужно подправить в коде чтоб он снова заработал? Вот код:
Код:
// 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
wait 0
if
0AA2: 1@ = load_library "kernel32.dll" // IF and SET
else_jump @Noname_334
if
0AA4: 30@ = get_proc_address "GetModuleHandleA" library 1@ // IF and SET
else_jump @Noname_334
0AA7: call_function 30@ num_params 1 pop 0 "samp.dll" 0@
if
  0@ > 0
else_jump @Noname_334
0085: 2@ = 0@ // (int)
2@ += 2173504

:Noname_132
wait 0
if or
0AB0:   key_pressed 36
0AB0:   key_pressed 35
else_jump @Noname_132
0A8D: 5@ = read_memory 2@ size 4 virtual_protect 1
if
  5@ > 10000
else_jump @Noname_132
0085: 30@ = 5@ // (int)
30@ += 40
0A8D: 31@ = read_memory 30@ size 4 virtual_protect 1
if and
  31@ == 1
0AB0:   key_pressed 36
else_jump @Noname_273
0A8C: write_memory 30@ size 4 value 0 virtual_protect 1
gosub @Noname_336
0AD1: show_formatted_text_highpriority "Dialog Hided" time 2000

:Noname_273
if and
  31@ == 0
0AB0:   key_pressed 35
else_jump @Noname_327
0A8C: write_memory 30@ size 4 value 1 virtual_protect 1
0AD1: show_formatted_text_highpriority "Dialog Showed" time 2000

:Noname_327
jump @Noname_132

:Noname_334
0A93: end_custom_thread

:Noname_336
0085: 30@ = 0@ // (int)
30@ += 2173516
0A8D: 31@ = read_memory 30@ size 4 virtual_protect 1
0085: 30@ = 0@ // (int)
30@ += 409120
0AA6: call_method 30@ struct 31@ num_params 3 pop 0 0 0 0
return
Вот
// 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_435
wait 0
if
0AA2: 1@ = load_library "kernel32.dll" // IF and SET
else_jump @Noname_334
if
0AA4: 30@ = get_proc_address "GetModuleHandleA" library 1@ // IF and SET
else_jump @Noname_334
0AA7: call_function 30@ num_params 1 pop 0 "samp.dll" 0@
if
0@ > 0
else_jump @Noname_334
0085: 2@ = 0@ // (int)
2@ += 2203832

:Noname_132
wait 0
if or
0AB0: key_pressed 36
0AB0: key_pressed 35
else_jump @Noname_132
0A8D: 5@ = read_memory 2@ size 4 virtual_protect 1
if
5@ > 10000
else_jump @Noname_132
0085: 30@ = 5@ // (int)
30@ += 40
0A8D: 31@ = read_memory 30@ size 4 virtual_protect 1
if and
31@ == 1
0AB0: key_pressed 36
else_jump @Noname_273
0A8C: write_memory 30@ size 4 value 0 virtual_protect 1
gosub @Noname_336
0AD1: show_formatted_text_highpriority "Dialog Hided" time 2000

:Noname_273
if and
31@ == 0
0AB0: key_pressed 35
else_jump @Noname_327
0A8C: write_memory 30@ size 4 value 1 virtual_protect 1
0AD1: show_formatted_text_highpriority "Dialog Showed" time 2000

:Noname_327
jump @Noname_132

:Noname_334
goto @Noname_435

:Noname_336
0085: 30@ = 0@ // (int)
30@ += 2203916
0A8D: 31@ = read_memory 30@ size 4 virtual_protect 1
0085: 30@ = 0@ // (int)
30@ += 638256
0AA6: call_method 30@ struct 31@ num_params 2 pop 0 0 0 0
return
 
  • Нравится
Реакции: Xample

Xample

Новичок
89
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_435
wait 0
if
0AA2: 1@ = load_library "kernel32.dll" // IF and SET
else_jump @Noname_334
if
0AA4: 30@ = get_proc_address "GetModuleHandleA" library 1@ // IF and SET
else_jump @Noname_334
0AA7: call_function 30@ num_params 1 pop 0 "samp.dll" 0@
if
0@ > 0
else_jump @Noname_334
0085: 2@ = 0@ // (int)
2@ += 2203832

:Noname_132
wait 0
if or
0AB0: key_pressed 36
0AB0: key_pressed 35
else_jump @Noname_132
0A8D: 5@ = read_memory 2@ size 4 virtual_protect 1
if
5@ > 10000
else_jump @Noname_132
0085: 30@ = 5@ // (int)
30@ += 40
0A8D: 31@ = read_memory 30@ size 4 virtual_protect 1
if and
31@ == 1
0AB0: key_pressed 36
else_jump @Noname_273
0A8C: write_memory 30@ size 4 value 0 virtual_protect 1
gosub @Noname_336
0AD1: show_formatted_text_highpriority "Dialog Hided" time 2000

:Noname_273
if and
31@ == 0
0AB0: key_pressed 35
else_jump @Noname_327
0A8C: write_memory 30@ size 4 value 1 virtual_protect 1
0AD1: show_formatted_text_highpriority "Dialog Showed" time 2000

:Noname_327
jump @Noname_132

:Noname_334
goto @Noname_435

:Noname_336
0085: 30@ = 0@ // (int)
30@ += 2203916
0A8D: 31@ = read_memory 30@ size 4 virtual_protect 1
0085: 30@ = 0@ // (int)
30@ += 638256
0AA6: call_method 30@ struct 31@ num_params 2 pop 0 0 0 0
return


Ооо благодарю) Теперь можно брать машины для аренды не оплачивая ездить)
 

Xample

Новичок
89
1
Дастали эти админы) подскажите как вычеслить что админ мне пишет в ПМ, что это за цвет? как его в коде написать?
6d65085012b5.png

Код:
0B75: samp get_chat_string 99 text_to 0@ prefix_to 1@ color_to 2@ prefix_color_to 0
// кол-во строк в чате - 100, начиная 0 => номер последней 99
if or
  // 2@ == 0xff5030ff // цвет, шестнадцатеричная система счисления, формат: AARRGGBB

А всё уже разобрался) 0x надобыло преписать спереди цвета, а дальше RRGGBB
 
Последнее редактирование:

andrey32912

Новичок
3
0
Вот такой вот скрипт

{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
if not 0@ = SAMP.Base()
then 0A93: end_custom_thread
end

while not SAMP.Available()
wait 100
end

0B34: samp register_client_command "tpint" to_label @_263

while true
wait 0
end

:_263
0AC6: 0@ = label @_442 offset
SAMP.ShowDialog(2, "ТП", 0@, "ок", "Отмена", DIALOG_STYLE_LIST)
goto @_265


:_265
wait 0
while 5@ = 0
if 0B3C: samp is_dialog_responded id 2 button 1@ list_item 3@ input_text 0 // Логгируем нажатие кнопки диалога и выбранного элемента из списка диалога 47
then
if 1@ == 1 // Была нажата первая кнопка
then
if 3@ == 0
then
0af8: chat "Был выбран элемент: {ffff00}Первый пункт" -1
end

if 3@ == 1
then
0af8: chat "Был выбран элемент: {ffff00}Второй пункт" -1
end

if 3@ == 2
then
0af8: chat "Был выбран элемент: {ffff00}Третий пункт" -1
end
else
// Иначе второй кнопкой или же просто закрыт(esc'ом, например) / 1@ == 0
0af8: chat "Была нажата вторая кнопка: {ffff00}Закрыть" -1
end
end
end
SAMP.CmdRet

:_341
chatmsg "> Неверная ф-я" 16732208
SAMP.CmdRet

:_442
hex
"Интерьер"20"№1" A
"Интерьер"20"№2" A
"Интерьер"20"№3" A
"Интерьер"20"№4" A
"Интерьер"20"№5" A
"Интерьер"20"№6" A
"Интерьер"20"№7" A
"Интерьер"20"№8" A
"Интерьер"20"№9" A
"Интерьер"20"№10" A
"Интерьер"20"№11" A
"Интерьер"20"№12" A
"Интерьер"20"№13" A
"Интерьер"20"№14" A
"Интерьер"20"№15" A
"Интерьер"20"№16" A
"Интерьер"20"№17" A
"Интерьер"20"№18" A
"Интерьер"20"№19" A
"Интерьер"20"№20" 00
end
Проблема в том что, когда я нажимаю на пункт в диалоге, ничего не происходит, а нажал и ввёл команду повторно, уже выполняется действие. Как сделать что-бы оно выполнялось сразу? Если можно, кодом. Или просто объясните, как делать диалоги с выбором ответа именно по команде. Спасибо.
 

Vovich

HOT
Проверенный
717
197
Как сравнить 2 переменных?
Переменная 2 задается параметром в команде.
Но так как я пытаюсь не получается их сравнить... ошибка..

Код:
if 1@ > 2@
then 
chatmsg "text" color 0xFF0000