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

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Приставка Scr значит то, что сервер посылает RPC для изменений некоторых данных. Тот же ScrSetPlayerHealth.
Проще говоря, Scr - входящие RPC.
 
  • Нравится
Реакции: Enjoy

Enjoy

Новичок
Проверенный
164
11
Приставка Scr значит то, что сервер посылает RPC для изменений некоторых данных. Тот же ScrSetPlayerHealth.
Проще говоря, Scr - входящие RPC.
А вообще можно как-то контролировать эти входящие RPC или это бесполезно?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
А вообще можно как-то контролировать эти входящие RPC или это бесполезно?
В смысле контроллировать? Если ты занопишь его, то ничего не изменится, кроме того, что старый скин будешь видеть только ты, другие - установленный сервером.
 

Goldfish

Известный
106
22
Ищу помощь по CLEO

Вобщем работаю с клео понемногу, возникают бывает вопросы, хочу попросить квалифицированную помощь по данной теме :)
Выложу все накопившиеся вопросы по пунктам.. также по пунктам можете и ответеть:)
-------------
1) Вопервых немного сразу не вьехал в такой опкод
jf @metka , но в некоторых местах его называю else_jump@metka и jump_if_false@metka,
в следствие чего был немного запутан, но потом вроде догадался по саму опкоду что это одно и тоже) надеюсь я правильно понимаю))

2)
Следующий вопрос такой. Прочитав про переменные, понял, что крайне-жизненно не желательно использовать
глобальные переменные(ну кроме разрешенных) т.к клео скрипты могут случайно навредить данные в таких переменных, ну в общем ясно,
что если в друг совпадут там эти переменные и получится слияние(типа того),
НО а как же тогда одни и те же локальные(рекомендуймые) переменные в приделах самих CLEO скриптов? ОО
тобиш если у меня работают одновременно штук 10 скриптов и в них почти одни и те же переменные испольуются(1@,2@)
вот вопрос возможен ли шанс какого-то слияние или совпадения переменных из этих скриптов,в следствие чего переменная одного скрипта перезапишит
переменную от другого, есь какая опаска или все потоки строго
отделены и такие "контакты" исключены??

3)
Очень странно, но почему-то я во-основном везде встречаю скрипты, в которых потоки заканчиваются на end_thread , хотя
даже в спраке написано CLEO скрипты завершать так end_custum_thread , и только на одном сайте я нашел, что все потоки
надо завершать именно этим кодом end_custum_thread иначе будут проблемы после соранения,
мб по-этому скрипты работают немного со збоями?? обьясните пожалуйста :help:
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
  1. jf = jump_if_else = else_jump (это кейворды);
  2. локальные они на то и есть локальные - используются в одном потоке. Под них(в каждом потоке) выделена память;
  3. end_thread завершается созданный поток(через create_thread), а end_custom_thread тот, который был запущен с запуска игры. Насчет этого могут сомнения.
 

hnnssy

Известный
Друг
2,684
2,746
Вот есть код, ну это пример, как мне сделать так, что бы в любой момент можно было отключить данный бот на клавишу? Командой задать переменной 28@ не могу, так как скрипт не даст ввести команду, а по другом если эмулировать, то выйдет не так как нужно именно мне.
Код:
{$CLEO .cs}

0000:
repeat
wait 150
until 0afa:
0B34: samp register_client_command "on" to_label @cmd_on
while true
wait 0

if 28@ == 1
then

  repeat
wait 0
0DBF: emul_key_press 87 is_up 0
0DBF: emul_key_press 32 is_up 0
0AB1: call_scm_func @set_angle 2 848.13 -2067.51
until 00ED: actor $PLAYER_ACTOR sphere 0 near_point 848.13 -2067.51 radius 1.5 1.5
  repeat
