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

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
0A8E: 2@ = 0@ + 1@
0@ - указатель на строку (то бишь "строка");
1@ - кол-во символов, которые нужно пропустить от начала (указателя/строки);
2@ - строка без первых 1@-х символов.
Это не какой-то особенный опкод для работы со строками, только с указателями (ЦЫФРАМИ). 2@ пустить под 0AC9: free будет плохой идеей.
 

RusFatal

Новичок
114
10
Хм... может я опкод неправильный подобрал?
Вообщем при вводе команды /textd все существующие тестдравы должны записываться в файл file.txt, с их текстом и цифрами.
В файле высвечиваются только id текстдравов, которые в данный момент существуют, текст почему-то не берет. В чём проблема кто-нибудь знает?

CLEO:
{$CLEO .cs}

0000:

while not Samp.Available()
wait 100
end

0B34: samp register_client_command "textd" to_label @start

while true
wait 0
if 5@ == 1
then
chatmsg "Ожидайте, идет запись..." -1
0A9A: 6@ = openfile "Cleo\file.txt" mode "at"
for 0@ = 0 to 2304
    if 0C5D: samp textdraw 0@ is_exists
    then
0C5A: samp textdraw 0@ get_string_to 1@
0AD9: write_formatted_text "-------------------------------------------------------- %c" in_file 6@ 0xD
0AD9: write_formatted_text "Текст текстдрава: %s | ID текстдрава: %d %c" in_file 6@ 1@ 0@ 0xD
0AD9: write_formatted_text "Цифры текстдрава: %d | ID текстдрава: %d %c" in_file 6@ 1@ 0@ 0xD
5@ = 0
end
end
end
end

:start
5@ = 1
Samp.CmdRet()

Под спойлером текст из file.txt
Код:
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 13
Цифры текстдрава: 0 | ID текстдрава: 13
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2049
Цифры текстдрава: 0 | ID текстдрава: 2049
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2050
Цифры текстдрава: 0 | ID текстдрава: 2050
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2051
Цифры текстдрава: 0 | ID текстдрава: 2051
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2052
Цифры текстдрава: 0 | ID текстдрава: 2052
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2053
Цифры текстдрава: 0 | ID текстдрава: 2053
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2054
Цифры текстдрава: 0 | ID текстдрава: 2054
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2055
Цифры текстдрава: 0 | ID текстдрава: 2055
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2056
Цифры текстдрава: 0 | ID текстдрава: 2056
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2057
Цифры текстдрава: 0 | ID текстдрава: 2057
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2058
Цифры текстдрава: 0 | ID текстдрава: 2058
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2059
Цифры текстдрава: 0 | ID текстдрава: 2059
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2060
Цифры текстдрава: 0 | ID текстдрава: 2060
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2061
Цифры текстдрава: 0 | ID текстдрава: 2061
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2062
Цифры текстдрава: 0 | ID текстдрава: 2062
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2063
Цифры текстдрава: 0 | ID текстдрава: 2063
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2064
Цифры текстдрава: 0 | ID текстдрава: 2064
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2065
Цифры текстдрава: 0 | ID текстдрава: 2065
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2066
Цифры текстдрава: 0 | ID текстдрава: 2066
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2067
Цифры текстдрава: 0 | ID текстдрава: 2067
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2068
Цифры текстдрава: 0 | ID текстдрава: 2068
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2069
Цифры текстдрава: 0 | ID текстдрава: 2069
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2070
Цифры текстдрава: 0 | ID текстдрава: 2070
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2071
Цифры текстдрава: 0 | ID текстдрава: 2071
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2072
Цифры текстдрава: 0 | ID текстдрава: 2072
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2073
Цифры текстдрава: 0 | ID текстдрава: 2073
--------------------------------------------------------
Текст текстдрава: (null) | ID текстдрава: 2078
Цифры текстдрава: 0 | ID текстдрава: 2078
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Есть скрипт автоответа, столкнулся в проблемой, в скрипте есть косяк:
При подаче Гос.новостей крашит сразу игру.
И ещё, не знаю, как добавить новый вопрос, по типу первого "спасибо"
0AA5: call 0x8220AD num_params 5 pop 5 params 13@v 12@v 11@ "%[\_a-zA-Z][%d] : пасиб" 9@
Указано 3 значения, а в маске только 2.
0C0F: array 9@ element 8@ = 0x00
Здесь размер элемента предполагается как умноженный на 4 - 8@ * 4, это некорректно, учитывая то, что ты работаешь со строкой, где 1 символ - 1 байт, а не 4. Используй opcodes:0C1E
 

Vetalll

Известный
4
0
Здравствуйте.
Скажите, пожалуйста, каким образом можно узнать ID модели транспорта в котором сидит персонаж? Нужно для условия.
 

Quit

Известный
207
52
Ребят, мне нужно в клео использовать определенный NOP, как это делается? Опкод какой то, или что? Можете пожалуйста объяснить
Например, что бы я не отправлял какую то информацию о себе серверу
 
Последнее редактирование:

hnnssy

Известный
Друг
2,684
2,748
if and
0C18: 0 = 9@ " : "
0C18: 0 = 9@ "пасиб"
then
0AA5: call 0x8220AD num_params 5 pop 5 params 13@v 12@v 11@ "%[\_a-zA-Z][%d] : пасиб" 9@
0AF9: "/cmd %d Приятной игры :)" 12@
end
if and
0C18: 0 = 9@ " : "
0C18: 0 = 9@ "пасиб"
then
0AA5: call 0x8220AD num_params 5 pop 5 params 13@v 12@v 11@ "%[\_a-zA-Z][%d] : пасиб" 9@
0AF9: "/cmd %d Приятной игры :)" 12@
end
 

serhiyrubin

Известный
396
104
А как?) Научи плиз, не шарю)
Ну хз как правильно называется, но я все понимаю так, и это работает
Код:
while true // Начало бесконечного цикла   
wait 0
    if and // Первое условие
    0C18: 0 = 9@ " : "
    0C18: 0 = 9@ "пасиб"
    then
        0AA5: call 0x8220AD num_params 5 pop 5 params 13@v 12@v 11@ "%[\_a-zA-Z][%d] : пасиб" 9@
        0AF9: "/cmd %d Приятной игры :)" 12@
    end  // Конец первого условия
  if and // Второе условие
    0C18: 0 = 9@ " : "
    0C18: 0 = 9@ "дайте"
    then
        0AA5: call 0x8220AD num_params 5 pop 5 params 13@v 12@v 11@ "%[\_a-zA-Z][%d] : дайте" 9@
        0AF9: "/cmd %d Не могу" 12@
    end // Конец второго условия
0C11: memset destination 9@ value 0 size 256
end // Конец цикла
 

Vetalll

Известный
4
0
Здравствуйте.
Есть код, который при нажатии ESC "нажимает" Num Del. И проблема в том, что он срабатывает только на второй раз, то бишь когда меню закрывается. Подскажите, пожалуйста, как это можно обойти?
CLEO:
:mc1
wait 0
if
0C89: key_just_pressed 0x1b
else_jump @mc1
0C72: set_virtual_key 0x6E down true
wait 20
0C72: set_virtual_key 0x6E down false
jump @mc1