Ищешь что такое SetMonMagic, находишь все ссылки на неё, просматриваешь подозрительные (вот у тебя тут 2 вызова рядом). Выполняешь рекурсивно пока в коде не найдётся прямой адрес, который легко найти.
в чем искать? в ida, артмани или олке?
Quote:вуаля
если напилишь адрес возврата для трехэтажной ГМ, буду благодарен :D
у меня пока костылями
Quote:gamecreator, подскажи как найти адрес в сорцах WoG'a по вот этому (строка 4882 в Monsters.cpp)
я бы искал в олли через Search for -> All constants -> 9E, вогсекция.
Quote:И я так понимаю, что "char Ytown = *(char*)(c->esi+4); if (Ytown == 8) " можно было описать как-то проще
if (*(char*)(c->esi+4)== 8) :D
на самом деле
Town* town = (Town*)c->esi;
if(town->type == 8) ..
ну как бы даже и не знаю, не костыль ли у меня :D
для трехэтажки хук 0x00460FA6
разврат 0x00460F80
(08.01.2016 00:09)feanor Wrote: [ -> ]я бы искал в олли через Search for -> All constants -> 9E, вогсекция.
Спасибо. Таким образом я нашел и второй адрес
(07.01.2016 23:57)igrik Wrote: [ -> ]в чем искать? в ida, артмани или олке?
Где удобнее. Я в олли ищу, иды у меня нет.
(08.01.2016 01:42)igrik Wrote: [ -> ]снять огненный щит и палач с фена 8 ур и передать их закаленному снайперу
А чего просто не удалить? Изменить условный прыжок на безусловный после проверки условия.
(08.01.2016 03:12)gamecreator Wrote: [ -> ]А чего просто не удалить? Изменить условный прыжок на безусловный после проверки условия.
Привычка. Если честно - даже и не задумался
feanor, можешь объяснить по массиву (вроде так называется) приоритетов отображения строений в экране города. Нифига не могу въехать.
Это предпоследний штрих, и я наконец закончу.
А чего там такого?
Code:
char priorities[44] =
{22,7,8,9,23,26,36,43,33,40,31,38,27,28,34,41,16,15,21,10,11,12,13,0,1,2,3,4,32,39,24,25,14,17,29,35,42,30,37,18,19,5,-1,-1};
memcpy((void*)(0x642EC4 + 44*8), priorities, 44);
от дальнего к ближнему
в том то и оно. Тогда как можно понять на примере гильдии магов:
{22,7,8,9,23,26} Она же первой идет в данной сетке.
22 то выше 7, 8, 9!
Я понимаю, что
22 - ГМ 0
7 - ГМ 1
8 - ГМ 2
и т.д.
Я ставил граааль в "0" и в "43" приоритет, а он все равно перекрывает некоторые (одни и те же) строения каждом из этих параметров. Отсюда я и туплю как пробка
Цифры в массиве - номера городских строений (в ерм-хелпе есть таблица с числами). 22-спец строение, 7 - форт, 8 - цитадель, 9 - замок, 23 - спец строение. То есть, если в Причале на переднем плане ратуша-капитолий, и рынок - хранилище ресурсов, а на дальнем плане - генератор 4 и 5 уровня, то массив будет начинаться с 10,11,12,13,14,15 а заканчиваться 33, 40, 34, 41, а середину распределить.
То есть числа здесь не приоритет а именно номера зданий по порядку убывания от переднего плана к заднему.
Всё верно. Спасибо. Только от заднего плана к ближнему.
feanor, как ты обошел вложенные файлы в "_HD3_Data\Common\Fix.Cosmetic", а именно:
- AVWPHX.def
- Cphx.def
- TOELup_6.bmp
- TZELup_6.bmp
- TBELdw_6.def
- TBELup_6.def
или что мне записать в 8 байт по адресу 0х6890B8
long, double или long double. Я хочу в духе
*(double*)0x6890B8 = (double)"TbElDw_7";
long double не влезет в 8 байт. Если ты просто пытаешься быстро скопировать туда 8 символов, то:
*(double*)0x6890B8 = *(double*)"TbElDw_7";
Ну или любой 8-байтный тип вместо double.
Quote:feanor, как ты обошел вложенные файлы в "_HD3_Data\Common\Fix.Cosmetic", а именно:
никак, я не использую HD (=
почему бы не заткнуть их средствами эры - та же папка _HD.., только в каталоге мода?
Quote:или что мне записать в 8 байт по адресу 0х6890B8
кришна с тобой, зачем так?
*(int*)0x6436A0 /*указатель на 6890B8*/ = (int)"tbeldw-6";
можно и memcpy/strcpy, конечно, но зачем?