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

Thomas_Johnson

Известный
Проверенный
183
21
Код:
wait 3000
0B2E: 0@ = read_module_memory "samp.dll" offset 0x13D60 size 2
while true
    wait 0
    // тут код... 0AB0...
        gosub @on
    end
 
    // тут код... 0AB0
        gosub @off
    end
end
 
:on
wait 0
0B2E: 1@ = read_module_memory "samp.dll" offset 0x13D60 size 2
0AF8: samp add_message_to_chat "0@ = %d , 1@ = %d" color 0xFF61BB 0@ 1@
if
    003B: 1@ == 0@
then
    0B2D: write_module_memory "samp.dll" offset 0x13D60 value 0xC390 size 2
end
return
 
:off
wait 0
0B2E: 1@ = read_module_memory "samp.dll" offset 0x13D60 size 2
0AF8: samp add_message_to_chat "0@ = %d , 1@ = %d" color 0xFF61BB 0@ 1@
if
    803B: not 1@ == 0@
then
    0B2D: write_module_memory "samp.dll" offset 0x13D60 value 0@ size 2
end
return

Адрес памяти не меняется(не записывается значение)... т.е. после активации, я не могу его отключить...
Что делать?
Так, как это NOP SetPlayerHealth, то при изменении HP сервером, происходит краш...
Если кнопки разные, то не судьба, ибо с incar data у меня было тоже самое
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,462
//Включить патч
0@ = SAMP.Base()
0@ += 0x13D60
0AC6: 1@ = label @patch offset
0AC6: 2@ = label @orig offset
0C10: memcpy destination 2@ source 0@ size 0x2
0C10: memcpy destination 0@ source 1@ size 0x2

//Выключить
0C10: memcpy destination 0@ source 2@ size 0x2


//В конец скрипта
:patch
hex
C3 90
end

:orig
hex
00 00
end
Не работает :(

Код:
:on
wait 0
const
    NOP_SPH = 0@
    PATCH = 1@
    ORIGINAL = 2@
end
0AF7: get_samp_base_to SAMP_BASE
0A8E: NOP_SPH = SAMP_BASE + 0x13D60
0AC6: PATCH = label @patch offset
0AC6: ORIGINAL = label @orig offset
 
0C10: memcpy destination ORIGINAL source NOP_SPH size 0x2
0C10: memcpy destination NOP_SPH source PATCH size 0x2
0AF8: samp add_message_to_chat "%d" color 0xFF61BB NOP_SPH
018C: play_sound 1054 at 0.0 0.0 0.0
SCRIPT_STATUS = 1
return
 
:off
wait 0
0C10: memcpy destination NOP_SPH source ORIGINAL size 0x2
0AF8: samp add_message_to_chat "%d" color 0xFF61BB NOP_SPH
018C: play_sound 1055 at 0.0 0.0 0.0
SCRIPT_STATUS = 0
return
 
:patch
hex
    C3 90
end
 
:orig
hex 
    00 00
end

UPD.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,462
//Включить патч
0@ = SAMP.Base()
0@ += 0x13D60
0AC6: 1@ = label @patch offset
0AC6: 2@ = label @orig offset
0C10: memcpy destination 2@ source 0@ size 0x2
0C10: memcpy destination 0@ source 1@ size 0x2

//Выключить
0C10: memcpy destination 0@ source 2@ size 0x2


//В конец скрипта
:patch
hex
C3 90
end

:orig
hex
00 00
end

Хм...
Размер должен быть 4 байта...

Получилось вот так:
Код:
//Включить патч
0@ = SAMP.Base()
0@ += 0x13D60
0AC6: 1@ = label @patch offset
0AC6: 2@ = label @orig offset
0C10: memcpy destination 2@ source 0@ size 0x4
0C10: memcpy destination 0@ source 1@ size 0x4
 
//Выключить
0C10: memcpy destination 0@ source 2@ size 0x4
 
 
//В конец скрипта
:patch
hex
C3 90
end
 
:orig
hex
00 00
end
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Есть у кого пронумерованные оффсеты stLocalPlayer?
Всю эту структуру можно отправить пакет PACKET_PLAYER_SYNC ?
 

Pr1mum

Новичок
14
1
Всем вечер добрый. У меня вопрос. Можно ли как-то сделать, чтобы cleo выводил на экран кол-во смертей и кол-во убийств в samp (обнуление при каждом запуске игре)?
Допустим, чтобы подсчитать кол-во смертей, использовать адресс: 00A91424, в котором содержится кол-во ХП персонажа.
А может у кого уже есть иное решение?
 

Dark_Knight

Me, me and me.
Друг
4,067
2,081
Всем вечер добрый. У меня вопрос. Можно ли как-то сделать, чтобы cleo выводил на экран кол-во смертей и кол-во убийств в samp (обнуление при каждом запуске игре)?
Допустим, чтобы подсчитать кол-во смертей, использовать адресс: 00A91424, в котором содержится кол-во ХП персонажа.
А может у кого уже есть иное решение?
Продам за 30 руб :D
 

gcode

нестандартное звание звание звание звание звани...
Друг
789
357
Всем вечер добрый. У меня вопрос. Можно ли как-то сделать, чтобы cleo выводил на экран кол-во смертей и кол-во убийств в samp (обнуление при каждом запуске игре)?
Допустим, чтобы подсчитать кол-во смертей, использовать адресс: 00A91424, в котором содержится кол-во ХП персонажа.
А может у кого уже есть иное решение?

Смерти можно посчитать так
Код:
:dead
wait 0
if
Actor.Dead($PLAYER_ACTOR)
else_jump @dead
0@ += 1
:dead2
wait 0
if
not Actor.Dead($PLAYER_ACTOR)
else_jump @dead2
jump @dead