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

Cerberus

Режим чтения
13
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Почему в этом коде не работает задержка?
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

wait 3000
0B34: samp register_client_command "rec" to_label @rec
alloc 3@ 128

while true
    wait 0
end

:rec
0B35: samp 0@ = get_last_command_params
if 0AD4: 1@ = scan_string 0@ format "%d" 2@
then
    0AD3: 3@ = format "Reconnect on ~g~%d ~w~seconds. Author: ~g~Cerberus" 2@
    0ACC: show_text_lowpriority 3@ time 3000
    ACTOR.Health($PLAYER_ACTOR) = 100
    0B28: samp disconnect_with_reason 1 
    2@ *= 1000 
    wait 2@ 
    0B27: samp set_gamestate 1 
    else
    0B28: samp disconnect_with_reason 1 
    print "Reconnect on ~g~15 ~w~seconds. Author: ~g~Cerberus" 3000
    wait 15000
    0B27: samp set_gamestate 1
end
SAMP.CmdRet()
 

4el0ve4ik

Известный
Всефорумный модератор
1,548
1,339
Почему в этом коде не работает задержка?
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

wait 3000
0B34: samp register_client_command "rec" to_label @rec
alloc 3@ 128

while true
    wait 0
end

:rec
0B35: samp 0@ = get_last_command_params
if 0AD4: 1@ = scan_string 0@ format "%d" 2@
then
    0AD3: 3@ = format "Reconnect on ~g~%d ~w~seconds. Author: ~g~Cerberus" 2@
    0ACC: show_text_lowpriority 3@ time 3000
    ACTOR.Health($PLAYER_ACTOR) = 100
    0B28: samp disconnect_with_reason 1
    2@ *= 1000
    wait 2@
    0B27: samp set_gamestate 1
    else
    0B28: samp disconnect_with_reason 1
    print "Reconnect on ~g~15 ~w~seconds. Author: ~g~Cerberus" 3000
    wait 15000
    0B27: samp set_gamestate 1
end
SAMP.CmdRet()
которая wait 3000 или какая?
 

Woofing Giraffe

Активный
402
49
Почему в этом коде не работает задержка?
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

wait 3000
0B34: samp register_client_command "rec" to_label @rec
alloc 3@ 128

while true
    wait 0
end

:rec
0B35: samp 0@ = get_last_command_params
if 0AD4: 1@ = scan_string 0@ format "%d" 2@
then
    0AD3: 3@ = format "Reconnect on ~g~%d ~w~seconds. Author: ~g~Cerberus" 2@
    0ACC: show_text_lowpriority 3@ time 3000
    ACTOR.Health($PLAYER_ACTOR) = 100
    0B28: samp disconnect_with_reason 1
    2@ *= 1000
    wait 2@
    0B27: samp set_gamestate 1
    else
    0B28: samp disconnect_with_reason 1
    print "Reconnect on ~g~15 ~w~seconds. Author: ~g~Cerberus" 3000
    wait 15000
    0B27: samp set_gamestate 1
end
SAMP.CmdRet()
Внутри тела команды нельзя wait использовать
 

Cerberus

Режим чтения
13
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
Подскажите, опкод 0BC9, если его зациклить, он будет постоянно отсылать серверу нажатие кнопки, даже если окно еще не открыто?
Т.е. к примеру мне нужно максимально быстро подтвердить диалог с объявлением, циклом я отсылаю ответ "Да" на ид этого окна, пока свободных объяв еще нет, может быть такое что сервер при появлении свободной объявы уже сразу примет мой ответ, даже если окно у меня еще не успело открыться? Или опкод срабатывает только при уже открытом окне?

Спасибо

Код:
0BC9: samp send_dialog_response dialog 228 button 1 listitem 0 input ""
За флуд сервер может кикнуть.
Не самый практичный вариант. Лучше добавить проверку на то, что диалог открыт или поставить хук на появление диалога.
Если для редактирования объявления нужно делать ещё какие-то действия(ввод команды в чат...), то такой способ не сработает. Нужно сначала сделать так, чтобы это действие выполнилось и только потом отправлять dialog response.
 

Trashmas

Новичок
40
0
За флуд сервер может кикнуть.
Не самый практичный вариант. Лучше добавить проверку на то, что диалог открыт или поставить хук на появление диалога.
Если для редактирования объявления нужно делать ещё какие-то действия(ввод команды в чат...), то такой способ не сработает. Нужно сначала сделать так, чтобы это действие выполнилось и только потом отправлять dialog response.
Да, я так и сделал, проверка если диалог открыт, за тем dialog response и close dialog или просто нажать Ентер. Но я еще добавил что бы раз в 350мс (если чаще - могут быть кики) скрипт отправлял за ранее ответ "Да" что ты сервер быстрее принял мою объяву.
Вот и хотел узнать есть ли в этом смысл.
 

RedBoxWhite

Известный
337
27
Как получать рандомное число? Например, мне надо раз в минуту выдавать рандомное число, от 0 до 2000.
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,965
Как получать рандомное число?
95921e28c017450ca2eeb4df9989aeba.png
 
  • Нравится
Реакции: RedBoxWhite

Trashmas

Новичок
40
0
Прости, а можешь сделать это? До меня что-то не допрет, как это сделать :D
В блоке команды пишешь что то типа:
Код:
:Command
if 1@ == false
then
1@ = true
else
1@ = false
end
SAMP.CmdRet()
Эта переменная будет обозначать включен скрипт или нет (тру/фолз)

В основном цикле(потоке):
Код:
if 1@ == true // или while/repeat
then
//тело скрипта, тут wait работают
end
 

fiendshadow

3LFhocV726q7pKWWky2vv3W38Dm9sGJV86
Проверенный
455
122
В блоке команды пишешь что то типа:
Код:
:Command
if 1@ == false
then
1@ = true
else
1@ = false
end
SAMP.CmdRet()
Эта переменная будет обозначать включен скрипт или нет (тру/фолз)

В основном цикле(потоке):
Код:
if 1@ == true // или while/repeat
then
//тело скрипта, тут wait работают
end
или как делал батя - @call
 

RedBoxWhite

Известный
337
27
Шо не так? Игра просто вылетает, даже не краш, а просто вылет.
CLEO:
{$CLEO}
0000:
wait 2000

0AC8: 10@ = allocate_memory_size 256
0AC8: 11@ = allocate_memory_size 128
0AC8: 12@ = allocate_memory_size 128

while true
wait 0
0B75: get_chat_string 99 text_to 10@ prefix_to 0 color_to 0 prefix_color_to 0
if 0C18: 0 = strstr string1 10@ string2 "[O]"
then
0AA5: call 0x8220AD num_params 4 pop 4 params 12@ 11@ "%s: %s" 10@
    for 1@ = 0 to 999
    if 0B23:  samp is_player_connected 1@
    then
    0B36: samp 2@ = get_player_nickname 1@
    0C16: 16@ = strtok string1 11@ string2 "["
        if 0C21: stricmp string1 16@ string2 2@
        then
        0AF8: "%d" -1 1@
        end
    end
    end
end
wait 0
end
Уже нашёл ошибку, исправил. Но почему очень медленно срабатывает?
 
Последнее редактирование: