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

Zoxan_Twist

Новичок
126
29
Есть способ обойти кик в машини и при выкидывании игрока из машины ?
После того как ты садишься в машину запускается на сервере таймер. Если спустя какой-то время ты все ещё в машине то тебя кикает.
Если ты обдуришь сервер и не покажешь что сел в тачку тогда не кикнет или если ты покажешь серверу что ты не в машине, хотя это будет не так тогда опять же не кикнет.

Как сделать автоматическое нажатие клавиш, которые появляются с помощью текстдрава?
https://www.blast.hk/wiki/opcodes:0bca
 

Zoxan_Twist

Новичок
126
29
А тут же клик на текстдрав, а мне нужно, что бы он считывал информацию и нажимал клавишу.
Клавиша это то же текстдрав но только он клакабельный(на него можно нажать) Все что тебе нужно это узнать ID этого Textdraw-a и отправить RPC нажатия на него.
ID можно получить не хитрым спсобом, а именно сделать цикл от 0 до 2048 и считать строку https://www.blast.hk/wiki/opcodes:0c5a?s[]=textdraw
Потом вывести её к примеру в чат игры. Пересмотреть все сообщение и найти тот ID что тебе нужен.
Или 2-й способ. Тот же цикл методом сравнивания строки с той которая написана в textdraw-e
 
Последнее редактирование:

Dark_Knight

Me, me and me.
Друг
4,078
2,095
Есть еще проще метод. GetTicketCount(). И есть такой опкод СФ. Идеально для тебя будет.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Но по идее скорость работы должна быть немного больше так как чтение используется на прямую та же?
Ты используешь клео, там буквально нет разницы в скорости. Читаешь ли ты адрес памяти или вызываешь функцию.
 

Скептик

Известный
15
0
CLEO:
{$CLEO}
0C63: register_console_command "CMD" to_label @CMD

WHILE TRUE
0001: WAIT 0 MS
    IF 0039:   0@ == TRUE
    THEN
    0B12: 0@ = 0@ XOR 1
    0001: WAIT 250 MS
    0B49: samp set_current_dialog_list_item 0
    0B47: samp close_current_dialog_with_button 1
    0001: WAIT 500 MS
    0B49: samp set_current_dialog_list_item 2
    0B47: samp close_current_dialog_with_button 1
    0001: WAIT 250 MS
    END
END

:CMD
0B12: 0@ = 0@ XOR 1
0B43: samp cmd_ret

Если не работает, то у тебя что то не так с игрой или компилятором.
А разве после проверки в цикле, ты не меняешься значение 0@ на 0? Не пойму зачем там 0B12...
Скрипт так и продолжает не работать при добавлении проверки.
 
Последнее редактирование:

Zoxan_Twist

Новичок
126
29
Скрипт так и продолжает не работать при добавлении проверки.
1) По долбался я с твоим скриптом понял что не заметил один интересный опкод а именно 0С63 который регистрирует КОНСОЛЬНУЮ КОМАНДУ! Это значит что если ты будешь вводить команду как обычно вводишь в SAMP-е то она работать не будет.
2) Начала вылетать игра от него. Вероятнее всего что это из-за того что SAMP ещё не загружен, а действия с ним уже производятся, поэтому и поставил задержку в 5-ть секунд.
3) в 7-й строке ты увидишь вывод сообщения в чат. Он там не с проста. Как можно догадаться он показывает значение переменной. Возможно не самый лучший способ но наглядный. Вырежь его, просто хотелось показать что с помощью такого метода, если не работает скрипт, можно найти причину.
4) Как видишь в теле цикла XOR был вырезан так как за собой он никакого толкового действия не несет.

Что по остальному то все работало хорошо.
Код:
{$CLEO}
0001: wait 5000
0C63: register_console_command "cmd" to_label @CMD

WHILE TRUE
0001: WAIT 0 MS
    0AF8: samp add_message_to_chat "IN: %d" color -1 0@
    IF 0039: 0@ == TRUE
    THEN
    0001: WAIT 250 MS
    0B49: samp set_current_dialog_list_item 0
    0B47: samp close_current_dialog_with_button 1
    0001: WAIT 500 MS
    0B49: samp set_current_dialog_list_item 2
    0B47: samp close_current_dialog_with_button 1
    0001: WAIT 250 MS
    END
END

:CMD
0B12: 0@ = 0@ XOR 1
0B43: samp cmd_ret
 
Последнее редактирование: