Запрет атаки новых NPC в MU online с помощью Olly C++

Автор Alykar, 2010 Июнь 14, 11:50

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] mu onlineхукolly c++добавление npcзапрет атакимагическая атакафизическая атака

Alykar

Olly
Спойлер
005070D8  |. 817D 0C 770100>CMP DWORD PTR SS:[EBP+C],177
005070DF  |. 74 3F          JE SHORT Gameserv.00507120
005070E1  |. 817D 0C 960100>CMP DWORD PTR SS:[EBP+C],196
005070E8  |. 74 36          JE SHORT Gameserv.00507120
005070EA  |. 817D 0C 970100>CMP DWORD PTR SS:[EBP+C],197
005070F1  |. 74 2D          JE SHORT Gameserv.00507120
005070F3  |. 817D 0C 980100>CMP DWORD PTR SS:[EBP+C],198
005070FA  |. 74 24          JE SHORT Gameserv.00507120
005070FC  |. 817D 0C D10100>CMP DWORD PTR SS:[EBP+C],1D1
00507103  |. 74 1B          JE SHORT Gameserv.00507120
00507105  |. 817D 0C D30100>CMP DWORD PTR SS:[EBP+C],1D3
0050710C  |. 74 12          JE SHORT Gameserv.00507120
[свернуть]

C++
Спойлер
if ( MonsterClass == 375 || MonsterClass == 406 || MonsterClass == 407 || MonsterClass == 408 || MonsterClass == 465 || MonsterClass == 467 )
{ lpObj->Type = OBJ_NPC; }
[свернуть]

данный код являеться частью функции gObjSetMonster .    Ну суть вопроса такова , как мне через  DLL  добавить своих NPC, не хочу через олли в ГС вписывать , использую исходники ACGgroup
Заранее спасибо за любые подсказки  :rolleyes:

LeGrand

Две функции, магическая атака и физическая(руками). Хукаешь, делаешь проверку на айди моба, и брейкаешь, если класс моба == класс запрещенного моба

   HookThis((DWORD)&DefendAndAttackMagic,0x00407301);
   HookThis((DWORD)&DefendAndAttack, 0x00403CA6);

Alykar

Для меня ето не выход , т.к. дисассемблеровать ети две функции я ещё не в состояни... По-этому мне бы хотелось чтобы  при установке монстров, тип у новых NPC менялся на  OBJ_NPC (равен 3 ). Проблема в том я не знаю ,как  добавить свой код  в ту часть кода  ГС, где идёт проверка по Номеру Моба , до того момента как ГС поставит монстров на локациях ( через ДЛЛ ) . Так я пока что решил проблему с помощью JMP на свободный офссет , на котором я сделал свои сравнения и возвращаюсь обратно( но ето пришлось через олли вписывать в ГС )

Спойлер
void DefendAndAttackMagic(PMSG_MAGICATTACK lpMsg, int aIndex)
{
for(int i=0;i<MIN_PLAYERID;i++)
{
OBJECTSTRUCT *mObj = (OBJECTSTRUCT*)OBJECT_POINTER(i);
if(mObj->Class == 522)
{
return;
}
}
}
[свернуть]
Вообщем сделал вот так функцию и хукнул, но с ICE STORM всеравно НПС киляться

Похожие темы (5)