Почему не работает клео-скрипт?

T U R I S T

Участник
Автор темы
119
23
Версия SA-MP
  1. 0.3.7 (R1)
Приветствую всех!
Мне необходимо сделать так, что, когда мой персонаж находится в воде, то шкала воздуха будет перемещаться на место шкалы брони (скриншот №1, используется "MobileHud"). Вследствие этого я написал соответствующий клео-скрипт в двух вариациях (скриншот №2 - ч/з опкод "0A8D"; скриншот №3 - ч/з опкод "0B26"), который по неизвестным мне причинам крашит игру с адресом "0x0058F0FE" (скриншот №4). Возможно, проблема с самим адресом памяти "0x58F100". Пожалуйста, если вы знаете причину и/или исправление краша, то помогите мне, буду благодарен.
 

Вложения

  • screen_01.png
    screen_01.png
    5.7 KB · Просмотры: 52
  • screen_02.png
    screen_02.png
    16.3 KB · Просмотры: 49
  • screen_03.png
    screen_03.png
    14.9 KB · Просмотры: 38
  • screen_04.png
    screen_04.png
    8.8 KB · Просмотры: 47
Последнее редактирование:
Решение
Рано сдаваться! Я тут поднапрягся чуток, по-идее, чтоб поменять позицию шкалы воздуха по Y, тебе надо сделать вот так:

CLEO:
0C70: 0@ = get_module "MobileHud.asi" handle
0@ += 0x51778
0A8C: write_memory 0@ size 4 value 41.5 virtual_protect 0

Надеюсь, на этот раз получится.
Ура, все получилось и работает как надо. Я уже потерял был надежду, огромнейшее спасибо тебе за помощь, дружище, выручил.
Если не секрет, откуда узнал про "get_module" и сам адрес?
Вот сам код, так, на всякий случай:
{$CLEO}
0000: NOP

while true
wait 0
    if and
    0256: player $PLAYER_CHAR defined
    04AD: actor $PLAYER_ACTOR in_water
    then
        04DD: 0@ = actor $PLAYER_ACTOR armour
        0C70: 1@ = get_module "MobileHud.asi" handle
        1@ += 0x51778
        if 0@ == 0...

New_J3rs3y1337

Известный
148
102
Приветствую всех!
Мне необходимо сделать так, что, когда мой персонаж находится в воде, то шкала воздуха будет перемещаться на место шкалы брони (скриншот №1, используется "MobileHud"). Вследствие этого я написал соответствующий клео-скрипт в двух вариациях (скриншот №2 - ч/з опкод "0A8D"; скриншот №3 - ч/з опкод "0B26"), который по неизвестным мне причинам крашит игру с адресом "0x0058F0FE" (скриншот №4). Возможно, проблема с самим адресом памяти "0x58F100". Пожалуйста, если вы знаете причину и/или исправление краша, то помогите мне, буду благодарен.
Если проблема конкретно в краше, вызванном получением брони через опкод, могу попытаться скомпилировать скрипт у себя и скинуть сюда, т.к санни билдер это довольно мистическая хреновина. У меня похожая ситуация была с получением скорости авто, помогла декомпиляция чужого идентичного скрипта и работа уже с ним.

UPD: скорее всего проблема только в адресе 0x58F100, где ты его взял?
 
Последнее редактирование:

T U R I S T

Участник
Автор темы
119
23
Тебе лучше писать в темки отведенным для этих вопросов
CLEO- https://www.blast.hk/forums/162/
Lua- https://www.blast.hk/forums/163/
Или просто на главной странице БХ раздел Разработка
Хорошо, учту в будущем, благодарю.
UPD: скорее всего проблема только в адресе 0x58F100, где ты его взял?
Адрес взял отсюда: https://www.blast.hk/threads/61958/.

UPD: скорее всего проблема только в адресе 0x58F100, где ты его взял?
Не подскажешь другой адрес, позволяющий менять позицию шкалы воздуха по оси "Y"?
 
Последнее редактирование:
  • Нравится
Реакции: New_J3rs3y1337

New_J3rs3y1337