wait 0
0DBF: emul_key_press 87 is_up 0
0DBF: emul_key_press 32 is_up 0
0AB1: call_scm_func @set_angle 2 826.55 -2199.39
until 00ED: actor $PLAYER_ACTOR sphere 0 near_point 826.55 -2199.39 radius 1.5 1.5
end
end


:cmd_on
wait 0
28@ = 1
0ACC: show_text_lowpriority "~g~ON" time 5000
SAMP.CmdRet()

:set_angle
00A0: store_actor $PLAYER_ACTOR position_to 2@ 3@ 4@
0063: 0@ -= 2@
0063: 1@ -= 3@
0604: get_Z_angle_for_point 0@ 1@ store_to 5@
0173: set_actor $PLAYER_ACTOR Z_angle_to 5@
02EB: restore_camera_with_jumpcut
0AB2: ret 0
Код:
while true
wait 0

if 28@ == 1
then

  repeat
wait 0
//-----
if key 93
then 
28@ = 0
break
end
//-----
0DBF: emul_key_press 87 is_up 0
0DBF: emul_key_press 32 is_up 0
0AB1: call_scm_func @set_angle 2 848.13 -2067.51
until 00ED: actor $PLAYER_ACTOR sphere 0 near_point 848.13 -2067.51 radius 1.5 1.5
  repeat
wait 0
//-----
if 28@ == 0
then 
break
end
//-----
0DBF: emul_key_press 87 is_up 0
0DBF: emul_key_press 32 is_up 0
0AB1: call_scm_func @set_angle 2 826.55 -2199.39
until 00ED: actor $PLAYER_ACTOR sphere 0 near_point 826.55 -2199.39 radius 1.5 1.5
end
end
 

Goldfish

Известный
106
22
end_thread завершается созданный поток(через create_thread), а end_custom_thread тот, который был запущен с запуска игры. Насчет этого могут сомнения.
Ну кароче если везде использовать в абсолютно любых скриптах end_thread , страху нет?
тоесть какбе универсальная команда завершения?
 

Goldfish

Известный
106
22
или end_custom_thread использовать для типичных cleo скриптов безопасней?
что на это гласит золотое правило-то?:mda:
 

Goldfish

Известный
106
22
вот что напЫсано было на одном форуме:

"Справка Sanny Builder (нажать F12) - лучше ничего нет. Правда, справка была создана давно, и многие статьи написаны в основном под main, но между скриптингом на main и CLEO-скриптингом различий мало. Во-первых, в CLEO употребляем только локальные переменные (0@, 1@ ... 31@), а глобальные не применяем ($Act, $Car, $1234 ...) - здесь есть несколько исключений ($PLAYER_CHAR, $PLAYER_ACTOR и некоторые другие общепринятые переменные). Во-вторых, различаются команды завершения потока - в main используем end_thread, а в клео - 0A93: end_custom_thread. Команда create_thread в клео не применяется."..

---------
В это мб еще не кто не вдовался, но может быть вся соль в этом?
 

m0zeratus

Новичок
8
0
Я сюда уже писал. выделяешь правой кнопкой игрока и при нажатии клавиши Z и зажатой правой кнопки мыши нокаутирует. отправляет на сервер команду /knockout ID игрока, который в таргете(зеленая стрелочка над головой).

Но у меня крашит. Крашлог ниже

Код:
{$CLEO .cs}
{$INCLUDE SF}   

//-------------MAIN---------------
0000: NOP
thread "KNOCKOUT"

:KNOCKOUT_14
wait 400
  SAMP.Available
else_jump @KNOCKOUT_14

:KNOCKOUT_28
wait 0
if and
0AD2: 0@ = player $PLAYER_CHAR targeted_actor 
key_down 90
else_jump @KNOCKOUT_91
1@ = SAMP.GetSAMPPlayerIDByActorHandle(0@)
say "/KNOCKOUT %S[%D]" 1@
wait 100

:KNOCKOUT_91
jump @KNOCKOUT_28





