#1 18-12-2009 16:01

DimP
Registered: 23-03-2009
Posts: 51

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

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

Вот нашел кое что, но не могу понять что smile Cveh + 216 и Cveh + 220 изменяется когда машина сталкивается с чем либо,
Cveh + 232 изменяется если машина врезалась в пешехода или в машину.
Пробовал изменять значения, но игра вылетает sad

Last edited by DimP (18-12-2009 17:08)

Offline

#2 21-12-2009 15:05

DimP
Registered: 23-03-2009
Posts: 51

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

Покопался в исходниках одного трейнера для гта, и нашел записи

CarPointer+216  size 20,  "Collision related(?)"
CarPointer+236 size 20,   "Last collision coordinates"
0x00B744A4, 48,   "col model pool"

И еще меня очень удивило в этом же коде:
0x00B74498, 56,   "buildings", "buildings pool",
buildings+20,   4,    "Pointer to transformation matrix",

Получается все дома, так же как педы и машины имеют координаты..тд ? 0o

И еще вопрос, чтобы тему не создавать,
почему элементы Ped pool постепенно в процессе игры,начиная с первого становятся нулями, а остальные сдвигаются? Объясните пожалуйста.

Last edited by DimP (21-12-2009 15:18)

Offline

#3 21-12-2009 15:33

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

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

все субъекты игрового мира имеют координаты и углы поворота, иначе и быть не может...


GIMS developer

Offline

#4 21-12-2009 16:54

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

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

DimP wrote:

Получается все дома, так же как педы и машины имеют координаты..тд ? 0o

Дома, объекты, машины и прочие пешеходы наследуются от CPlaceable. В нем содержатся либо простые координаты (для фиксированных объектов: точка и угол поворота) либо матрица трансформации (с координатами, поворотами, масштабированием и т.д.).

В теме с адресами и функциями была полная диваграмма наследования.

почему элементы Ped pool постепенно в процессе игры,начиная с первого становятся нулями, а остальные сдвигаются? Объясните пожалуйста.

Пул представляет собой массив. При выделении объекта, в массиве ищется первый свободный элемент и в нем создается запрошенный объект. Чтобы не проходить по кругу весь массив, свободное место ищется не от начала пула, а от последнего выделенного элемента.

Offline

#5 21-12-2009 17:22

DimP
Registered: 23-03-2009
Posts: 51

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

listener Спасибо огромное за объяснение smile
А какие ограничения размера у пула, ведь он когда то должен закончится ?, вроде написано что там может быть 140 элементов, что будет если места от последнего элемента не будет хватать для записи нового ?

Last edited by DimP (21-12-2009 17:41)

Offline

#6 22-12-2009 14:37

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

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

Если до конца пула сободного элемента не найдено, будет искать с начала.
Если заняты все элементы пула (и освободить ничего не получается) - new обломается (как при исчерпании памяти).

Offline

#7 22-12-2009 20:28

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

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

У меня есть вопрос такой.

Допустим есть pointer тачки
Нужно проверить, что этот pointer действительно тачки, а не объекта или актера.
Что нужно прочитать или вызвать через этот pointer в памяти?


I know everything and nothing...

Offline

#8 22-12-2009 21:17

Alien
Registered: 12-10-2008
Posts: 564

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

А что если вызвать метод CPool<CVehicle>::HadleOf() и проверить результат на равенство нулю (-1?)...

0A8D: 0@ = read_memory 0xB74494 size 4 virtual_protect 0    //vehicle pool
0AA8: call_function_method 0x424160 struct 0@ num_params 1 pop 0 $CarPtr 0@
if 
    0@ == 0
then
    //not a vehicle
end

Если не выйдет, то можно проверить, находится ли структура в пуле машин...

0A8D: 0@ = read_memory 0xB74494 size 4 virtual_protect 0    //vehicle pool
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0    //objects
0A8E: 2@ = 0@ + 8
0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0    //pool size
0085: 4@ = 0xA18  //size of element
006A: 4@ *=  2@
005A: 4@ += 1@
if or
    802E: $CarPtr < 1@    
    001E: $CarPtr > 4@
then
    //not a vehicle
end

Offline

#9 22-12-2009 22:20

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

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

ясно, попробуем, спасибо.;-)


I know everything and nothing...

Offline

#10 10-02-2010 08:55

GTASA
Registered: 13-09-2008
Posts: 476

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

Ребята, кто может мне точно сказать, какие изменения в памяти делает чит:
0AA5: call 0x438370 num_params 1 pop 1 28 - сделать машине улучшенное управление.

