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

MaIIoy

Новичок
24
2
Здорова всем, как сделать проверку играем ли мы на указанном сервере либо нет? Если мы играем на указанном сервере (указанном по ип и порт) тогда скрипт будет работать, а если мы не играем на указанном сервере тогда напишет сообщение в чат типа такого: chatmsg "Скрипт доступен только на указанном сервере" -1
 

BlackKnigga

Известный
BH Team
922
444
Не работает. Все равно рандомное число добавляет
Цикл вызывается кучу раз из-за того что строка не меняется и число инкрементится несколько раз подряд. Ставь хук
alloc 1@ 128
1@ *= 60000
wait 1@

в чем проблема
В том что ты херню мутишь

Здорова всем, как сделать проверку играем ли мы на указанном сервере либо нет? Если мы играем на указанном сервере (указанном по ип и порт) тогда скрипт будет работать, а если мы не играем на указанном сервере тогда напишет сообщение в чат типа такого: chatmsg "Скрипт доступен только на указанном сервере" -1
opcodes - 0b39 | BlastHack — DEV_WIKI(https://blast.hk/wiki/opcodes:0b39)
Дальше сам
 
  • Нравится
Реакции: NookieONE

NookieONE

Участник
128
1
ПОпробуй русские буквы не юзать в ini
Не помогло.

Цикл вызывается кучу раз из-за того что строка не меняется и число инкрементится несколько раз подряд. Ставь хук

В том что ты херню мутишь


opcodes - 0b39 | BlastHack — DEV_WIKI(https://blast.hk/wiki/opcodes:0b39)
Дальше сам

Что за хук? Можешь помочь? :)
 
Последнее редактирование модератором:

D3.Pheonix

🎹
Модератор
2,817
1,599
Что за хук? Можешь помочь? :)
Можно костыль сделать (16 строка)
CLEO:
{$CLEO}
0000:
repeat
wait 0
until samp.Available()

while true
wait 0
    alloc 1@ 256
    0B75: samp get_chat_string 99 text_to 1@ prefix_to 0 color_to 0 prefix_color_to 0
    if 0C18: 2@ = strstr string1 1@ string2 "ТЕКСТ"
    then
        0AF0: 3@ = get_int_from_ini_file "cleo\Файл.ini" section "Счетчик" key "Кол-во"
        000A: 3@ += 1
        0AF1: write_int 3@ to_ini_file "cleo\Файл.ini" section "Счетчик" key "Кол-во"
        chatmsg "запись сделана" -1 // Сбиваешь 99 строку любым сообщением, чтоб не было повторений
    end
    free 1@
end
 
  • Нравится
Реакции: Skelerll
1,417
1,029
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

IF 8AAB:   file_exists "CLEO\test.ini"
THEN
    0AF1: write_int 0 to_ini_file "cleo\test.ini" section "Counter" key "Key"
END
0BE3: raknet setup_incoming_rpc_hook @hook
0bde: 0

:hook
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
IF 0@ == RPC_SCRCLIENTMESSAGE
THEN
    0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM  
    0BE7: raknet 1@ = bit_stream_read 0@ type BS_TYPE_INT
    0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT
    alloc 3@ 125
    0BE8: raknet bit_stream 0@ read_array 3@ size 2@
    0C1E: struct 3@ offset 2@ size 1 = 0
    IF 0C18: 33@ = strstr string1 3@ string2 "ТЕКСТ"
    THEN
        0AF0: 4@ = get_int_from_ini_file "cleo\test.ini" section "Counter" key "Key"
        000A: 4@ += 1
        0AF1: write_int 4@ to_ini_file "cleo\test.ini" section "Counter" key "Key"
    END
    free 3@
END
0BE0: raknet hook_ret TRUE
 

NookieONE

Участник
128
1
Можно костыль сделать (16 строка)
CLEO:
{$CLEO}
0000:
repeat
wait 0
until samp.Available()