SA:MP An exception occured
Код:
SA-MP 0.3z
Exception At Address: 0x00000000
Base: 0x03460000

Registers:
EAX: 0x00000000   EBX: 0x00000001   ECX: 0x00A90670   EDX: 0x0000696E
ESI: 0x00000064   EDI: 0x00A903D0   EBP: 0x0028FD14   ESP: 0x0028FD08
EFLAGS: 0x00210202

Stack:
+0000: 0x5F722831  0x00A90670  0x00A90670  0x0046A201
+0010: 0x00469FF7  0x000071A1  0x00A90670  0x00000000
+0020: 0x0046A220  0x10B8E640  0x0000011A  0x0028FD94
+0030: 0x00000001  0x00000012  0x0000011A  0x00000001
+0040: 0x0053C206  0x0053C21A  0x0000001A  0x10B85EBA
+0050: 0x00000000  0xBF7B64E1  0x3FB79332  0xBFC00000
+0060: 0x034C5B5D  0x0000001A  0x10B85EBA  0x00000000
+0070: 0x0EE546F8  0x0028FD6C  0x0028F8DC  0x0028FF78
+0080: 0x03510AA4  0x03532EB0  0x00000001  0x769C6C30
+0090: 0x0053E986  0x00000001  0x008241AF  0x004D9486
+00A0: 0x0053ECC2  0x00000001  0x00619B71  0x0000001A
+00B0: 0x00000001  0x00000001  0x0000000A  0x00748DA0
+00C0: 0x0000001A  0x00000001  0x74991245  0x00000000
+00D0: 0x0028FF88  0x7EFDE000  0x01720000  0x4D85C277
+00E0: 0x01721130  0x00000008  0x00000100  0x00000008
+00F0: 0x00000102  0x442AC000  0x43C00000  0x00000000
+0100: 0x00000000  0x00000556  0x00000300  0x00000000
+0110: 0x00000001  0x000D01E8  0x00000200  0x00000002
+0120: 0x018002AB  0x02B00A5A  0x000002AB  0x00000180
+0130: 0x0000002C  0x0028FE2C  0x00825EA4  0x74991245
+0140: 0x00000000  0x7EFDE000  0xFFFFFFFF  0x00821D17
+0150: 0x00000065  0x00000065  0x0028FF88  0x008246F1
+0160: 0x00400000  0x00000000  0x0179362C  0x0000000A
+0170: 0x00000094  0x00000006  0x00000001  0x00001DB1
+0180: 0x00000002  0x76726553  0x20656369  0x6B636150
+0190: 0x00003120  0x00000000  0x00000000  0x00000000
+01A0: 0x00000000  0x00000000  0x00000000  0x00000000
+01B0: 0x00000000  0x00000000  0x00000000  0x00000000
+01C0: 0x00000000  0x00000000  0x00000000  0x00000000
+01D0: 0x00000000  0x00000000  0x00000000  0x00000000
+01E0: 0x00000000  0x00000000  0x00000000  0x00000000
+01F0: 0x00000000  0x00000000  0x00000000  0x00000000
+0200: 0x00824588  0x00000000  0x00000000  0x7EFDE000
+0210: 0xC0000005  0x74B2EEBC  0x0179362C  0x00000044
+0220: 0x017C4018  0x017C4028  0x017C4F40  0x00000000
+0230: 0x00000000  0x00000000  0x00000000  0x00000000
+0240: 0x00000000  0x00000000  0x00000000  0x00000000
+0250: 0x00000000  0xFFFFFFFF  0xFFFFFFFF  0xFFFFFFFF
+0260: 0x00000000  0x00000000  0x0028FE78  0x0028F8DC
+0270: 0x0028FFC4  0x00825EA4  0x00888078  0x00000000

SCM Op: 0x77E, lDbg: 0 LastRendObj: 6290

Game Version: US 1.0

