Most visitors online was 12720 , on 2 May 2024
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature currently requires accessing the site using the built-in Safari browser.
#pragma once
// ----------------------------------------------------------------------------------------------
#if(ENABLE_ITEMSETOPTION)
// ---------------------------------------------------------------------------------------------
#define MAX_SETOPT_LINE 110 //108
#define MAX_SETOPT_COUNT 256 //256
#define MAX_BSETOPT_SIZE (MAX_SETOPT_COUNT*MAX_SETOPT_LINE)
// ----------------------------------------------------------------------------------------------
#define oItemSetOptionBMDLoad 0x004E8916
#define oItemSetOptionAsm1 0x004E956E
#define oItemSetOptionAsm2 0x004E926B
#define oItemSetOptionAsm3 0x004EC4C4
#define oItemSetOptionAsm4 0x004EC2A5
#define oItemSetOptionAsm5 0x004EC3A9
#define oItemSetOptionAsm6 0x004EBD7F
#define oItemSetOptionAsm7 0x004EBEE9
#define oItemSetOptionAsm8 0x004ECAAA
#define pFileOpen ((int(__cdecl*)(char* FileName, char* Mode)) 0x9CFEC0)
#define pFileRead ((int(__cdecl*)(int a1, int a2, int a3, int a4)) 0x9CFDDF)
#define pFileClose ((signed int(__cdecl*)(int a1))0x9CFAA6)
#define pFileCRC ((int(__cdecl*)(int a1, int a2, unsigned __int16 a3)) 0x4B1A20)
#define pFileDec ((int(__cdecl*)(int a1, signed int a2)) 0x4071A0)
// ----------------------------------------------------------------------------------------------
class CItemSetOption
{
public:
CItemSetOption();
~CItemSetOption();
void Load();
static bool BMDLoad(char* FileName);
static void AsmAncent1();
static void AsmAncent2();
static void AsmAncent3();
static void AsmAncent4();
static void AsmAncent5();
static void AsmAncent6();
static void AsmAncent7();
static void AsmAncent8();
DWORD m_dwSetOptionAddress;
DWORD m_dwJmpReturn1;
DWORD m_dwJmpReturn2;
DWORD m_dwJmpReturn3;
DWORD m_dwJmpReturn4;
DWORD m_dwJmpReturn5;
DWORD m_dwJmpReturn6;
DWORD m_dwJmpReturn7;
DWORD m_dwJmpReturn8;
BYTE m_SetOptionData[MAX_BSETOPT_SIZE];
};
// ----------------------------------------------------------------------------------------------
extern CItemSetOption g_ItemSetOption;
// ----------------------------------------------------------------------------------------------
#endif
#include "stdafx.h"
#include "ItemSetOption.h"
#include "TMemory.h"
#include "Import.h"
// ----------------------------------------------------------------------------------------------
#if(ENABLE_ITEMSETOPTION)
// ----------------------------------------------------------------------------------------------
CItemSetOption g_ItemSetOption;
// ----------------------------------------------------------------------------------------------
CItemSetOption::CItemSetOption()
{
}
// ----------------------------------------------------------------------------------------------
CItemSetOption::~CItemSetOption()
{
}
// ----------------------------------------------------------------------------------------------
void CItemSetOption::Load()
{
memset(this->m_SetOptionData, 0, sizeof(this->m_SetOptionData));
this->m_dwSetOptionAddress = (DWORD)&this->m_SetOptionData;
this->BMDLoad("Data\\ExData\\Local\\itemsetoption_new.bmd");
this->m_dwJmpReturn1 = oItemSetOptionAsm1 + 13;
SetRange((LPVOID)oItemSetOptionAsm1, 13, ASM::NOP);
SetOp((LPVOID)oItemSetOptionAsm1, (LPVOID)this->AsmAncent1, ASM::JMP);
this->m_dwJmpReturn2 = oItemSetOptionAsm2 + 10;
SetRange((LPVOID)oItemSetOptionAsm2, 10, ASM::NOP);
SetOp((LPVOID)oItemSetOptionAsm2, (LPVOID)this->AsmAncent2, ASM::JMP);
this->m_dwJmpReturn3 = oItemSetOptionAsm3 + 10;
SetRange((LPVOID)oItemSetOptionAsm3, 10, ASM::NOP);
SetOp((LPVOID)oItemSetOptionAsm3, (LPVOID)this->AsmAncent3, ASM::JMP);
this->m_dwJmpReturn4 = oItemSetOptionAsm4 + 10;
SetRange((LPVOID)oItemSetOptionAsm4, 10, ASM::NOP);
SetOp((LPVOID)oItemSetOptionAsm4, (LPVOID)this->AsmAncent4, ASM::JMP);
this->m_dwJmpReturn5 = oItemSetOptionAsm5 + 10;
SetRange((LPVOID)oItemSetOptionAsm5, 10, ASM::NOP);
SetOp((LPVOID)oItemSetOptionAsm5, (LPVOID)this->AsmAncent5, ASM::JMP);
this->m_dwJmpReturn6 = oItemSetOptionAsm6 + 13;
SetRange((LPVOID)oItemSetOptionAsm6, 13, ASM::NOP);
SetOp((LPVOID)oItemSetOptionAsm6, (LPVOID)this->AsmAncent6, ASM::JMP);
this->m_dwJmpReturn7 = oItemSetOptionAsm7 + 10;
SetRange((LPVOID)oItemSetOptionAsm7, 10, ASM::NOP);
SetOp((LPVOID)oItemSetOptionAsm7, (LPVOID)this->AsmAncent7, ASM::JMP);
this->m_dwJmpReturn8 = oItemSetOptionAsm8 + 10;
SetRange((LPVOID)oItemSetOptionAsm8, 10, ASM::NOP);
SetOp((LPVOID)oItemSetOptionAsm8, (LPVOID)this->AsmAncent8, ASM::JMP);
}
// ----------------------------------------------------------------------------------------------
bool CItemSetOption::BMDLoad(char* FileName)
{
int File = pFileOpen(FileName, "rb");
if(File)
{
int iTemp = 0;
int iSize = 0;
int iLenCount = MAX_SETOPT_LINE;
pFileRead((int)&g_ItemSetOption.m_SetOptionData[iSize], MAX_BSETOPT_SIZE, 1, File);
pFileRead((int)&iTemp, 4, 1, File);
pFileClose(File);
pFileCRC((int)&g_ItemSetOption.m_SetOptionData[iSize], iLenCount << 6, 0xA2F1);
for(int i = 0; i < MAX_SETOPT_COUNT; i++)
{
pFileDec((int)&g_ItemSetOption.m_SetOptionData[iSize], iLenCount);
iSize += iLenCount;
}
}
else
{
char szText[64];
sprintf(szText, "%s - File not exist.", FileName);
MessageBoxA(pGameWindow, szText, NULL, NULL);
SendMessageA(pGameWindow, WM_DESTROY, NULL, NULL);
}
return true;
}
// ----------------------------------------------------------------------------------------------
void __declspec(naked) CItemSetOption::AsmAncent1()
{
_asm
{
MOV ECX,g_ItemSetOption.m_dwSetOptionAddress
LEA EDX,[EAX+ECX]
JMP g_ItemSetOption.m_dwJmpReturn1
}
}
// ----------------------------------------------------------------------------------------------
void __declspec(naked) CItemSetOption::AsmAncent2()
{
_asm
{
MOV ECX,g_ItemSetOption.m_dwSetOptionAddress
LEA EDX,[EAX+ECX]
JMP g_ItemSetOption.m_dwJmpReturn2
}
}
// ----------------------------------------------------------------------------------------------
void __declspec(naked) CItemSetOption::AsmAncent3()
{
_asm
{
MOV EDX,g_ItemSetOption.m_dwSetOptionAddress
LEA EAX,[ECX+EDX]
JMP g_ItemSetOption.m_dwJmpReturn3
}
}
// ----------------------------------------------------------------------------------------------
void __declspec(naked) CItemSetOption::AsmAncent4()
{
_asm
{
MOV EAX,g_ItemSetOption.m_dwSetOptionAddress
LEA ECX,[EDX+EAX]
JMP g_ItemSetOption.m_dwJmpReturn4
}
}
// ----------------------------------------------------------------------------------------------
void __declspec(naked) CItemSetOption::AsmAncent5()
{
_asm
{
MOV EAX,g_ItemSetOption.m_dwSetOptionAddress
LEA ECX,[EDX+EAX]
JMP g_ItemSetOption.m_dwJmpReturn5
}
}
// ----------------------------------------------------------------------------------------------
void __declspec(naked) CItemSetOption::AsmAncent6()
{
_asm
{
MOV EDX,g_ItemSetOption.m_dwSetOptionAddress
LEA EAX,[ECX+EDX]
JMP g_ItemSetOption.m_dwJmpReturn6
}
}
// ----------------------------------------------------------------------------------------------
void __declspec(naked) CItemSetOption::AsmAncent7()
{
_asm
{
MOV EAX,g_ItemSetOption.m_dwSetOptionAddress
LEA ECX,[EDX+EAX]
JMP g_ItemSetOption.m_dwJmpReturn7
}
}
// ----------------------------------------------------------------------------------------------
void __declspec(naked) CItemSetOption::AsmAncent8()
{
_asm
{
MOV ECX,g_ItemSetOption.m_dwSetOptionAddress
LEA EDX,[EAX+ECX]
JMP g_ItemSetOption.m_dwJmpReturn8
}
}
// ----------------------------------------------------------------------------------------------
#endif