#976 30-05-2009 10:29

Alien
Registered: 12-10-2008
Posts: 564

Re: Один вопрос

есть GTA San Andreas loader & script injector with source code by op9080, в котором убирался лимит на высоту взлета (нажатие клавиш Alt-F8). В исходниках можно адрес посмотреть, но я в MSVC ничего не понимаю.

Offline

#977 30-05-2009 17:59

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

Re: Один вопрос

кстате эта высота, помоему, от чего то зависит, так что один адрес изменить не получится, там как то еще с  памятью связано отведенной на игровой процесс, у ребята я не спец но это гемор!


I know everything and nothing...

Offline

#978 30-05-2009 22:58

JNikc
From: SPB
Registered: 27-05-2009
Posts: 22

Re: Один вопрос

Ааа... В смысле того, что разработчики писали игру на Си++ в хорошем стиле, использовали константу типа FLY_MAX, и сравнивали с ней координаты в выражениях. Но как известно все константы заменеются на численные значения во время компиляции, поэтому выудить константу трудно, а изменить невозможно.

Выходит они использовали переменную?

Last edited by JNikc (30-05-2009 23:01)

Offline

#979 31-05-2009 06:50

Alien
Registered: 12-10-2008
Posts: 564

Re: Один вопрос

Короче, вот:

0A8C: write_memory 0x6D261D size 1 value 2 virtual_protect 1

Убирает предел на высоту взлета. Вроде работает. Адрес подходит для 1.00 us/eu.@JNikc - в том-то и дело, что  все переменные  не есть что-то абстрактное, а конкретные значения, которые хранятся, читаются, пишутся в адресном пространстве процесса. Эти переменные находятся по некоторым адресам, которые большие и умные дяденьки умеют находить и патчить процесс, тем самым изменяя оные переменные так, как им надо. А константы наверное тоже в памяти находятся, а не заменяются на число во время компиляции. Просто на них стоит атрибут PAGE_READONLY - запрет на запись. Возможно, я ошибаюсь.

Offline

#980 31-05-2009 07:29

JNikc
From: SPB
Registered: 27-05-2009
Posts: 22

Re: Один вопрос

А константы наверное тоже в памяти находятся, а не заменяются на число во время компиляции

Ну я просто помню Керниган с Риччи (тоже между прочим умные дяденьки :-) хвастались, что в компиляторе C константы заменяются н а значения при компиляции...

0A8C: write_memory 0x6D261D size 1 value 2 virtual_protect 1

Отлично, значит это переменная в сегменте данных (возможно).

И всё таки, как маркеры сделать видимыми в интерьере?

Offline

#981 31-05-2009 07:51

Alien
Registered: 12-10-2008
Posts: 564

Re: Один вопрос

Нет, по этому адресу не данные, а код. Там условный переход заменяется на нечто другое (0x7b на 0x02). Того же самого эффекта можно было добиться, пропатчив exe...

.text:006D261A                 test    ah, 5
.text:006D261D                 jnp     short loc_6D263D
.text:006D261F                 fld     [esp+arg_0]

Last edited by Alien (31-05-2009 07:55)

Offline

#982 31-05-2009 07:57

JNikc
From: SPB
Registered: 27-05-2009
Posts: 22

Re: Один вопрос

Ясно. Неблагодарное это дело, менять в игре вещи, которые не предполагалось менять. Интересно в R* предполагали, что люди будут скиптить и всё такое? Думаю да, потому что у них явно был высокоуровневый компилятор (есть все признаки в main.scm) и они думали так: ну вот надоест людям играть в игру, они глянут, хмм, да тут целый скриптовый язык, а давай скриптить. И ещё игра проживет.

Offline

#983 31-05-2009 11:56

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

Alien, и вообще, как вы находите значения адресов памяти? Где такая таблица?

Offline

#984 31-05-2009 12:07

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Адреса памяти: gtamodding.ru/wiki/Адреса_Памяти_(SA)