State Information: Ped Context: 0
P0 (0,0) P1 (0,0) P2 (0,0) P3 (32,0)
P4 (0,0) P5 (32,0) P7 (0,0)
P8 (17,0) P9 (0,0) P10 (0,0) P11 (0,0)
P12 (0,0) P13 (32,0) P14 (0,0) P15 (0,0)
P16 (0,0) P17 (0,0) P18 (0,0) P19 (0,0)
P20 (0,0) P21 (0,0) P23 (0,0)
P24 (0,0) P25 (0,0) P27 (0,0)
P28 (0,0) P29 (32,0) P30 (32,0) P31 (19,372)
P32 (0,0) P33 (0,0) P34 (0,0) P35 (0,0)
P38 (0,0) P39 (0,0)
P41 (0,0) P48 (0,0) P53 (0,0)
 

Sam27

Новичок
2
0
HELP! Помогите пожалуйста! В скрипте когда пиши 0AF8: samp add_message_to_chat "......" и т.д. текст в игре выводится большими буквами, в Sanny Builder писал мелкими буквами но в игре когда захожу на сервер выходит большими буквами! Помогите пожалуйста!
 

hnnssy

Известный
Друг
2,684
2,746
Я сюда уже писал. выделяешь правой кнопкой игрока и при нажатии клавиши Z и зажатой правой кнопки мыши нокаутирует. отправляет на сервер команду /knockout ID игрока, который в таргете(зеленая стрелочка над головой).

Но у меня крашит. Крашлог ниже

Код:
{$CLEO .cs}
{$INCLUDE SF}  

//-------------MAIN---------------
0000: NOP
thread "KNOCKOUT"

:KNOCKOUT_14
wait 400
  SAMP.Available
else_jump @KNOCKOUT_14

:KNOCKOUT_28
wait 0
if and
0AD2: 0@ = player $PLAYER_CHAR targeted_actor
key_down 90
else_jump @KNOCKOUT_91
1@ = SAMP.GetSAMPPlayerIDByActorHandle(0@)
say "/KNOCKOUT %S[%D]" 1@
wait 100

:KNOCKOUT_91
jump @KNOCKOUT_28





SA:MP An exception occured
Код:
SA-MP 0.3z
Exception At Address: 0x00000000
Base: 0x03460000

Registers:
EAX: 0x00000000   EBX: 0x00000001   ECX: 0x00A90670   EDX: 0x0000696E
ESI: 0x00000064   EDI: 0x00A903D0   EBP: 0x0028FD14   ESP: 0x0028FD08
EFLAGS: 0x00210202

