Цитата(cерый @ 10 Sep 2010, 21:06)
Нужно просто заново всю кодовую базу переписывать на нормальную чистую неограниченную платформу. Та база, на которой сделали игру разработчики не выдерживает нормальной работы кодера.
Значит так. Показываешь нам, сирым и убогим, как это сделать. А то мы тут десять лет ходим вокруг да около и не видим такого чистого неограниченного пути. За две недели управишься?
Доп. задание на доп. балл: показать нормальную работу кодера.
Добавлено ([mergetime]1284140073[/mergetime]):
Цитата(hippocamus @ 10 Sep 2010, 21:00)
Думаю, нужно составлять таблицу хуков, по типу как таблицу прерываний. Там хранятся ссылки на все структуры, а dll-ки не используют фиксированных адресов, а берут их из этой таблицы.
Не, библиотека структур и функций тащемта ничего сложного из себя не представляет. Я даже выкладывал БФ, используемую мной в артефактах для ТоЕ.
Проблема именно в хуках. Примерный вариант - спецДлл, которая вешает на все часто употребляемые хуки свои обработчики и экспортирует функции регистрации на эти обработчики.
Добавлено ([mergetime]1284140908[/mergetime]):
Примерно так:
Код
int (*freezeHooks[255])(int, int, int);
extern чего-то там void RegisterFreezeHook(int (*hook)(int,int,int))
{
for (int i=0; i!=256; i++)
{
if ((int)(freezeHooks[i])==0) (freezeHooks[i])=hook;
}
}
void OnFreeze(int param, int param2, int param3)
{
for (int i=0; i!=256; i++)
{
if ((int)(freezeHooks[i])) (freezeHooks[i])(param, param2, param3);
}
}
WriteHook((void*)0x40CO1D,(void*)OnFreeze,HOOKTYPE_CALL)
мог накосячить с указателями, но лезть в справочники влом