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

stfbee22

Известный
69
3
Последнее редактирование:

ErrorCompile

Новичок
23
5
Как сделать, чтобы при убийстве любого игрока со снайперской винтовки писалось

Наёмный убийца legends выполнил контракт на .... и забрал 17500$" 0xFFFF00
CLEO:
{$CLEO .cs}

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

repeat
wait 0
until 0AFA:  is_samp_available
0BE1: raknet setup_outcoming_rpc_hook @give_damage
0BDE: pause_thread 0

:give_damage
0BE5: raknet 0@ = get_hook_param 1
    if
    0039:   0@ == 115
    then
    0BE5: raknet 0@ = get_hook_param 0
    ////////////////////////////////////////////
    0BE7: raknet 1@ = bit_stream_read 0@ type 1 {giveTake}
    0BE7: raknet 2@ = bit_stream_read 0@ type 2 {playerID}
    0BE7: raknet 3@ = bit_stream_read 0@ type 4 {amount}
    0BE7: raknet 4@ = bit_stream_read 0@ type 4 {weaponID}
    ////////////////////////////////////////////
        if and
        0039:   1@ == 0
        0039:   4@ == 34 {sniper rifle}
        then
        0B25: samp 5@ = get_player_health 2@
            if
            0039:   5@ == 0
            then
            0B36: samp 6@ = get_player_nickname 2@
            0AF8: samp add_message_to_chat "Наёмный убийца legends выполнил контракт на %s и забрал 17500$" color 0xFFFF00 6@
            0B3E: raknet delete_bit_stream 0@
            end
        end
    end
0BE0: raknet hook_ret true
 

BlackKnigga

Известный
BH Team
922
446
CLEO:
{$CLEO .cs}

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

repeat
wait 0
until 0AFA:  is_samp_available
0BE1: raknet setup_outcoming_rpc_hook @give_damage
0BDE: pause_thread 0

:give_damage
0BE5: raknet 0@ = get_hook_param 1
    if
    0039:   0@ == 115
    then
    0BE5: raknet 0@ = get_hook_param 0
    ////////////////////////////////////////////
    0BE7: raknet 1@ = bit_stream_read 0@ type 1 {giveTake}
    0BE7: raknet 2@ = bit_stream_read 0@ type 2 {playerID}
    0BE7: raknet 3@ = bit_stream_read 0@ type 4 {amount}
    0BE7: raknet 4@ = bit_stream_read 0@ type 4 {weaponID}
    ////////////////////////////////////////////
        if and
        0039:   1@ == 0
        0039:   4@ == 34 {sniper rifle}
        then
        0B25: samp 5@ = get_player_health 2@
            if
            0039:   5@ == 0
            then
            0B36: samp 6@ = get_player_nickname 2@
            0AF8: samp add_message_to_chat "Наёмный убийца legends выполнил контракт на %s и забрал 17500$" color 0xFFFF00 6@
            0B3E: raknet delete_bit_stream 0@
            end
        end
    end
0BE0: raknet hook_ret true
Летальный урон ты еще не нанес, ибо хукнул GiveTake, а хп уже проверяешь.
 

hnnssy

Известный
Друг
2,684
2,762
дело говорит, хп нужно чекать после нанесения урона уже
а вообще можно попробовать хукнуть RPC_ScrDeathMessage { WORD killerid, WORD playerid, BYTE reason }
 

romacaddy

Известный
Проверенный
235
206
где я могу найти смещения для этих опкодов?
 

Вложения

  • ptr.png
    ptr.png
    2.6 KB · Просмотры: 249

Dark_Knight

Me, me and me.
Друг
4,081
2,099
На клео будет еще тот заеб сделать. На луа проще будет, на С++ изи. ИМХО. Вот тебе теория, как бы я это сделал. Сложно будет без знаний, конечно.
Создать вектор(в клео их нет, а добавлял ли в СФ их фип я не помню), который будет состоять из структур параметров РПЦ. Для этой же структуры переопределил оператор бы сравнения.
Когда читал бы параметры, то записал бы их в новую структуру, находил бы её в векторе и если она не была найдена, то добавлял в вектор её. Для удобства хранил бы в ини файле и запись делал через библиотеку BOOST, хотя можно и обычный файл записывать. Тут уже кому как удобно. Как-то так
По чтению параметров из файла в клео. Тебе надо не файл сканировать весь, а в цикле до конца файла считывать каждую строку и сканировать её на данные.
Так что советую такое делать на луа или С++.
 
  • Нравится
Реакции: 444555