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

BlackKnigga

Известный
BH Team
922
449
Переменная не обнуляется после отправки. Поменяй местами jump @SetServPos и 23@ = 0
А еще регистрируй сразу на @command а не на @metka
 
  • Нравится
Реакции: Сэнд

01EG

Известный
Проверенный
793
454
CLEO:
{$CLEO}
{$NOSOURCE}
0000:

repeat
wait 0
until SAMP.Available()

0B34: samp register_client_command "test" to_label @metka
23@ = 0

:SetServPos
wait 0
if 23@ == 1
jf @SetServPos
if
0B61: samp is_local_player_spawned
jf @SetServPos
0B2B: samp 0@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0AC8: 1@ = allocate_memory_size 68
0BBA: samp store_player 0@ onfoot_data 1@
0C0D: struct 1@ offset 6 size 4 = -2169.3574 // X
0C0D: struct 1@ offset 10 size 4 = -2380.3093 // Y
0C0D: struct 1@ offset 14 size 4 = 30.6250 // Z
0BC0: samp send_onfoot_data 1@
say "/startfinance"
0AC9: free_allocated_memory 1@
jump @SetServPos
23@ = 0

:metka
if 23@ == 1
then
23@ = 0
else
23@ = 1
end
Samp.CmdRet()

Эта херь крашит.
Кто может подсказать, почему?

Код:
{$CLEO}
{$NOSOURCE}
0000:

repeat
wait 0
until SAMP.Available()

0B34: samp register_client_command "test" to_label @metka
23@ = 0

:SetServPos
wait 0
if 23@ == 1
jf @SetServPos

:1
wait 0
if
0B61: samp is_local_player_spawned
jf @1
0B2B: samp 0@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0AC8: 1@ = allocate_memory_size 68
0BBA: samp store_player 0@ onfoot_data 1@
0C0D: struct 1@ offset 6 size 4 = -2169.3574 // X
0C0D: struct 1@ offset 10 size 4 = -2380.3093 // Y
0C0D: struct 1@ offset 14 size 4 = 30.6250 // Z
0BC0: samp send_onfoot_data 1@
wait 0 \\ по сути здесь нужно указать задержку, так как не одновременно выполняется действие, сначало ты посылаешь синхру на корды
say "/startfinance"
0AC9: free_allocated_memory 1@
jump @1

\\ Это здесь не нужно, если ты прыгаешь после освобождения памяти, то просто напросто скрипт сюда не доходит 23@ = 0

:metka
if 23@ == 1
then
23@ = 0
else
23@ = 1
end
Samp.CmdRet()[

Вроде должно работать, но если не работает, то ты не так синхру построил.
 
  • Нравится
Реакции: Сэнд

Zoxan_Twist

Новичок
126
29
Значит такой вопрос:
У меня в переменную записана такая строка "текст1\nтекст2"
Как видим в строке присутствует перенос на новую строчку "\n". после записи в файл CLEO интерпретирует этот код как переход на новую строку и вместо того чтобы написать:
"текст1\nтекст2"
Пишет:
"текст1
текст2"
Внимание вопрос: как сделать так чтобы этого не происходило, а чтобы писало в одну строку вместе с \n?
 

01EG

Известный
Проверенный
793
454
Как можно узнать номер вирта, в котором находишься?
Не совсем понимаю, что тебе нужно, но все таки отвечу. Если тебе нужно узнать ид интерьера, как я подумал, то это делается так.
09E8: 0@ = actor $PLAYER_ACTOR active_interior

=====
Как правильно перезагружать свое CLEO ?
Код:
:reload
0ABA: end_custom_thread_named "01EGa.k.aDevil1606"
wait 50
0A92: create_custom_thread "01EGa.k.aDevil1606"
wait 50
print "Script was reloaded" 1000
wait 500
0B43: samp cmd_ret
Когда дохожу до этой метки - игра крашится. Что нужно указывать в 0A92: и в 0ABA: ?
 

Zoxan_Twist

Новичок
126
29
Не то мне нужно. Допустим, я отправляю онфут инфу, что нахожусь в инте, координаты есть. Но команда при этом не работает, т.к виртуальный мир не тот. Вот в чём проблема.
Номер виртуального мира никак не узнать/изменить. Эти данные управляются сервером, а не клиентом.

Как в строке которая записана в переменную заменить один знак другим?
Если не сложно список опкодов, если такие имеются

А каким образом это делается? :)
https://www.blast.hk/wiki/tutorials:sf_raknet?s[]=read&s[]=array
Следуй примерам
 
