Map.h:
Map.cpp:Código:#pragma once namespace Network { struct PMSG_ATTACK { PBMSG_HEAD h; BYTE NumberH; BYTE NumberL; BYTE AttackAction; BYTE DirDis; }; struct AttackStruct { unsigned char Map; }; struct LevelUpStruct { unsigned char Map; }; struct MapStruct { AttackStruct Attack; LevelUpStruct LevelUp; }; class Map { public: static bool Init(); static void Attack(PMSG_ATTACK* lpMsg, DWORD dwIndex); static bool LevelUp(OBJECTSTRUCT* lpObject, int AddExp, int MonsterType, int EventType); static int MonsterExp(OBJECTSTRUCT* lpObject, OBJECTSTRUCT* lpTarget, int Damage, int TotalDamage, bool& SendExp); public: static MapStruct Struct[17]; }; }
Hook:Código:#include "Map.h" namespace Network { MapStruct Map::Struct[17]; bool Map::Init() { Tokenizer _map(".\\Network\\Map.ut"); if(_map.Loaded) { if(!_map.SectionExists(0) || !_map.SectionExists(1)) { return false; } else { for(BYTE i = 0; i < 17; i++) { if(i > 10) { Struct[i].Attack.Map = (BYTE)_map[0][0][11].ToInteger(); Struct[i].LevelUp.Map = (BYTE)_map[1][0][11].ToInteger(); } else { Struct[i].Attack.Map = (BYTE)_map[0][0][i].ToInteger(); Struct[i].LevelUp.Map = (BYTE)_map[1][0][i].ToInteger(); } } return true; } } return false; } void Map::Attack(PMSG_ATTACK* lpMsg, DWORD dwIndex) { BYTE szMap = (BYTE)Object[dwIndex].Map; if(Struct[szMap].Attack.Map == 0) { return; } ServerObjAttack(lpMsg, dwIndex); } bool Map::LevelUp(OBJECTSTRUCT* lpObject, int AddExp, int MonsterType, int EventType) { BYTE szMap = (BYTE)lpObject->Map; if(Struct[szMap].LevelUp.Map == 0) { return false; } return ServerLevelUp(lpObject, AddExp, MonsterType, EventType); } int Map::MonsterExp(OBJECTSTRUCT* lpObject, OBJECTSTRUCT* lpTarget, int Damage, int TotalDamage, bool& SendExp) { BYTE szMap = (BYTE)lpObject->Map; if(Struct[szMap].LevelUp.Map == 0) { return 0; } return ServerMonsterExp(lpObject, lpTarget, Damage, TotalDamage, SendExp); } }
Defines:Código:Hook((DWORD)&Network::Map::Attack, 0x4014E2); Hook((DWORD)&Network::Map::LevelUp, 0x401771); Hook((DWORD)&Network::Map::MonsterExp, 0x402022);
Feito para 97d.Código:#define ServerObjAttack ((void(*)(Network::PMSG_ATTACK*, DWORD)) 0x4254D0) #define ServerLevelUp ((bool(*)(Network::OBJECTSTRUCT*, int, int, int)) 0x462A20) #define ServerMonsterExp ((int(*)(Network::OBJECTSTRUCT*, Network::OBJECTSTRUCT*, int, int, bool&)) 0x467970)
Créditos:
Network.![]()
Última edição por Getulio; 03-04-2012 às 08:55 PM.
Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)
Marcadores