Открытие и обзор Ex-Team Latest Complete source code S6EP3

Автор Wendigo, 2019 Июнь 02, 18:20

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

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

baryga30

Здоров всем. Не получается настроить нормальный баланс эльфу по этим формулам, они вообще очень не понятные зачем там по 2 раза каждая функция повторяется?
[Fairy_Elf]
//==============================
DamageMax_Bow_StrDexRight     = 4
DamageMin_Bow_StrDexRight     = 6
DamageMax_Bow_StrDexLeft    = 4
DamageMin_Bow_StrDexLeft     = 6
DamageMax_NoBow_StrRight    = 12
DamageMax_NoBow_DexRight     = 6
DamageMin_NoBow_StrRight    = 14
DamageMin_NoBow_DexRight     = 6
DamageMax_NoBow_StrLeft        = 12
DamageMax_NoBow_DexLeft     = 4
DamageMin_NoBow_StrLeft     = 8
DamageMin_NoBow_DexLeft     = 6
DamageMax_DexStrRight        = 4
DamageMin_DexStrRight        = 6
DamageMax_DexStrLeft         = 4
DamageMin_DexStrLeft        = 6
SuccessfulBlocking        = 4
Defense                = 9


Обычно формула выглядит так
Min dmg = str/14+agi/7
Max dmg = str/8+agi/4


Можно ли изменить формулу str/14+agi/7  например вместо agi сделать зависимость от vit? Подскажите где копать.

Цитата: baryga30 от 2019 Авг. 27, 20:43  Здоров всем. Не получается настроить нормальный баланс эльфу по этим формулам, они вообще очень не понятные зачем там по 2 раза каждая функция повторяется?
[Fairy_Elf]
//==============================
DamageMax_Bow_StrDexRight     = 4
DamageMin_Bow_StrDexRight     = 6
DamageMax_Bow_StrDexLeft    = 4
DamageMin_Bow_StrDexLeft     = 6
DamageMax_NoBow_StrRight    = 12
DamageMax_NoBow_DexRight     = 6
DamageMin_NoBow_StrRight    = 14
DamageMin_NoBow_DexRight     = 6
DamageMax_NoBow_StrLeft        = 12
DamageMax_NoBow_DexLeft     = 4
DamageMin_NoBow_StrLeft     = 8
DamageMin_NoBow_DexLeft     = 6
DamageMax_DexStrRight        = 4
DamageMin_DexStrRight        = 6
DamageMax_DexStrLeft         = 4
DamageMin_DexStrLeft        = 6
SuccessfulBlocking        = 4
Defense                = 9


Обычно формула выглядит так
Min dmg = str/14+agi/7
Max dmg = str/8+agi/4


Можно ли изменить формулу str/14+agi/7  например вместо agi сделать зависимость от vit? Подскажите где копать.



Все уже сам разобрался где менять формулы.

Odisey

У меня проблема с контрольной суммой, выберите символ активн заново 1 сегмент. Я генерирую Checkum.dat

error

04:44:04 error-L1 : CheckSum-Exe error -1334266365 -560600515 309 [Odisk]
WSARecv() failed with error 10038

Моя модификация в GS. но у меня до сих пор нет решения с контрольной суммой

Спойлер
void GCCheckMainExeKeySend(int aIndex)
{
PMSG_CHECK_MAINEXE pMsg;

gObj[aIndex].CheckSumTableNum = rand() % MAX_CHECKSUM_KEY;
gObj[aIndex].CheckSumTime = GetTickCount();
PHeadSetB((LPBYTE)&pMsg, 0x03, sizeof(pMsg));
pMsg.m_wKey = ((((gObj->CheckSumTableNum & 0x3F0)*64) | ((gObj->CheckSumTableNum & 0x0F)) ^ 0xB479));

DataSend(aIndex,(BYTE*)&pMsg,pMsg.h.size);
}

WORD EncryptCheckSumKey(WORD wSource)
{
WORD wRandom = rand() % 64;
WORD wAcc = ((wSource & 0x3F0) * 64) | (wRandom *16) | (wSource & 0x0F);
return wAcc ^ 0xB479;
}