Last edited by Den_spb (31-05-2009 12:08)

Offline

#985 31-05-2009 12:17

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

И еще: как поместить актера 1@ на ближайшие пути? Вот он у меня создан, а потом при нажатии чего-нибудь он идет как пешеход по путям.

Offline

#986 31-05-2009 16:28

JNikc
From: SPB
Registered: 27-05-2009
Posts: 22

Re: Один вопрос

В смысле ж\д пути?? А как можно получить их координаты? ;-0

Offline

#987 31-05-2009 17:16

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Один вопрос

Если было, то дайте ссылку. если нет - ответьте, можно-ли создать перед игроком как бы невидимую стену.

Offline

#988 31-05-2009 17:30

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

Re: Один вопрос

to Sw[ee]t

можно просто сделать lock_actor

to GTASA

делаешь

05DE: AS_actor 54@ walk_around_ped_path

I know everything and nothing...

Offline

#989 01-06-2009 04:17

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

2mfisto: В чем соль?

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP 

:NONAME_17
wait 0 
if 
  Player.Defined($PLAYER_CHAR)
jf @NONAME_17
if
0AB0:  key_pressed 17
jf @NONAME_17 
04C4: store_coords_to 2@ 3@ 4@ from_actor $PLAYER_ACTOR with_offset 30.0 30.0 1.0 
1@ = Actor.Create(Gang2, #WMYBP, 2@, 3@, 4@)
05DE: AS_actor 1@ walk_around_ped_path 
else_jump @NONAME_155

:NONAME_155
wait 0 
if or
   Actor.Dead($PLAYER_ACTOR)
   Actor.Dead(1@)
wasted_or_busted 
jf @NONAME_155 
Actor.DestroyWithFade(1@)
jump @NONAME_17

И еще вопрос: как педа убрать с путей? И еще вопрос: как тачку так же поместить на пути, а так же как ее убрать с путей?

Last edited by GTASA (01-06-2009 04:21)

Offline

#990 01-06-2009 11:15

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Один вопрос

mfisto wrote:

можно просто сделать lock_actor

Наверное не совсем понял...
Например когда какие-то города ещё не открыты, там стоят дорожные блоки через которые не перепрыгнешь и не перелетишь (В самом начале игры на мост Гант приехать, будет блок, а за ним-то как раз невидимая стена).
Мне как раз это и нужно.

Offline

#991 01-06-2009 12:17

flashTrash
From: Н.Новгород
Registered: 21-02-2007
Posts: 260
Website

Re: Один вопрос

@Sw[ee]t, там модель колизии используется.

Offline

#992 01-06-2009 13:29

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

Помогите мне плиз!! Псто 989! Очень надо!

Offline

#993 02-06-2009 00:34

JNikc
From: SPB
Registered: 27-05-2009
Posts: 22

Re: Один вопрос

GTASA
Ты в коде, кстати, забыл модель загрузить:

Model.Load(#WMYBP)
:NONAME_325
wait 10 
if 
   Model.Available(#WMYBP)
else_jump @NONAME_325

Alien

0A8C: write_memory 0x6D261D size 1 value 2 virtual_protect 1

Так этот код снимает предел в интерьере 0. В true интерьерах ЛЕТАТЬ НЕЛЬЗЯ?

Кто-нибудь летал по Либерти нормально? На транспорте/джетпаке, а не с помощью клавиш и ПутАт?

Offline

#994 02-06-2009 05:12

KOLLEGA
Registered: 10-01-2009
Posts: 52

Re: Один вопрос

@Sw[ee]t - взять подходящий объект и поместить перед игроком, предварительно установив ему интерьер отличный от текущего- должно сработать:)


Поправьте меня если я ошибаюсь
только вежливо :)

Offline

#995 02-06-2009 06:36

Alien
Registered: 12-10-2008
Posts: 564

Re: Один вопрос

Тогда для jetpack'а (версия 1.00):

{$CLEO}
0A8C: write_memory 0x67F268 size 4 value 0x44e9 virtual_protect 1
0A8C: write_memory 0x67F26c size 1 value 0 virtual_protect 1
repeat
wait 10
until player.Defined($player_char)
select_interior 1
0860: link_actor $PLAYER_ACTOR to_interior 1 
04E4: unknown_refresh_game_renderer_at -750.5782 490.7358
0A0B: set_rendering_origin_at_3D_coord -750.5782 490.7358 1371.7162 angle 82.0 
Actor.SetImmunities($PLAYER_ACTOR, 1, 1, 1, 1, 1)
0792: disembark_instantly_actor $PLAYER_ACTOR 
Actor.PutAt($PLAYER_ACTOR, -750.5782, 490.7358, 1371.7162)
07A7: put_jetpack_on_actor $PLAYER_ACTOR 
0A93: end_custom_thread

Кстати, почему нельзя писать вот так:

0A8C: write_memory 0x67F268 size 5 value 0x44e9 virtual_protect 1

А нужно вот так:

0A8C: write_memory 0x67F268 size 4 value 0x44e9 virtual_protect 1
0A8C: write_memory 0x67F26c size 1 value 0 virtual_protect 1

? Главное в этом деле не забывать переворачивать байты.=)

