You are not logged in.
По поводу адресов памяти и откуда их брать можно начать с этой темы
http://sannybuilder.com/forums/viewtopic.php?id=32
Offline
Подскажите как написать проверку "Если игрок садится в машину, то..." (именно садится, а не когда уже сидит).
Offline
Подскажите как написать проверку "Если игрок садится в машину, то..." (именно садится, а не когда уже сидит).
Можно проверить, что игрок пешком (not Actor.Driving($PLAYER_ACTOR)) и нажатие клавиши входа в авто (00E1: key_pressed 0 15) ну и наличие при этом возле игрока транспорта (0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@ // 0@ > 0)
Last edited by kenking (29-07-2014 09:56)
Offline
Dimoman wrote:Подскажите как написать проверку "Если игрок садится в машину, то..." (именно садится, а не когда уже сидит).
Можно проверить, что игрок пешком (not Actor.Driving($PLAYER_ACTOR)) и нажатие клавиши входа в авто (00E1: key_pressed 0 15) ну и наличие при этом возле игрока транспорта (0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@ // 0@ > 0)
Сложно и не работает.
09DE: actor $PLAYER_ACTOR entering_car
Спасибо, щас попробуем.
Работает)
Last edited by Dimoman (29-07-2014 12:03)
Offline
Кто-нибудь в курсе, что в main.scm GTA3 отвечает за случайное выпадывание денег из погибших уличных пешеходов?
Может быть какая-нибудь переменная или опткод? Полдня ковырялся, так и ничего не нашёл. Хотя если поставить оригинальный main.scm, то наличность у пешеходов в игре всё же появляется. А с отредактированным через SannyBuilder исчезает... Мистика какая-то...
Last edited by XEPOMAHT007 (09-08-2014 21:54)
Offline
Подскажите, сеть ли условие, которе проверяет количество денег у персонажа, в том числе и отрицательное? Хочу сделать скрипт, который бы насылал коллекторскую фирму, если игрок задолжал банку
Offline
Подскажите, сеть ли условие, которе проверяет количество денег у персонажа, в том числе и отрицательное? Хочу сделать скрипт, который бы насылал коллекторскую фирму, если игрок задолжал банку
В опкодник не судьба заглянуть?
010B: 1@ = player $PLAYER_CHAR money
Offline
Dimoman wrote:Подскажите плиз как отключить отображение иконок оружия в HUD, а не весь HUD?
Можно занопить функцию, которая рисует эти иконки. Ёё адресс - 0x58D7D0.
Спасибо. Только что значит "занопить"?
Как убрать прицел после определенного условия?
Offline
SHooZ wrote:Dimoman wrote:Подскажите плиз как отключить отображение иконок оружия в HUD, а не весь HUD?
Можно занопить функцию, которая рисует эти иконки. Ёё адресс - 0x58D7D0.
Спасибо. Только что значит "занопить"?
Как убрать прицел после определенного условия?
Занопить - это, грубо говоря, затереть. Т.е. игра прыгает на функцию, которая рисует иконку, но эта функция чистая - состоит из нопов(нулей) ничего не делает. По этому иконки нет. Код нопа - 0х90
Пример:
{$CLEO} 0000: while true wait 0 if 0ab0: 9 then 0A8C: write_memory 0x58D7D0 size 450 value 0x90 virtual_protect 1 end end // while
Если честно, этот способ не совсем коректный, т.к. он затирает функцию, а нужно затереть её вызов. Но его адреса я, увы, не нашел
Насчет прицела все надо делать аналогично: нашёл вызов, затер его когда тебе надо и возобновил, когда не надо.
Offline
Подскажите пожалуйста:
1) какие номера погоды в VC соответствуют какой погоде
2) что-то в VC не нашёл опкодов аналогичным в SA -
0A1E: dump_screen 1
0826: enable_hud 0
а также для клео опкода 0A95: enable_thread_saving
Я плохо искал или их действительно нет?
Offline
какие номера погоды в VC соответствуют какой погоде
http://www.gtamodding.com/index.php?title=01B6
для клео опкода 0A95: enable_thread_saving
http://sannybuilder.com/forums/viewtopi … 9805#p9805
0A1E: dump_screen 1
Offline
Спасибо. А про опкод аналогичному SA 0826: enable_hud 0 нет инфы?
Offline
сходу не припомню, скорее всего надо отключать через память
Offline
А тогда такой вопрос (опять же по VC): почему опкод для актёра 056D: actor $2125 defined имеется, а подобный ему для транспорта 056E: car 0@ defined отсутствует? Как в таком случае проверять существует ли транспорт?
Прочитал вот здесь
и попробовал сам добавить в opcodes.txt и в VCSCM.INI - результат ноль, не работает проверка
Offline
А тогда такой вопрос (опять же по VC): почему опкод для актёра 056D: actor $2125 defined имеется, а подобный ему для транспорта 056E: car 0@ defined отсутствует? Как в таком случае проверять существует ли транспорт?
Прочитал вот здесь
и попробовал сам добавить в opcodes.txt и в VCSCM.INI - результат ноль, не работает проверка
056e в Vice City не поддерживается (его просто нет). Возможно, это результат работы оптимизатора, который не добавил некоторые неиспользуемые опкоды в финальный exe.
Проверить можно опкодом 0119, который возвращает true, если машина не существует или повреждена.
Offline
Может, я сейчас глупость сморозю, но каков лимит глобальных переменных в Vice City?
Ведь они записываются в сейвы, а значит - должен быть какой-то лимит, ведь так?(в справке SB инфа лишь о локальных переменных)
Заранее большое спасибо)
Last edited by Shag (06-09-2014 23:03)
Offline
Для индекса глобальной переменной скрипт использует 2 байта, поэтому макс. индекс равен 65536. Одна переменная занимает в памяти 4 байта, поэтому макс. кол-во глобальных переменных равно 65536 / 4 - 1 = 16383. Это во всех частях так.
Offline
Если ты используешь клео -> то опкодом проверки структуры авто на 0. Если структура нулевая, значит авто не существует, этот способ работает во всех клео ко всем частям.
Проверить можно опкодом 0119, который возвращает true, если машина не существует или повреждена.
Ага понял, спасибо.
Offline
Dimoman wrote:SHooZ wrote:Dimoman wrote:Подскажите плиз как отключить отображение иконок оружия в HUD, а не весь HUD?
Можно занопить функцию, которая рисует эти иконки. Ёё адресс - 0x58D7D0.
Спасибо. Только что значит "занопить"?
Как убрать прицел после определенного условия?
Занопить - это, грубо говоря, затереть. Т.е. игра прыгает на функцию, которая рисует иконку, но эта функция чистая - состоит из нопов(нулей) ничего не делает. По этому иконки нет. Код нопа - 0х90
Пример:{$CLEO} 0000: while true wait 0 if 0ab0: 9 then 0A8C: write_memory 0x58D7D0 size 450 value 0x90 virtual_protect 1 end end // whileЕсли честно, этот способ не совсем коректный, т.к. он затирает функцию, а нужно затереть её вызов. Но его адреса я, увы, не нашел
Насчет прицела все надо делать аналогично: нашёл вызов, затер его когда тебе надо и возобновил, когда не надо.
Спасибо!
А как найти нужный вызов (нужный вызов=адрес памяти?)? В этом вся проблема(. Может какая-то программа нужна?
Offline
Offline
Подскажите, как включить сирену на соответствующем транспорте в VC, нужного опкода (соответствующему SA 0397: enable_car 0@ siren 1) я не нашёл.
EDIT:
Оказывается в VCSCM.INI есть этот опкод с пометкой never used in VC. Добавил в opcodes.txt. В общем опкод в VC работает.
Last edited by kenking (08-09-2014 10:19)
Offline