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

Skadi

Новичок
43
12
крч, когда открываю cleo, пишет вот эту шнягу - "Этот файл был скомпилирован для GTA III. Изменить режим редактирования и повторить декомпиляцию?"
как это убрать?
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,963
Ты скрипт для GTA 3 открываешь или для SA говноскрипт скачал?
 

RedBoxWhite

Известный
337
27
Забыл ответить hnnssy (насчёт кода). 1 проблему решил, но появилась ещё одна: если в чате новое сообщение, то скрипт сбивается (при нажатии Y, ничего не выводит)
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

:samp
wait 100
0afa:
jf @samp

0AC8: 9@ = allocate_memory_size 556
0AC8: 12@ = allocate_memory_size 556
0AC8: 10@ = allocate_memory_size 33
alloc 13@ 156
0B6D: render 17@ = create_font "Arial" height 11 flags 5
0BE3: raknet setup_incoming_rpc_hook @hook 

while true
wait 0
:suda
    if and
    0C18: 0 = 9@ "[Test]"
    0C18: 0 = 9@ ":"
    then
        if 0C18: 0 = 9@ "test"
        then
            0C11: 13@ 0x0 156
            format 13@ "%s" 9@
            0AA5: call 0x8220AD num_params 3 pop 3 params 10@ "[Test] %s" 9@
            0AB1: call @strlen 1 10@ return: 22@
            22@ += 8
            005A: 9@ += 22@
            0C11: 12@ 0x0 556
            format 12@ "%s || %s" 9@ 10@
            32@ = 0
            repeat
            wait 0
                    0B6F: render font 17@ draw_text 12@ pos 20 530 color -1

                0085: 31@ = 32@
                31@ /= 1000
                0AD1: show_formatted_text_highpriority "%d" time 1 31@
                if 31@ >= 15
                then
                    0C11: 12@ 0x0 556
                    jump @timer1
                end
                if 0ADC: "Y" 
                then
                        0AF9: "%s" 12@
                        log 12@
                        jump @suda
                end
               
                if 0ADC: "N"
                then
                    jump @suda
                end
            until false
        0C11: 9@ 0x0 556
        0C11: 10@ 0x0 33
        end
    end
end

:hook
0BE5: raknet 5@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 6@ = get_hook_param PARAM_PACKETID
if 6@ == RPC_ScrClientMessage // DWORD color, DWORD strLen, char[] msg
then
    0BE7: raknet 7@ = bit_stream_read 5@ type BS_TYPE_INT
    0BE7: raknet 8@ = bit_stream_read 5@ type BS_TYPE_INT
    0C11: memset destination 9@ value 0 size 556
    0BE8: raknet bit_stream 5@ read_array 9@ size 8@
    0C0F: array 9@ element 8@ = 0x00  
end
0BE0: raknet hook_ret true

:strlen
for 1@ = 0 to 1024
    0A8D: 2@ = read_memory 0@ size 1 virtual_protect 0
    if not 2@ == 0
    jf break
    0@ += 1
end
0AB2: ret 1 1@
 

kraft1k

Вынь х*й из головы и все получится © hnnssy
Друг
1,479
1,163
Крашит игру. Почему?

CLEO:
{$CLEO .cs}
0000: NOP

repeat
wait 0
until Samp.Available()

alloc 1@ 128
alloc 12@ 128
alloc 13@ 128
alloc 14@ 128

cmd "aban" @go

While true
wait 0
0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 3@ prefix_color_to 4@
 if 0AD4: 1@ = scan_string 1@ format "[A] %s_%s[%d]: /ban %d %d Cheat by %s" 9@ 10@ 11@ 12@ 13@ 14@//IF and SET 
 then
 msg "Добавлен в /aban" 0x99cc00
 wait 0
  if 22@ == 1
  then
  msg "/ban %d %d Cheat by %s" 12@ 13@ 14@
  22@ = 0
  end                                                                
 end
end  
SAMP.CmdRet()

:go
0B12: 22@ = 22@ XOR 1 
if 22@ == 1
then
0acd: "~y~[~r~Kraft1k~y~]/a BAN " 1500
else 
0acd: "~y~[~r~Kraft1k~y~]/a BAN " 1500
end 
SAMP.Cmdret()
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460
Код:
{$CLEO .cs}
0000: NOP

repeat
wait 0
until Samp.Available()

alloc 1@ 128
alloc 12@ 128
alloc 13@ 128
alloc 14@ 128

cmd "aban" @go