Известный
148
102
Краша нет, как и результата.
Попробуй с этим скриптом зайти в воду, если ничего не поменяется, значит у mobilehud'a свои адреса интерфейса. Я юзаю стандартный, у меня сработало. (Кидаю свой, т.к проблема может быть в компиляторе).


Для удобства прикреплю исходный код:

CLEO:
{$CLEO}
0000:

:1
wait 0
if and
0256:   player $PLAYER_CHAR defined
04AD:   actor $PLAYER_ACTOR in_water
jf @1

:2
wait 0
04DD: 0@ = actor $PLAYER_ACTOR armour
0@ == 0
jf @2

:3
wait 0
0A8C: write_memory 0x86503C size 4 value 62.0 virtual_protect 0

:4
wait 0
04DD: 0@ = actor $PLAYER_ACTOR armour
not 0@ == 0
jf @4
0A8C: write_memory 0x86503C size 4 value 77.0 virtual_protect 0
jump @2
 

Вложения

  • bronia.cs
    122 байт · Просмотры: 2

T U R I S T

Участник
Автор темы
119
23

New_J3rs3y1337

Известный
148
102
Спасибо большое за помощь :)
Рано сдаваться! Я тут поднапрягся чуток, по-идее, чтоб поменять позицию шкалы воздуха по Y, тебе надо сделать вот так:

CLEO:
0C70: 0@ = get_module "MobileHud.asi" handle
0@ += 0x51778
0A8C: write_memory 0@ size 4 value 41.5 virtual_protect 0

Надеюсь, на этот раз получится.
 
  • Нравится
Реакции: T U R I S T

T U R I S T

Участник
Автор темы
119
23
Рано сдаваться! Я тут поднапрягся чуток, по-идее, чтоб поменять позицию шкалы воздуха по Y, тебе надо сделать вот так:

CLEO:
0C70: 0@ = get_module "MobileHud.asi" handle
0@ += 0x51778
0A8C: write_memory 0@ size 4 value 41.5 virtual_protect 0

Надеюсь, на этот раз получится.
Ура, все получилось и работает как надо. Я уже потерял был надежду, огромнейшее спасибо тебе за помощь, дружище, выручил.
Если не секрет, откуда узнал про "get_module" и сам адрес?
Вот сам код, так, на всякий случай:
{$CLEO}
0000: NOP

while true
wait 0
    if and
    0256: player $PLAYER_CHAR defined
    04AD: actor $PLAYER_ACTOR in_water
    then
        04DD: 0@ = actor $PLAYER_ACTOR armour
        0C70: 1@ = get_module "MobileHud.asi" handle
        1@ += 0x51778
        if 0@ == 0
        then 0A8C: write_memory 1@ size 4 value 42.0 virtual_protect 0
        else 0A8C: write_memory 1@ size 4 value 70.0 virtual_protect 0
        end
    end
end
 

Вложения

  • IfNoArmour.cs
    17.7 KB · Просмотры: 3
  • Нравится
Реакции: New_J3rs3y1337

New_J3rs3y1337

Известный
148
102
Если не секрет, откуда узнал про "get_module" и сам адрес?
Скачал исходник MobileHud'a, нашёл файл с настройками, узнал изначальную позицию полоски с воздухом по вертикали, установил сам худ, через Cheat Engine нашёл адрес в памяти с таким же значением, и который был помечен как MobileHud.asi плюс смещение. Кстати, адрес этот вроде как даже статический, 0x7A5D1778. Для оптимизации можно и не считать каждый раз это самое смещение, наверное. Рад что смог помочь :)
 
  • Нравится
Реакции: T U R I S T

T U R I S T

Участник
Автор темы
119
23
Скачал исходник MobileHud'a, нашёл файл с настройками, узнал изначальную позицию полоски с воздухом по вертикали, установил сам худ, через Cheat Engine нашёл адрес в памяти с таким же значением, и который был помечен как MobileHud.asi плюс смещение. Кстати, адрес этот вроде как даже статический, 0x7A5D1778. Для оптимизации можно и не считать каждый раз это самое смещение, наверное. Рад что смог помочь :)
Ааа, понял, так и думал, что через исходник. От души еще раз, удачи тебе!
 
  • Нравится
Реакции: New_J3rs3y1337