-
Постов
21 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные VoLT
-
-
-
Не ужель дождались )
позже попробую сделать тутор по вызовам )
-
И да кстати попробуй ещё +0x22E 1/0 (byte) (сирена)
-
KoBRaAndrey в общем совет: изучи этот архив http://www.datafilehost.com/download-52bdd47a.html, переделай под GTAIII и будет счастье - третья от вайса отличается мало чем. Тот же RAGE тока довели до ума мотики
-
Включена ли сирена
+0x15A (BYTE)
-
Не понимаю какого лешего этот вопрос тут, но раз хотели ответ, получайте http://www.hiew.ru/f.../sencalc106.zip он ещё и складывать умеет всё в ReadMeМастер скинь пожалуйста эту программу "Converter (HEX, DEC, BIN)"
// MasterGH: программу скинул. Сообщения почистил. Пользоваться ли этой программой решайте сами.
-
Уж лучше datafilehost.com ... у многих с народа тянет в час по чайной ложке
-
Далеко не всё можно реализовать изменением каких либо значений, например добавление в игру определённого оружия, или скажем каких либо игровых бонусов, а иногда в разы проще реализовать через процедуры игры.
И так мной была написана DLL работоспособная на Космических рейнджерах 2: Перезагрузка которая добавляет текст в игру используя процедуры в игре
void AddMsg()
{
BSTR bstr = SysAllocString(L"Галактика в опасности!");
int curtime = *(DWORD *)(*(DWORD *)(*(DWORD *)(0x007058D0))+0x48); // в CE 0x007058D0+0x48
//данный способ универсален можно расписать до сколь угодно глубокого вложения
_call(0x006B67BC, 3, 7, curtime, bstr); // первый параметр адрес второй количество параметров остальное параметры
DWORD *screens = *(DWORD **)(0x007056BC);
BYTE index = *(BYTE *)(*(DWORD *)(0x00705DA8));
DWORD curscreen = *(DWORD *)(screens[index]+0xB8); // поверьте в отладчике, при поиске сего чуда, код выглядит страшнее )
// как реализовать его в CE без скрипта мне не довелось узнать
_call(0x006A6374, 1, curscreen);
SysFreeString(bstr);
}За сим всё, получилось несколько сумбурно, но исходные коды должны расказать большее, их можно скачать тут
PS поскольку fastcall в Delphi и C++ отличается как хлеб и рама пришлось использовать обёртку - процедуру _call которая выполняет вызов процедур таким образом как это принято в Delphi
PSS для компиляции требуется MinGW например можно заюзать Code::Blocks.
PSSS чудную вставку на MSVC++ можно написать путём goto и меток
PSSSS данным способом можно изголятся так же и на играх написанных на Borland C++
- 2
-
MasterGH а реально вызывать процедуры из CE по горячей клавише? Допустим при внедрении DLL можно вызвать фунцию из неё ... хотелось бы без DLL так же вызывать произвольную функцию в игре
-
aliast собственно разобрал довольно быстро сравнивая в IDA похожие участки кода используя базу от listener'a и свежий дамп с exe эпизодов ... без него и неё ничего бы не вышло
PS И да Шефы плохо отозвались об этом методе
-
а ведь можно было использовать стандартные процедуры которые от скриптов
если интересно могу подсказать
Сорцы трейнера от 1с версии кажется 1031 не важно всё равно надо многое переписывать
http://www.datafilehost.com/download-adf0f799.html
И да он не может выполнять некоторые скриптовые функции
ещё информации http://gtamodding.ru/w/index.php?title=Scripting.pas
и ещё
push offset loc_C04290
push 62E319C6h // имя процедуры (в ранних версиях текстовое имя процедуры) ((
call sub_4CDF70[00C05563]
идём туда и находим процедуру получения ID игрока
mov eax, dword_F1B4A4
cmp eax, 0FFFFFFFFh
jnz short loc_C02BA4
xor eax, eax
movsx eax, byte ptr [eax+4DAh]
retn[00C02B90] void GetPlayerId()
ну и так дальше
да в качестве бонуса )
00C01650 - mov eax, [esp+arg_0]
00C01654 - push esi
00C01655 - push eax
00C01656 - call sub_870960
00C0165B - mov esi, eax
00C0165D - mov eax, [esi+58Ch]
00C01663 - mov eax, [eax+228h]
00C01669 - add esp, 4
00C0166C - test eax, eax
00C0166E - jz short loc_C01675
00C01670 - lea ecx, [eax+60h]
00C01673 - jmp short loc_C01677
00C01675 - xor ecx, ecx
00C01677 - call sub_992BB0
00C0167C - mov ecx, [esp+4+arg_4]
00C01680 - cmp ecx, eax
00C01682 - jge short loc_C016AE
00C01684 - push 0
00C01686 - push ecx
00C01687 - mov ecx, [esi+58Ch]
00C0168D - call sub_A158B0
00C01692 - mov ecx, offset unk_15E3260
00C01697 - call sub_A6F500
00C0169C - cmp byte_182199E, 0
00C016A3 - jz short loc_C016BF
00C016A5 - mov byte_182199E, 0
00C016AC - pop esi
00C016AD - retn
00C016AE - push 2710h
00C016B3 - push ecx
00C016B4 - mov ecx, [esi+58Ch]
00C016BA - call sub_A158B0
00C016BF - pop esi
00C016C0 - retn[00C01650] void AlterWantedLevel(Player, unsigned int)
После AlterWantedLevel не всегда изменяется уровень разыскиваемости сразу для того что бы применить незамедлительно необходимо так же выполнить [00C01700] ApplyWantedLevelChangeNow(Player)EXE взят с http://www.nodvd.net/850-gta-episodes-from-liberty-city-v11-ru-nodvd.html
- 1
-
Есть Шеф, убрать не юзать сжечь и тп
-
Вызов процедуры из DLL
Объявление:
DWORD dwLoadOffset = ((DWORD)GetModuleHandle (NULL)-0x400000);
void (__cdecl *AddScore)(int) = (void (__cdecl *)(int))(0xDEADBEEF + dwLoadOffset);где 0xDEADBEEF адрес процедуры которую мы хотим вызвать в игре
Использование:
AddScore(300);
Тут важно одно - правильно определить какие параметры функции нужны и что она возвращает
-
aliast вызов функций по хэшу даёт только оружие жизни и броню ... для всего остального в том числе и для спавна требуется заменить поток с выполняющимся скриптом - своим и уже из него выполнять
-
И так же добавлю что в ScriptHook от aru список хешей-функций встроен уж не знаю как он их надыбал
В общем к чему это я ... если хотите спавн машин с помощью ScriptHook проблем нет ... если полностью свой тут вам потребуется определённые телодвижения о чём я и пытался сказать но как видимо ни А ни Б не поняли друг друга
-
Сейчас во всех версиях хэши ... в либу не упирается - у меня есть скажем так её исходники
-
Куски трейнера для гта4
упс а на свн gta4modding тока хидеры
и да помнится после объединения рус и енг в один ехе случилось неприятное - все скриптовые команды стали хешами о хэшах можно прочесть тут http://www.hexblog.com/?p=193
-
C бОльшей уверенностью скажу что 2 Способ от MasterGH верный
PS Если найду исходники моего давнего трейнера для GTA IV выложу тут, спавн тачек присутствует
Перехват Функций Игр Написанных На Delphi (Space Rangers Hd A War Apart)
in Высокоуровневое программирование
Опубликовано
Перехват функций + вызов функций игр написанных на Delphi