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

andrejandrej

Новичок
5
0
Вопрос: Не могу сканировать найденную строку, постоянно выдает нулевой результат. Мб где-то ошибка.. Что делать? :)
Code:
CLEO:
while true
wait 0
    0B75: samp get_chat_string 98 text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@
    if 0C18: 0@ = 2@ "(( Остаток:"
    then
        0AD4: 6@ = scan_string 2@ format "(( Остаток: %d грамм ))" 7@
        0AF8: samp add_message_to_chat "Строка сканирована. Всего значений: %d | Число: %d" color 4@ 6@ 7@
    end
end
RANGU4D.png
 

01EG

Известный
Проверенный
629
346
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

wait 2000

alloc 4@ 256
memset 4@ 0 256

0BE3: raknet setup_incoming_rpc_hook @ClientMessage

while true
wait 0
end

:ClientMessage
0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
if
1@ == RPC_ScrClientMessage // DWORD color, DWORD strLen, char[] msg
then
    0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT  // color
    0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT  // strLen
    0C11: memset destination 4@ value 0 size 256
    0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
    0C0F: array 4@ element 3@ = 0x00
    if
    0C18: 7@ = strstr string1 4@ string2 "Привет"
    then
        say "И вам"
    end                                                   
end
0BE0: raknet hook_ret true
Цвет не влияет ? Может быть любого цвета сообщения, но главное, чтоб оно совпадало по символам ?
Спасибо огромное.
 

01EG

Известный
Проверенный
629
346
В чём разница между, например 1@ и 1@v? Что это за "v"?
1@ - простая переменная в которую записывают только точные или дробные числа.
1@v - переменная предназначена для строк, данная переменная имеет больше памяти.(16 байт)
1@s - переменная предназначена для маленьких строк.(8байт)

Если хочешь записать в переменную строку, то лучше выдели память и записывай, махинации с 1@s, 1@v - БРЕД. Хотя, как сказать. Иногда тебе понадобиться записать строку побольше, чем 16 байт(16символов) и для этого я написал для тебя пример, как записывать большие строки в переменную.

CLEO:
alloc 1@ 32
0AD3: 1@ = "HELLO, WORLD !"
// используешь переменную, когда она не понадобиться, то освобождаешь
free 1@

P.S. 1 символ - 1 байт
 
Последнее редактирование модератором:
  • Нравится
Реакции: RedBoxWhite

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,462
Вопрос: Не могу сканировать найденную строку, постоянно выдает нулевой результат. Мб где-то ошибка.. Что делать? :)
Всё должно норм работать.
В коде может ещё какие-то заморочки.
 

hnnssy

Известный
Друг
2,684
2,751
1@ - простая переменная в которую записывают только точные или дробные числа.
1@v - переменная предназначена для строк, данная переменная имеет больше памяти.(16 байт)
1@s - переменная предназначена для маленьких строк.(8байт)

Если хочешь записать в переменную строку, то лучше выдели память и записывай, махинации с 1@s, 1@v - БРЕД. Хотя, как сказать. Иногда тебе понадобиться записать строку побольше, чем 16 байт(16символов) и для этого я написал для тебя пример, как записывать большие строки в переменную.

CLEO:
alloc 1@ 32
1@ = "HELLO, WORLD !"
// используешь переменную, когда она не понадобиться, то освобождаешь
free 1@

P.S. 1 символ - 1 байт
0AD3: 1@ = "HELLO, WORLD !"
 
  • Нравится
Реакции: 01EG

RedBoxWhite

Известный
337
27
Что не так, ребят, не работает(
CLEO:
{$CLEO} 
0000: 
wait 2000 

0AC8: 0@ = allocate_memory_size 512
0AC8: 2@ = allocate_memory_size 256
0AD3: 3@ = "Уровень: %d"

while true 
if 0BD7: samp get_dialog_text 3@
then 
0AD4: 1@ = scan_string 0@ format "Уровень: %d" 2@
0AF8: samp add_message_to_chat "Ваш игровой уровень: %d" 2@ color 0x3366FF
wait 1000
end  
wait 0
end

0AC9: free_allocated_memory 0@
0AC9: free_allocated_memory 2@
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,964
Записываешь строку в переменную 3, но не выделяешь для строки место. 0BD7 получает текст, а не проверяет его. Ты сканируешь строку которая в переменной 0, но в ней же нет никакой строки. Форматирование должно быть после цвета, а не до. Чем ты думал когда писал это?
 

RedBoxWhite

Известный
337
27
0BD7 получает текст, а не проверяет его.
А что там не так, чёт не понял.
Ты сканируешь строку которая в переменной 0, но в ней же нет никакой строки.
Уже поменял на 3.
Форматирование должно быть после цвета, а не до
Не понял.
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,964

RedBoxWhite

Известный
337
27
Ты когда нибудь писал слова ручкой на воздухе?
К чему ты это? Я не сильно шарю в клео.
Всё исправил, но всё равно не работает, при заходе на сервер сразу же выдаёт это сообщение и пишет рандомное число.
Если не сложно, покажи что ты имел ввиду, мб я тебя не понял.
 

hnnssy

Известный
Друг
2,684
2,751
К чему ты это? Я не сильно шарю в клео.
Всё исправил, но всё равно не работает, при заходе на сервер сразу же выдаёт это сообщение и пишет рандомное число.
Если не сложно, покажи что ты имел ввиду, мб я тебя не понял.
Ну дак можешь прочтёшь справку и пошаришься по вики?
 

RedBoxWhite

Известный
337
27
Ну дак можешь прочтёшь справку и пошаришься по вики?
Я может и в клео туплю, но сам я не тупой. Естественно везде лазал, всё читал, смотрел, но тут не понимаю, т.к с копированием текста с диалога ещё не читал и не смотрел, даже сейчас пытаюсь что-то найти, но ничего.
 

Perojek)0

Известный
205
3
Можно ли изменить цвет определённой части TextDraw'а? (Text)
И можно как-то скрыть созданный TextDraw или только дельнуть?