- Joined
- Oct 2, 2006
- Messages
- 1,562
- Reaction score
- 372
chris it woulld be nice if you add ItemToolTip_eng.bmd for season 6 EP 3
Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!
Join Today!no poop?!!!@@ 0_o acording to your nick u are female to?! @_@WTF... AGAIN!!!!
Chris05 is not a Man is a Woman
I missed you ... thanks
[url=http://www.4shared.com/rar/JEljs79D/Items_104c_SOURCE.html?]Items 1.04c SOURCE.rar - 4shared.com - обмен, хранение, загрузка файлов - Nemesis Nemesis[/url]
#define OpenTexture 0x00614710
#define BMDModelLoad 0x00614D10
#define ReturnOffset 0x006194F6
#define LoadModel 0x006194DD
#define JewelTry 0x00838755
#define JewelFalse 0x008382C1
#define PathJewels 0x00838250
#include "StdAfx.h"
#include "Items.h"
#include "ItemDir.h"
#include "Utils.h"
int UseMaxWeapons = GetPrivateProfileIntA("Items","UseMaxWeapons",0,"./Items.ini");
int UseMaxSets = GetPrivateProfileIntA("Items","UseMaxSets",0,"./Items.ini");
int GlowMod = GetPrivateProfileIntA("Items","UseGlowMod",0,"./Items.ini");
extern "C" _declspec(dllexport) void Items()
{
DWORD OldProtect;
if (VirtualProtect(LPVOID(0x401000), 0x0087751F, PAGE_EXECUTE_READWRITE, &OldProtect))
{
InitItems();
}
else
{
MessageBoxA(NULL, "Cannot load Items.dll", "Error", MB_OK);
ExitProcess(0);
}
}
void InitModel(int ItemID, char* ModelName, char* Folder, char* Form)
{
_asm
{
PUSH -1
PUSH ModelName
PUSH Form
PUSH ItemID
mov eax,BMDModelLoad
CALL eax
PUSH 1
PUSH 0x2600
PUSH 0x2901
PUSH Folder
PUSH ItemID
mov eax,OpenTexture
CALL eax
}
}
void InitSets(int ItemID, char* ModelName, char* Folder, char* Form)
{
_asm
{
PUSH -1
PUSH ModelName
PUSH Form
PUSH ItemID
mov eax,BMDModelLoad
CALL eax
PUSH 1
PUSH 0x2600
PUSH 0x2901
PUSH Folder
PUSH ItemID
mov eax,OpenTexture
CALL eax
}
}
__declspec(naked) void PatchNewModel()
{
if(UseMaxWeapons == 1)
{
for (i = 5; i < 512; i++)
{
if(i > 35)//swords
{
sprintf_s(Item, "Sword%d", i+1);
InitModel(LOAD_ITEM(0, i), Item, ItemFolder, ItemDir);
}
if(i > 8)//axes
{
sprintf_s(Item, "Axe%d", i+1);
InitModel(LOAD_ITEM(1, i), Item, ItemFolder, ItemDir);
}
if(i > 18)//maces
{
sprintf_s(Item, "Mace%d", i+1);
InitModel(LOAD_ITEM(2, i), Item, ItemFolder, ItemDir);
}
if(i > 11)//spears
{
sprintf_s(Item, "Spear%d", i+1);
InitModel(LOAD_ITEM(3, i), Item, ItemFolder, ItemDir);
}
if(i > 24 && i < 210)//bow
{
sprintf_s(Item, "Bow%d", i+1);
InitModel(LOAD_ITEM(4, i), Item, ItemFolder, ItemDir);
}
if(i > 209 && i < 511)//crossbow
{
sprintf_s(Item, "Crossbow%d", i+1);
InitModel(LOAD_ITEM(4, i), Item, ItemFolder, ItemDir);
}
if(i > 36)//staff
{
sprintf_s(Item, "Staff%d", i+1);
InitModel(LOAD_ITEM(5, i), Item, ItemFolder, ItemDir);
}
if(i > 21)//shield
{
sprintf_s(Item, "Shield%d", i+1);
InitModel(LOAD_ITEM(6, i), Item, ItemFolder, ItemDir);
}
}
_asm
{
PUSH -1
PUSH 0x00D2F7C4
PUSH 0x00D2F7CC
PUSH 0x20B2
mov eax,BMDModelLoad
CALL eax
ADD ESP,0x10
mov eax,ReturnOffset
JMP eax
}
}
}
__declspec(naked) void PatchNewSets()
{
if(UseMaxSets == 1)
{
for (i = 5; i < 512; i++)
{
if(i > 74)//helms
{
sprintf_s(Sets, "HelmMale%d", i+1);
InitSets(LOAD_ITEM(7, i), Sets, PlayerFolder, PlayerDir);
}
if(i > 74)//armors
{
sprintf_s(Sets, "ArmorMale%d", i+1);
InitSets(LOAD_ITEM(8, i), Sets, PlayerFolder, PlayerDir);
}
if(i > 74)//pants
{
sprintf_s(Sets, "PantMale%d", i+1);
InitSets(LOAD_ITEM(9, i), Sets, PlayerFolder, PlayerDir);
}
if(i > 74)//gloves
{
sprintf_s(Sets, "GloveMale%d", i+1);
InitSets(LOAD_ITEM(10, i), Sets, PlayerFolder, PlayerDir);
}
if(i > 74)//boots
{
sprintf_s(Sets, "BootMale%d", i+1);
InitSets(LOAD_ITEM(11, i), Sets, PlayerFolder, PlayerDir);
}
}
_asm
{
PUSH -1
PUSH 0x00D2D790
PUSH 0x00D2D79C
PUSH 0x14DC
mov eax,BMDModelLoad
CALL eax
ADD ESP,0x10
mov eax,ReturnSetOffset
JMP eax
}
}
}
void InitItems()
{
if(GlowMod == 1)
{
LoadLibraryA(".\\Glow.dll");
}
//Patch new model in game
PatchJMP g_ModelPatch;
SetNop(LoadModel, 25);
g_ModelPatch.Command = 0xE9;
g_ModelPatch.Pointer = (DWORD)&PatchNewModel;
memcpy((int*)LoadModel, &g_ModelPatch, sizeof(g_ModelPatch));
HookThis((DWORD)&PatchNewModel, LoadModel);
//Patch new sets in game
PatchJMP g_SetsPatch;
SetNop(LoadSetModel, 25);
g_SetsPatch.Command = 0xE9;
g_SetsPatch.Pointer = (DWORD)&PatchNewSets;
memcpy((int*)LoadSetModel, &g_SetsPatch, sizeof(g_SetsPatch));
HookThis((DWORD)&PatchNewSets, LoadSetModel);
}
#pragma once
#include "Windows.h"
//1.04D (GMO) Offsets
#define LoadModel 0x006194DD //
#define LoadSetModel 0x00615DB4 //
#define BMDModelLoad 0x00614D10 //
#define ReturnOffset 0x006194F6 //
#define ReturnSetOffset 0x00615DCD //
#define OpenTexture 0x00614710 //
struct PatchJMP
{
BYTE Command;
DWORD Pointer;
};
#define ItemAdder 1171
#define LOAD_ITEM(x, y) ((x) * 512 + + ItemAdder)
void InitModel(int ItemID, char* ModelName, char* Folder, char* Form);
void InitSets(int ItemID, char* ModelName, char* Folder, char* Form);
void PatchNewModel();
void PatchNewSets();
void InitItems();