@Sw[ee]t - есть еще опкод 0750...

Offline

#996 02-06-2009 07:07

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

Привет! Команда 05DE: AS_actor 1@ walk_around_ped_path дает педу пути, а как наоборот педа убрать с путей?
Как тачку так же поместить на пути, как того педа, и как ее убрать с путей?

Можете написать или где-нить из мэйна достать скрипт, генерирующий всех прохожих на улицах, которые ходят, болтают? В общем, без которого улицы СА были бы пустыми. Очень надо!

Alien, почему у меня не работает скрипт, который должен активировать чит? Я не понимаю в адресах памяти, может мне надо так же написать две команды 0A8C сразу, как и ты сделал?

{$VERSION 3.1.0027}
{$CLEO .cs}
0000: NOP

:ass
wait 0
0A8C: write_memory 0x96915B size 1 value 2 virtual_protect 1
jump @ass

Last edited by GTASA (02-06-2009 07:09)

Offline

#997 02-06-2009 07:42

Alien
Registered: 12-10-2008
Posts: 564

Re: Один вопрос

{$CLEO}
0A8C: write_memory 0x96915B size 1 value 1 virtual_protect 0
0A93: end_custom_thread

Offline

#998 02-06-2009 08:46

JNikc
From: SPB
Registered: 27-05-2009
Posts: 22

Re: Один вопрос

Кстати, почему нельзя писать вот так:
0A8C: write_memory 0x67F268 size 5 value 0x44e9 virtual_protect 1

А нужно вот так:
0A8C: write_memory 0x67F268 size 4 value 0x44e9 virtual_protect 1
0A8C: write_memory 0x67F26c size 1 value 0 virtual_protect 1

Видимо, чтобы закончить строку в памяти нулевым сиволом - признак конца строки/памяти в С.

Все заработало! Списибо! Это реальный город призрак.

Забавно, что так "легко" сделать маппинг, обычно говорят сложно и виндовс будес запрещать.

Last edited by JNikc (02-06-2009 08:57)

Offline

#999 02-06-2009 12:38

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

Спасибо, Alien. А не мог бы ты мне помочь с остальными вопросами?

Offline

#1000 03-06-2009 00:17

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

GTASA wrote:

Можете написать или где-нить из мэйна достать скрипт, генерирующий всех прохожих на улицах, которые ходят, болтают? В общем, без которого улицы СА были бы пустыми. Очень надо!
jump @ass

Если не ошибаюсь, их exe генерирует и в мэйне этого нет.

Offline

Board footer

Powered by FluxBB