Stack:
+0000: 0x5F722831  0x00A90670  0x00A90670  0x0046A201
+0010: 0x00469FF7  0x000071A1  0x00A90670  0x00000000
+0020: 0x0046A220  0x10B8E640  0x0000011A  0x0028FD94
+0030: 0x00000001  0x00000012  0x0000011A  0x00000001
+0040: 0x0053C206  0x0053C21A  0x0000001A  0x10B85EBA
+0050: 0x00000000  0xBF7B64E1  0x3FB79332  0xBFC00000
+0060: 0x034C5B5D  0x0000001A  0x10B85EBA  0x00000000
+0070: 0x0EE546F8  0x0028FD6C  0x0028F8DC  0x0028FF78
+0080: 0x03510AA4  0x03532EB0  0x00000001  0x769C6C30
+0090: 0x0053E986  0x00000001  0x008241AF  0x004D9486
+00A0: 0x0053ECC2  0x00000001  0x00619B71  0x0000001A
+00B0: 0x00000001  0x00000001  0x0000000A  0x00748DA0
+00C0: 0x0000001A  0x00000001  0x74991245  0x00000000
+00D0: 0x0028FF88  0x7EFDE000  0x01720000  0x4D85C277
+00E0: 0x01721130  0x00000008  0x00000100  0x00000008
+00F0: 0x00000102  0x442AC000  0x43C00000  0x00000000
+0100: 0x00000000  0x00000556  0x00000300  0x00000000
+0110: 0x00000001  0x000D01E8  0x00000200  0x00000002
+0120: 0x018002AB  0x02B00A5A  0x000002AB  0x00000180
+0130: 0x0000002C  0x0028FE2C  0x00825EA4  0x74991245
+0140: 0x00000000  0x7EFDE000  0xFFFFFFFF  0x00821D17
+0150: 0x00000065  0x00000065  0x0028FF88  0x008246F1
+0160: 0x00400000  0x00000000  0x0179362C  0x0000000A
+0170: 0x00000094  0x00000006  0x00000001  0x00001DB1
+0180: 0x00000002  0x76726553  0x20656369  0x6B636150
+0190: 0x00003120  0x00000000  0x00000000  0x00000000
+01A0: 0x00000000  0x00000000  0x00000000  0x00000000
+01B0: 0x00000000  0x00000000  0x00000000  0x00000000
+01C0: 0x00000000  0x00000000  0x00000000  0x00000000
+01D0: 0x00000000  0x00000000  0x00000000  0x00000000
+01E0: 0x00000000  0x00000000  0x00000000  0x00000000
+01F0: 0x00000000  0x00000000  0x00000000  0x00000000
+0200: 0x00824588  0x00000000  0x00000000  0x7EFDE000
+0210: 0xC0000005  0x74B2EEBC  0x0179362C  0x00000044
+0220: 0x017C4018  0x017C4028  0x017C4F40  0x00000000
+0230: 0x00000000  0x00000000  0x00000000  0x00000000
+0240: 0x00000000  0x00000000  0x00000000  0x00000000
+0250: 0x00000000  0xFFFFFFFF  0xFFFFFFFF  0xFFFFFFFF
+0260: 0x00000000  0x00000000  0x0028FE78  0x0028F8DC
+0270: 0x0028FFC4  0x00825EA4  0x00888078  0x00000000

SCM Op: 0x77E, lDbg: 0 LastRendObj: 6290

Game Version: US 1.0

State Information: Ped Context: 0
P0 (0,0) P1 (0,0) P2 (0,0) P3 (32,0)
P4 (0,0) P5 (32,0) P7 (0,0)
P8 (17,0) P9 (0,0) P10 (0,0) P11 (0,0)
P12 (0,0) P13 (32,0) P14 (0,0) P15 (0,0)
P16 (0,0) P17 (0,0) P18 (0,0) P19 (0,0)
P20 (0,0) P21 (0,0) P23 (0,0)
P24 (0,0) P25 (0,0) P27 (0,0)
P28 (0,0) P29 (32,0) P30 (32,0) P31 (19,372)
P32 (0,0) P33 (0,0) P34 (0,0) P35 (0,0)
P38 (0,0) P39 (0,0)
P41 (0,0) P48 (0,0) P53 (0,0)
Код:
{$CLEO}
0000:
wait 2000

while true
wait 0
if and
0AD2: 0@ = player $PLAYER_CHAR targeted_actor
key_down 90
then
1@ = SAMP.GetSAMPPlayerIDByActorHandle(0@)
say "/knockout %d" 1@
wait 150
end
end
 

hnnssy

Известный
Друг
2,684
2,746
HELP! Помогите пожалуйста! В скрипте когда пиши 0AF8: samp add_message_to_chat "......" и т.д. текст в игре выводится большими буквами, в Sanny Builder писал мелкими буквами но в игре когда захожу на сервер выходит большими буквами! Помогите пожалуйста!
Сервис - настройки - форматирование - регистр букв - как есть.
 

Xample

Новичок
89
1
Всем привет. подскажите опкод создания маркера до самого неба чтоб был (как у автобусников) без действий, просто для прицела из под земли нужно)
чтото типа 03BC: 0@ = create_sphere_at 262.6209 1851.202 8.7578 radius 2.0 только этот не до неба
 
Последнее редактирование: