good job dude
This is a discussion on Decompiled GameServer 1.00.90 Files within the MU Development forums, part of the MU Releases category; Hey Guys, it is with great pleasure to announce and release a "decompiled" version of GameServer 1.00.90 JPN. Since May ...
Hey Guys, it is with great pleasure to announce and release a "decompiled" version of GameServer 1.00.90 JPN.
Since May 2011 i offered Crazzy (Russian guy) my help to make this project get finished since i also finished
GameServer 1.00.77 JPN, and all went very well. I will be releasing GS_N and GS_CS without any "cracks" with
full .map file only cuz PDB is very helpful for decompilation which I don't want to happen for now :)
PS. All the functions names are "emulated" because we don't have any PDB :(. The most interesting thing is that
webzen fixed all bugs since all past gameservers, formulas changed, BuffEffect changed, MixSystem changed again 3 times,
etc. Also my GS_CS has SAME OFFSETS until castledeep code o_O but GS_N don't have same offsets :( I think it's because
of the bad header or supposed virus on the original one... Check this link: Original GameServer 1.00.90 Virus Total Analysis
About the .exe size, differ because webzen uses old service packs for visual 6.0 maybe SP3 cuz tested with SP4, 5
and 6 and same size ~4,47MB(Siege) :(
So here I leave the full change log:
GameServer Download Link (Almost all protocol compiled, exclude CHS, KOR)Code:GameServer: - 1.00.90 JPN Members: - HermeX / Crazzy Special Thanks - SirMaster / Prody / Willerson and ofc Deathway and eRRoR for the great GameServer 1.00.18 source :) :: Project started - 5.05.2011 //ALL DATA OBJECTSTRUCT :: 100% :: COMPARING CPP's : MonsterHerd.cpp :: 100% :: KalimaGate.cpp :: 100% :: gObjMonster.cpp :: 100% :: MonsterAttr.cpp :: 100% :: MonsterItemMng.cpp :: 100% :: MonsterSetBase.cpp :: 100% :: DbSave.cpp :: 100% :: DBSockMng.cpp :: 100% :: DSProtocol.cpp :: 100% :: SProtocol.cpp :: 100% :: protocol.cpp :: 100% :: EDSProtocol.cpp :: 100% :: MultiAttackHackCheck.cpp :: 100% :: - have news checks NSerialCheck.cpp :: 100% :: PacketCheckSum.cpp :: 100% :: HackToolPacket.cpp :: 100% :: TDurMagicKeyChecker.cpp :: 100% :: ChinaHackUserKick.cpp :: 100% :: - non-coded SendHackLog.cpp :: 100% :: DevilSquare.cpp :: 100% :: DevilSquareGround.cpp :: 100% :: BattleGround.cpp :: 100% :: BattleSoccer.cpp :: 100% :: BattleSoccerManager.cpp :: 100% :: DragonEvent.cpp :: 100% :: - void CDragonEvent::Start() - changed AttackEvent.cpp :: 100% :: EledoradoEvent.cpp :: 100% :: RingAttackEvent.cpp :: 100% :: WTEventItemList.cpp :: 100% :: - non code CastleDeepEvent.cpp :: 100% :: - same as 77 PCBangPointSystem.cpp :: 100% :: GambleSystem.cpp :: 100% :: - Moss Merchant system fully coded *-* XMasAttackEventData.cpp :: 100% :: - can't fix position for virtual functions Event.cpp :: 100% :: - need correct packets vars names cuz is all Unk_X EventManagement.cpp :: 100% :: ItemBag.cpp :: 100% :: ItemBagEx.cpp :: 100% :: ProbabilityItemBag.cpp :: 100% :: XMasAttackEvent.cpp :: 100% :: MagicDamage.cpp :: 100% :: MagicInf.cpp :: 100% :: SkillAdditionInfo.cpp :: 100% :: SkillDelay.cpp :: 100% :: SkillHitBox.cpp :: 100% :: QuestInfo.cpp :: 100% :: - void CQuestInfo::QuestSuccessCommand - fixed added in 4.5 QuestUtil.cpp :: 100% :: - same wsGameServer.cpp :: 100% :: - same WzMultiCastSock.cpp :: 100% :: - same giocp.cpp :: 100% :: \common\MyWinsockBase.cpp :: 100% :: - same wsJoinServerCli.cpp :: 100% :: - same WzQueue.cpp :: 100% :: - same WzUdp.cpp :: 100% :: - same MapClass.cpp :: 100% :: - new func and some addons for socketsystem MapItem.cpp :: 100% :: - some addons for socketsystem AcceptIp.cpp :: 100% :: - same CLoginCount.cpp :: 100% :: - same ClosePlayer.cpp :: 100% :: - same ConMember.cpp :: 100% :: - same IpCache.cpp :: 100% :: - same DirPath.cpp :: 100% :: - same logproc.cpp :: 100% :: - same LogToFile.cpp :: 100% :: - same MoveCheck.cpp :: 100% :: - same \common\winutil.cpp :: 100% :: - same WhisperCash.cpp :: 100% :: - same zzzmathlib.cpp :: 100% :: - changed \common\WZScriptEncode.cpp :: 100% :: - same CWhatsUpDummyServer.cpp :: 100% :: - same TNotice.cpp :: 100% :: - same TStatistics.cpp :: 100% :: - same CallStackTrace.cpp :: 100% :: - same TServerAlertManager.cpp :: 100% :: - macro TServerInfoDisplayer.cpp :: 100% :: - same MiniDump.cpp :: 100% :: - same PartyClass.cpp :: 100% :: - same GuildClass.cpp :: 100% :: - same ViewportGuild.cpp :: 100% :: - same ObjAttack.cpp :: 100% :: ObjBaseAttack.cpp :: 100% :: ObjUseSkill.cpp :: 100% :: \common\classdef.cpp :: 100% :: - same StatMng.cpp :: 100% :: - changed formulas ComboAttack.cpp :: 100% :: ObjCalCharacter.cpp :: 100% :: DarkSpirit.cpp :: 100% :: TUnion.cpp :: 100% :: - same TUnionInfo.cpp :: 100% :: - same MasterLevelSystem.cpp :: 100% :: - few fixes MasterSkillSystem.cpp :: 100% :: user.cpp :: 100% :: SocketData.cpp :: 100% :: SocketOption.cpp :: 100% :: SocketSphere.cpp :: 100% :: ItemAddOption.cpp :: 100% :: - one new func JewelMixSystem.cpp :: 100% :: - dupe fix in both mix and unmix \common\SetItemOption.cpp :: 100% :: - same \common\zzzitem.cpp :: 100% :: Shop.cpp :: 100% :: CCastleEventItemList.cpp :: 100% :: - macro GMMng.cpp :: 100% :: MoveCommand.cpp :: 100% :: - new checks SetItemMacro.cpp :: 100% :: GameMain.cpp :: 100% :: GameServer.cpp :: 100% :: Gate.cpp :: 100% :: BloodCastle.cpp :: 100% :: ChaosCastle.cpp :: 100% :: ChaosCastleSetItemDrop.cpp :: 100% :: - macro CannonTower.cpp :: 100% :: CastleCrown.cpp :: 100% :: CastleCrownSwitch.cpp :: 100% :: Guardian.cpp :: 100% :: GuardianStatue.cpp :: 100% :: LifeStone.cpp :: 100% :: - fix added on 4.5 Mercenary.cpp :: 100% :: Weapon.cpp :: 100% :: - same as 77 CastleSiege.cpp :: 100% :: CastleSiegeSync.cpp :: 100% :: MapServerManager.cpp :: 100% :: NpcTalk.cpp :: 100% :: TMonsterSkillElement.cpp :: 100% :: TMonsterSkillElementInfo.cpp :: 100% :: TMonsterSkillManager.cpp :: 100% :: TMonsterSkillUnit.cpp :: 100% :: - completed but TMonsterSkillElement::GetElementName() i cant fix position for this func :( TMonsterAI.cpp :: 100% :: TMonsterAIAgro.cpp :: 100% :: - completed but cant fix position for .h extra class TMonsterAIAutomata.cpp :: 100% :: TMonsterAIElement.cpp :: 100% :: TMonsterAIGroup.cpp :: 100% :: TMonsterAIGroupMember.cpp :: 100% :: TMonsterAIMovePath.cpp :: 100% :: - completed but cant fix position for .h extra class TMonsterAIRule.cpp :: 100% :: TMonsterAIRuleInfo.cpp :: 100% :: TMonsterAIUnit.cpp :: 100% :: TMonsterAIUtil.cpp :: 100% :: CrywolfAltar.cpp :: 100% :: CrywolfStatue.cpp :: 100% :: CrywolfDarkElf.cpp :: 100% :: CrywolfMonster.cpp :: 100% :: CrywolfTanker.cpp :: 100% :: Crywolf.cpp :: 100% :: - completed but cant fix position for .h extra class CrywolfStateTimeInfo.cpp :: 100% :: CrywolfSync.cpp :: 100% :: CrywolfUtil.cpp :: 100% :: ItemSystemFor380.cpp :: 100% :: - cant fix position for DebugLog func JewelOfHarmonySystem.cpp :: 100% :: TRandomPoolMgr.cpp :: 100% :: KanturuMaya.cpp :: 100% :: KanturuMonsterMng.cpp :: 100% :: KanturuNightmare.cpp :: 100% :: KanturuBattleOfMaya.cpp :: 100% :: KanturuBattleOfNightmare.cpp :: 100% :: KanturuBattleStanby.cpp :: 100% :: KanturuTowerOfRefinement.cpp :: 100% :: KanturuBattleUserMng.cpp :: 100% :: KanturuEntranceNPC.cpp :: 100% :: Kanturu.cpp :: 100% :: - m_iKanturuBattleCounter and int m_iKanturuBattleDate may be deleted, and func void SetKanturuTimeAttackEventInfo() has deleted KanturuStateInfo.cpp :: 100% :: KanturuUtil.cpp :: 100% :: - SendDataKanturuTimeAttackEvent - deleted from 4.5 IllusionTempleEvent.cpp :: 100% :: IllusionTempleProcess.cpp :: 100% :: MixSystem.cpp :: 100% :: CashShop.cpp :: 100% :: wsShopServerCli.cpp :: 100% :: CashItemPeriodSystem.cpp :: 100% :: CashLotterySystem.cpp :: 100% :: ViewportSkillState.cpp :: 100% :: - webzen remade Add and Clear. Now is "Prev" and "Next" BuffLastEffect for CalCharacter and one master function to Clear all :) BuffManager.cpp :: 100% :: BuffEffect.cpp :: 100% :: RaklionSelupan.cpp :: 100% :: RaklionBattleOfSelupan.cpp :: 100% :: RaklionBattleUserMng.cpp :: 100% :: Raklion.cpp :: 100% :: RaklionUtil.cpp :: 100% :: ChaosCard.cpp :: 100% :: GameEvent.cpp :: 100% :: GameServerAuth.cpp :: 100% :: LargeRand.cpp :: 100% :: MultiCheckSum.cpp :: 100% :: TSync.cpp :: 100% :: \common\WzMemScript.cpp :: 100% ::
(July-17th)*Links updated due to Bug Fix of Golden Mobs Drop Bad Decompilation.
(August-4th)*Links updated due to Bug Fix of MG EvilSpirit Damage (no damage before due to CLASS_ELF instead of CLASS_MAGUMSA) and fixed Jewel Mix Interface State (old: 12/new: 20).
(August-5th)*Links updated due to Bug Fix of BK Swell Life Buff (no party effect before due to lpObj instead of lpPartyObj).
No offsets were changed since first release :):
- Link JPN GS_N: GameServer___Win32_JPN.rar
- Link JPN GS_CS: GameServer___Win32_JPNCS.rar
- Link ENG GS_N: GameServer___Win32_ENG.rar
- Link ENG GS_CS: GameServer___Win32_ENGCS.rar
- Link TAI GS_N: GameServer___Win32_TAI.rar
- Link TAI GS_CS: GameServer___Win32_TAICS.rar
- Link PHI GS_N: GameServer___Win32_PHI.rar
- Link PHI GS_CS: GameServer___Win32_PHICS.rar
- Link VTM GS_N: GameServer___Win32_VTM.rar
- Link VTM GS_CS: GameServer___Win32_VTMCS.rar
I would like to announce too our new team called MSC (Mu Season Coder) and we will be starting developing a Season 4.6
full and free release using this source and maybe other projects too :)
(July-20th)*Full Objectstruct Release: Ps. Use #define GS_CASTLE 1 for gs_cs objectstruct
Att,Code:typedef void * LPGGAUTH; struct _GG_AUTH_DATA { DWORD dwIndex; // 0 DWORD dwValue1; // 4 DWORD dwValue2; // 8 DWORD dwValue3; // C }; struct _GG_AUTH_PROTOCOL { HINSTANCE hDllHinstance; // 0 DWORD dwPtrcVersion; // 4 DWORD dwQueryCount; // 8 DWORD unkC; DWORD (*PtrcGetAuthQuery)(int, LPGGAUTH, _GG_AUTH_DATA*, _GG_AUTH_DATA*); // 10 DWORD (*PtrcCheckAuthAnswer)(int, LPGGAUTH, _GG_AUTH_DATA*, _GG_AUTH_DATA*); // 14 _GG_AUTH_PROTOCOL * lpPrevProtocol; // 18 }; class CCSAuth2 { public: CCSAuth2(){} ~CCSAuth2(){} _GG_AUTH_PROTOCOL* m_pProtocol; // 0 unsigned long m_bPrtcRef; // 4 DWORD m_dwUserFlag; // 8 _GG_AUTH_DATA m_AuthQuery; // C _GG_AUTH_DATA m_AuthAnswer; // 1C }; struct ComboSkillData { public: void Init(); DWORD dwTime; // short Skill[3]; // int ProgressIndex; // }; typedef struct tagActionState { DWORD Rest:1; // 0 DWORD Attack:1; // 1 DWORD Move:1; // 2 DWORD Escape:1; // 3 DWORD Emotion:4; // 4 DWORD EmotionCount:8; // 8 } ACTION_STATE, * LPACTION_STATE; struct HITDAMAGE_STRUCT { short number; // 0 int HitDamage; // 4 DWORD LastHitTime; // 8 }; struct VIEWPORT_STRUCT { char state; // 0 short number; // 2 BYTE type; // 4 short index; // 6 int dis; // 8 }; struct VIEWPORT_PLAYER_STRUCT { char state; // 0 short number; // 2 BYTE type; // 4 short index; // 6 int dis; // 8 }; typedef struct tagInterfaceState { DWORD use : 2; DWORD state : 4; DWORD type : 10; } INTERFACE_STATE, * LPINTERFACE_STATE; class TDurMagicKeyChecker { private: DWORD m_dwDurationTime[60]; // 0 BYTE m_btValidCount[60]; // F0 }; class CSkillDelay { public: CSkillDelay(){} virtual ~CSkillDelay(){} private: DWORD LastSkillUseTime[600]; }; class TMonsterSkillElementInfo { public: static void CheckSkillElementInfoProc(struct OBJECTSTRUCT * lpObj); public: int m_iSkillElementDefense; // 0 int m_iSkillElementDefenseTime; // 4 int m_iSkillElementAttack; // 8 int m_iSkillElementAttackTime; // C int m_iSkillElementAutoHP; // 10 int m_iSkillElementAutoHPCycle; // 14 int m_iSkillElementAutoHPTime; // 18 int m_iSkillElementAutoMP; // 1C int m_iSkillElementAutoMPCycle; // 20 int m_iSkillElementAutoMPTime; // 24 int m_iSkillElementAutoAG; // 28 int m_iSkillElementAutoAGCycle; // 2C int m_iSkillElementAutoAGTime; // 30 int m_iSkillElementImmuneNumber; // 34 int m_iSkillElementImmuneTime; // 38 int m_iSkillElementResistNumber; // 3C int m_iSkillElementResistTime; // 40 int m_iSkillElementModifyStat; // 44 int m_iSkillElementModifyStatType; // 48 int m_iSkillElementModifyStatTime; // 4C int m_iSkillElementBerserkTime; //50 }; struct TMonsterAIAgroInfo { private: int m_iUserIndex; // 0 int m_iAgroValue; // 4 }; class TMonsterAIAgro { public: TMonsterAIAgro(){} virtual ~TMonsterAIAgro(){} private: TMonsterAIAgroInfo m_Agro[100]; // 4 }; struct JEWELOFHARMONY_ITEM_EFFECT { short HJOpAddMinAttackDamage; // 0 short HJOpAddMaxAttackDamage; // 2 short HJOpRequireStr; // 4 short HJOpRequireDex; // 6 short HJOpAddAttackDamage; // 8 short HJOpAddCriticalDamage; // A short HJOpAddSkillAttack; // C short HJOpAddAttackSuccessRatePVP; // E short HJOpDecreaseSDRate; // 10 short HJOpAddIgnoreSDRate; // 12 short HJOpAddMagicPower; // 14 short HJOpAddDefense; // 16 short HJOpAddMaxAG; // 18 short HJOpAddMaxHP; // 1A short HJOpAddRefillHP; // 1C short HJOpAddRefillMP; // 1E short HJOpAddDefenseSuccessRatePvP; // 20 short HJOpAddDamageDecrease; // 22 short HJOpAddSDRate; // 24 }; struct ITEMOPTION_FOR380ITEM_EFFECT { short OpAddAttackSuccessRatePVP; // 0 short OpAddDamage; // 2 short OpAddDefenseSuccessRatePvP; // 4 short OpAddDefense; // 6 short OpAddMaxHP; // 8 short OpAddMaxSD; // A short OpRefillOn; // C short OpAddRefillSD; // E }; struct PCBANG_POINT_SYSTEM { //PcBang Control BOOL m_bPcBangPointEnable; //PcBang Common Settings BYTE m_bPcBangCommonRule; //0x20A8 short m_sPcBangCommonRuleTime; //0x20AA //PcBang Point Storage short m_sPcBangGainPoint; //0x20AC int m_iPcBangAccumulatedPoint; //0x20B0 //PcBang Set Info BOOL m_bPcBangInfoSet; //0x20B4 //PcBang Timer Point Tick DWORD m_dwPcBangPointTick; //0x20B8 //PcBang Reset Point Time Control (Eventserver Send) short m_sPcBangResetYear; //0x20BC short m_sPcBangResetMonth; //0x20BE short m_sPcBangResetDay; //0x20C0 short m_sPcBangResetHour; //0x20C2 }; class CPCBangPointTimeCondition //completed identical { public: CPCBangPointTimeCondition(){} virtual ~CPCBangPointTimeCondition(){} }; class CPCBangPointTimer : public CPCBangPointTimeCondition //completed identical { public: CPCBangPointTimer(){} virtual ~CPCBangPointTimer(){} typedef void (*TUserIndex)(CPCBangPointTimer*,int); public: int m_iUSR_ResetYear; //0x4 int m_iUSR_ResetMonth; //0x8 int m_iUSR_ResetDay; //0xC int m_iUSR_ResetHour; //0x10 int m_iSVR_ResetDayOfWeek; //0x14 int m_iSVR_ResetHour; //0x18 TUserIndex m_iTUserIndex; //0x1C BOOL m_bSetTimer; //(size 0x4) //0x20 SYSTEMTIME m_tmPcBangResetTime; //(size 0x10) //0x24 int m_iUserIndex; //0x34 }; struct SOCKET_ITEM { BYTE m_btEffectType; BYTE m_btOptionType; WORD m_wOptionValue; BYTE m_btOptionCount; }; class CHackToolPacket { public: CHackToolPacket(){} ~CHackToolPacket(){} DWORD m_dwTick; //0 bool bLoad; //4 BYTE bSetTick; //5 DWORD unk_8; //8 int m_iPacketCount; //C DWORD unk_10; //10 DWORD unk_14; //14 }; struct MONSTERKILLINFO { int MonIndex; int KillCount; }; struct BUFF_MANAGER { BYTE btBuffIndex; //210 BYTE btVpIndex; //211 BYTE btEffectType1; //212 BYTE btEffectType2; //213 int iValue1; //214 int iValue2; //218 DWORD dwBuffTickCount; //21C int iDuration; //220 }; struct ML_PassiveSkill //S4 Updated { int m_iML_IncreaseAttackSuccessRate; //4C8 int m_iML_AttackRate; //4CC int m_iML_IncreasePvPDefenceRate; //4D0 int m_iML_DurationReduction1; //4D4 BYTE m_btML_DurationReduction1; //4D8 int m_iML_DurationReduction2; //4DC int m_iML_ResistanceIncrease_Poison; //4E0 int m_iML_ResistanceIncrease_Lightning; //4E4 int m_iML_ResistanceIncrease_Ice; //4E8 int m_iML_HPAutoIncrement; //4EC int m_iML_ZenIncrease; //4F0 int m_iML_DefenseIncrease; //4F4 int m_iML_MaximumLifeIncrease; //4F8 int m_iML_MaximumAGIncrease; //4FC int m_iML_MonsterAttackManaIncrement; //500 int m_iML_MonsterAttackLifeIncrement; //504 int m_iML_MonsterAttackSDIncrement; //508 int m_iML_IncreaseExpRate; //50C //Season 4 Add-on int m_iML_IncreaseMaxSD; //510 int m_iML_IncreaseSDRecovery; //514 int m_iML_IncreaseMaxDamage; //518 int m_iML_IncreaseMinDamage; //51C int m_iML_IncreaseManaReduction; //520 int m_iML_IncreaseMaxWizardry; //524 int m_iML_IncreaseMinWizardry; //528 int m_iML_DecreasePetDurReduction; //52C int m_iML_IncreaseMaxDmgWzdry; //530 int m_iML_IncreaseMinDmgWzdry; //534 }; //size 2238 for GS-CS struct OBJECTSTRUCT { int m_Index; int Connected; char LoginMsgSnd; char LoginMsgCount; char CloseCount; char CloseType; BOOL bEnableDelCharacter; struct _PER_SOCKET_CONTEXT* PerSocketContext; SOCKET m_socket; char Ip_addr[16]; int UserNumber; int DBNumber; DWORD ukn_30; // BYTE Magumsa; DWORD AutoSaveTime; DWORD ConnectCheckTime; DWORD CheckTick; BYTE CheckSpeedHack; DWORD CheckTick2; BYTE CheckTickCount; DWORD SaveTimeForStatics; int iPingTime; BYTE m_TimeCount; DWORD m_dwPKTimer; short CheckSumTableNum; DWORD CheckSumTime; WORD Type; BYTE Live; char CharacterPos; char AccountID[11]; char Name[11]; char LastJoominNumber[14]; bool PlusStatQuestClear; bool ComboSkillquestClear; struct ComboSkillData comboSkill; WORD Class; BYTE DbClass; BYTE ChangeUP; BYTE ChangeUP3rd; short Level; int LevelUpPoint; int iFruitPoint; DWORD Experience; DWORD NextExp; short MLevel; __int64 MLExp; __int64 MLNextExp; int MLPoint; int MLInfoLoad; int Money; short Strength; short Dexterity; short Vitality; short Energy; float Life; float MaxLife; int m_iScriptMaxLife; float FillLife; float FillLifeMax; float Mana; float MaxMana; WORD Leadership; WORD AddLeadership; WORD ChatLitmitTime; BYTE ChatLimitTimeSec; BYTE FillLifeCount; short AddStrength; short AddDexterity; short AddVitality; short AddEnergy; int BP; int MaxBP; int AddBP; float VitalityToLife; float EnergyToMana; char m_PK_Count; char m_PK_Level; int m_PK_Time; short X; short Y; BYTE Dir; BYTE MapNumber; int AddLife; int AddMana; int iShield; int iMaxShield; int iAddShield; int iFillShieldMax; int iFillShield; int iFillShieldCount; DWORD dwShieldAutoRefillTimer; BYTE DamageMinus; BYTE DamageReflect; short MonsterDieGetMoney; BYTE MonsterDieGetLife; BYTE MonsterDieGetMana; BYTE StartX; BYTE StartY; short m_OldX; short m_OldY; short TX; short TY; short MTX; short MTY; int PathCount; int PathCur; char PathStartEnd; short PathOri[15]; short PathX[15]; short PathY[15]; char PathDir[15]; DWORD PathTime; BYTE m_MoveGateNumber; //GS 90 short m_wRaiseTalismanSaveX; short m_wRaiseTalismanSaveY; short m_wRaiseTalismanSaveMap; short m_wTeleportTalismanSaveX; short m_wTeleportTalismanSaveY; short m_wTeleportTalismanSaveMap; DWORD Authority; DWORD Penalty; BYTE m_cAccountItemBlock; struct tagActionState m_ActState; BYTE m_ActionNumber; DWORD m_State; char m_StateSub; BYTE m_Rest; char m_ViewState; BYTE m_btViewStateCount; struct BUFF_MANAGER m_BuffEffectState[16]; DWORD m_LastMoveTime; DWORD m_LastAttackTime; BYTE m_FriendServerOnline; int m_DetectSpeedHackTime; DWORD m_SumLastAttackTime; DWORD m_DetectCount; int m_DetectedHackKickCount; int m_SpeedHackPenalty; BYTE m_AttackSpeedHackDetectedCount; DWORD m_PacketCheckTime; BYTE m_ShopTime; DWORD m_TotalAttackTime; int m_TotalAttackCount; DWORD TeleportTime; char Teleport; char KillerType; char DieRegen; char RegenOk; BYTE RegenMapNumber; BYTE RegenMapX; BYTE RegenMapY; DWORD RegenTime; DWORD MaxRegenTime; short m_PosNum; DWORD LifeRefillTimer; DWORD CurActionTime; DWORD NextActionTime; DWORD DelayActionTime; char DelayLevel; char m_PoisonType; char m_IceType; //#unused ?? char m_iMonsterStunDelay; //0x39F unused char m_iMonsterSleepDelay; //0x3A0 unused char m_iMonsterBattleDelay; char m_cKalimaGateExist; int m_iKalimaGateIndex; char m_cKalimaGateEnterCount; struct OBJECTSTRUCT* lpAttackObj; short m_SkillNumber; DWORD m_SkillTime; bool m_bAttackerKilled; char m_ManaFillCount; char m_LifeFillCount; int SelfDefense[7]; DWORD SelfDefenseTime[7]; DWORD MySelfDefenseTime; char m_Drink; int m_SkillAttack; char m_SkillAttackTime; int PartyNumber; int PartyTargetUser; int GuildNumber; struct _GUILD_INFO_STRUCT* lpGuild; char GuildName[11]; int GuildStatus; int iGuildUnionTimeStamp; int m_RecallMon; int m_Change; short TargetNumber; short TargetShopNumber; short ShopNumber; short LastAttackerID; int m_AttackDamageMin; int m_AttackDamageMax; int m_MagicDamageMin; int m_MagicDamageMax; int m_AttackDamageLeft; int m_AttackDamageRight; int m_AttackDamageMaxLeft; int m_AttackDamageMinLeft; int m_AttackDamageMaxRight; int m_AttackDamageMinRight; int m_AttackRating; int m_AttackSpeed; int m_MagicSpeed; int m_Defense; int m_MagicDefense; int m_SuccessfulBlocking; int m_iSummonerBookSpell; int m_iSummonerBookSpellDamageMin; int m_iSummonerBookSpellDamageMax; short m_MoveSpeed; short m_MoveRange; short m_AttackRange; short m_AttackType; short m_ViewRange; short m_Attribute; short m_ItemRate; short m_MoneyRate; int m_CriticalDamage; int m_ExcelentDamage; class CMagicInf* m_lpMagicBack; class CMagicInf* Magic; char MagicCount; BYTE UseMagicNumber; DWORD UseMagicTime; char UseMagicCount; short OSAttackSerial; BYTE SASCount; DWORD SkillAttackTime; struct ML_PassiveSkill m_MLPassiveSkill; //Season 4 Master Skill System Updated int m_iSoulBarrierDefense; //Season 3 BuffEffect for Soul Barrier Skill short m_sSoulBarrierDuration; //Season 3 BuffEffect for Soul Barrier Skill BYTE CharSet[18]; char m_Resistance[7]; char m_AddResistance[7]; int FrustrumX[4]; int FrustrumY[4]; struct VIEWPORT_STRUCT VpPlayer[75]; struct VIEWPORT_PLAYER_STRUCT VpPlayer2[75]; int VPCount; int VPCount2; struct HITDAMAGE_STRUCT sHD[40]; short sHDCount; struct tagInterfaceState m_IfState; DWORD m_InterfaceTime; class CItem* pInventory; LPBYTE pInventoryMap; char* pInventoryCount; char pTransaction; class CItem* Inventory1; LPBYTE InventoryMap1; char InventoryCount1; class CItem* Inventory2; LPBYTE InventoryMap2; char InventoryCount2; class CItem* Trade; LPBYTE TradeMap; int TradeMoney; bool TradeOk; class CItem* pWarehouse; LPBYTE pWarehouseMap; char WarehouseCount; short WarehousePW; BYTE WarehouseLock; BYTE WarehouseUnfailLock; int WarehouseMoney; int WarehouseSave; class CItem* pChaosBox; LPBYTE pChaosBoxMap; int ChaosMoney; int ChaosSuccessRate; BOOL ChaosLock; DWORD m_Option; int m_nEventScore; int m_nEventExp; int m_nEventMoney; BYTE m_bDevilSquareIndex; bool m_bDevilSquareAuth; char m_cBloodCastleIndex; char m_cBloodCastleSubIndex; int m_iBloodCastleEXP; bool m_bBloodCastleComplete; char m_cChaosCastleIndex; char m_cChaosCastleSubIndex; int m_iChaosCastleBlowTime; char m_cKillUserCount; char m_cKillMonsterCount; int m_iDuelUserReserved; int m_iDuelUserRequested; int m_iDuelUser; BYTE m_btDuelScore; int m_iDuelTickCount; bool m_bPShopOpen; bool m_bPShopTransaction; bool m_bPShopItemChange; bool m_bPShopRedrawAbs; char m_szPShopText[36]; bool m_bPShopWantDeal; int m_iPShopDealerIndex; char m_szPShopDealerName[10]; struct _RTL_CRITICAL_SECTION m_critPShopTrade; int m_iVpPShopPlayer[75]; WORD m_wVpPShopPlayerCount; bool IsInBattleGround; bool HaveWeaponInHand; short EventChipCount; int MutoNumber; BOOL UseEventServer; bool LoadWareHouseInfo; int iStoneCount; int m_i3rdQuestState; int m_i3rdQuestIndex; MONSTERKILLINFO MonsterKillInfo[5]; BYTE m_Quest[50]; bool m_SendQuestInfo; int m_SkyBossMonSheildLinkIndex; int m_SkyBossMonSheild; int m_SkyBossMonSheildTime; int m_MaxLifePower; int m_PacketChecksumTime; int m_CheckLifeTime; BYTE m_MoveOtherServer; char BackName[11]; char m_BossGoldDerconMapNumber; bool m_InWebzen; char m_LastTeleportTime; BYTE m_ClientHackLogCount; BOOL m_bIsInMonsterHerd; BOOL m_bIsMonsterAttackFirst; class MonsterHerd* m_lpMonsterHerd; class CCSAuth2 NPggCSAuth; bool m_bSentGGAuth; DWORD m_NPggCheckSumSendTime; int fSkillFrustrumX[4]; int fSkillFrustrumY[4]; BYTE SkillHellFire2State; BYTE SkillHellFire2Count; DWORD SkillHellFire2Time; BYTE m_ReqWarehouseOpen; int m_NotAttackAreaCount; short SetOpAddSkillAttack; short SetOpAddExDamage; short SetOpAddExDamageSuccessRate; short SetOpAddCriticalDamage; short SetOpAddCriticalDamageSuccessRate; short SetOpIncAGValue; short SetOpAddDamage; short SetOpAddMinAttackDamage; short SetOpAddMaxAttackDamage; short SetOpAddAttackDamage; short SetOpAddDefence; short SetOpAddDefenceRate; short SetOpAddMagicPower; BYTE SetOpIgnoreDefense; BYTE SetOpDoubleDamage; BYTE SetOpTwoHandSwordImproveDamage; BYTE SetOpImproveSuccessAttackRate; BYTE SetOpReflectionDamage; BYTE SetOpImproveSheldDefence; BYTE SetOpDecreaseAG; BYTE SetOpImproveItemDropRate; bool IsFullSetItem; class TDurMagicKeyChecker DurMagicKeyChecker; WORD SkillRecallParty_Time; BYTE SkillRecallParty_MapNumber; BYTE SkillRecallParty_X; BYTE SkillRecallParty_Y; bool bIsChaosMixCompleted; bool SkillLongSpearChange; class CSkillDelay SkillDelay; int iObjectSecTimer; bool m_bMapSvrMoveQuit; bool m_bMapSvrMoveReq; DWORD m_dwMapSvrQuitTick; short m_sPrevMapSvrCode; short m_sDestMapNumber; BYTE m_btDestX; BYTE m_btDestY; #if(GS_CASTLE==1) union { struct { BYTE m_btCsNpcExistVal1; BYTE m_btCsNpcExistVal2; BYTE m_btCsNpcExistVal3; BYTE m_btCsNpcExistVal4; }; int m_iCsNpcExistVal; }; BYTE m_btCsNpcType; BYTE m_btCsGateOpen; int m_iCsGateLeverLinkIndex; BYTE m_btCsNpcDfLevel; BYTE m_btCsNpcRgLevel; BYTE m_btCsJoinSide; bool m_bCsGuildInvolved; #endif bool m_bIsCastleNPCUpgradeCompleted; BYTE m_btWeaponState; int m_iWeaponUser; BYTE m_btKillCount; int m_iAccumulatedDamage; #if(GS_CASTLE==1) BYTE m_btLifeStoneCount; BYTE m_btCreationState; int m_iCreatedActivationTime; #endif int m_iAccumulatedCrownAccessTime; class TMonsterSkillElementInfo m_MonsterSkillElementInfo; int m_iBasicAI; int m_iCurrentAI; int m_iCurrentAIState; int m_iLastAIRunTime; int m_iGroupNumber; int m_iSubGroupNumber; int m_iGroupMemberGuid; int m_iRegenType; class TMonsterAIAgro m_Agro; int m_iLastAutomataRuntime; int m_iLastAutomataDelay; int m_iCrywolfMVPScore; int m_iPcBangRoom; //2030 (new) confirmed thru illusion DWORD m_dwLastCheckTick; int m_iAutoRecuperationTime; int m_iSkillDistanceErrorCount; DWORD m_dwSkillDistanceErrorTick; struct JEWELOFHARMONY_ITEM_EFFECT m_JewelOfHarmonyEffect; struct ITEMOPTION_FOR380ITEM_EFFECT m_ItemOptionExFor380; #if(GS_CASTLE==0) BOOL m_bKanturuEntranceByNPC; #endif WORD m_wItemEffectType; int m_iItemEffectValidTime; WORD m_wCashPoint; //0x209C //PcBang Variables #START# //PcBang EventServer Control int m_iPcBangConnectionType; // 0x20A0 //PcBang PCBANG_POINT_SYSTEM m_PcBangPointSystem; // 0x20A4 //PcBang Class Timer CPCBangPointTimer m_PCBangPointTimer; //0x20C4 //PcBang Variables #END# int m_iIllusionTempleIndex; //20FC BOOL m_bSkillKeyRecv; //0x2100 int m_iPeriodItemEffectIndex; //0x2104 BYTE Summoner; //0x2108 //Season4 add-on size 0x108 SOCKET_ITEM m_SocketSet[35]; //0x210A SOCKET_ITEM m_SocketWeapon[7]; //0x21DC SOCKET_ITEM m_SocketBonus[2]; //0x2206 /////////////////// WORD m_wSocketOpIncLifePower; //0x2212 WORD m_wSocketOpIncMaxMana; //0x2214 WORD m_wSocketOpAddLife; //0x2216 WORD m_wSocketOpAddMana; //0x2218 BYTE m_btSocketOpDecreaseAG; //0x221A /////////////////// class CHackToolPacket m_HackToolCheck; //0x221C BYTE m_btSummonedbyGM; //0x2234 }; typedef OBJECTSTRUCT * LPOBJ;
HermeX
Last edited by hermexjohn; 19-08-11 at 05:41 PM. Reason: Full ObjectStruct released
good job dude
good to see you back brother :) i need to talk with you about this project connect to msn please
Amazing job as always :) Congratz !!!
PD: Don't forget eRRoR, he was also the autor from 1.00.18
Very Amazing Job!.. but it's incredible
very, very thanks for share with community.
just O.M.G
nice work dude thanks alot
That is a great release, i think with this teams like enc,scf and others can get more info about original things from muonline just for make a emulator or gs like scf :) thanks and great job for new coders can understand more about muonline original sources![]()
Now we just need a decompiled version of Webzen main.exe as: 1.03k (JPN), modifications to our custom graphics and added directly into the main, and so have our own servers mu, with unique features!
ps: Someone you think this a good idea (decompile a main.exe)?
Last edited by mauro07; 12-07-11 at 11:47 PM.
Stop Asking for things if you want something start doing it by your self
I think you do not know what you are talking about..
Easier and better to code it from 0, what would take max 1 year of normal not work..
P.S. even if it would be possible to decompile (what is almost not) what for to
decompile shit? and remake it? Mu Client uses very restricted OpenGL version 1.0..
they uses technology from before 10 years.. they have done loads of code technic issues..
They even do not use STL and there is no exceptions support.. why so the client likes
to crash so often and works with "no crash" under Olly only, as it uses then the
debuger's exceptions support.. could anybody see the synchronization of critical
section in main.exe? :D it has several threads.. if few of them will try to one
something with one things in the same time == client crash //epic fail by webzen xD
e.g. one will try to do erase() of the vector and another thread will try to read
from it ^^ resuming: client is full of such shits..
Better start from scratch.. use OGL 3.2 == DX 11 or code it under DX11 and implement
support for DX9/10. Remember it will still not bring the required effect everybody
would looking for (even if it would be 10000% better) because of isometric camera, it
would need to be changed.. but the models are bad for that? isn't it? still would look
shit.. then what we need? few 3d Designers to remake all the mu models ^^ do them
medium Polly (high Polly would be useless for mmo).. then use for the game visual
loads of kicks ass shaderz :D I know a guy who is coding
Mu Client alone and I would say its going quiet good :)
PERSONALLY: I would better like to code own game than recode somebody's one :P
Last edited by IGCNWizzy; 13-07-11 at 01:20 AM.
Mauro... go learn please, please, stop post with "please share xxx or zzzzz"
hermexjohn, great work
maybe someone have PDB to help u in this dev
No te aburren los que se creen coders?