While true
wait 0
0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 3@ prefix_color_to 4@
if 0AD4: 1@ = scan_string 1@ format "[A] %s_%s[%d]: /ban %d %d Cheat by %s" 9@ 10@ 11@ 12@ 13@ 14@//IF and SET

Перезаписываешь 1@(хранится указатель на выделенную память) кол-вом полученных значений.
 
  • Нравится
Реакции: kraft1k

kraft1k

Вынь х*й из головы и все получится © hnnssy
Друг
1,479
1,163
Не сканирует, не хочет записывать в ini.

CLEO:
{$CLEO .cs}
0000: NOP

repeat
wait 0
until Samp.Available()

alloc 0@ 128
alloc 1@ 128
alloc 2@ 64
alloc 3@ 64
alloc 4@ 64
alloc 5@ 128
alloc 12@ 260
alloc 13@ 260
alloc 14@ 260

cmd "aban" @go

While true
wait 0
0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 3@ prefix_color_to 4@
if 0AD4: 5@ = scan_string 1@ format "[A] %s[%d]: /ban %d %d Cheat by %s" 10@ 11@ 12@ 13@ 14@ //IF and SET
then
0AF1: write_int 12@ to_ini_file "CLEO\aban.ini" section "aban" key "id"
0AF1: write_int 13@ to_ini_file "CLEO\aban.ini" section "aban" key "days"
0AF1: write_int 14@ to_ini_file "CLEO\aban.ini" section "aban" key "by"
msg "Äîáàâëåí â ñïèñîê íà áàí!" 0x99cc00
wait 0
  if 22@ == 1
  then
  0AF0: 12@ = get_int_from_ini_file "CLEO\aban.ini" section "aban" key "id"
  0AF0: 13@ = get_int_from_ini_file "CLEO\aban.ini" section "aban" key "days"
  0AF0: 14@ = get_int_from_ini_file "CLEO\aban.ini" section "aban" key "by"
  msg "/ban %d %d Cheat by %s" -1 12@ 13@ 14@
  22@ = 0
  end                                                                
end
end 
SAMP.CmdRet()

:go
0B12: 22@ = 22@ XOR 1
if 22@ == 1
then
0acd: "~y~[~r~Kraft1k~y~]/a BAN " 1500
else
0acd: "~y~[~r~Kraft1k~y~]/a BAN " 1500
end
SAMP.Cmdret()
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460
Так не сканирует или не записывает?
Для определения строки внутри другой строки 0AD4 не поможет. Используй sscanf напрямую. Тут есть небольшой туториал как его юзать.
 

kraft1k

Вынь х*й из головы и все получится © hnnssy
Друг
1,479
1,163
Так не сканирует или не записывает?
Для определения строки внутри другой строки 0AD4 не поможет. Используй sscanf напрямую. Тут есть небольшой туториал как его юзать.
по идеии, я хотел чтоб он отсканировал строку, а потом в 12@ 13@ 14@ Записал всё, это всё в ини должно было пойти.
 

kraft1k

Вынь х*й из головы и все получится © hnnssy
Друг
1,479
1,163
Пытался через sscanf. не хочет.
CLEO:
{$CLEO .cs}
0000: NOP

repeat
wait 0
until Samp.Available()

alloc 0@ 256
alloc 1@ 128
alloc 2@ 64
alloc 3@ 64
alloc 4@ 64
alloc 5@ 128
alloc 12@ 260
alloc 13@ 260
alloc 14@ 260

cmd "aban" @go

while true
wait 0
if 0AD3: 0@ = format "[A] Nikita_Tarasov[0]: /ban 1 1 Cheat by Tarasov"
then
0AA5: call 0x8220AD num_params 4 pop 4 params 14@v 13@ 12@ 11@ 10@ 9@ "[A] %s_%s[%d]: /ban %d %d Cheat by %s" 0@  // sscanf(0@, "%s [%d]", 1@, 2@v)
msg "Äîáàâëåí â ñïèñîê íà áàí!" 0x99cc00
  if 22@ == 1
  then                                                        
  wait 0
  msg "/ban %d %d Cheat by %s" -1 12@ 13@ 14@
  end
end
end                                                                
SAMP.CmdRet()

:go
0B12: 22@ = 22@ XOR 1
if 22@ == 1
then
0acd: "~y~[~r~Kraft1k~y~]/a BAN " 1500
else
0acd: "~y~[~r~Kraft1k~y~]/a BAN " 1500
end
SAMP.Cmdret()
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460
Понятно. А ничё так что ты неправильно заюзал её?