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

RusFatal

Новичок
114
10
Проверил щас в консоли - вводит все и со слешем и без
Убрал из кода следующую строку:
CLEO:
0C8F: samp process_chat_input "/tp"
По идее, кроме телепорта крашить нечему. Видно, что-то хреново написал.

UPD: Убрал и телепорт из скрипта, при команде /go краш XD
 

RusFatal

Новичок
114
10
Извиняюсь, сам допустил ошибку, краш вызван слешем в команде 0C8F: samp process_chat_input "/tp".Если его убрать, краша нет. Есть другие окподы для эмуляции команды?
 

BlackKnigga

Известный
BH Team
922
445
Извиняюсь, сам допустил ошибку, краш вызван слешем в команде 0C8F: samp process_chat_input "/tp".Если его убрать, краша нет. Есть другие окподы для эмуляции команды?
Он не должен крашить со слешем, сама по себе /tp работает?
 

RusFatal

Новичок
114
10
Он не должен крашить со слешем, сама по себе /tp работает?
Сама команда работает, возможно, если выставить задержку между телепортом и вводом команды заработает. Сейчас попробую.

UPD: При выставление задержки игра просто зависает
 

RusFatal

Новичок
114
10
Код:
0C8F: samp process_chat_input "/tp"
странно, но у меня крашит из за слеша, без него все нормально
Проблема как мне кажется в слеше, видимо этот опкод с ним не работает.

Без слеша все работает:
wKnYkAj.png

CLEO:
{$CLEO .cs}
0000:
thread 'TELEPORT'

while not SAMP.Available()
    wait 100
end
wait 5000
chatmsg "Скрипт работает" 8388352
0B34: samp register_client_command "go" to_label @cmd

while true
wait 0
end

:cmd
chatmsg "Телепорт на координаты" 8388352
Actor.PutAt($PLAYER_ACTOR, 500, 500, 20.28)
jump @cmd_2

:cmd_2
chatmsg "Выполнение команды" 8388352
wait 1000
jump @cmd_3

:cmd_3
0C8F: samp process_chat_input "Тут стоит команда телепорта"
0b43: samp cmd_ret
 
Последнее редактирование:

Boyenerji

Известный
97
1
В чём может быть ошибка.

Если в чате есть слово "прив", то мне нужно вывести какое либо значение.
Посмотрите пожалуйста код, не работает :(

CLEO:
{$CLEO}
0000:

repeat
wait 100
until SAMP.Available()

while true
wait 0
0B75: samp get_chat_string 99 text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@
if
0AB0: 104
then
    0AC8: 2@ = allocate_memory_size 256
    wait 0
    if
    0C18: 7@ = strstr string1 2@ string2 "ïðèâ"
    then
    wait 0
    0AF8: samp add_message_to_chat_with_color "%s" message 2@ 
    0AC9: free_allocated_memory 2@
    end
end
end
 

hnnssy

Известный
Друг
2,684
2,748
память выделять нужно перед получением строки чата, а не после
 

BlackKnigga

Известный
BH Team
922
445
В чём может быть ошибка.

Если в чате есть слово "прив", то мне нужно вывести какое либо значение.
Посмотрите пожалуйста код, не работает :(

CLEO:
{$CLEO}
0000:

repeat
wait 100
until SAMP.Available()

while true
wait 0
0B75: samp get_chat_string 99 text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@
if
0AB0: 104
then
    0AC8: 2@ = allocate_memory_size 256
    wait 0
    if
    0C18: 7@ = strstr string1 2@ string2 "ïðèâ"
    then
    wait 0
    0AF8: samp add_message_to_chat_with_color "%s" message 2@
    0AC9: free_allocated_memory 2@
    end
end
end
Потому что ты сначала получаешь строку и потом выделяешь память. А надо наоборот;)
 

Boyenerji

Известный
97
1
Теперь когда нажимаю 8 на нумпаде ничего не происходит.

Выделение памяти в цикл можно пихать вообще?

CLEO:
{$CLEO}
0000:

repeat
wait 100
until SAMP.Available()


while true
wait 0
0AC8: 2@ = allocate_memory_size 256
0B75: samp get_chat_string 99 text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@
if
0AB0: 104  //8 numpad
then
    if
    0C18: 7@ = strstr string1 2@ string2 "ïðèâ"
    then
    wait 0
    0ACD: show_text_highpriority "Rab" time 1000
    0AC9: free_allocated_memory 2@
    end
end
end
 

romacaddy

Известный
Проверенный
234
206
Теперь когда нажимаю 8 на нумпаде ничего не происходит.

Выделение памяти в цикл можно пихать вообще?

CLEO:
{$CLEO}
0000:

repeat
wait 100
until SAMP.Available()


while true
wait 0
0AC8: 2@ = allocate_memory_size 256
0B75: samp get_chat_string 99 text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@
if
0AB0: 104  //8 numpad
then
    if
    0C18: 7@ = strstr string1 2@ string2 "ïðèâ"
    then
    wait 0
    0ACD: show_text_highpriority "Rab" time 1000
    0AC9: free_allocated_memory 2@
    end
end
end
может ты на клавиатуре не нажал num lock. попробуй написать код, который будет получать строку с чата и сравнивать с нужной, а далее добавляй уже с активацией на клавишу.
 

Boyenerji

Известный
97
1
Ребят, как сделать так чтобы функция работала на всем протяжении скрипта?
Я вызываю функцию 0AB1: call_scm_func @plcol и дальше скрипт не выполняется, потому что в этой функции можно сказать бесконечный цикл.

Мне нужна работа коллизии на протяжении всей работы скрипта.

Сама функция:
CLEO:
:plcol
repeat
    if Samp.IsPlayerConnected(15@)
    then
    16@ = Samp.GetActorHandleByPlayerID(15@)
        if 056D: actor 16@ defined
        then
        0619: enable_actor 16@ collision_detection 0
        end
    end
    15@ += 1
    if 15@ > 1000
    then
    15@ = 0
    wait 0
    end
until false

Пример: эмуляция кнопок уже не выполняется.
CLEO:
0AB1: call_scm_func @plcol
        0B56: set_game_key 1 state -128
        0B56: set_game_key 16 state -128