#201 25-07-2013 11:34

Seemann
Registered: 07-08-2006
Posts: 2,065

Re: Вопрос по памяти

и для чего вам эти команды?

Offline

#202 22-08-2013 11:30

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 551
Website

Re: Вопрос по памяти

Кто нибудь знает в GTA 3 функции reference для актеров машин и объектов, чтоб можно трафиковых, допустим, педов превратить в уникальных? Тоже, что уже было разобрано для SA. Ну и заодно для Vice City подскажите, пожалуйста.


I know everything and nothing...

Offline

#203 22-08-2013 11:43

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Вопрос по памяти

В 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

#204 22-08-2013 11:46

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 551
Website

Re: Вопрос по памяти

В GTA3 так...

Это я находил, спасибо, да. А разве не надо специально вызывать функцию для превращения?


I know everything and nothing...

Offline

#205 22-08-2013 12:07

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Вопрос по памяти

@mfisto - Так функция наверно эти флаги просто и устанавливает.

Offline

#206 22-08-2013 13:01

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 551
Website

Re: Вопрос по памяти

@mfisto - Так функция наверно эти флаги просто и устанавливает.

Ну я попробовал, вроде педы не исчезают. Ну что ж тогда ясно. Всем спасибо.


I know everything and nothing...

Offline

#207 22-08-2013 13:47

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 551
Website

Re: Вопрос по памяти

Есть ли указатель на структуру педа, который стреляет в другого педа в его структуре в GTA 3?


I know everything and nothing...

Offline

#208 22-08-2013 14:16

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Вопрос по памяти

mfisto wrote:

Есть ли указатель на структуру педа, который стреляет в другого педа в его структуре в 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

#209 22-08-2013 14:45

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 551
Website

Re: Вопрос по памяти

Просто я искал именно указатель, нашел только массив ближайших педов( Видимо все же в 3 части такого еще не было, но интересно как же "охранники" данного актера начинают атаковать атакующих тогда.


I know everything and nothing...

Offline

#210 22-08-2013 20:03

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Вопрос по памяти

У меня есть такое

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

#211 22-08-2013 21:06

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 551
Website

Re: Вопрос по памяти

Насчет этих смещений огромное спасибо!
Я находил какое-то +1180 - это по типу твоего m_pAimingEntity, но возможно в этом смещении что-то другое, хотя совпадают вроде для гг.


I know everything and nothing...

Offline

#212 22-08-2013 21:31

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Вопрос по памяти

Тоже его находил, оно как-то связано с  +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

#213 23-08-2013 00:43

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 551
Website

Re: Вопрос по памяти

Тестил GTA 3 и заметил следущее, у актеров следующих за актером, хранится структура ведущего по смещению

0x30C

Получается они постоянно захватывают цель. (имеется ввиду опкоды 01D1 и 01D2)
По смещению же

0x18C

постоянно 0 видимо надо было сконверсить атаку педов. Возможно тогда был бы не 0.


I know everything and nothing...

Offline

#214 27-08-2013 19:17

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 551
Website

Re: Вопрос по памяти

Так еще вопрос, а если оружие ближнего боя или кулаки, то как-то это учитывается, так как для тех смещений только стреляюшие действуют?


I know everything and nothing...

Offline

#215 29-08-2013 15:37

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Вопрос по памяти

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

#216 13-10-2013 00:13

CraZZZy-GameRRR
From: Москва
Registered: 11-08-2009
Posts: 97
Website

Re: Вопрос по памяти

Можно ли в GTA SA узнать, насколько проголодался игрок?

Offline

#217 13-10-2013 01:05

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Вопрос по памяти

Смотреть функцию 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

#218 18-02-2014 16:57

Shag
Registered: 29-03-2010
Posts: 143
Website

Re: Вопрос по памяти

Не подскажите пжс смещение на повреждение компонента авто в Вайсе? Ну, чтобы можно было скриптовым путем повредить определенный компонент... В моем случае нужно лобовое стекло - разбить, или хотя бы повредить его. Или хотя бы адрес для проверки, повреждено/разбито ли оно. Хотя конечно, желательно и то и то. Очень нужно: нехватка этой информации сильно задерживает скрипт вылета водителя и пассажира из авто sad

Offline

#219 16-04-2014 02:48

Shag
Registered: 29-03-2010
Posts: 143
Website

Re: Вопрос по памяти

Так никто не знает?
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

#220 16-04-2014 15:16

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Вопрос по памяти

Как сделать не знаю, но возможно эти функции помогут:

59B2A0                         ; CAutomobile::SetPanelDamage(int, ePanels, bool)
603100                         ; ApplyPanelDamageToCar(unsigned int, CAutomobile *, bool)

Offline

#221 28-06-2014 16:38

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 252

Re: Вопрос по памяти

В адресах памяти для 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

#222 28-06-2014 20:31

Seemann
Registered: 07-08-2006
Posts: 2,065

Re: Вопрос по памяти

kenking wrote:

на любой машине показывает значение 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

#223 29-06-2014 06:43

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 252

Re: Вопрос по памяти

Seemann, спасибо, то, что нужно было. good

Ещё вопрос такой: как с помощью 0xB74494 (или другим способом) перейти в структуру конкретной модели, например, модели с ID 524 ? Т.е. можно ли пробраться в структуру модели не создавая авто этой модели? Ну например, мне надо узнать есть ли в модели компонент chassis и прочитать координаты этого компонента и исходя из полученных данных, создавать авто с таким ID или нет.

Offline

#224 29-06-2014 14:36

Seemann
Registered: 07-08-2006
Posts: 2,065

Re: Вопрос по памяти

Есть такая структура

.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

#225 30-06-2014 11:50

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 252

Re: Вопрос по памяти

Что-то я туплю и ничего не получается. wall Если не затруднит - можно пример? smile

Offline

Board footer

Powered by FluxBB