Последнее редактирование модератором:

BlackKnigga

Известный
BH Team
922
449
CLEO:
0BCF: samp send_interior_change 0@
Отправляет запрос на смену интерьера.
 

Perojek)0

Известный
205
3
После окода 0BE0 скрип не дальше не идёт
(0BE0: raknet hook_ret true)
Как это можно исправить?
 

DarkP1xel

Ухожу в армию... Вернусь через год.
BH Team
3,637
5,062
Не совсем понимаю, что тебе нужно, но все таки отвечу. Если тебе нужно узнать ид интерьера, как я подумал, то это делается так.
09E8: 0@ = actor $PLAYER_ACTOR active_interior

=====
Как правильно перезагружать свое CLEO ?
Код:
:reload
0ABA: end_custom_thread_named "01EGa.k.aDevil1606"
wait 50
0A92: create_custom_thread "01EGa.k.aDevil1606"
wait 50
print "Script was reloaded" 1000
wait 500
0B43: samp cmd_ret
Когда дохожу до этой метки - игра крашится. Что нужно указывать в 0A92: и в 0ABA: ?
Во первых в командах нельзя задержки ставить, а во вторых юзай 0A93.
 

Perojek)0

Известный
205
3
CLEO:
{$CLEO}
{$INCLUDE SF}

0001: wait 0 ms

while not SAMP.Available()
    wait 6000
end

0BE3: raknet setup_incoming_rpc_hook @1

0BDE: pause_thread 0

:1
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
if
    0@ == RPC_SCRCLIENTMESSAGE
then
0BE5: raknet 1@ = get_hook_param PARAM_BITSTREAM 
0AC8: 6@ = allocate_memory_size 512
0AC8: 7@ = allocate_memory_size 512
0AC8: 8@ = allocate_memory_size 512
0AC8: 9@ = allocate_memory_size 512
0BE7: raknet 6@ = bit_stream_read 1@ type BS_TYPE_SHORT
0BE7: raknet 7@ = bit_stream_read 1@ type BS_TYPE_INT
0BE7: raknet 8@ = bit_stream_read 1@ type BS_TYPE_BYTE
0BE8: raknet bit_stream 1@ read_array 9@ size 8@
0C1E: array 9@ element 8@ el_size 1 = 0
0AC9: free_allocated_memory 6@
0AC9: free_allocated_memory 7@
0AC9: free_allocated_memory 8@
0AC9: free_allocated_memory 9@
0AF8: samp add_message_to_chat 9@ color 7@
end
0BE0: raknet hook_ret true
В чём ошибка?
 

DarkP1xel

Ухожу в армию... Вернусь через год.
BH Team
3,637
5,062
Зачем для каждой переменной выделять место? В твоём случае только для массива место выделить нужно. Хук кстати можно ставить без проверки на загруженность SA:MP'a. Для надёжности после получения BitStream'a сбрасывай его offset read'a.
 
  • Нравится
Реакции: Perojek)0

Mikha Mikhin

Новичок
131
4
Каким опкодом определить, есть ли ЛЮБОЙ человек около $PLAYER_ACTOR в определённом радиусе?
Нашёл только такой
CLEO:
0104:   actor $PLAYER_ACTOR near_actor 1@ radius 15.0 15.0 15.0 sphere 0
, но он определяет есть ли 1@ около $PLAYER_ACTOR.