void CGCheckMainRecv(PMSG_CHECK_MAINEXE_RESULT * lpMsg, int aIndex)
{
#if(REMOVE_CHECKSUM == 1)
gObj[aIndex].CheckSumTime = 0;
gObj[aIndex].m_InWebzen = true;
return;
#endif
int EnableCheckSum = GetPrivateProfileInt("Common","CheckSum",0,"..\Data\ex\CommonServer.ini");
if(ExConfig.CommonServer.EnableCheckSum)
{
if ( strcmp(gObj[aIndex].Ip_addr, "127.0.0.1") == 1 )
{
gObj[aIndex].CheckSumTime = 0;
gObj[aIndex].m_InWebzen = true;
return;
}

if ( gObj[aIndex].CheckSumTableNum < 0 || gObj[aIndex].CheckSumTableNum > MAX_CHECKSUM_KEY-1 )
{
LogAdd("error-L1 : [%s][%s] CheckSum-Exe error ", gObj[aIndex].AccountID, gObj[aIndex].Name);
CloseClient(aIndex);
return;
}

if ( dwgCheckSum[gObj[aIndex].CheckSumTableNum] != lpMsg->m_dwKey)
{
LogAddTD("error-L1 : CheckSum-Exe error %d %d %d [%s]", dwgCheckSum[gObj[aIndex].CheckSumTableNum],
lpMsg->m_dwKey, gObj[aIndex].CheckSumTableNum, gObj[aIndex].AccountID);
CloseClient(aIndex);
return;
}
}
[свернуть]

migi77

Народ как сделать лицензию? для гс

KpacaBaa



кто в курсе как это обойти???

подскажите как включить микс grand hero item???

migi77

https://youtu.be/qLI-XPM0Bz4
ошибка user.cpp 6317  когда использую скил chain lighting
и подскажите как решить проблему со скилами усуммонера они бьют с пролагами
она пригнет 5 раз а урон вылетает только 1 раз
Chain Lighting бьет не 3 раза сразу и не по 3 целям а только 1 раз и по 1 цели
на видео я думаю должно быть видно

RadeoN

Как фиксировать окно мастер левела, оно просто не открывается

greddy2015

В лицензии мастер лвл отключен, смотри там

RadeoN

#87
Цитата: greddy2015 от 2019 Окт. 28, 08:37  В лицензии мастер лвл отключен, смотри там

Уже включил в клиенте, но по любому не работает


ExLicense.ppc

Спойлер
#include "stdafx.h"
#include "ExLicense.h"
#include "Monster.h"
#include "ItemSmokeEffect.h"
#include "Configs.h"
#include "PartySearch.h"
#include "PersonalShopEx.h"
#include "Smithy.h"
#include "TMemory.h"
#include "Interface.h"
#include "VisualFix.h"
#include "User.h"
#include "DonateShop.h"
#include "AddPoints.h"
#include "Console.h"
#include "WingEffect.h"
#include "MiniMenu.h"
#include "Controller.h"
#include "ChatExpanded.h"
#include "ItemSetOption.h"
#include "AccountSecurity.h"
#include "Interface.h"
#include "BuffIcon.h"
#include "ExMenuV3.h"
#include "StatsAdvance.h"
// ----------------------------------------------------------------------------------------------

#if(EX_LICENSE==TRUE)

CExLicense g_ExLicense;
// ----------------------------------------------------------------------------------------------

static DWORD InterfaceBuffer;

Naked(_00811D69)
{
_asm
{
MOV InterfaceBuffer, EDX
}

/*if(g_ExLicense.CheckUser(eExUB::Escalate))
{
if(InterfaceBuffer)
{
if(gObjUser.InSafeZone() && !gInterface.CheckWindow(Shop))
{
g_DonateShop.CG_CashSend();
}
}
}
else */if(g_ExLicense.m_ExMenuV2 || g_ExLicense.m_Achievements)
{
if(InterfaceBuffer)
{
if(gInterface.CheckWindowEx(ObjWindowsEx::exWinMiniMenu))//need add check cash shop
{
gInterface.CloseWindowEx(ObjWindowsEx::exWinMiniMenu);
}
else
{
gInterface.OpenWindowEx(ObjWindowsEx::exWinMiniMenu);
}
}
else if(gInterface.m_bCashShopOpen)
{
gInterface.m_bCashShopOpen = false;

if(g_ExLicense.CheckUser(eExUB::Artem) || g_ExLicense.CheckUser(eExUB::Artem2))
{
if(gObjUser.InSafeZone() && !gInterface.CheckWindow(Shop))
{
g_DonateShop.CG_CashSend();
}
}
else
{
_asm
{
MOV InterfaceBuffer,  0x00811D6F
JMP InterfaceBuffer
}
}
}
}
else
{
if(gObjUser.InSafeZone() && !gInterface.CheckWindow(Shop))
{
g_DonateShop.CG_CashSend();
}
}

_asm
{
MOV InterfaceBuffer,  0x00811F40
JMP InterfaceBuffer
}
}

Naked(_007D3C16)
{
/*if(g_ExLicense.CheckUser(eExUB::Escalate))
{
if(gObjUser.InSafeZone() && !gInterface.CheckWindow(Shop))
{
g_DonateShop.CG_CashSend();
}

_asm
{
MOV InterfaceBuffer,  0x007D3DF5
JMP InterfaceBuffer
}
}
else */if( g_ExLicense.m_ExMenuV2 || g_ExLicense.m_Achievements )
{
if(gInterface.CheckWindowEx(exWinMiniMenu))
{
gInterface.CloseWindowEx(exWinMiniMenu);
}
else
{
gInterface.OpenWindowEx(exWinMiniMenu);
}
}
else
{
if(gObjUser.InSafeZone() && !gInterface.CheckWindow(Shop))
{
g_DonateShop.CG_CashSend();
}
}

_asm
{
MOV InterfaceBuffer,  0x007D3DF5
JMP InterfaceBuffer
}
}

void __declspec(naked) GuildAllieReqv()
{
static DWORD __jmpTRUE = 0x0078F4AD;
static DWORD __jmpFALSE = 0x0078F42A;
static DWORD _UserGuildStatus = 0;

_asm
{
MOV _UserGuildStatus, ECX
}

if(_UserGuildStatus == 0x80 || _UserGuildStatus == 0x40)
{
_asm
{
JMP __jmpTRUE;
}
}

_asm
{
JMP __jmpFALSE;
}
}

CExLicense::CExLicense()
{
//VMBEGIN
this->Init();
//VMEND
}
// ----------------------------------------------------------------------------------------------

CExLicense::~CExLicense()
{
}
// ----------------------------------------------------------------------------------------------

void CExLicense::Init()
{
//VMBEGIN
this->Enable = true;

this->TEXTXoR[0] = 0x03;
this->TEXTXoR[1] = 0x05;
this->TEXTXoR[2] = 0x08;

this->URLXoR[0] = 0xA9;
this->URLXoR[1] = 0xB3;
this->URLXoR[2] = 0x18;

this->ActiveUser = -1;

this->m_Achievements = false;
this->m_ExMenuV2 = false;
//VMEND
}
// ----------------------------------------------------------------------------------------------

void CExLicense::Load()
{
//VMBEGIN
this->Init();
//VMEND

}
// ----------------------------------------------------------------------------------------------

void CExLicense::GCLicenseUser(PMSG_LICENSE_DATA* aRecv)
{
//VMBEGIN
this->ActiveUser = aRecv->LicenseUser;
this->user.Rage = aRecv->base.Rage;
this->user.WinQuest = aRecv->base.WinQuest;
this->user.BloodHound = aRecv->base.BloodHound;
this->user.MonsterQuest = aRecv->base.MonsterQuest;
this->user.TvTEvent = aRecv->base.TvTEvent;
this->user.GrandHero = aRecv->base.GrandHero;
this->user.PartySystem = aRecv->base.PartySystem;
this->user.Brotherhood = aRecv->base.Brotherhood;
this->user.PartySearch = aRecv->base.PartySearch;
this->user.ChatLog = aRecv->base.ChatLog;
this->user.GM_Manager = aRecv->base.GM_Manager;
this->user.PerosnalStoreEx = aRecv->base.PerosnalStoreEx;
this->user.PandoraEvent = aRecv->base.PandoraEvent;
this->user.AntiCheatPlus = aRecv->base.AntiCheatPlus;
this->user.SpotReturn = aRecv->base.SpotReturn;
this->user.ComboCustom = aRecv->base.ComboCustom;
this->user.NpcBuffer = aRecv->base.NpcBuffer;
this->user.BMQuest = aRecv->base.BMQuest;
this->user.LoraBattle = aRecv->base.LoraBattle;
this->user.Smithy = aRecv->base.Smithy;
this->user.Monster = aRecv->base.Monster;
this->user.ItemSmokeEffect = aRecv->base.ItemSmokeEffect;
this->user.GrandDinamicExp = aRecv->base.GrandDinamicExp;
this->user.PartySave = aRecv->base.PartySave;
//this->user.DisableMasterTree = aRecv->base.DisableMasterTree;
this->user.OfflineMode = aRecv->base.OfflineMode;
this->user.bAchievements = aRecv->base.bAchievements;
this->user.PremiumEx = aRecv->base.PremiumEx;
this->user.AccSecurity = aRecv->base.AccSecurity;
this->user.CraftQuestSystem = aRecv->base.CraftQuestSystem;
this->user.PickUpItemInfo = aRecv->base.PickUpItemInfo;
this->user.ReferralSystem = aRecv->base.ReferralSystem;

this->config.MaxPartyUser = aRecv->config.MaxPartyUser;
this->config.PersonalEnable = aRecv->config.PersonalEnable;
this->config.PersonalBonus = aRecv->config.PersonalBonus;
this->config.PersonalCredit = aRecv->config.PersonalCredit;

this->CustomManager();
//VMEND
}
// ----------------------------------------------------------------------------------------------

bool IsMasterClass(BYTE Class)
{
return false;
}

void CExLicense::CustomManager()
{
if(this->user.Monster)
{
gMonster.Load();
}
if(this->user.ItemSmokeEffect)
{
gItemSmokeEffect.Load();
}
if(this->user.MonsterQuest)
{
gMONSTER_QUEST_SYSTEM = true;
}
if(this->user.PartySystem)
{
gPARTY_SYSTEM = true;
}
if(this->user.PartySearch)
{
g_PartySearch.Active = true;
}
if(this->user.Smithy)
{
this->user.Smithy = true;
}
if(this->user.Rage)
{
gRAGESYSTEM = true;
}
if(this->user.WinQuest)
{
gWINQUEST = true;
}
if(this->user.PerosnalStoreEx && this->config.PersonalEnable)
{
g_PersonalShopEx.Load();
g_PersonalShopEx.iPERSONAL_BONUS = this->config.PersonalBonus;
g_PersonalShopEx.iPERSONAL_CREDIT = this->config.PersonalCredit;
}

g_Smithy.License = this->user.Smithy;

this->m_Achievements = this->user.bAchievements;

if(this->user.AccSecurity)
{
g_AccountSecurity.m_bEnable = true;
}

//Master Skill Button Disable
if(this->user.DisableMasterTree)
{
SetRange((LPVOID)0x00784B77, 5, ASM::NOP);
SetOp((LPVOID)0x00784F79, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0  //Master Button Disable
SetOp((LPVOID)0x007D3916, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0  //Master A Key Disable
}

g_MaxPartyMember = this->config.MaxPartyUser;

if( g_ExLicense.CheckUser(eExUB::SILVER1) ||
g_ExLicense.CheckUser(eExUB::SILVER2) )
{
gVisualFix.GCVisualInit();
//SetRange((LPVOID)0x007D3C1C, 5, ASM::NOP);
//SetOp((LPVOID)0x007D3C1C, _007D3C16, ASM::JMP);
////SetRange((LPVOID)0x00811D6F, 5, ASM::NOP);
////SetOp((LPVOID)0x00811D6F, _00811D69, ASM::JMP);
//SetRange((LPVOID)0x00811D69, 6, ASM::NOP);
//SetOp((LPVOID)0x00811D69, _00811D69, ASM::JMP);
SetRange((LPVOID)0x00811D89, 7, ASM::NOP);
SetRange((LPVOID)0x00811EC5, 5, ASM::NOP);//
g_AddPoints.Load();

gChatExpanded.LoadChatEx();
}

#if(CUSTOM_ADD_POINTS==TRUE)
if( g_ExLicense.CheckUser(eExUB::Gredy) ||
g_ExLicense.CheckUser(eExUB::Gredy2) ||
g_ExLicense.CheckUser(eExUB::GredyLocal) )
{
g_AddPoints.Load();
//SetRange((LPVOID)0x005528DE, 23, ASM::NOP);   //dark lord horse spotikaeca pt damaga reflecta
}
#endif
if(g_ExLicense.CheckUser(eExUB::Stone))
{
SetRange((LPVOID)0x005528D7, 2, ASM::NOP);   //ne kto ne spotikaeca ot damaga i reflecta

//Credit Shop
SetRange((LPVOID)0x007D3C1C, 5, ASM::NOP);
SetOp((LPVOID)0x007D3C1C, _007D3C16, ASM::JMP);
SetRange((LPVOID)0x00811D6F, 5, ASM::NOP);
SetOp((LPVOID)0x00811D6F, _00811D69, ASM::JMP);
}
else if(g_ExLicense.CheckUser(eExUB::Stone) || g_ExLicense.CheckUser(eExUB::Almdar))
{
SetRange((LPVOID)0x005528D7, 2, ASM::NOP);   //ne sko ne spotikaeca ot damaga i reflecta
}
else if(g_ExLicense.CheckUser(eExUB::Artem) || g_ExLicense.CheckUser(eExUB::Artem2))
{
//Credit Shop
SetRange((LPVOID)0x007D3C1C, 5, ASM::NOP);
SetOp((LPVOID)0x007D3C1C, _007D3C16, ASM::JMP);
SetRange((LPVOID)0x00811D6F, 5, ASM::NOP);
SetOp((LPVOID)0x00811D6F, _00811D69, ASM::JMP);

g_AddPoints.Load();

#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
}
else if(g_ExLicense.CheckUser(eExUB::MU2Play))
{
g_AddPoints.Load();
}
else if(g_ExLicense.CheckUser(eExUB::EpicMU))
{
//-> Siege minimap fix
SetRange((PVOID)0x006505FB, 4, ASM::NOP);
//-> Fix BC Master Disable
SetByte((LPVOID)(0x008742AC+3), 0x07);
SetByte((LPVOID)(0x00874C04+6), 0x07);
SetRange((LPVOID)(0x00874EBF), 5, ASM::NOP);
//-> Fix DS Master Disable
SetByte((LPVOID)(0x00877D8C+3), 0x06);
SetByte((LPVOID)(0x00878754+6), 0x06);
SetRange((LPVOID)(0x00878A0F), 5, ASM::NOP);
SetRange((LPVOID)0x005F7AEA, 27, ASM::NOP);  //Fix Item Pol
SetByte((LPVOID)(0x005CD192), 0xEB);     //Fix Inventory Pos
SetRange((LPVOID)0x005528D7, 2, ASM::NOP);  //ne sko ne spotikaeca ot damaga i reflecta

this->m_ExMenuV2 = true;

g_AddPoints.Load();
}

#if(THINNAKORN_MAC)
g_AddPoints.Load();

SetByte((LPVOID)(0x00405B7A+2), 0x91);   //Character delete 400 level
#endif

if( g_ExLicense.CheckUser(eExUB::SILVER1) ||
g_ExLicense.CheckUser(eExUB::SILVER2) ||
THINNAKORN_MAC == 1)
{
this->m_Achievements = true;
}

if( g_ExLicense.CheckUser(eExUB::DavitRazmadze) || g_ExLicense.CheckUser(eExUB::DavitRazmadze2) || g_ExLicense.CheckUser(eExUB::DavitRazmadze3) ||
g_ExLicense.CheckUser(eExUB::MedoniAndrei))
{
this->m_ExMenuV2 = true;
}

if(g_ExLicense.CheckUser(eExUB::Escalate))
{
g_AddPoints.Load();

//SetRange((LPVOID)0x007D3C1C, 5, ASM::NOP);
//SetOp((LPVOID)0x007D3C1C, _007D3C16, ASM::JMP);
//SetRange((LPVOID)0x00811D69, 6, ASM::NOP);
//SetOp((LPVOID)0x00811D69, _00811D69, ASM::JMP);
}

if(g_ExLicense.CheckUser(eExUB::eternalmu))
{
g_AddPoints.Load();
}

#if(FIX_AGM_REQVALLIANCE==TRUE)
if(g_ExLicense.CheckUser(eExUB::Gredy)  ||
g_ExLicense.CheckUser(eExUB::Gredy2)  ||
g_ExLicense.CheckUser(eExUB::GredyLocal) ||
g_ExLicense.CheckUser(eExUB::mu4you)  ||
g_ExLicense.CheckUser(eExUB::NSGames))
{
SetOp((LPVOID)0x0078F41E, (LPVOID)GuildAllieReqv, ASM::JMP);   //  CALL 005878E0
SetRange((LPVOID)0x007E519C, 6, ASM::NOP);   // -> Disable Check ItemAddOption Wings
//SetRange((LPVOID)0x006D80F0, 2, ASM::NOP);   // -> Fix File Scream Target Block
//SetByte((LPVOID)(0x006F0B06 + 2), 0xE0);   // -> Fix File Scream Target Block
//SetByte((LPVOID)(0x006F0B06 + 3), 0x7B);   // -> Fix File Scream Target Block
SetByte((LPVOID)(0x006F0B51 + 0), 0xE9);
SetByte((LPVOID)(0x006F0B51 + 1), 0xB4);
SetByte((LPVOID)(0x006F0B51 + 2), 0x02);
SetByte((LPVOID)(0x006F0B51 + 3), 0x00);
SetByte((LPVOID)(0x006F0B51 + 4), 0x00);

gChatExpanded.LoadChatEx();

SetByte((LPVOID)0x005C8B42, 0xEB);   //Rena trade
SetByte((LPVOID)0x005C8881, 0xEB);   //Rena store

//gInterface.m_ActiveAutoHP = true;

#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
}
#endif

if(g_ExLicense.CheckUser(eExUB::RevoMU))
{
this->m_ExMenuV2 = true;
g_AddPoints.Load();
SetRange((LPVOID)0x005528D7, 2, ASM::NOP);   //ne kto ne spotikaeca ot damaga i reflecta
SetRange((PVOID)0x006505FB, 4, ASM::NOP);   //-> Siege minimap fix

gChatExpanded.LoadChatEx();
}
#if(ENABLE_CHATCOLOR)
//gChatExpanded.LoadChatEx();
#endif
// ----
#if(ENABLE_ITEMSETOPTION)
if( g_ExLicense.CheckUser(eExUB::Gredy) ||
g_ExLicense.CheckUser(eExUB::Gredy2) ||
g_ExLicense.CheckUser(eExUB::GredyLocal) ||
g_ExLicense.CheckUser(eExUB::masonX) || g_ExLicense.CheckUser(eExUB::masonX2)||
g_ExLicense.CheckUser(eExUB::ulasevich) || g_ExLicense.CheckUser(eExUB::ulasevich2) ||
g_ExLicense.CheckUser(eExUB::Escalate) || g_ExLicense.CheckUser(eExUB::mu4you) ||
g_ExLicense.CheckUser(eExUB::eternalmu) || g_ExLicense.CheckUser(eExUB::NSGames))
{
g_ItemSetOption.Load();
}
#endif
// ----
if(g_ExLicense.CheckUser(eExUB::masonX) || g_ExLicense.CheckUser(eExUB::masonX2))
{
g_AddPoints.Load();
}
// ----
if(g_ExLicense.CheckUser(eExUB::GloryMU))
{
//this->m_ExMenuV2 = true;

//SetRange((LPVOID)0x005F7AEA, 27, ASM::NOP);  //Fix Item Pol
//SetByte((LPVOID)(0x005CD192), 0xEB);    //Fix Inventory Pos

SetRange((LPVOID)0x005528D7, 2, ASM::NOP);  //ne kto ne spotikaeca ot damaga i reflecta
SetRange((PVOID)0x006505FB, 4, ASM::NOP);  //-> Siege minimap fix

g_AddPoints.Load();
gChatExpanded.LoadChatEx();
g_ItemSetOption.Load();
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif

//this->DisableMasterEvent();
}
// ----
if(g_ExLicense.CheckUser(eExUB::ArcMu))
{
g_AddPoints.Load();
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
}

if(g_ExLicense.CheckUser(eExUB::MedoniAndrei))
{
g_AddPoints.Load();
}

if(g_ExLicense.CheckUser(eExUB::mu4you))
{
g_AddPoints.Load();
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
gChatExpanded.LoadChatEx();

SetRange((LPVOID)0x0095DE51, 2, ASM::NOP);   //MUHelper Inventory 1
SetByte((LPVOID)(0x0095CE90), 0xEB);  //MUHelper Inventory 2

SetRange((PVOID)0x006505FB, 4, ASM::NOP);  //-> Siege minimap fix

gVisualFix.GCVisualInit();
}

if(g_ExLicense.CheckUser(eExUB::eternalmu))
{
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
#if(DEV_EXMENU_V3)
g_ExMenuV3.Load(EXMENU_NUMBER::eVERSION_ET);
#endif
}

if(g_ExLicense.CheckUser(eExUB::WarBorn))
{
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif

}

if(g_ExLicense.CheckUser(eExUB::NSGames))
{
g_AddPoints.Load();
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
gChatExpanded.LoadChatEx();

SetRange((LPVOID)0x0095DE51, 2, ASM::NOP);   //MUHelper Inventory 1
SetByte((LPVOID)(0x0095CE90), 0xEB);  //MUHelper Inventory 2

SetRange((PVOID)0x006505FB, 4, ASM::NOP);  //-> Siege minimap fix

gVisualFix.GCVisualInit();

#if(DEV_EXMENU_V3)
g_ExMenuV3.Load(EXMENU_NUMBER::eVERSION_NS);
#endif

#if(DEV_STATS_ADVANCE)
g_StatsAdvance.Load();
#endif

//char szSerial[17];
//memset(szSerial, 0, sizeof(szSerial));
//sprintf(szSerial, "01332jcEX48mxL3b");
//WriteMemory((PDWORD)SERIAL_MAIN, szSerial, sizeof(szSerial));
}

#if(CUSTOM_POSTITEM)
gInterface.LoadItemPost();
#endif

#if(LICENSE_MUEVIL)
SetRange((LPVOID)0x0095DE51, 2, ASM::NOP);   //MUHelper Inventory 1
SetByte((LPVOID)(0x0095CE90), 0xEB);  //MUHelper Inventory 2
#endif

if( g_ExLicense.m_ExMenuV2 || g_ExLicense.m_Achievements )
{
#if(DEV_EXMENU_V3)
if(!g_ExMenuV3.m_Enable)
{
SetRange((LPVOID)0x007D3C1C, 5, ASM::NOP);
SetOp((LPVOID)0x007D3C1C, _007D3C16, ASM::JMP);
SetRange((LPVOID)0x00811D69, 6, ASM::NOP);
SetOp((LPVOID)0x00811D69, _00811D69, ASM::JMP);
}
#endif
}

// ------------------------------------
if(g_ExLicense.CheckUser(eExUB::Local))
{
g_AddPoints.Load();
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
gChatExpanded.LoadChatEx();
SetRange((LPVOID)0x0095DE51, 2, ASM::NOP);   //MUHelper Inventory 1
SetByte((LPVOID)(0x0095CE90), 0xEB);  //MUHelper Inventory 2
SetRange((PVOID)0x006505FB, 4, ASM::NOP);   //-> Siege minimap fix
gVisualFix.GCVisualInit();
#if(DEV_STATS_ADVANCE)
g_StatsAdvance.Load();
#endif
}
// ------------------------------------
}
// ----------------------------------------------------------------------------------------------

bool CExLicense::CheckUser(int NeedUser)
{
//VMBEGIN
if(this->ActiveUser == NeedUser)
{
return true;
}
return false;
//VMEND
}
// ----------------------------------------------------------------------------------------------

char* CExLicense::GetDecText(char* EncodeChar)
{
//VMBEGIN
int len = strlen(EncodeChar);
char* Line = new char[len+1];
for(int i = 0; i < len; i++)
{
Line = char(EncodeChar ^ this->TEXTXoR[i % 3]);
}
Line[len] = 0;
return Line;
//VMEND
}
// ----------------------------------------------------------------------------------------------

void CExLicense::GCAttackEnable(PMSG_GC_ATTACK* lpMsg)
{

}

void CExLicense::GCAttackDisable()
{

}

void CExLicense::GC_UserConfigRecv(PMSG_USERCONFIG * lpMsg)
{
gInterface.m_ActiveAutoHP = false;
gInterface.m_AutoHP = false;

memcpy(&g_ExLicense.m_EvoConfig, &lpMsg->EvoConfig, sizeof(g_ExLicense.m_EvoConfig));

if(g_ExLicense.CheckUser(eExUB::Gredy) || g_ExLicense.CheckUser(eExUB::Gredy2) || g_ExLicense.CheckUser(eExUB::GredyLocal))
{
gInterface.m_ActiveAutoHP = g_ExLicense.m_EvoConfig.HPAutoClicker;
}
}

void CExLicense::DisableMasterEvent()
{
//-> Fix BC Master Disable
SetByte((LPVOID)(0x008742AC+3), 0x07);
SetByte((LPVOID)(0x00874C04+6), 0x07);
SetRange((LPVOID)(0x00874EBF), 5, ASM::NOP);
//-> Fix DS Master Disable
SetByte((LPVOID)(0x00877D8C+3), 0x06);
SetByte((LPVOID)(0x00878754+6), 0x06);
SetRange((LPVOID)(0x00878A0F), 5, ASM::NOP);

SetOp((LPVOID)0x0063DDF2, (LPVOID)IsMasterClass, ASM::CALL);//
SetOp((LPVOID)0x0063DF89, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0063E5F2, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0063EA4C, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0064A79A, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0064A85F, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0064AB3D, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0064AC02, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0064CA0C, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0

SetOp((LPVOID)0x0064CDE9, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0064CF5F, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00651674, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00656E03, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0077EFD0, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0077F9A9, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0077FBC8, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00782C5A, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00783032, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0

SetOp((LPVOID)0x00784F79, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0  //Master Button Disable
SetOp((LPVOID)0x007D3916, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0  //Master A Key Disable
SetOp((LPVOID)0x007E4B19, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x007E4B8F, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0080F8D9, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0

SetOp((LPVOID)0x00810019, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x008102E9, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x008105CB, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0081064B, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00869213, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0

SetOp((LPVOID)0x0087455B, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0087862E, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00878661, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0095DFAF, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0095E090, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0095E1F0, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00968450, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x009684A6, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x009684EF, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
}

#endif
[свернуть]


stdafx.h

Спойлер
#pragma once
// -------------------------------------------------------------------------------
#define ENABLE_PROTECT     0   //log add post item
#define ENABLE_CONSOLE     0
#define ENABLE_DEBUG     0
#define ENABLE_AUTOLOGIN  0
#define ENABLE_FILEMEMORY  0
#define ENABLE_TEST    0
#define ENABLE_ENCODER     1
#define ENABLE_START_MU     0
#define ENABLE_DEV    0
#define ENABLE_CHECK     0
// -------------------------------------------------------------------------------
#define ENABLE_EXPROTECTOR  0
#define ENABLE_RAM_MIN     1
// -------------------------------------------------------------------------------
#define ENABLE_IP_ADDRESS  0
#define TEXT_IP_ADDRESS  "172.20.10.7"
//#define TEXT_IP_ADDRESS     "193.124.117.113"
//#define TEXT_IP_ADDRESS  "193.124.117.97"
// -------------------------------------------------------------------------------
#define TEST_WIN10    0
// -------------------------------------------------------------------------------
#define INTERFACE_LOGIN_IMG  0   //private
#define THINNAKORN_MAC     0   //private
#define BASSREFLEXIVE     0   //private
#define EPICMU       0
#define LANG_CHINA    0
#define ENABLE_CHANGE     0   //need 1
#define LICENSE_MUEVIL     0
//#define _SERIAL_    "G3qF7QqTS21ilL7b"
// -------------------------------------------------------------------------------
#define WINDOW_TITLE     "MU Online"
// -------------------------------------------------------------------------------
#if(ENABLE_PROTECT)
#define PROTECT
#endif
// -------------------------------------------------------------------------------
#include <Windows.h>
#include <WindowsX.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <time.h>
#include <stdarg.h>
#include <process.h>
#include <locale.h>
#include <WinBase.h>
#include <tlhelp32.h>
#include <WinSock.h>
#include <glGL.h>
#include "glext.h"
#include "..\Cgcg.h"
#include "..\CgcgGL.h"
#include "AntiCheat.h"
#include "VMProtectSDK.h"
#include <vector>
// -------------------------------------------------------------------------------
#include "Text.h"
// -------------------------------------------------------------------------------
#pragma comment(lib,"ws2_32.lib") //<- we need this lib for winsock
#pragma comment(lib, "Opengl32.lib")
#pragma comment(lib, "cg.lib")
#pragma comment(lib, "cgGL.lib")
#ifdef PROTECT
#pragma comment(lib, "VMProtectSDK32.lib")
#endif
// -------------------------------------------------------------------------------
#if(ANTI_CHEAT_DEBUG==TRUE)
#define exCONSOLE    1
#endif
// -------------------------------------------------------------------------------
#if(ENABLE_CONSOLE)
#define exCONSOLE    1   //Консоль
#endif
#if(ENABLE_DEBUG)
#define exDEBUG_CODE     1   //Debug Режим
#endif
// -------------------------------------------------------------------------------
#define ANTI_CTRL    1
#define OLD_HP_BAR    0
#define NEW_HP_BAR    1
#define FULL_HD       1
#define NEW_GLOW_EFFECT     1
//#define NEW_QUEST_SYSTEM  1
#define exRECONNECT    1
//#define exRAGESYSTEM     1   //Система ярости, не работает без интерфейса
#define AUTO_PARTY    1
//#define _ANTI_HACK_     1
#define _LAUNCHER_    1
#define _ITEM_PRICE_MANAGER_   1
#define HPBAR_UPDATE     1
#define AUTO_LOGIN    1
//#define ADD_NEW_EFFECT_WINGS   1
#define _NEW_MONSTER_     1
#define _PRIVATE_MODULE_  1
#define _COINS_       1
#define PRIVATE_MODULE     1
#define NEW_PARTY_BUFF     1
#define EX_SPEED_CALC     1
// -------------------------------------------------------------------------------
#define _GRAND_SYSTEM_
#define NEWWINGS6
#define PREM_TYPE
#define EXCLUSIVE_AMYLET
#define VIEW_MONSTER
#define CUSTOM_PARTY_SEARCH  TRUE
#define SECURITY_SCRIPT     FALSE
#define CUSTOM_PERONAL_EX  TRUE
// -------------------------------------------------------------------------------
#define DLL_EX_ANTI_CHEAT  TRUE
// -------------------------------------------------------------------------------
#define _SPEED_FIX_    TRUE
// -------------------------------------------------------------------------------
//#define ACHIEVEMENTS_SYSTEM
#define CUSTOM_NEWS    TRUE
#define CUSTOM_NEWS    TRUE
#define ANTI_CHEAT_PLUS     TRUE
#define CUSTOM_NPC_BUFFER  TRUE
// -------------------------------------------------------------------------------
#define SPEED_BUG_FIX     0   // <== need recode ExGames normal code
// -------------------------------------------------------------------------------
#define CONNECT_IP_ENCRYPT  0
// -------------------------------------------------------------------------------
#define JEWEL_OF_PVP     1
#define CUSTOM_SMITHY     1
#define EX_LICENSE    TRUE
#define OFFLINE_MODE     1
#define ADD_OFFMODE_PICKUP  1
// -------------------------------------------------------------------------------
#define FIX_MINIMAP    1
#define CUSTOM_MARRIAGE     1   //Свадьба
#define CUSTOM_EX_CHAT     1
#define ADD_JEWELBANK_CREATEON   1
#define CUSTOM_ADD_POINTS  1
#define ADD_ADD_POINT     1   //?
#define ADD_ADD_RESETPOINT  1
#define CUSTOM_MENU    1
#define ADD_PARTY_LEADER  1
#define CUSTOM_RESETSYSTEM  1
#define DONATE_SHOP    TRUE
// -------------------------------------------------------------------------------
#define EVENT_DUNGEON_SIEGE  1
#define CUSTOM_ITEM_RANK  TRUE
#define FIX_GUILD_CRASH     1
#define CUSTOM_SERVER_TIME  1
#define ANTI_CHEAT_PLUS_CRC  0
#define EVENT_TEAM_VS_TEAM  1
#define TEAM_VS_TEAM_INFO  1
#define CUSTOM_SOUND     1
#define CUSTOM_NEW_MAP     1
// -------------------------------------------------------------------------------
#define SYSTEM_ACHIEVEMENTS  1
#define CUSTOM_MINIMENU     1
#define CUSTOM_SERVERINFO  1
// -------------------------------------------------------------------------------
// 04.09.2017
// -------------------------------------------------------------------------------
#define CUSTOM_EX_TELEPORT  TRUE
#define CUSTOM_WINGSEFFECT  1
#define CUSTOM_AUTOCTRL     1
#define CUSTOM_WIN_SETTINGS  1
#define CUSTOM_PLAYERTITLE  0
#define FIX_AGM_REQVALLIANCE   TRUE
// -------------------------------------------------------------------------------
#define CUSTOM_NEW_MAP     1
#define CUSTOM_MAP_MANAGER  0   //Disable not work
#define CUSTOM_EXTEXT     1
#define CUSTOM_PREMIUM_SYSTEM   1
#define CUSTOM_EX_TELEPORT_EVO   TRUE
#define CUSTOM_PKCLEAR_NPC  TRUE
#define CUSTOM_ACCOUNT_SECURITY   TRUE
// -------------------------------------------------------------------------------
#define CUSTOM_REFERAL_SYSTEM   1
#define ENABLE_ITEMSETOPTION   1
#define ENABLE_CHATCOLOR  1
#define CUSTOM_POSTITEM     1
#define CUSTOM_MINIMAP     1
#define CUSTOM_AUTOHP     1
#define USER_BUFF_ICON_EX  1
#define CUSTOM_BUFF_INFO  1
#define CUSTOM_EX_QUEST_SYSTEM   1  // [-] Оконная квест система
// --------------------------------
#define RF_NEW_GLOV    0   //ОТКЛЮЧАЕТ ГРАНД ХИРО ИТЕМ
#define GLOV1       0x610   //620
#define GLOV2       0x611   //621
#define GLOV3       0x612   //620
#define GLOV4       0x613   //621
// -------------------------------------------------------------------------------
// 23.06.2018
// -------------------------------------------------------------------------------
#define CUSTOM_PICKUP_ITEM_INFO   1
#define FIX_CORD_ITEM_TEXT  1
#define CUSTOM_MINIMAP_PARTY   1
// -------------------------------------------------------------------------------
#define CUSTOM_EMULATOR_KEY  1
#define CUSTOM_MUHELPER_INV  1
#define CUSTOM_LOTTERY     0   //...
#define DEV_PACKET_ITEM     0
#define DEV_USERSHOP     0
#define DEV_INTERFASE_SEASON3   1
// itemPos
#define ADD_CTRL_KEY     1
#define FIX_MONSTER_HP     1
#define DEV_GUILDBANK     1
#define DEV_STORAGE    1
// -------------------------------------------------------------------------------
#define INTERFACE_JEWELBANK  1
// -------------------------------------------------------------------------------
#define DEV_EFFECT    0
#define DEV_EFFECT2    0
#define DEV_FPS       0
#define DEV_SKILL    0
// -------------------------------------------------------------------------------
#define CUSTOM_DINAMIC_EFFECT   1
// -------------------------------------------------------------------------------
#define DEBUG_FPS    0
// -------------------------------------------------------------------------------
// -> New Dev
#define DEV_EXMENU_V3     1
#define DEV_STATS_ADVANCE  1
#define DEV_PLAYERINFO     0
#define DEV_DAMAGE_TABLE  0
#define DEV_INTERFASE_SEASON3   0
#define DEV_INTERFACE_EX700  0
#define ADD_OFFMODE_TIMER  1
// -------------------------------------------------------------------------------
#define NEXT_INTERFACE_MANAGER   1
#define DEV_PETEX    0

/*
01. 0040514D
02. 00404EF9
03. 00404D9A
04. 005BDA89 <--
05. 0083888A
06. 00834551
07. 00815965
08. 0086099D
09. 004D9E2F
*/
[свернуть]

migi77

Цитата: RadeoN от 2019 Окт. 28, 08:41  Уже включил в клиенте, но по любому не работает


ExLicense.ppc

Спойлер
#include "stdafx.h"
#include "ExLicense.h"
#include "Monster.h"
#include "ItemSmokeEffect.h"
#include "Configs.h"
#include "PartySearch.h"
#include "PersonalShopEx.h"
#include "Smithy.h"
#include "TMemory.h"
#include "Interface.h"
#include "VisualFix.h"
#include "User.h"
#include "DonateShop.h"
#include "AddPoints.h"
#include "Console.h"
#include "WingEffect.h"
#include "MiniMenu.h"
#include "Controller.h"
#include "ChatExpanded.h"
#include "ItemSetOption.h"
#include "AccountSecurity.h"
#include "Interface.h"
#include "BuffIcon.h"
#include "ExMenuV3.h"
#include "StatsAdvance.h"
// ----------------------------------------------------------------------------------------------

#if(EX_LICENSE==TRUE)

CExLicense g_ExLicense;
// ----------------------------------------------------------------------------------------------

static DWORD InterfaceBuffer;

Naked(_00811D69)
{
_asm
{
MOV InterfaceBuffer, EDX
}

/*if(g_ExLicense.CheckUser(eExUB::Escalate))
{
if(InterfaceBuffer)
{
if(gObjUser.InSafeZone() && !gInterface.CheckWindow(Shop))
{
g_DonateShop.CG_CashSend();
}
}
}
else */if(g_ExLicense.m_ExMenuV2 || g_ExLicense.m_Achievements)
{
if(InterfaceBuffer)
{
if(gInterface.CheckWindowEx(ObjWindowsEx::exWinMiniMenu))//need add check cash shop
{
gInterface.CloseWindowEx(ObjWindowsEx::exWinMiniMenu);
}
else
{
gInterface.OpenWindowEx(ObjWindowsEx::exWinMiniMenu);
}
}
else if(gInterface.m_bCashShopOpen)
{
gInterface.m_bCashShopOpen = false;

if(g_ExLicense.CheckUser(eExUB::Artem) || g_ExLicense.CheckUser(eExUB::Artem2))
{
if(gObjUser.InSafeZone() && !gInterface.CheckWindow(Shop))
{
g_DonateShop.CG_CashSend();
}
}
else
{
_asm
{
MOV InterfaceBuffer,  0x00811D6F
JMP InterfaceBuffer
}
}
}
}
else
{
if(gObjUser.InSafeZone() && !gInterface.CheckWindow(Shop))
{
g_DonateShop.CG_CashSend();
}
}

_asm
{
MOV InterfaceBuffer,  0x00811F40
JMP InterfaceBuffer
}
}

Naked(_007D3C16)
{
/*if(g_ExLicense.CheckUser(eExUB::Escalate))
{
if(gObjUser.InSafeZone() && !gInterface.CheckWindow(Shop))
{
g_DonateShop.CG_CashSend();
}

_asm
{
MOV InterfaceBuffer,  0x007D3DF5
JMP InterfaceBuffer
}
}
else */if( g_ExLicense.m_ExMenuV2 || g_ExLicense.m_Achievements )
{
if(gInterface.CheckWindowEx(exWinMiniMenu))
{
gInterface.CloseWindowEx(exWinMiniMenu);
}
else
{
gInterface.OpenWindowEx(exWinMiniMenu);
}
}
else
{
if(gObjUser.InSafeZone() && !gInterface.CheckWindow(Shop))
{
g_DonateShop.CG_CashSend();
}
}

_asm
{
MOV InterfaceBuffer,  0x007D3DF5
JMP InterfaceBuffer
}
}

void __declspec(naked) GuildAllieReqv()
{
static DWORD __jmpTRUE = 0x0078F4AD;
static DWORD __jmpFALSE = 0x0078F42A;
static DWORD _UserGuildStatus = 0;

_asm
{
MOV _UserGuildStatus, ECX
}

if(_UserGuildStatus == 0x80 || _UserGuildStatus == 0x40)
{
_asm
{
JMP __jmpTRUE;
}
}

_asm
{
JMP __jmpFALSE;
}
}

CExLicense::CExLicense()
{
//VMBEGIN
this->Init();
//VMEND
}
// ----------------------------------------------------------------------------------------------

CExLicense::~CExLicense()
{
}
// ----------------------------------------------------------------------------------------------

void CExLicense::Init()
{
//VMBEGIN
this->Enable = true;

this->TEXTXoR[0] = 0x03;
this->TEXTXoR[1] = 0x05;
this->TEXTXoR[2] = 0x08;

this->URLXoR[0] = 0xA9;
this->URLXoR[1] = 0xB3;
this->URLXoR[2] = 0x18;

this->ActiveUser = -1;

this->m_Achievements = false;
this->m_ExMenuV2 = false;
//VMEND
}
// ----------------------------------------------------------------------------------------------

void CExLicense::Load()
{
//VMBEGIN
this->Init();
//VMEND

}
// ----------------------------------------------------------------------------------------------

void CExLicense::GCLicenseUser(PMSG_LICENSE_DATA* aRecv)
{
//VMBEGIN
this->ActiveUser = aRecv->LicenseUser;
this->user.Rage = aRecv->base.Rage;
this->user.WinQuest = aRecv->base.WinQuest;
this->user.BloodHound = aRecv->base.BloodHound;
this->user.MonsterQuest = aRecv->base.MonsterQuest;
this->user.TvTEvent = aRecv->base.TvTEvent;
this->user.GrandHero = aRecv->base.GrandHero;
this->user.PartySystem = aRecv->base.PartySystem;
this->user.Brotherhood = aRecv->base.Brotherhood;
this->user.PartySearch = aRecv->base.PartySearch;
this->user.ChatLog = aRecv->base.ChatLog;
this->user.GM_Manager = aRecv->base.GM_Manager;
this->user.PerosnalStoreEx = aRecv->base.PerosnalStoreEx;
this->user.PandoraEvent = aRecv->base.PandoraEvent;
this->user.AntiCheatPlus = aRecv->base.AntiCheatPlus;
this->user.SpotReturn = aRecv->base.SpotReturn;
this->user.ComboCustom = aRecv->base.ComboCustom;
this->user.NpcBuffer = aRecv->base.NpcBuffer;
this->user.BMQuest = aRecv->base.BMQuest;
this->user.LoraBattle = aRecv->base.LoraBattle;
this->user.Smithy = aRecv->base.Smithy;
this->user.Monster = aRecv->base.Monster;
this->user.ItemSmokeEffect = aRecv->base.ItemSmokeEffect;
this->user.GrandDinamicExp = aRecv->base.GrandDinamicExp;
this->user.PartySave = aRecv->base.PartySave;
//this->user.DisableMasterTree = aRecv->base.DisableMasterTree;
this->user.OfflineMode = aRecv->base.OfflineMode;
this->user.bAchievements = aRecv->base.bAchievements;
this->user.PremiumEx = aRecv->base.PremiumEx;
this->user.AccSecurity = aRecv->base.AccSecurity;
this->user.CraftQuestSystem = aRecv->base.CraftQuestSystem;
this->user.PickUpItemInfo = aRecv->base.PickUpItemInfo;
this->user.ReferralSystem = aRecv->base.ReferralSystem;

this->config.MaxPartyUser = aRecv->config.MaxPartyUser;
this->config.PersonalEnable = aRecv->config.PersonalEnable;
this->config.PersonalBonus = aRecv->config.PersonalBonus;
this->config.PersonalCredit = aRecv->config.PersonalCredit;

this->CustomManager();
//VMEND
}
// ----------------------------------------------------------------------------------------------

bool IsMasterClass(BYTE Class)
{
return false;
}

void CExLicense::CustomManager()
{
if(this->user.Monster)
{
gMonster.Load();
}
if(this->user.ItemSmokeEffect)
{
gItemSmokeEffect.Load();
}
if(this->user.MonsterQuest)
{
gMONSTER_QUEST_SYSTEM = true;
}
if(this->user.PartySystem)
{
gPARTY_SYSTEM = true;
}
if(this->user.PartySearch)
{
g_PartySearch.Active = true;
}
if(this->user.Smithy)
{
this->user.Smithy = true;
}
if(this->user.Rage)
{
gRAGESYSTEM = true;
}
if(this->user.WinQuest)
{
gWINQUEST = true;
}
if(this->user.PerosnalStoreEx && this->config.PersonalEnable)
{
g_PersonalShopEx.Load();
g_PersonalShopEx.iPERSONAL_BONUS = this->config.PersonalBonus;
g_PersonalShopEx.iPERSONAL_CREDIT = this->config.PersonalCredit;
}

g_Smithy.License = this->user.Smithy;

this->m_Achievements = this->user.bAchievements;

if(this->user.AccSecurity)
{
g_AccountSecurity.m_bEnable = true;
}

//Master Skill Button Disable
if(this->user.DisableMasterTree)
{
SetRange((LPVOID)0x00784B77, 5, ASM::NOP);
SetOp((LPVOID)0x00784F79, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0  //Master Button Disable
SetOp((LPVOID)0x007D3916, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0  //Master A Key Disable
}

g_MaxPartyMember = this->config.MaxPartyUser;

if( g_ExLicense.CheckUser(eExUB::SILVER1) ||
g_ExLicense.CheckUser(eExUB::SILVER2) )
{
gVisualFix.GCVisualInit();
//SetRange((LPVOID)0x007D3C1C, 5, ASM::NOP);
//SetOp((LPVOID)0x007D3C1C, _007D3C16, ASM::JMP);
////SetRange((LPVOID)0x00811D6F, 5, ASM::NOP);
////SetOp((LPVOID)0x00811D6F, _00811D69, ASM::JMP);
//SetRange((LPVOID)0x00811D69, 6, ASM::NOP);
//SetOp((LPVOID)0x00811D69, _00811D69, ASM::JMP);
SetRange((LPVOID)0x00811D89, 7, ASM::NOP);
SetRange((LPVOID)0x00811EC5, 5, ASM::NOP);//
g_AddPoints.Load();

gChatExpanded.LoadChatEx();
}

#if(CUSTOM_ADD_POINTS==TRUE)
if( g_ExLicense.CheckUser(eExUB::Gredy) ||
g_ExLicense.CheckUser(eExUB::Gredy2) ||
g_ExLicense.CheckUser(eExUB::GredyLocal) )
{
g_AddPoints.Load();
//SetRange((LPVOID)0x005528DE, 23, ASM::NOP);   //dark lord horse spotikaeca pt damaga reflecta
}
#endif
if(g_ExLicense.CheckUser(eExUB::Stone))
{
SetRange((LPVOID)0x005528D7, 2, ASM::NOP);   //ne kto ne spotikaeca ot damaga i reflecta

//Credit Shop
SetRange((LPVOID)0x007D3C1C, 5, ASM::NOP);
SetOp((LPVOID)0x007D3C1C, _007D3C16, ASM::JMP);
SetRange((LPVOID)0x00811D6F, 5, ASM::NOP);
SetOp((LPVOID)0x00811D6F, _00811D69, ASM::JMP);
}
else if(g_ExLicense.CheckUser(eExUB::Stone) || g_ExLicense.CheckUser(eExUB::Almdar))
{
SetRange((LPVOID)0x005528D7, 2, ASM::NOP);   //ne sko ne spotikaeca ot damaga i reflecta
}
else if(g_ExLicense.CheckUser(eExUB::Artem) || g_ExLicense.CheckUser(eExUB::Artem2))
{
//Credit Shop
SetRange((LPVOID)0x007D3C1C, 5, ASM::NOP);
SetOp((LPVOID)0x007D3C1C, _007D3C16, ASM::JMP);
SetRange((LPVOID)0x00811D6F, 5, ASM::NOP);
SetOp((LPVOID)0x00811D6F, _00811D69, ASM::JMP);

g_AddPoints.Load();

#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
}
else if(g_ExLicense.CheckUser(eExUB::MU2Play))
{
g_AddPoints.Load();
}
else if(g_ExLicense.CheckUser(eExUB::EpicMU))
{
//-> Siege minimap fix
SetRange((PVOID)0x006505FB, 4, ASM::NOP);
//-> Fix BC Master Disable
SetByte((LPVOID)(0x008742AC+3), 0x07);
SetByte((LPVOID)(0x00874C04+6), 0x07);
SetRange((LPVOID)(0x00874EBF), 5, ASM::NOP);
//-> Fix DS Master Disable
SetByte((LPVOID)(0x00877D8C+3), 0x06);
SetByte((LPVOID)(0x00878754+6), 0x06);
SetRange((LPVOID)(0x00878A0F), 5, ASM::NOP);
SetRange((LPVOID)0x005F7AEA, 27, ASM::NOP);  //Fix Item Pol
SetByte((LPVOID)(0x005CD192), 0xEB);     //Fix Inventory Pos
SetRange((LPVOID)0x005528D7, 2, ASM::NOP);  //ne sko ne spotikaeca ot damaga i reflecta

this->m_ExMenuV2 = true;

g_AddPoints.Load();
}

#if(THINNAKORN_MAC)
g_AddPoints.Load();

SetByte((LPVOID)(0x00405B7A+2), 0x91);   //Character delete 400 level
#endif

if( g_ExLicense.CheckUser(eExUB::SILVER1) ||
g_ExLicense.CheckUser(eExUB::SILVER2) ||
THINNAKORN_MAC == 1)
{
this->m_Achievements = true;
}

if( g_ExLicense.CheckUser(eExUB::DavitRazmadze) || g_ExLicense.CheckUser(eExUB::DavitRazmadze2) || g_ExLicense.CheckUser(eExUB::DavitRazmadze3) ||
g_ExLicense.CheckUser(eExUB::MedoniAndrei))
{
this->m_ExMenuV2 = true;
}

if(g_ExLicense.CheckUser(eExUB::Escalate))
{
g_AddPoints.Load();

//SetRange((LPVOID)0x007D3C1C, 5, ASM::NOP);
//SetOp((LPVOID)0x007D3C1C, _007D3C16, ASM::JMP);
//SetRange((LPVOID)0x00811D69, 6, ASM::NOP);
//SetOp((LPVOID)0x00811D69, _00811D69, ASM::JMP);
}

if(g_ExLicense.CheckUser(eExUB::eternalmu))
{
g_AddPoints.Load();
}

#if(FIX_AGM_REQVALLIANCE==TRUE)
if(g_ExLicense.CheckUser(eExUB::Gredy)  ||
g_ExLicense.CheckUser(eExUB::Gredy2)  ||
g_ExLicense.CheckUser(eExUB::GredyLocal) ||
g_ExLicense.CheckUser(eExUB::mu4you)  ||
g_ExLicense.CheckUser(eExUB::NSGames))
{
SetOp((LPVOID)0x0078F41E, (LPVOID)GuildAllieReqv, ASM::JMP);   //  CALL 005878E0
SetRange((LPVOID)0x007E519C, 6, ASM::NOP);   // -> Disable Check ItemAddOption Wings
//SetRange((LPVOID)0x006D80F0, 2, ASM::NOP);   // -> Fix File Scream Target Block
//SetByte((LPVOID)(0x006F0B06 + 2), 0xE0);   // -> Fix File Scream Target Block
//SetByte((LPVOID)(0x006F0B06 + 3), 0x7B);   // -> Fix File Scream Target Block
SetByte((LPVOID)(0x006F0B51 + 0), 0xE9);
SetByte((LPVOID)(0x006F0B51 + 1), 0xB4);
SetByte((LPVOID)(0x006F0B51 + 2), 0x02);
SetByte((LPVOID)(0x006F0B51 + 3), 0x00);
SetByte((LPVOID)(0x006F0B51 + 4), 0x00);

gChatExpanded.LoadChatEx();

SetByte((LPVOID)0x005C8B42, 0xEB);   //Rena trade
SetByte((LPVOID)0x005C8881, 0xEB);   //Rena store

//gInterface.m_ActiveAutoHP = true;

#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
}
#endif

if(g_ExLicense.CheckUser(eExUB::RevoMU))
{
this->m_ExMenuV2 = true;
g_AddPoints.Load();
SetRange((LPVOID)0x005528D7, 2, ASM::NOP);   //ne kto ne spotikaeca ot damaga i reflecta
SetRange((PVOID)0x006505FB, 4, ASM::NOP);   //-> Siege minimap fix

gChatExpanded.LoadChatEx();
}
#if(ENABLE_CHATCOLOR)
//gChatExpanded.LoadChatEx();
#endif
// ----
#if(ENABLE_ITEMSETOPTION)
if( g_ExLicense.CheckUser(eExUB::Gredy) ||
g_ExLicense.CheckUser(eExUB::Gredy2) ||
g_ExLicense.CheckUser(eExUB::GredyLocal) ||
g_ExLicense.CheckUser(eExUB::masonX) || g_ExLicense.CheckUser(eExUB::masonX2)||
g_ExLicense.CheckUser(eExUB::ulasevich) || g_ExLicense.CheckUser(eExUB::ulasevich2) ||
g_ExLicense.CheckUser(eExUB::Escalate) || g_ExLicense.CheckUser(eExUB::mu4you) ||
g_ExLicense.CheckUser(eExUB::eternalmu) || g_ExLicense.CheckUser(eExUB::NSGames))
{
g_ItemSetOption.Load();
}
#endif
// ----
if(g_ExLicense.CheckUser(eExUB::masonX) || g_ExLicense.CheckUser(eExUB::masonX2))
{
g_AddPoints.Load();
}
// ----
if(g_ExLicense.CheckUser(eExUB::GloryMU))
{
//this->m_ExMenuV2 = true;

//SetRange((LPVOID)0x005F7AEA, 27, ASM::NOP);  //Fix Item Pol
//SetByte((LPVOID)(0x005CD192), 0xEB);    //Fix Inventory Pos

SetRange((LPVOID)0x005528D7, 2, ASM::NOP);  //ne kto ne spotikaeca ot damaga i reflecta
SetRange((PVOID)0x006505FB, 4, ASM::NOP);  //-> Siege minimap fix

g_AddPoints.Load();
gChatExpanded.LoadChatEx();
g_ItemSetOption.Load();
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif

//this->DisableMasterEvent();
}
// ----
if(g_ExLicense.CheckUser(eExUB::ArcMu))
{
g_AddPoints.Load();
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
}

if(g_ExLicense.CheckUser(eExUB::MedoniAndrei))
{
g_AddPoints.Load();
}

if(g_ExLicense.CheckUser(eExUB::mu4you))
{
g_AddPoints.Load();
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
gChatExpanded.LoadChatEx();

SetRange((LPVOID)0x0095DE51, 2, ASM::NOP);   //MUHelper Inventory 1
SetByte((LPVOID)(0x0095CE90), 0xEB);  //MUHelper Inventory 2

SetRange((PVOID)0x006505FB, 4, ASM::NOP);  //-> Siege minimap fix

gVisualFix.GCVisualInit();
}

if(g_ExLicense.CheckUser(eExUB::eternalmu))
{
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
#if(DEV_EXMENU_V3)
g_ExMenuV3.Load(EXMENU_NUMBER::eVERSION_ET);
#endif
}

if(g_ExLicense.CheckUser(eExUB::WarBorn))
{
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif

}

if(g_ExLicense.CheckUser(eExUB::NSGames))
{
g_AddPoints.Load();
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
gChatExpanded.LoadChatEx();

SetRange((LPVOID)0x0095DE51, 2, ASM::NOP);   //MUHelper Inventory 1
SetByte((LPVOID)(0x0095CE90), 0xEB);  //MUHelper Inventory 2

SetRange((PVOID)0x006505FB, 4, ASM::NOP);  //-> Siege minimap fix

gVisualFix.GCVisualInit();

#if(DEV_EXMENU_V3)
g_ExMenuV3.Load(EXMENU_NUMBER::eVERSION_NS);
#endif

#if(DEV_STATS_ADVANCE)
g_StatsAdvance.Load();
#endif

//char szSerial[17];
//memset(szSerial, 0, sizeof(szSerial));
//sprintf(szSerial, "01332jcEX48mxL3b");
//WriteMemory((PDWORD)SERIAL_MAIN, szSerial, sizeof(szSerial));
}

#if(CUSTOM_POSTITEM)
gInterface.LoadItemPost();
#endif

#if(LICENSE_MUEVIL)
SetRange((LPVOID)0x0095DE51, 2, ASM::NOP);   //MUHelper Inventory 1
SetByte((LPVOID)(0x0095CE90), 0xEB);  //MUHelper Inventory 2
#endif

if( g_ExLicense.m_ExMenuV2 || g_ExLicense.m_Achievements )
{
#if(DEV_EXMENU_V3)
if(!g_ExMenuV3.m_Enable)
{
SetRange((LPVOID)0x007D3C1C, 5, ASM::NOP);
SetOp((LPVOID)0x007D3C1C, _007D3C16, ASM::JMP);
SetRange((LPVOID)0x00811D69, 6, ASM::NOP);
SetOp((LPVOID)0x00811D69, _00811D69, ASM::JMP);
}
#endif
}

// ------------------------------------
if(g_ExLicense.CheckUser(eExUB::Local))
{
g_AddPoints.Load();
#if(USER_BUFF_ICON_EX==TRUE)
g_BuffIcon.Load();
#endif
gChatExpanded.LoadChatEx();
SetRange((LPVOID)0x0095DE51, 2, ASM::NOP);   //MUHelper Inventory 1
SetByte((LPVOID)(0x0095CE90), 0xEB);  //MUHelper Inventory 2
SetRange((PVOID)0x006505FB, 4, ASM::NOP);   //-> Siege minimap fix
gVisualFix.GCVisualInit();
#if(DEV_STATS_ADVANCE)
g_StatsAdvance.Load();
#endif
}
// ------------------------------------
}
// ----------------------------------------------------------------------------------------------

bool CExLicense::CheckUser(int NeedUser)
{
//VMBEGIN
if(this->ActiveUser == NeedUser)
{
return true;
}
return false;
//VMEND
}
// ----------------------------------------------------------------------------------------------

char* CExLicense::GetDecText(char* EncodeChar)
{
//VMBEGIN
int len = strlen(EncodeChar);
char* Line = new char[len+1];
for(int i = 0; i < len; i++)
{
Line = char(EncodeChar ^ this->TEXTXoR[i % 3]);
}
Line[len] = 0;
return Line;
//VMEND
}
// ----------------------------------------------------------------------------------------------

void CExLicense::GCAttackEnable(PMSG_GC_ATTACK* lpMsg)
{

}

void CExLicense::GCAttackDisable()
{

}

void CExLicense::GC_UserConfigRecv(PMSG_USERCONFIG * lpMsg)
{
gInterface.m_ActiveAutoHP = false;
gInterface.m_AutoHP = false;

memcpy(&g_ExLicense.m_EvoConfig, &lpMsg->EvoConfig, sizeof(g_ExLicense.m_EvoConfig));

if(g_ExLicense.CheckUser(eExUB::Gredy) || g_ExLicense.CheckUser(eExUB::Gredy2) || g_ExLicense.CheckUser(eExUB::GredyLocal))
{
gInterface.m_ActiveAutoHP = g_ExLicense.m_EvoConfig.HPAutoClicker;
}
}

void CExLicense::DisableMasterEvent()
{
//-> Fix BC Master Disable
SetByte((LPVOID)(0x008742AC+3), 0x07);
SetByte((LPVOID)(0x00874C04+6), 0x07);
SetRange((LPVOID)(0x00874EBF), 5, ASM::NOP);
//-> Fix DS Master Disable
SetByte((LPVOID)(0x00877D8C+3), 0x06);
SetByte((LPVOID)(0x00878754+6), 0x06);
SetRange((LPVOID)(0x00878A0F), 5, ASM::NOP);

SetOp((LPVOID)0x0063DDF2, (LPVOID)IsMasterClass, ASM::CALL);//
SetOp((LPVOID)0x0063DF89, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0063E5F2, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0063EA4C, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0064A79A, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0064A85F, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0064AB3D, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0064AC02, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0064CA0C, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0

SetOp((LPVOID)0x0064CDE9, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0064CF5F, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00651674, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00656E03, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0077EFD0, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0077F9A9, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0077FBC8, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00782C5A, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00783032, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0

SetOp((LPVOID)0x00784F79, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0  //Master Button Disable
SetOp((LPVOID)0x007D3916, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0  //Master A Key Disable
SetOp((LPVOID)0x007E4B19, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x007E4B8F, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0080F8D9, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0

SetOp((LPVOID)0x00810019, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x008102E9, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x008105CB, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0081064B, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00869213, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0

SetOp((LPVOID)0x0087455B, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0087862E, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00878661, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0095DFAF, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0095E090, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x0095E1F0, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x00968450, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x009684A6, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
SetOp((LPVOID)0x009684EF, (LPVOID)IsMasterClass, ASM::CALL);//  CALL 005878E0
}

#endif
[свернуть]


stdafx.h

Спойлер
#pragma once
// -------------------------------------------------------------------------------
#define ENABLE_PROTECT     0   //log add post item
#define ENABLE_CONSOLE     0
#define ENABLE_DEBUG     0
#define ENABLE_AUTOLOGIN  0
#define ENABLE_FILEMEMORY  0
#define ENABLE_TEST    0
#define ENABLE_ENCODER     1
#define ENABLE_START_MU     0
#define ENABLE_DEV    0
#define ENABLE_CHECK     0
// -------------------------------------------------------------------------------
#define ENABLE_EXPROTECTOR  0
#define ENABLE_RAM_MIN     1
// -------------------------------------------------------------------------------
#define ENABLE_IP_ADDRESS  0
#define TEXT_IP_ADDRESS  "172.20.10.7"
//#define TEXT_IP_ADDRESS     "193.124.117.113"
//#define TEXT_IP_ADDRESS  "193.124.117.97"
// -------------------------------------------------------------------------------
#define TEST_WIN10    0
// -------------------------------------------------------------------------------
#define INTERFACE_LOGIN_IMG  0   //private
#define THINNAKORN_MAC     0   //private
#define BASSREFLEXIVE     0   //private
#define EPICMU       0
#define LANG_CHINA    0
#define ENABLE_CHANGE     0   //need 1
#define LICENSE_MUEVIL     0
//#define _SERIAL_    "G3qF7QqTS21ilL7b"
// -------------------------------------------------------------------------------
#define WINDOW_TITLE     "MU Online"
// -------------------------------------------------------------------------------
#if(ENABLE_PROTECT)
#define PROTECT
#endif
// -------------------------------------------------------------------------------
#include <Windows.h>
#include <WindowsX.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <time.h>
#include <stdarg.h>
#include <process.h>
#include <locale.h>
#include <WinBase.h>
#include <tlhelp32.h>
#include <WinSock.h>
#include <glGL.h>
#include "glext.h"
#include "..\Cgcg.h"
#include "..\CgcgGL.h"
#include "AntiCheat.h"
#include "VMProtectSDK.h"
#include <vector>
// -------------------------------------------------------------------------------
#include "Text.h"
// -------------------------------------------------------------------------------
#pragma comment(lib,"ws2_32.lib") //<- we need this lib for winsock
#pragma comment(lib, "Opengl32.lib")
#pragma comment(lib, "cg.lib")
#pragma comment(lib, "cgGL.lib")
#ifdef PROTECT
#pragma comment(lib, "VMProtectSDK32.lib")
#endif
// -------------------------------------------------------------------------------
#if(ANTI_CHEAT_DEBUG==TRUE)
#define exCONSOLE    1
#endif
// -------------------------------------------------------------------------------
#if(ENABLE_CONSOLE)
#define exCONSOLE    1   //Консоль
#endif
#if(ENABLE_DEBUG)
#define exDEBUG_CODE     1   //Debug Режим
#endif
// -------------------------------------------------------------------------------
#define ANTI_CTRL    1
#define OLD_HP_BAR    0
#define NEW_HP_BAR    1
#define FULL_HD       1
#define NEW_GLOW_EFFECT     1
//#define NEW_QUEST_SYSTEM  1
#define exRECONNECT    1
//#define exRAGESYSTEM     1   //Система ярости, не работает без интерфейса
#define AUTO_PARTY    1
//#define _ANTI_HACK_     1
#define _LAUNCHER_    1
#define _ITEM_PRICE_MANAGER_   1
#define HPBAR_UPDATE     1
#define AUTO_LOGIN    1
//#define ADD_NEW_EFFECT_WINGS   1
#define _NEW_MONSTER_     1
#define _PRIVATE_MODULE_  1
#define _COINS_       1
#define PRIVATE_MODULE     1
#define NEW_PARTY_BUFF     1
#define EX_SPEED_CALC     1
// -------------------------------------------------------------------------------
#define _GRAND_SYSTEM_
#define NEWWINGS6
#define PREM_TYPE
#define EXCLUSIVE_AMYLET
#define VIEW_MONSTER
#define CUSTOM_PARTY_SEARCH  TRUE
#define SECURITY_SCRIPT     FALSE
#define CUSTOM_PERONAL_EX  TRUE
// -------------------------------------------------------------------------------
#define DLL_EX_ANTI_CHEAT  TRUE
// -------------------------------------------------------------------------------
#define _SPEED_FIX_    TRUE
// -------------------------------------------------------------------------------
//#define ACHIEVEMENTS_SYSTEM
#define CUSTOM_NEWS    TRUE
#define CUSTOM_NEWS    TRUE
#define ANTI_CHEAT_PLUS     TRUE
#define CUSTOM_NPC_BUFFER  TRUE
// -------------------------------------------------------------------------------
#define SPEED_BUG_FIX     0   // <== need recode ExGames normal code
// -------------------------------------------------------------------------------
#define CONNECT_IP_ENCRYPT  0
// -------------------------------------------------------------------------------
#define JEWEL_OF_PVP     1
#define CUSTOM_SMITHY     1
#define EX_LICENSE    TRUE
#define OFFLINE_MODE     1
#define ADD_OFFMODE_PICKUP  1
// -------------------------------------------------------------------------------
#define FIX_MINIMAP    1
#define CUSTOM_MARRIAGE     1   //Свадьба
#define CUSTOM_EX_CHAT     1
#define ADD_JEWELBANK_CREATEON   1
#define CUSTOM_ADD_POINTS  1
#define ADD_ADD_POINT     1   //?
#define ADD_ADD_RESETPOINT  1
#define CUSTOM_MENU    1
#define ADD_PARTY_LEADER  1
#define CUSTOM_RESETSYSTEM  1
#define DONATE_SHOP    TRUE
// -------------------------------------------------------------------------------
#define EVENT_DUNGEON_SIEGE  1
#define CUSTOM_ITEM_RANK  TRUE
#define FIX_GUILD_CRASH     1
#define CUSTOM_SERVER_TIME  1
#define ANTI_CHEAT_PLUS_CRC  0
#define EVENT_TEAM_VS_TEAM  1
#define TEAM_VS_TEAM_INFO  1
#define CUSTOM_SOUND     1
#define CUSTOM_NEW_MAP     1
// -------------------------------------------------------------------------------
#define SYSTEM_ACHIEVEMENTS  1
#define CUSTOM_MINIMENU     1
#define CUSTOM_SERVERINFO  1
// -------------------------------------------------------------------------------
// 04.09.2017
// -------------------------------------------------------------------------------
#define CUSTOM_EX_TELEPORT  TRUE
#define CUSTOM_WINGSEFFECT  1
#define CUSTOM_AUTOCTRL     1
#define CUSTOM_WIN_SETTINGS  1
#define CUSTOM_PLAYERTITLE  0
#define FIX_AGM_REQVALLIANCE   TRUE
// -------------------------------------------------------------------------------
#define CUSTOM_NEW_MAP     1
#define CUSTOM_MAP_MANAGER  0   //Disable not work
#define CUSTOM_EXTEXT     1
#define CUSTOM_PREMIUM_SYSTEM   1
#define CUSTOM_EX_TELEPORT_EVO   TRUE
#define CUSTOM_PKCLEAR_NPC  TRUE
#define CUSTOM_ACCOUNT_SECURITY   TRUE
// -------------------------------------------------------------------------------
#define CUSTOM_REFERAL_SYSTEM   1
#define ENABLE_ITEMSETOPTION   1
#define ENABLE_CHATCOLOR  1
#define CUSTOM_POSTITEM     1
#define CUSTOM_MINIMAP     1
#define CUSTOM_AUTOHP     1
#define USER_BUFF_ICON_EX  1
#define CUSTOM_BUFF_INFO  1
#define CUSTOM_EX_QUEST_SYSTEM   1  // [-] Оконная квест система
// --------------------------------
#define RF_NEW_GLOV    0   //ОТКЛЮЧАЕТ ГРАНД ХИРО ИТЕМ
#define GLOV1       0x610   //620
#define GLOV2       0x611   //621
#define GLOV3       0x612   //620
#define GLOV4       0x613   //621
// -------------------------------------------------------------------------------
// 23.06.2018
// -------------------------------------------------------------------------------
#define CUSTOM_PICKUP_ITEM_INFO   1
#define FIX_CORD_ITEM_TEXT  1
#define CUSTOM_MINIMAP_PARTY   1
// -------------------------------------------------------------------------------
#define CUSTOM_EMULATOR_KEY  1
#define CUSTOM_MUHELPER_INV  1
#define CUSTOM_LOTTERY     0   //...
#define DEV_PACKET_ITEM     0
#define DEV_USERSHOP     0
#define DEV_INTERFASE_SEASON3   1
// itemPos
#define ADD_CTRL_KEY     1
#define FIX_MONSTER_HP     1
#define DEV_GUILDBANK     1
#define DEV_STORAGE    1
// -------------------------------------------------------------------------------
#define INTERFACE_JEWELBANK  1
// -------------------------------------------------------------------------------
#define DEV_EFFECT    0
#define DEV_EFFECT2    0
#define DEV_FPS       0
#define DEV_SKILL    0
// -------------------------------------------------------------------------------
#define CUSTOM_DINAMIC_EFFECT   1
// -------------------------------------------------------------------------------
#define DEBUG_FPS    0
// -------------------------------------------------------------------------------
// -> New Dev
#define DEV_EXMENU_V3     1
#define DEV_STATS_ADVANCE  1
#define DEV_PLAYERINFO     0
#define DEV_DAMAGE_TABLE  0
#define DEV_INTERFASE_SEASON3   0
#define DEV_INTERFACE_EX700  0
#define ADD_OFFMODE_TIMER  1
// -------------------------------------------------------------------------------
#define NEXT_INTERFACE_MANAGER   1
#define DEV_PETEX    0

/*
01. 0040514D
02. 00404EF9
03. 00404D9A
04. 005BDA89 <--
05. 0083888A
06. 00834551
07. 00815965
08. 0086099D
09. 004D9E2F
*/
[свернуть]


дай свой если еще не сделал скайп вечером буду дома помогу

baryga30

Ребят как все же добавить новые карты? В сурсах клиента есть файл NewMap.cpp, объясните как туда правильно прописать чтоб подгружало новые карты.


Спойлер
#include "stdafx.h"
#include "Map.h"
#include "Console.h"
#include "TMemory.h"
#include "Import.h"

#if(CUSTOM_NEW_MAP)

CMap g_Map;

void CMap::Load()
{
SetOp((LPVOID)0x0047FD98, (LPVOID)this->NewMap, ASM::JMP);
SetOp((LPVOID)0x0047FC85, (LPVOID)this->NewMapWellcome, ASM::JMP);
SetOp((LPVOID)0x005D2C13, (LPVOID)this->NewMapName, ASM::JMP);
//SetOp((LPVOID)0x005EE908, (LPVOID)this->NewMapEffect, ASM::CALL);
}

__declspec(naked)void CMap::NewMap()
{
static int MapNum = 0;
static int NewMapJmp = 0x0047FDA1;
static int OldMapJmp = 0x0047FDB3;

_asm
{
MOV EAX, DWORD PTR DS:[0x0E61E18]
MOV MapNum, EAX
}

if(MapNum == 40 || MapNum == 82)//83
{
_asm
{
JMP NewMapJmp
}
}

_asm
{
JMP OldMapJmp
}
}

__declspec(naked)void CMap::NewMapWellcome()
{
static int szMapKarutan = 0x00D25498;
static int Call_0047C220 = 0x0047C220;
static int Call2_00480160 = 0x00480160;
static int Call3_00409AF0 = 0x00409AF0;
static int Call4_00409AD0 = 0x00409AD0;

_asm
{
MOV DWORD PTR SS:[EBP-0x848],0x51
PUSH szMapKarutan                     ; ASCII "MapName_Karutan.tga"
LEA EAX,[EBP-0x28]
PUSH EAX
LEA ECX,[EBP-0x864]
PUSH ECX
CALL Call_0047C220
ADD ESP,0x0C
MOV DWORD PTR SS:[EBP-0x0A74],EAX
MOV EDX,DWORD PTR SS:[EBP-0x0A74]
MOV DWORD PTR SS:[EBP-0x0A78],EDX
MOV BYTE PTR SS:[EBP-0x4],0x43
MOV EAX,DWORD PTR SS:[EBP-0x0A78]
PUSH EAX
LEA ECX,[EBP-0x848]
PUSH ECX
MOV ECX,DWORD PTR SS:[EBP-0x868]
ADD ECX,4
CALL Call2_00480160
MOV ECX,EAX
CALL Call3_00409AF0

MOV DWORD PTR SS:[EBP-0x848], 82
PUSH szMapKarutan                     ; ASCII "MapName_Karutan.tga"
LEA EAX,[EBP-0x28]
PUSH EAX
LEA ECX,[EBP-0x864]
PUSH ECX
CALL Call_0047C220
ADD ESP,0x0C
MOV DWORD PTR SS:[EBP-0x0A74],EAX
MOV EDX,DWORD PTR SS:[EBP-0x0A74]
MOV DWORD PTR SS:[EBP-0x0A78],EDX
MOV BYTE PTR SS:[EBP-0x4],43
MOV EAX,DWORD PTR SS:[EBP-0x0A78]
PUSH EAX
LEA ECX,[EBP-0x848]
PUSH ECX
MOV ECX,DWORD PTR SS:[EBP-0x868]
ADD ECX,0x4
CALL Call2_00480160
MOV ECX,EAX
CALL Call3_00409AF0

MOV BYTE PTR SS:[EBP-0x4],0x2
LEA ECX,[EBP-0x864]
CALL Call4_00409AD0
MOV DWORD PTR SS:[EBP-0x4],-1
LEA ECX,[EBP-0x28]
CALL Call4_00409AD0
MOV ECX,DWORD PTR SS:[EBP-0x0C]
MOV DWORD PTR FS:[0x0],ECX
MOV ESP,EBP
POP EBP
RETN
}
}

char* CMap::GetNewMapName(int MapNumber)
{
if(MapNumber == 0x52)
{
return "Battle Guard";
}

return "No Name";
}

__declspec(naked)void CMap::NewMapName()
{
static int MapName = 0;
static int TextLine = 0;
static int Call_00402320 = 0x00402320;
static int Jmp_005D3027 = 0x005D3027;
static int Jne_005D2C32 = 0x005D2C32;

_asm
{
MOV ECX, DWORD PTR SS:[EBP+0x08]
MOV MapName, ECX
}

if(MapName == 0x22)
{
TextLine = 0x73B;
}
else if(MapName == 0x52)
{
TextLine = 3160;
}
else
{
_asm
{
JMP Jne_005D2C32
}
}

_asm
{
PUSH TextLine
MOV ECX, 0x08128ADC
CALL Call_00402320
JMP Jmp_005D3027
}
}

void CMap::NewMapEffect(int a1)
{
sub_5EC0E0(a1);

if(pMapNumber == 82)
{
int v2 = *(DWORD *)(a1 + 48);
int v3 = *(DWORD *)(a1 + 60);

//gConsole.Output(cGREEN, "%d %d", v2, v3);

switch(v2)
{
case 90:

break;
case 92:
{
int v38, v34;
float v35 = 0.0;
float v36 = 0.0;
float v37 = 0.0;
sub_545030((float *)a1, (int)&*(DWORD*)0x7BC08D0, (int)&v35, (int)&v38, 0);
sub_545030((float *)a1, (int)&*(DWORD*)0x7BC0900, (int)&v35, (int)&v34, 0);
if ( (signed int)rand() % 30 == 1 )
sub_72D060(32134, (int)&v38, (int)&v34, a1 + 264, 18, 0, 50.0, -1, 0, 0, -1, 0, -1);
}
break;
case 93:

break;
case 96:

break;
case 98:
if (!(rand() % 3))
{
int v42;
float v31 = 0.0;
float v32 = 0.0;
float v33 = 0.0;
sub_545030((float *)a1, (int)&*(DWORD*)0x7BC08D0, (int)&v31, (int)&v42, 0);
float v45 = 0.5;
float v46 = 0.60000002;
pPlayDynamicEffect(32301, (DWORD *)(a1 + 252), (int)(a1 + 264), &v45, 2, 1.0, 0);
}
break;
case 101:

break;
case 102:

break;
case 103:

break;
}

float v62 = 0.1;

//if(v2 == 92)
//   for (int m = 0; m < 20; ++m )
//       pPlayDynamicEffect(32370, (DWORD *)(a1 + 252), (int )(a1 + 264), &v62, 1, *(float *)(a1 + 96), a1);   //32146

/*if(v2 == 101)
for (int m = 0; m < 20; ++m )
pPlayDynamicEffect(0x7D02, (DWORD *)(a1 + 252), (int )(a1 + 264), &v62, 1, *(float *)(a1 + 96), a1);
if(v2 == 90)
for (int m = 0; m < 20; ++m )
pPlayDynamicEffect(32263, (DWORD *)(a1 + 252), (int )(a1 + 264), &v62, 1, *(float *)(a1 + 96), a1);*/
/*switch(v2)
{
case 92:
//*(float *)&v15 = 1.0;
float v16 = 0.40000001;
float v17 = 0.40000001;
//  float v8 = *(float*)0x5EF5A1C * 0.0005000000237487257;
// sub_4DB0C0(v8);
//float v9 = (v8 + 1.0) * 0.5;
// if ( v9 > 0.8999999761581421 )
{
for (int i = 0; i < 2; ++i )
sub_6D8F20(32370, (DWORD *)(a1 + 252), (int)(a1 + 264), 1.0, 0, 0, -1, 0, (signed int)*(float *)(a1 + 96), 0, 0.0, -1);
}
break;
}*/
}



}


#endif

[свернуть]

DEATHSIDE

#90
Кто может  собрать до кучи эти файлики что бы все работало и тд.
Готов оплатит работу.

k2proud

Цитата: DEATHSIDE от 2019 Дек. 30, 14:23  Кто может  собрать до кучи эти файлики что бы все работало и тд.
Готов оплатит работу.

также интерсеует, ЛС

LetsToPlay

Цитата: k2proud от 2020 Фев. 19, 19:00  также интерсеует, ЛС
Это г*вно попробуй собери до кучи.

Wendigo

Цитата: LetsToPlay от 2020 Фев. 20, 02:22  Это г*вно попробуй собери до кучи.
На самом деле там собирать нечего )

k2proud

Цитата: Wendigo от 2020 Фев. 20, 03:54  На самом деле там собирать нечего )

Сделай релиз если там все там просто в формате сервер/клиент. Или напиши ЛС договоримся за плату.

Wendigo

#95
Цитата: k2proud от 2020 Фев. 20, 11:56  Сделай релиз если там все там просто в формате сервер/клиент. Или напиши ЛС договоримся за плату.
У меня по мимо этого своих дел хватает,вам дали ссылки на все файлы.

Update (Pyke)
- Custom Pets 99%
- ItemPost Items Image
- Interface Menu New
- New Maps Support
- Offline Attack Auto HP Potions Use
- Offline Trade Fix
- All Customs are Enabled
- Gens, MasterSkillTree Enabled
- MHP (ProtectServer)
- Reorganized Client Files
And some more.

Вот ссылка на все сырки Тык
Собранный сервер Тык
Полный клиент Тык

Вам осталось только поменять лицуху в исходниках,и настроить IP/SQL проблем я думаю это вам не составит.

Если некуда девать деньги ,можете скинуть сюда Yandex : 410015855658439

LetsToPlay

Цитата: Wendigo от 2020 Фев. 20, 02:54  На самом деле там собирать нечего )
Особо не вникал, посмотрел на говнокод, стошнило, закрыл.
Из этого и сделал вывод что в этом говне лучше не рыться)

Wendigo

Цитата: LetsToPlay от 2020 Фев. 20, 18:31  Особо не вникал, посмотрел на говнокод, стошнило, закрыл.
Из этого и сделал вывод что в этом говне лучше не рыться)
Ну код у каждого свой ,кто как умеет так сказать ) , а так на запчасти файлы пойдут,есть что вырезать .

Profesor08

Цитата: LetsToPlay от 2020 Фев. 20, 14:31  Особо не вникал, посмотрел на говнокод, стошнило, закрыл.
Из этого и сделал вывод что в этом говне лучше не рыться)
Засвети правильный код.

Odisey2020

У кого-нибудь есть смещение для удаления BattleZone?

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

Сообщений: 0
Просмотров: 484

Сообщений: 5
Просмотров: 3091

Сообщений: 18
Просмотров: 6354