Can someone take a look and tell me if the way I am trying to hook this is possible? Maybe help me a out a little.
Code:
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include <Windows.h>
//#include <detours.h>
#include <vector>
#include <io.h>
#include <fcntl.h>
#include <fstream>
#include <iostream>
#include <string>
#pragma comment(lib, "LunaLib.lib")
#include <KServer.h>
#include <KPlayer.h>
#include <KItem.h>
#include <LunaCore.h>
#pragma pack(1)
struct SItem {
int Index;
int Str;
int Hp;
int Int;
int Wis;
int Agi;
int Pwr;
int Explo;
int PerEva;
int PerDef;
int DmgRed;
int Acc;
int Eva;
int Spd;
int Seconds;
};
std::vector<SItem> SItemVec;
void __fastcall hook_Use(int* itemptr, int* playerptr)
{
auto_ptr<KServer> Server;
auto_ptr<KPlayer> Player(new KPlayer(playerptr));
auto_ptr<KItem> Item(new KItem(itemptr));
if(Player->GetUID()){
std::ifstream spawnitem;
spawnitem.open("BuffItems.txt");
std::string strTemp;
std::string line;
if(spawnitem.is_open())
{
while (std::getline(spawnitem,line,'(').good())
{
SItem buffItem;
spawnitem >> strTemp >> buffItem.Index >> strTemp >> buffItem.Str >> strTemp >> buffItem.Hp >> strTemp >> buffItem.Int >> strTemp >> buffItem.Wis
>> strTemp >> buffItem.Agi >> strTemp >> buffItem.Pwr >> strTemp >> buffItem.Explo >> strTemp >> buffItem.PerEva >> strTemp >> buffItem.PerDef >> strTemp >> buffItem.DmgRed >>
strTemp >> buffItem.Acc >> strTemp >> buffItem.Eva >> strTemp >> buffItem.Spd >> strTemp >> buffItem.Seconds;
SItemVec.push_back(buffItem);
}
}
spawnitem.close();
for(std::vector<SItem>::iterator it = SItemVec.begin(); it != SItemVec.end(); ++it)
{
if(Item->GetIndex() == it->Index) {
int strInt1 = 60;
int hpInt1 = 61;
int intInt1 = 62;
int wisInt1 = 63;
int agiInt1 = 64;
int pwrInt1 = 51;
int exploInt1 = 54;
int perdefInt1 = 58;
int perevaInt1 = 57;
int dmgredInt1 = 52;
int accInt1 = 56;
int evaInt1 = 57;
int spdInt1 = 12;
int strInt2 = 0;
int hpInt2 = 0;
int intInt2 = 0;
int wisInt2 = 0;
int agiInt2 = 0;
int pwrInt2 = 0;
int exploInt2 = 0;
int perdefInt2 = 0;
int perevaInt2 = 0;
int dmgredInt2 = 0;
int accInt2 = 0;
int evaInt2 = 0;
int spdInt2 = 60;
int BUFF1 = Server::CChar::CreateBuff(strInt1, it->Seconds, it->Str, strInt2);
int BUFF2 = Server::CChar::CreateBuff(hpInt1, it->Seconds, it->Str, hpInt2);
int BUFF3 = Server::CChar::CreateBuff(intInt1, it->Seconds, it->Str, intInt2);
int BUFF4 = Server::CChar::CreateBuff(wisInt1, it->Seconds, it->Str, wisInt2);
int BUFF5 = Server::CChar::CreateBuff(agiInt1, it->Seconds, it->Str, agiInt2);
int BUFF6 = Server::CChar::CreateBuff(pwrInt1, it->Seconds, it->Str, pwrInt2);
int BUFF7 = Server::CChar::CreateBuff(exploInt1, it->Seconds, it->Str, exploInt2);
int BUFF8 = Server::CChar::CreateBuff(perdefInt1, it->Seconds, it->Str, perdefInt2);
int BUFF9 = Server::CChar::CreateBuff(perevaInt1, it->Seconds, it->Str, perevaInt2);
int BUFF10 = Server::CChar::CreateBuff(dmgredInt1, it->Seconds, it->Str, dmgredInt2);
int BUFF11 = Server::CChar::CreateBuff(accInt1, it->Seconds, it->Str, accInt2);
int BUFF12 = Server::CChar::CreateBuff(evaInt1, it->Seconds, it->Str, evaInt2);
int BUFF13 = Server::CChar::CreateBuff(spdInt1, it->Seconds, it->Str, spdInt2);
Server::CPlayer::AddBuff(playerptr, BUFF1);
Server::CPlayer::AddBuff(playerptr, BUFF2);
Server::CPlayer::AddBuff(playerptr, BUFF3);
Server::CPlayer::AddBuff(playerptr, BUFF4);
Server::CPlayer::AddBuff(playerptr, BUFF5);
Server::CPlayer::AddBuff(playerptr, BUFF6);
Server::CPlayer::AddBuff(playerptr, BUFF7);
Server::CPlayer::AddBuff(playerptr, BUFF8);
Server::CPlayer::AddBuff(playerptr, BUFF9);
Server::CPlayer::AddBuff(playerptr, BUFF10);
Server::CPlayer::AddBuff(playerptr, BUFF11);
Server::CPlayer::AddBuff(playerptr, BUFF12);
Server::CPlayer::AddBuff(playerptr, BUFF13);
}
}
}
}
BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
std::auto_ptr<LunaCore> Core(new LunaCore());
std::auto_ptr<IMemory> Memory(new IMemory());
//Server Exports
Core->Init(ul_reason_for_call, EXPORTS_TYPE::_SERVER);
//Engine Exports
//Core->Init(ul_reason_for_call, EXPORTS_TYPE::_CLIENT);
//Detour
Core->Register(&(PVOID&)Server::CItem::Use, hook_Use);
//Intercept
Core->RegisterIntercept(IMemory::_I_CALL, (void*)0x0042CFB0, hook_Use, 6);
//speed hack message
Memory->Fill(0x00494A0E, IMemory::_I_NOP, 5);
Memory->Fill(0x00494A90, IMemory::_I_NOP, 5);
//egggrade no limit
Memory->Fill(0x0042F215, IMemory::_I_NOP, 5);
return Core->Run();
}