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

BlackKnigga

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

01EG

Известный
Проверенный
631
344
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

Известный
Проверенный
631
344
Как можно узнать номер вирта, в котором находишься?
Не совсем понимаю, что тебе нужно, но все таки отвечу. Если тебе нужно узнать ид интерьера, как я подумал, то это делается так.
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
443
CLEO:
0BCF: samp send_interior_change 0@
Отправляет запрос на смену интерьера.
 

Perojek)0

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

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,957
Не совсем понимаю, что тебе нужно, но все таки отвечу. Если тебе нужно узнать ид интерьера, как я подумал, то это делается так.
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,635
4,957
Зачем для каждой переменной выделять место? В твоём случае только для массива место выделить нужно. Хук кстати можно ставить без проверки на загруженность 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.