while true
wait 0
    alloc 1@ 256
    0B75: samp get_chat_string 99 text_to 1@ prefix_to 0 color_to 0 prefix_color_to 0
    if 0C18: 2@ = strstr string1 1@ string2 "ТЕКСТ"
    then
        0AF0: 3@ = get_int_from_ini_file "cleo\Файл.ini" section "Счетчик" key "Кол-во"
        000A: 3@ += 1
        0AF1: write_int 3@ to_ini_file "cleo\Файл.ini" section "Счетчик" key "Кол-во"
        chatmsg "запись сделана" -1 // Сбиваешь 99 строку любым сообщением, чтоб не было повторений
    end
    free 1@
end
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

IF 8AAB:   file_exists "CLEO\test.ini"
THEN
    0AF1: write_int 0 to_ini_file "cleo\test.ini" section "Counter" key "Key"
END
0BE3: raknet setup_incoming_rpc_hook @hook
0bde: 0

:hook
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
IF 0@ == RPC_SCRCLIENTMESSAGE
THEN
    0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM 
    0BE7: raknet 1@ = bit_stream_read 0@ type BS_TYPE_INT
    0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT
    alloc 3@ 125
    0BE8: raknet bit_stream 0@ read_array 3@ size 2@
    0C1E: struct 3@ offset 2@ size 1 = 0
    IF 0C18: 33@ = strstr string1 3@ string2 "ТЕКСТ"
    THEN
        0AF0: 4@ = get_int_from_ini_file "cleo\test.ini" section "Counter" key "Key"
        000A: 4@ += 1
        0AF1: write_int 4@ to_ini_file "cleo\test.ini" section "Counter" key "Key"
    END
    free 3@
END
0BE0: raknet hook_ret TRUE
Работает. Спасибо ^^

CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

IF 8AAB:   file_exists "CLEO\test.ini"
THEN
    0AF1: write_int 0 to_ini_file "cleo\test.ini" section "Counter" key "Key"
END
0BE3: raknet setup_incoming_rpc_hook @hook
0bde: 0

:hook
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
IF 0@ == RPC_SCRCLIENTMESSAGE
THEN
    0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM 
    0BE7: raknet 1@ = bit_stream_read 0@ type BS_TYPE_INT
    0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT
    alloc 3@ 125
    0BE8: raknet bit_stream 0@ read_array 3@ size 2@
    0C1E: struct 3@ offset 2@ size 1 = 0
    IF 0C18: 33@ = strstr string1 3@ string2 "ТЕКСТ"
    THEN
        0AF0: 4@ = get_int_from_ini_file "cleo\test.ini" section "Counter" key "Key"
        000A: 4@ += 1
        0AF1: write_int 4@ to_ini_file "cleo\test.ini" section "Counter" key "Key"
    END
    free 3@
END
0BE0: raknet hook_ret TRUE
Есть вопрос.
Если мне нужно в этот же скрипт добавить еще один поиск текста, его можно прям туда засунуть? Или для каждого свой хук?
Т.е. мне нужно:

IF 0C18: 33@ = strstr string1 3@ string2 "ТЕКСТ"
THEN
0AF0: 4@ = get_int_from_ini_file "cleo\test.ini" section "Counter" key "Key"
000A: 4@ += 1
0AF1: write_int 4@ to_ini_file "cleo\test.ini" section "Counter" key "Key"

IF 0C18: 33@ = strstr string1 3@ string2 "ТЕКСТ ДВА"
THEN
0AF0: 4@ = get_int_from_ini_file "cleo\test.ini" section "Counter" key "Key"
000A: 4@ += 1
0AF1: write_int 4@ to_ini_file "cleo\test.ini" section "Counter" key "Key"
 
Последнее редактирование модератором:

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

NookieONE

Участник
128
1
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

IF 8AAB:   file_exists "CLEO\test.ini"
THEN
    0AF1: write_int 0 to_ini_file "cleo\test.ini" section "Counter" key "Key"
END
0BE3: raknet setup_incoming_rpc_hook @hook
0bde: 0

