You are not logged in.
и для чего вам эти команды?
Offline
Кто нибудь знает в GTA 3 функции reference для актеров машин и объектов, чтоб можно трафиковых, допустим, педов превратить в уникальных? Тоже, что уже было разобрано для SA. Ну и заодно для Vice City подскажите, пожалуйста.
I know everything and nothing...
Offline
В GTA3 так
CPed +0x160 m_bReferenceType CVehicle +0x1F4 m_bReferenceType
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Offline
Есть ли указатель на структуру педа, который стреляет в другого педа в его структуре в GTA 3?
http://13.sannybuilder.com/files/III/CL … n_gta3.txt
if 05EF: 13@ = random_actor_near_point 0@ 1@ 2@ in_radius 550.0 find_next 0 pass_deads 0 //IF and SET then repeat 05E6: 10@ = actor 13@ struct 10@ += 0x51E 05E0: 11@ = read_memory 10@ size 1 virtual_protect 1 if and 12@ == 0 11@ < 0xFF 02D5: player $PLAYER_CHAR firing_weapons_in_rectangle 0@ 1@ 0@ 1@ 0 then 5@ = 255 05DF: write_memory 10@ size 1 value 0xFF virtual_protect 1 end until 85EF: not 13@ = random_actor_near_point 0@ 1@ 2@ in_radius 550.0 find_next 1 pass_deads 0 //IF and SET end
Я вот так делал проверку. По смещению хранится что-то вроде last damage или типа того, не помню уже.
Last edited by Sergey81 (22-08-2013 14:20)
Offline
Просто я искал именно указатель, нашел только массив ближайших педов( Видимо все же в 3 части такого еще не было, но интересно как же "охранники" данного актера начинают атаковать атакующих тогда.
I know everything and nothing...
Offline
У меня есть такое
CPed +0x30C m_pAimingEntity
Насчёт "охранников" -
CPed +0x180 m_pLeader
А в структуре "лидера", вроде бы, указателей на его "банду", нету.
Ближайшие педы:
CPed +0x4F4 m_apNearByPeds[10] CPed +0x51C m_wNumNearByPeds
Last edited by DK22Pac (22-08-2013 20:05)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Offline
Тоже его находил, оно как-то связано с +0x18C (туда идёт запись из этого поля).
Могу предположить, что
CPed +0x18C m_pThreatPed // пед, который является угрозой для педа CPed +0x49C m_pThreatAttack // угроза, которую пед атакует
if(this->m_pLeader->IsPlayer()) // если лидер этого педа - игрок { if(this->ScanForThreats()) { threat = this->m_pThreatPed; if(threat) { this->m_pLookAtEntity = threat; this->m_pLookAtEntity->RegisterReference(&this->m_pLookAtEntity); this->TurnBody(); if(this->m_dwStartFightAttackTimer < CTimer::m_snTimeInMilliseconds) { if(!this->m_aWeapons[this->m_nWeaponSlot].IsTypeMelee) // если оружие - НЕ ближнего боя { this->m_pThreatAttack = threat; if(threat) threat->RegisterReference(&this->m_pThreatAttack); this->SetAttack(this->m_pThreatPed); } } } } }
Last edited by DK22Pac (22-08-2013 21:56)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Тестил GTA 3 и заметил следущее, у актеров следующих за актером, хранится структура ведущего по смещению
0x30C
Получается они постоянно захватывают цель. (имеется ввиду опкоды 01D1 и 01D2)
По смещению же
0x18C
постоянно 0 видимо надо было сконверсить атаку педов. Возможно тогда был бы не 0.
I know everything and nothing...
Offline
mfisto, наверное в
CPed +0x30C m_pAimingEntity
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Можно ли в GTA SA узнать, насколько проголодался игрок?
Offline
Смотреть функцию 0x56E610, она отвечает за "голод".
http://pastebin.com/QBb9RhFm
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Не подскажите пжс смещение на повреждение компонента авто в Вайсе? Ну, чтобы можно было скриптовым путем повредить определенный компонент... В моем случае нужно лобовое стекло - разбить, или хотя бы повредить его. Или хотя бы адрес для проверки, повреждено/разбито ли оно. Хотя конечно, желательно и то и то. Очень нужно: нехватка этой информации сильно задерживает скрипт вылета водителя и пассажира из авто
Offline
Так никто не знает?
DK22Pac подсказал(спс кстати огромное!) как узнать, разбито стекло или нет:
05E4: call_function_method 0x5A9850 struct $VEHICLE num_params 1 pop 0 _param 4 _store_to 0@
Получаем 0@ - это состояние стекла: 0 - не повреждено, 1 и 2 - повреждено, а 3 - отвалилось(или разбилось)
..но всё же как я ни пробовал - без самого разбивания лобового стекла мой скрипт вылета из авто получается стремным.
Может кто знает, как это сделать? :'(
Last edited by Shag (16-04-2014 02:57)
Offline
Как сделать не знаю, но возможно эти функции помогут:
59B2A0 ; CAutomobile::SetPanelDamage(int, ePanels, bool) 603100 ; ApplyPanelDamageToCar(unsigned int, CAutomobile *, bool)
Offline
В адресах памяти для SA есть такой адрес
+0x458 float wheelSize (вроде, как размер колёс машины из vehicle.ide)
однако при чтении этого адреса
0A97: 1@ = car 0@ struct 1@ += 0x458 0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
на любой машине показывает значение 1.0
при перезаписи этого адреса другим значением, размер колёс меняется и показывает уже переписанное значение.
Вопрос: как всё же прочитать размер колёс, например, авто игрока
Last edited by kenking (28-06-2014 16:39)
Offline
на любой машине показывает значение 1.0
при перезаписи этого адреса другим значением, размер колёс меняется и показывает уже переписанное значение.
логично предположить, что это множитель размера, а сам размер лежит по другому адресу.
Edit:
Прочитать значение 'wheel scale' из vehicles.ide можно следующим кодом (для версии 1.0):
//524, cement, cement, car, CEMENT, CEMENT, null, worker, 4, 0, 0, -1, 1.12, 1, -1 0A90: 0@ = #CEMENT * 4 0@ += 0x00A9B0C8 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 0@ += 0x40 0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0 // 1.12 0@ += 0x4 0A8D: 2@ = read_memory 0@ size 4 virtual_protect 0 // 1.0
или таким (независимо от версии игры)
0@ = 83418 0@ += #CEMENT 008B: 0@ = &0(0@,1i) 0@ += 0x40 0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0 // 1.12 0@ += 0x4 0A8D: 2@ = read_memory 0@ size 4 virtual_protect 0 // 1.0
Last edited by Seemann (28-06-2014 22:21)
Offline
Seemann, спасибо, то, что нужно было.
Ещё вопрос такой: как с помощью 0xB74494 (или другим способом) перейти в структуру конкретной модели, например, модели с ID 524 ? Т.е. можно ли пробраться в структуру модели не создавая авто этой модели? Ну например, мне надо узнать есть ли в модели компонент chassis и прочитать координаты этого компонента и исходя из полученных данных, создавать авто с таким ID или нет.
Offline
Есть такая структура
.data:00A9B0C8 ; CModelBase *modelPtrs[20000]
в ней находятся указатели на CModelBase
00000000 CModelBase struc ; (sizeof=0x20) 00000000 __vmt dd ? 00000004 modelNameHash dd ? 00000008 usageCount dw ? 0000000A txdIndex dw ? ; index of entry in the TexDictionaryPool 0000000C field_C db ? 0000000D count2dfx db ? 0000000E index2dFx dw ? 00000010 objectInfoIndex dw ? 00000012 flags dw ? 00000014 colModel dd ? 00000018 drawDist dd ? ; float 0000001C rwObject dd ? ; union { RpAtomic * atomic; RpClump * clump; } 00000020 CModelBase ends
я думаю, если и искать, то здесь
Offline
Что-то я туплю и ничего не получается. Если не затруднит - можно пример?
Offline