Offline

#11 10-02-2010 12:27

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

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

на gtamodding.ru есть адрес этого чита, активируется при записи в него числа 1...


GIMS developer

Offline

#12 12-02-2010 07:47

GTASA
Registered: 13-09-2008
Posts: 476

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

Я спросил, какие изменения он вносит, а не как его активировать.

Offline

#13 12-04-2010 20:33

~AquaZ~
Registered: 01-03-2010
Posts: 726

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

Объясните, пожалуйста, что в коде Alien'a происходит? (который копает пул)

Offline

#14 31-07-2010 05:21

GTASA
Registered: 13-09-2008
Posts: 476

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

Как сделать транспорт полностью невидимым? Как при чит-коде, но только для одного? Колеса можно и оставить.

Offline

#15 31-07-2010 08:25

BoPoH
From: Каушаны
Registered: 21-02-2009
Posts: 77

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

0338: set_car 1@ visibility 0
прикольненько на невидимой тачке покататься)))


userbar.png

Offline

#16 31-07-2010 10:31

GTASA
Registered: 13-09-2008
Posts: 476

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

это я знаю, просто если ты сделаешь это со своей машиной, ты тоже невидимым станешь. А мне это не нужно.

Offline

#17 01-08-2010 14:27

BoPoH
From: Каушаны
Registered: 21-02-2009
Posts: 77

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

)))тогда нужно активировать тот чит который убирает всё кроме колёс...скриптово его можно активировать по его адресу в памяти, я в этом не оч хорошо разбираюсь...к тому же что-то я не нашёл его в списке составленном Seemann'ом...

Last edited by BoPoH (01-08-2010 14:27)


userbar.png

Offline

#18 19-08-2010 19:40

Sergey81
Registered: 19-12-2008
Posts: 654

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

7a07c44d17ddbe5f1cce3c05ec82aa76.jpeg 
Что именно за расстояния имеются в виду?

Last edited by Sergey81 (19-08-2010 19:40)

Offline

#19 19-08-2010 20:44

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

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

поэкспериментируй...или расстояние, на котором модель заменяется ЛОД-ом, или же, то, на котором даже ЛОД-ы исчезают...


GIMS developer

Offline

#20 19-08-2010 21:22

Sergey81
Registered: 19-12-2008
Posts: 654

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

3Doomer wrote:

поэкспериментируй...или расстояние, на котором модель заменяется ЛОД-ом, или же, то, на котором даже ЛОД-ы исчезают...

Да пробовал ставить разные значения, но никаких изменений не заметил. А увеличить дистанцию прорисовки педов и машин хотелось бы, как в VC.Traffic например.

Offline

#21 19-08-2010 21:29

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

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

@Sergey81 - Расстояние от камеры. Если расстояние от камеры больше - используется LOD, если меньше - основная модель. Проверочка расстояния производится в соответствующем RenderCallback (кстати, можно навешивать на любой компонент свой коллбэк).

В свежей gta_dll есть несколько разобранных коллбэков.

Offline

#22 19-08-2010 22:08

Sergey81
Registered: 19-12-2008
Posts: 654

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

listener wrote:

@Sergey81 - Расстояние от камеры. Если расстояние от камеры больше - используется LOD, если меньше - основная модель. Проверочка расстояния производится в соответствующем RenderCallback (кстати, можно навешивать на любой компонент свой коллбэк).

В свежей gta_dll есть несколько разобранных коллбэков.

А как именно его менять?
И можно ли менять расстояние спавна машин и педов?(ну или найти значение в памяти)

Offline

#23 20-08-2010 16:58

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

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

Менять просто - записывать туда float - если я ниего не путаю, квадрат расстояния до камеры, на котором будет производиться переключение/отрисовка.

Расстояние спавна я пока не нашел (это должно быть где-то в CPopulation)

Offline

#24 23-08-2010 20:24

Sergey81
Registered: 19-12-2008
Posts: 654

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

А дистанция прорисовки теней тоже пока неизвестна?
series2uq7.th.jpg
shadow opacity то я поменял(7115B4), но тени есть только у ближайших объектов, что тоже не совсем гуд.

Offline

#25 28-08-2010 00:35

Sergey81
Registered: 19-12-2008
Posts: 654

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

Чтоб отключить зум у оружия при прицеливании, где надо поискать? В CCam или CPed или ещё где? Или может уже адрес известен?

Offline

Board footer

Powered by FluxBB