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

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Вот такой вот скрипт

{$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
Проблема в том что, когда я нажимаю на пункт в диалоге, ничего не происходит, а нажал и ввёл команду повторно, уже выполняется действие. Как сделать что-бы оно выполнялось сразу? Если можно, кодом. Или просто объясните, как делать диалоги с выбором ответа именно по команде. Спасибо.
В цикле(while true) проверяй, а не после вызова команды.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Не совсем понял, где его создать? Можно подробней?
Он у тебя уже есть, а ты пошел вопреки логики и сделал проверку в теле команды.
Ты даже с урока взял пример. Неужели там даже тупому примеру нельзя следовать?
 

Xample

Новичок
89
1
Почти. Это просто вызов функции. Я тебе сказал, где нужную функцию тебе найти.
я даж незнаю где искать(
мне вот что надо, чтобы 2 кода работали независимо друг от друга с одинаковыми локальными переменными в одном файле
Код:
{$CLEO}
0000:

wait 5000

0B34: samp register_client_command "spawn" to_label @cmd
0B34: samp register_client_command "killme" to_label @cmd2
0AB1: call_scm_func @2

while true
wait 0
if 1@ == 1
then
0AF6: samp spawn_player
wait 1000
1@ = 0
end
end

:cmd
1@ = 1
SAMP.CmdRet


:2
while true
wait 0
if 1@ == 1
then
Actor.Health($PLAYER_ACTOR) = 0
wait 1000
1@ = 0
end
end

:cmd2
1@ = 1
SAMP.CmdRet

вот какраз мне в этом и помогал 0DBA: 30@ = new_cleo_thread from_label @chatcheck
 

Niko

Известный
Проверенный
230
268
Подскажите пожалуйста, как вот так юзать:
Код:
0AC6: 0@ = label @Dialog offset

:Dialog
hex
"Пункт %d" 1@ A
"Пункт %d" 2@ A
"Пункт %d" 3@ 00
end
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
0ad3: format_stirng 0@ = "God Mode: Выключить%cGod Mode: Включить%cTest%cH2O" 0xA 0xA 0xA

Подскажите аналог этому опкоду 0DBA: 30@ = new_cleo_thread from_label @chatcheck
0C6A: 1@ = create_custom_thread_at_label 0@
http://blasthack.net/wiki/opcodes:0C6A

Подскажите пожалуйста, как вот так юзать:
Код:
0AC6: 0@ = label @Dialog offset

:Dialog
hex
"Пункт %d" 1@ A
"Пункт %d" 2@ A
"Пункт %d" 3@ 00
end
Никак. Ты можешь выделить память под строку и потом работать с ней как угодно.
 
Последнее редактирование:
  • Нравится
Реакции: Xample

Stas07

Известный
Проверенный
262
98
[18:29:18.205] > [RPC Recv] RPC_ScrDisplayGameText[73](length: 26 bytes, 208 bits)
> dump:
0000 06 00 00 00 88 13 00 00 0E 00 00 00 50 72 65 73 ....€.......Pres
0010 73 20 7E 67 7E 7E 77 7E 20 59 s ~g~~w~ Y

Вот с раклогера, как в клео получить этот текст
 

den1s

Известный
3
0
Всем привет, помогите пожалуйста, надо что бы вместо текста
/sellgun deagle %d 4 %d" 1@ 2@
Было:
/sellgun Vasya_Pupkin(nick) 24(id gun) %d(как я понял это кол-во указанных патронов.) 5(цена оружия) %d"
P.S я исправлял уже и почему то скрипт не работает, в чем может быть проблема?
{$CLEO}
0000: SAMP-RP
0662: printstring "This script made Ded_Fedot"
0662: printstring "PRIME-HACK.NET"

repeat
wait 400
until Samp.Available()

0AF8: samp add_message_to_chat "Cleo {64E6FF}fastgun.cs {FFFFFF}by {FF5F5F}Ded_Fedot" color -1
0AF8: samp add_message_to_chat "Special for {64E6FF}Prime-Hack.net" color -1
0AF8: samp add_message_to_chat "Help commands {FFF487}/info" color -1

0B34: samp register_client_command "info" to_label @info
0B34: samp register_client_command "de" to_label @Deagle
0B34: samp register_client_command "sd" to_label @sdpistol
0B34: samp register_client_command "ri" to_label @rifle
0B34: samp register_client_command "sh" to_label @shotgun
0B34: samp register_client_command "sm" to_label @smg
0B34: samp register_client_command "ak" to_label @ak47
0B34: samp register_client_command "m4" to_label @m4
0B34: samp register_client_command "gg" to_label @getguns
0B34: samp register_client_command "gd" to_label @getdrugs
0B34: samp register_client_command "us" to_label @usedrugs

while true
wait 0
2@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
end

:deagle
0B35: samp 0@ = get_last_command_params
if
0AD4: 0@ = scan_string 0@ format "%d" 1@
else_jump @errorgun
say "/sellgun deagle %d 4 %d" 1@ 2@
cmdret

:sdpistol
0B35: samp 0@ = get_last_command_params
if
0AD4: 0@ = scan_string 0@ format "%d" 1@
else_jump @errorgun
say "/sellgun sdpistol %d 4 %d" 1@ 2@
cmdret

:rifle
0B35: samp 0@ = get_last_command_params
if
0AD4: 0@ = scan_string 0@ format "%d" 1@
else_jump @errorgun
say "/sellgun rifle %d 4 %d" 1@ 2@
cmdret

:shotgun
0B35: samp 0@ = get_last_command_params
if
0AD4: 0@ = scan_string 0@ format "%d" 1@
else_jump @errorgun
say "/sellgun shotgun %d 4 %d" 1@ 2@
cmdret

:smg
0B35: samp 0@ = get_last_command_params
if
0AD4: 0@ = scan_string 0@ format "%d" 1@
else_jump @errorgun
say "/sellgun smg %d 4 %d" 1@ 2@
cmdret

:ak47
0B35: samp 0@ = get_last_command_params
if
0AD4: 0@ = scan_string 0@ format "%d" 1@
else_jump @errorgun
say "/sellgun ak47 %d 4 %d" 1@ 2@
cmdret

:m4
0B35: samp 0@ = get_last_command_params
if
0AD4: 0@ = scan_string 0@ format "%d" 1@
else_jump @errorgun
say "/sellgun m4 %d 4 %d" 1@ 2@
cmdret

:getguns
0B35: samp 0@ = get_last_command_params
if
0AD4: 0@ = scan_string 0@ format "%d" 1@
else_jump @errorgetguns
say "/get guns %d" 1@
cmdret

:getdrugs
0B35: samp 0@ = get_last_command_params
if
0AD4: 0@ = scan_string 0@ format "%d" 1@
else_jump @errorgetdrugs
say "/get drugs %d" 1@
cmdret

:usedrugs
0B35: samp 0@ = get_last_command_params
if
0AD4: 0@ = scan_string 0@ format "%d" 1@
else_jump @errorusedrugs
say "/usedrugs %d" 1@
cmdret

:info
0AC6: 6@ = label @helptext offset
0B3B: samp show_dialog id 17 caption "Обзор команд" text 6@ button_1 "Закрыть" button_2 "" style 0
cmdret

:helptext
hex
7B "FFFFFF" 7D "/DE" 20 20 20 20 7B "FFF487" 7D "[Кол-ч] Патронов" 20 20 20 20 20 20 20 20 20 7B "FFFFFF" 7D "Deagle" A
7B "FFFFFF" 7D "/SD" 20 20 20 20 7B "FFF487" 7D "[Кол-ч] Патронов" 20 20 20 20 20 20 20 20 20 7B "FFFFFF" 7D "SDPistol" A
7B "FFFFFF" 7D "/RI" 20 20 20 20 20 7B "FFF487" 7D "[Кол-ч] Патронов" 20 20 20 20 20 20 20 20 20 7B "FFFFFF" 7D "Rifle" A
7B "FFFFFF" 7D "/SH" 20 20 20 20 7B "FFF487" 7D "[Кол-ч] Патронов" 20 20 20 20 20 20 20 20 20 7B "FFFFFF" 7D "Shotgun" A
7B "FFFFFF" 7D "/SM" 20 20 20 20 7B "FFF487" 7D "[Кол-ч] Патронов" 20 20 20 20 20 20 20 20 20 7B "FFFFFF" 7D "SMG" A
7B "FFFFFF" 7D "/AK" 20 20 20 20 7B "FFF487" 7D "[Кол-ч] Патронов" 20 20 20 20 20 20 20 20 20 7B "FFFFFF" 7D "AK47" A
7B "FFFFFF" 7D "/M4" 20 20 20 20 7B "FFF487" 7D "[Кол-ч] Патронов" 20 20 20 20 20 20 20 20 20 7B "FFFFFF" 7D "M4" A
7B "FFFFFF" 7D "/GG" 20 20 20 20 7B "FFF487" 7D "[Кол-ч] Материалов" 20 20 20 20 7B "FFFFFF" 7D "Get Guns" A
7B "FFFFFF" 7D "/GD" 20 20 20 20 7B "FFF487" 7D "[Кол-ч] Наркотиков" 20 20 20 20 20 7B "FFFFFF" 7D "Get Drugs" A
7B "FFFFFF" 7D "/US" 20 20 20 20 7B "FFF487" 7D "[Кол-ч] Наркотиков" 20 20 20 20 20 7B "FFFFFF" 7D "Usedrugs" 00
end

:errorgun
0AF8: samp add_message_to_chat "{FFF487}Неверный формат команды: {FF5F5F}Пример: {FFFFFF}/de {FF5F5F}[кол-ч] {FFFFFF}патрон" color -1
cmdret

:errorusedrugs
0AF8: samp add_message_to_chat "{FFF487}Неверный формат команды: {FFFFFF}/us {FF5F5F}[кол-ч] {FFFFFF}наркотиков" color -1
cmdret

:errorgetguns
0AF8: samp add_message_to_chat "{FFF487}Неверный формат команды: {FFFFFF}/gg {FF5F5F}[кол-ч] {FFFFFF}материалов" color -1
cmdret

:errorgetdrugs
0AF8: samp add_message_to_chat "{FFF487}Неверный формат команды: {FFFFFF}/gd {FF5F5F}[кол-ч] {FFFFFF}наркотиков" color -1
cmdret
 
Последнее редактирование: