#1 Re: Работа с памятью, EXE » Скриптово меняем навык стрельбы из оружия » 12-05-2010 13:15

Хм. Нужно найти значение пинга игрока (каждого, кто подключен), используя айди игрока.
Два вопроса: как можно искать такое значение? где именно его искать?

Вроде нужно искать в процессе gta_sa.exe, с того места, куда в него загрузилась samp.dll.
Дальше надо искать таблицу, которая вызывается на TAB.

Тут вроде то что надо: http://code.google.com/p/m0d-s0beit-sa/ … c/samp.cpp

#2 Re: Вопросы по скриптингу » Один вопрос » 15-03-2010 11:00

Помогите пожалуйста с еще одной проблемой.
Как записать в переменную игрока под прицелом снайперской винтовки?
(только не переберая весь пул педов и высчитывая близость центра камеры к ним.)

#3 Re: Вопросы по скриптингу » Один вопрос » 12-03-2010 08:15

Пишу в VC++, или они перепутаны в самой игре ?

#4 Re: Вопросы по скриптингу » Один вопрос » 12-03-2010 06:12

Пробовал добавлять еще Z вектор(сPed + 0x52), думаю проблема не в этом. Вектора все равно как то скачут иногда.  Теорему Пифагора я помню, но ведь x y z постоянные величины ?(не может быть такого, что при направлении в одну точку с разной скоростью, длина вектора будет меняться), там скорость и наверно еще что то добавлено.

Мне это нужно чтобы к X и Y позиции игрока прибавлять cos и sin угла направления его движения умноженные на изменяющуюся величину(только не скорость ,а например, временная задержка).
(Все опыты проводил на ровной поверхности, и Z ось не учитывал)
Вроде получается, но как то криво cry

#5 Re: Вопросы по скриптингу » Один вопрос » 11-03-2010 19:00

Это учтено smile, если бы я этого не учел игра бы вылетала.

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

#6 Re: Вопросы по скриптингу » Один вопрос » 11-03-2010 18:10

У меня появился вопросик, может кто-нибудь поможет?
В гта по адресу сPed + 0x44 и сPed + 0x48 записываются векторы движения педа относительно мировой ск.  Но они меняются при изменении скорости педа (скорость вроде по адресу сPed+0x4DC) , Короче, мне нужно найти точное отношение между векторами, принимая меньший вектор за 1(что бы они не изменялись вместе со скоростью персонажа).
(Пробовал делением большего вектора на меньший, сначала думал что получилось, но встречаются какие то левые значения, и чем ближе поворот игрока к полюсам(N S W E) тем больше неточность. sad )
Может есть более точный способ ?

Может они изменяются по какой то формуле ?

#7 Re: Вопросы по скриптингу » Один вопрос » 18-01-2010 16:22

Спасибо Алиен.
Адреса разные для каждой анимационной группы или для всех можно использовать  0xC8A8A8+0xN ?

#8 Re: Вопросы по скриптингу » Один вопрос » 18-01-2010 13:42

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

#9 Re: Вопросы по скриптингу » Один вопрос » 14-01-2010 12:44

Жаль что нету "set_camera_target_point" crazy

#10 Re: Работа с памятью, EXE » Camera rotation matrix » 13-01-2010 15:45

Я попробовал, если адреса заморозить то получается эффект копирования неба, или как объяснить не знаю smile Это не то. Мне нужно как-то сдвинуть камеру, на заданный синус и косинус (или на угол) относительно мировой системы координат. Может можно использовать значения в 0xB6F248 и 0xB6F258 ? , но я не понимаю что они вообще означают sad

Все дошло что это угол в радианах smile

#11 Работа с памятью, EXE » Camera rotation matrix » 12-01-2010 19:09

DimP
Replies: 9

Скажите пожалуйста есть ли ( должна быть ) camera rotation matrix наподобие player rotation matrix, что бы также синусы, косинусы и тд?
И еще вопрос в каких единицах измеряется поворот камеры по адресам 0xB6F248 и 0xB6F258 ?

Нашел на gtaforums.com "0xB6F99C to 0xB6F9DB = Camera Matrix (0xB6F99C + 0x30 = Xpos, etc...)" написано  read only, а есть ли перезаписываемая ?

#12 Re: Вопросы по скриптингу » Один вопрос » 27-12-2009 06:58

Как stick в собейте ?
Просто все время нужно ставить игроку координаты объекта к которому прикрепляешься, и  добавить смещение, если нужно быть не в центре объекта ,а рядом с ним.

#14 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 25-12-2009 15:30

crazy:crazy:...:^
указатель на вектор мировых координат, это структура из x y z или из матрицы вращения
или предварительно сосчитанное число a = sqrt((sqrt(x*x+y*y))^2+z*z) ,вроде так считается ?

#15 Re: Работа с памятью, EXE » [Delphi] Чтение координат игрока » 25-12-2009 14:34

dragonforce, если надо сделать айр брейк с вращением относительно Z ,то может поможет вот этот код, на delphi думаю не сложно перенести будет.

0000: NOP    
:NONAME_2
wait 1
if and
      Player.Defined($PLAYER_CHAR) //found
      not actor.dead($PLAYER_ACTOR) //notdead
     004D: jump_if_false @NONAME_2
if
0AB0:  key_pressed 16//activation/deactivation
then
 if 
 22@ > 0 
 then 
   if 
   26@ > 0 
   then
   0A8D: 10@ = read_memory 1@ size 4 virtual_protect 0
   10@ += 66
   0A8D: 25@ = read_memory 10@ size 1 virtual_protect 0
   25@ -= 3
   0A8C: write_memory 10@ size 1 value 25@ virtual_protect 0
   26@ = 0
   end
 22@ = 0
 wait 700
 else
 22@ = 1
 wait 700
 end
end

if
22@ == 1
then
1@ = 0xB6F5F0
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0
2@ += 0x14
0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0
0A8E: 4@ = 3@ + 0x30
0A8E: 5@ = 3@ + 0x34
0A8E: 6@ = 3@ + 0x38
0A8D: 7@ = read_memory 4@ size 4 virtual_protect 0
0A8D: 8@ = read_memory 5@ size 4 virtual_protect 0
0A8D: 9@ = read_memory 6@ size 4 virtual_protect 0
//---------------------------------------------------------
0A8D: 10@ = read_memory 1@ size 4 virtual_protect 0
10@ += 1132
0A8C: write_memory 10@ size 1 value 3 virtual_protect 0
10@ -= 1132
10@ += 66
  if 
  26@ < 1 
  then
  0A8D: 25@ = read_memory 10@ size 1 virtual_protect 0
  25@ += 3
  0A8C: write_memory 10@ size 1 value 25@ virtual_protect 0
  26@ = 1
  end
10@ -= 66
10@ += 348
0A8C: write_memory 10@ size 1 value 205 virtual_protect 0
//---------------------------------------------------------
0A8D: 11@ = read_memory 2@ size 4 virtual_protect 0
0A8D: 12@ = read_memory 2@ size 4 virtual_protect 0
11@ += 0x10
12@ += 0x14
0A8D: 13@ = read_memory 11@ size 4 virtual_protect 0
0A8D: 14@ = read_memory 12@ size 4 virtual_protect 0

006B: 13@ *= 21@
006B: 14@ *= 21@

if or
0AB0:  key_pressed 87//W
0AB0:  key_pressed 65//A
0AB0:  key_pressed 83//S
0AB0:  key_pressed 68//D
then
005B: 7@ += 13@ 
005B: 8@ += 14@ 
  if 
  21@ <= 12.0
  then
  21@ += 0.12
  end
else
  21@ = 0.0
end

if 
0AB0:  key_pressed 90//down
then
0063: 9@ -= 23@
  if 
  23@ <= 12.0
  then
  23@ += 0.12
  end
else
  23@ = 0.0
end

if 
0AB0:  key_pressed 88//up
then
005B: 9@ += 24@
  if 
  24@ <= 12.0
  then
  24@ += 0.12
  end
else
  24@ = 0.0
end
//---------------------------------------------------------
0A8C: write_memory 4@ size 4 value 7@ virtual_protect 0 
0A8C: write_memory 5@ size 4 value 8@ virtual_protect 0 
0A8C: write_memory 6@ size 4 value 9@ virtual_protect 0 
end
jump @NONAME_2

Просто получаем cos и sin из матрицы вращения, умножаем на какое нибудь число n(чем больше тем скорость выше) и прибавляем  cos*n + x , sin*n+y. Для лица игрока читать вроде нужно из
0x10 и 0x14 ,хотя может это не так,но все работает.

И у меня вопрос, где находится матрица вращения камеры ?, что бы сделать движение по всем осям

#16 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 25-12-2009 14:26

Сложно sad , ну ничего буду разбираться как нибудь..., а в какие регистры записываются x y z и в какие возвращается w и h экрана ? Только не смейтесь над вопросом, потому что я ассемблер знаю только на уровне арифметических операций над числами.

#17 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 23-12-2009 18:07

Можно пожалуйста пример такого вызова smile

#18 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 23-12-2009 17:23

То есть функция берет x,y,z а возвращает  x,y  если координаты попадают в плоскость экрана ?
Можно ли при вызове функции, __thiscall заменить на что-нибудь другое? ,а то проблемы с компиляцией.

#19 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 23-12-2009 16:30

Карта уже сделана smile
А второе реально, GTASA спасибо большое, был бы этот огромный скрипт еще с коментариями  smile

#20 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 23-12-2009 15:48

lstener,я прочитал ваш пост про системы координат, можно вопрос ?

Как перенести координаты объектов с игрового мира на экран (с 3d в 2d) ?
Например координаты педов ,я прохожусь циклом по пулу педов, записываю используемые элементы в массив.
Получаю их координаты, матрицы вращения, углы поворота... а что дальше делать я не знаю.
Нужно как то трансформировать координаты, я читал что способ трансформации различается в разных играх.

#21 Re: Работа с памятью, EXE » Вопрос по памяти » 21-12-2009 17:22

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

#22 Re: Работа с памятью, EXE » Вопрос по памяти » 21-12-2009 15:05

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

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 постепенно в процессе игры,начиная с первого становятся нулями, а остальные сдвигаются? Объясните пожалуйста.

#23 Работа с памятью, EXE » Вопрос по памяти » 18-12-2009 16:01

DimP
Replies: 271

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

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

#24 Re: Работа с памятью, EXE » Скриптово меняем навык стрельбы из оружия » 14-12-2009 15:32

Алиен, спасибо Вам, вы гений smile
Все работает отлично, а я даже не верил что так возможно сделать smile

#25 Re: Вопросы по скриптингу » Один вопрос » 14-12-2009 11:11

через directx можно убрать освещение целиком, но в san andreas не проверял.

Board footer

Powered by FluxBB