:hook
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
IF 0@ == RPC_SCRCLIENTMESSAGE
THEN
    0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
    0BE7: raknet 1@ = bit_stream_read 0@ type BS_TYPE_INT
    0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT
    alloc 3@ 125
    0BE8: raknet bit_stream 0@ read_array 3@ size 2@
    0C1E: struct 3@ offset 2@ size 1 = 0
    IF 0C18: 33@ = strstr string1 3@ string2 "ТЕКСТ"
    THEN
        0AF0: 4@ = get_int_from_ini_file "cleo\test.ini" section "Counter" key "Key"
        000A: 4@ += 1
        0AF1: write_int 4@ to_ini_file "cleo\test.ini" section "Counter" key "Key"
    END
    free 3@
END
0BE0: raknet hook_ret TRUE
Теперь нужно чтобы в тексте нужно было вставить свой ник т.е.
IF 0C18: 33@ = strstr string1 3@ string2 "ТЕКСТ Nick"
Ник нужно указывать в файле .ini
 
Последнее редактирование:
1,417
1,029
бери ник из иника через
CLEO:
0AF4: 0@ = read_string_from_ini_file "cleo\config.ini" section "SectionName" key "stringKey"
предварительно выделив под переменную память и вставляй вместо "Текст ник" эту переменную, если тебе нужно чтобы был и "текст" и ник, то форматируй в одну строку через
CLEO:
0AD3: 0@ = format "TEXT %s" 1@ // 1@ - ник из файла, под 0@ тоже надо выделить память
// не забывай после операций освобождать выделенную память, если данные в переменной тебе уже не нужны
 

MaIIoy

Новичок
24
2
Помогите, что не так с кодом?
CLEO:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP

:Noname_2
0001: wait 400 ms
0AFA:  is_samp_available
004D: jump_if_false @Noname_2
0B34: samp register_client_command "sboom" to_label @Noname_210
0BE2: raknet setup_outcoming_packet_hook @Noname_219

:Noname_37
0001: wait 0 ms
00D6: if
0039:   20@ == 1
004D: jump_if_false @Noname_203
0AD4: 4@ = scan_string 1@ format "%s" 2@ 
00D6: if and
0039:   4@ == 1
0C29: 0@ = stristr string1 2@ string2 "да"
004D: jump_if_false @Noname_203
00D6: if
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @Noname_135
0224: set_car $PLAYER_ACTOR health_to 0
0002: jump @Noname_196

:Noname_135
0AF8: samp add_message_to_chat "{F49418}[Ошибка] {FFFFFF}Нужно находиться в транспорте" color -1 

:Noname_196
0006: 20@ = 0

:Noname_203
0002: jump @Noname_37

:Noname_210
0006: 20@ = 1
0B43: samp cmd_ret

:Noname_219
0BE5: raknet 0@ = get_hook_param 1
00D6: if and
0039:   0@ == 207
0039:   20@ == 1
004D: jump_if_false @Noname_320
0BE5: raknet 1@ = get_hook_param 0
0AC8: 2@ = allocate_memory_size 69
0BE8: raknet bit_stream 1@ read_array 2@ size 69
0C0D: struct 2@ offset 63 size 2 = 1
0C0D: struct 2@ offset 65 size 2 = 1
0BEA: raknet bit_stream 1@ reset_write_pointer
0B40: raknet bit_stream 1@ write 2@ type 5 size 69
0AC9: free_allocated_memory 2@

:Noname_320
0BE0: raknet hook_ret 1
 

NookieONE

Участник
128
1
бери ник из иника через
CLEO:
0AF4: 0@ = read_string_from_ini_file "cleo\config.ini" section "SectionName" key "stringKey"
предварительно выделив под переменную память и вставляй вместо "Текст ник" эту переменную, если тебе нужно чтобы был и "текст" и ник, то форматируй в одну строку через
CLEO:
0AD3: 0@ = format "TEXT %s" 1@ // 1@ - ник из файла, под 0@ тоже надо выделить память
// не забывай после операций освобождать выделенную память, если данные в переменной тебе уже не нужны
Крашит игру.
Мб я не доделал что-то.
Если можно, можешь это приделать к тому скрипту? ^^