Functional official 3G client source code

smoochy boys on tour

Omikkk

Dedicated Member
Dedicated Member
Jul 20, 2006
232
10
65
Poland
Hi guys. That's a long time since I last posted something here. Some time ago someone linked leaked source code for the client here and I decided to check it out. After a few hours of hacking I got it to compile with MSVC 2019 and work with 3.55 files, which was a little surprising TBH. The client does not need the Holley launcher too. The source code is buggy though, and it would require some effort to make it run smoothly. I'm wondering if there's anyone who would appreciate me spending some time on that project. Especially so given we already have something to work with with the Zircon files. I would not think twice about investing some time into it if there was source code for the server too, but unfortunately there isn't. Not even the eiserver.exe with an injected DLL type of thing like holley or king. So it seems kind of pointless. What do you guys think?

Link for the source code (untouched) - Download

SCREEN0001.png

SCREEN0003.png
 
Last edited:

Omikkk

Dedicated Member
Dedicated Member
Jul 20, 2006
232
10
65
Poland
These clients don't really have assassin, but they mention it:
Code:
#define _JOB_GUNGSA                    3
#define _JOB_DOSA                    2
#define _JOB_SULSA                    1
#define _JOB_JUNSA                    0
or
Code:
#define _CHR_CHR_CREATE_ARCHER            5
There isn't anything besides character creation.

leaked in 2008?
Looks like the files were last modified in November of 2006

kr us cn ?
All of the above. I see differences between the clients, but there aren't too many IMO.

I took the files from this thread where @ryancg uploaded it. I reuploaded it here - download, I think they belong to mirfiles.
In mirfiles there is also source code for an old version of the server and the client there also looks fine, it uses JOB interface.

The Zircon files are great, I spent a few days playing on the SEA Eden server and they were amazing, but there are subtle differences to what I remember from my youth. To recreate the server behaviour of 3.55 and older files without the source code I think it would be a tremendous amount of work. I know serveral people here are capable of doing that, I'm also a successful software engineer now, but it's too much to me.
Anyway, if someone needed help with C++ or software engineering in general related to mir3 - PM me.
 
Last edited:
  • Love
Reactions: Alecs

Damian

Golden Oldie
Golden Oldie
Ravagers
Game Master
Jun 13, 2003
1,081
77
255
Its not too much effort to use the mir2 server as a base, since you know how the client is handling the packets. The amount of work involved porting the client to a more modern graphics system and implementing the mir3 logic in server, could take months.
 

Omikkk

Dedicated Member
Dedicated Member
Jul 20, 2006
232
10
65
Poland
Yep, I realized official mir3 server executables are build on some old mir2 sources looking at the NPC script command lists. For example in GSP the commands are these:

Code:
OR
NOT
CHECK
CHECKOPEN
CHECKUNIT
RANDOM
GENDER
DAYTIME
CHECKLEVEL
CHECKJOB
CHECKWEAPONLEVEL
CHECKWEAPONATOM
CHECKREFINEWEAPON
CHECKWEAPONMCTYPE
CHECKREFINEITEM
HASWEAPONATOM
CHECKMONRECALL
CHECKMAGIC
CHKMAGICLEVEL
STARTDAILYQUEST
CHECKDAILYQUEST
CHECKDAILYQUESTUSER
CHECKFLAG
CHECKGROUPMASTER
RANDOMEX
CHECKHORSE
CHECKRIDING
CHECKITEM
CHECKITEMW
CHECKITEMEX
CHECKGOLD
ISTAKEITEM
CHECKDURA
CHECKDURAW
CHECKDURAEVA
DAYOFWEEK
HOUR
MIN
CHECKPKPOINT
CHECKMONMAP
CHECKHUM
CHECKPOS
CHECKBAGGAGE
CHECKBAGSLOT
MOV
INC
DEC
EQUAL
LARGE
SMALL
ELARGE
ESMALL
CHECKNAMELIST
ISGUILDMASTER
HASGUILD
CANPROPOSECASTLEWAR
CANHAVESHOOTER
CHECKFAME
ISONCASTLEWAR
ISONREADYCASTLEWAR
ISCASTLEGUILD
ISATTACKGUILD
ISDEFENSEGUILD
CHECKSHOOTER
CHECKSAVEDSHOOTER
CHECKCASTLEDOOR
CHECKCASTLEDOOROPEN
CANCHARGESHOOTER
ISATTACKALLYGUILD
ISDEFENSEALLYGUILD
TESTTEAM
ISSYSOP
ISADMIN
CHECKBONUS
CHECKMARRIAGE
CHECKMARRIAGERING
CHECKGMETERM
CHECKOPENGME
CHECKENTERGMEMAP
CHECKSERVER
CHECKGROUPCOUNT
CHECKACCESSORY
ONERROR
CHECKARMOR
CHECKCOMEBACK
ISGUILDWAR
CHECKGUILDGROUP
CHECKJOINGROUP
CHECKTEAMCOUNT
CHECKTEAM
CHECKMAGEXTRA4
CHECKMAGEXTRA5
CHECKTITLE
CHECKALIVE
CHECKSAVEDITEMEX
CHECKWONBOITEM
CHECKDESC
CHECKPCROOM
CHECKCANMOVEMAP
CHECKBCITEMW
CHECKDEMESNE
"
]
[
SET
RESET
SETOPEN
SETUNIT
RESETUNIT
TAKE
TAKEEX
GIVE
GIVEW
GIVEEX
TAKEW
CLOSE
MAPMOVE
GETCOORDINATES
MAP
BREAK
TIMERECALL
BREAKTIMERECALL
PARAM1
PARAM2
PARAM3
PARAM4
TAKECHECKITEM
MONGEN
MONGENP
MONCLEAR
MOV
INC
DEC
SUM
DIV
MOD
MUL
PERCENT
MOVR
EXCHANGEMAP
RECALLMAP
ADDBATCH
BATCHDELAY
BATCHMOVE
PLAYDICE
PASTEMAP
LOADGEN
GOTO
HAIRCOLOR
HAIRRNDCOL
WEARCOLOR
HAIRSTYLE
MONRECALL
MONRECALLEX
CHANGESLAVELEVEL
HORSECALL
KILLHORSE
RANDSETDAILYQUEST
ADDNAMELIST
DELNAMELIST
CLEARNAMELIST
REFINEWEAPON
GETREPAIRCOST
REPAIRITEM
RECALLGROUPMEMBERS
MAPTING
WRITEWEAPONNAME
WRITEWEAPONNAMEEX
DELAYGOTO
ENABLECMD
SENDNOTICEMSG
LINEMSG
EVENTMSG
SOUNDMSG
SETMISSION
CLEARMISSION
MONPWR
ENTER_OK
ENTER_FAIL
MONADDITEM
CHANGEWEATHER
CHANGEWEAPONATOM
USEREMERGENCYCLOSE
BUILDGUILD
GUILDWAR
CHANGEUSERNAME
CHANGEMONLEVEL
DROPITEMMAP
CLEARITEMMAP
PROPOSECASTLEWAR
FINISHCASTLEWAR
MOVENPC
NPCNAMECHG
SPEAK
SENDCMD
INCFAME
DECFAME
CAPTURECASTLEFLAG
MAKESHOOTER
KILLSHOOTER
LEAVESHOOTER
CHANGEMAPATTR
RESETMAPATTR
MAKECASTLEDOOR
REPAIRCASTLEDOOR
CHARGESHOOTER
SETAREAATTR
CLEARDELAYGOTO
TESTFLAG
APPLYFLAG
PASTEFLAG
GETBACKCASTLEGOLD
GETBACKUPGITEM
TINGWAR
TINGCASTLEVISITOR
SAVEPASSWD
CREATENPC
TAKEBONUS
SYSMSG
LOADVALUE
SAVEVALUE
SAVELOG
GETMARRIED
DIVORCE
CAPTURESAYING
CANCELMARRIAGERING
OPENUSERMARKET
SETTYPEUSERMARKET
CHECKSOLDITEMSUSERMARKET
CHECKSOLDITEMSUSERPOINTMARKET
JOINGUILD
SETGMEMAP
SETGMEPOINT
SETGMETIME
STARTNEWGME
MOVETOGMEMAP
FINISHGME
CONTINUEGME
SETGMEPLAYTIME
SETGMEPAUSETIME
SETGMELIMITUSER
SETEVENTMAP
RESETEVENTMAP
TESTREFINEPOINTS
RESETREFINEWEAPON
TESTREFINEACCESSORIES
REFINEACCESSORIES
APPLYMONMISSION
MAPMOVER
ADDSTR
DQSTR
SETEVENTDAMAGE
FORMATSTR
FORMATSTRSQL
CLEARPATH
ADDPATH
APPLYPATH
MAPSPELL
GIVEEXP
GROUPMOVE
GIVEEXPMAP
APPLYMONEX
GIVEFAMEMAP
GETDATE
GETTIME
SPECIALREFINEWEAPON
CHECKSPECIALREFINE
GIVELIFE
RESURRECTION
FIRECRACKERTOCHAR
FIRECRACKERTOMAP
GIVEUSERTITLEEX
MAKEHEALZONE
MAKEDAMAGEZONE
CLEARZONE
READVALUESQL
READSTRINGSQL
READVALUESQLSYS
READSTRINGSQLSYS
WRITEVALUESQL
INCVALUESQL
DECVALUESQL
UPDATEVALUESQL
INITUSERALLQUEST
KILLSLAVE
SETITEMEVENT
REMOVEITEMEVENT
RETURN
CLEARCASTLEOWNER
DISSOLUTIONGUILD
CHANGEGENDER
SETFAME
TEAMMAKETEAM
MONTEAMMARK
MOVEMON
TEAMDIALOG
GROUPDIALOG
TEAMTING
TIMECALL
SETMAGEXTRA4
SETMAGEXTRA5
MAKELOG
MAKEITEMWLOG
CLEARCASTLEGOLD
UPGRADEITEMNOW
BREAKWITEM
CHECKTEAMMEMBER
INPUTTEAMMEMBER
CHECKTEAMJOIN
DELETETEAMMEMBER
CHANGELEVEL
SETTITLEABIL
OPENPOINTMARKET
OPENUSERPOINTMARKET
GETSYSINTTIMETO
CHECKGUILDNUM
CLEARGUILD
EXTENDITEMEXPIRETIME
RESURRECTIONMAP
RESURRECTIONGROUP
RESURRECTIONGUILD
ADDUSERRAIDGROUP
SETRAIDGROUPOWNER
BREAKRAIDGROUP
FILLUP
POISON
EMPOWER
GUILDNUM
GUILDMEMBERCLEAR
MACROCHECK
TAKEWITEM
ATTENDATION
MAGICTYPECHANGE
GETMAGICCHANGE
AUTOTING
CHANGECHARSCALE
INCHEALTH
OPENPETLISTBOX
OPENPETSHOP

while some old m2 source code from 2005 like this http://www.verysource.com/code/5561917_1/M2Share.pas.html had these

Code:
OR
NOT
CHECK
RANDOM
GENDER
DAYTIME
CHECKOPEN
CHECKUNIT
CHECKLEVEL
CHECKJOB
CHECKBBCOUNT
CHECKITEM
CHECKITEMW
CHECKGOLD
ISTAKEITEM
CHECKDURA
CHECKDURAEVA
DAYOFWEEK
HOUR
MIN
CHECKPKPOINT
CHECKLUCKYPOINT
CHECKMONMAP
CHECKMONAREA
CHECKHUM
CHECKBAGGAGE
EQUAL
LARGE
SMALL
CHECKMAGIC
CHKMAGICLEVEL
CHECKMONRECALL
CHECKHORSE
CHECKRIDING
STARTDAILYQUEST
CHECKDAILYQUEST
RANDOMEX
CHECKNAMELIST
CHECKWEAPONLEVEL
CHECKWEAPONATOM
CHECKREFINEWEAPON
CHECKWEAPONMCTYPE
CHECKREFINEITEM
HASWEAPONATOM
ISGUILDMASTER
CANPROPOSECASTLEWAR
CANHAVESHOOTER
CHECKFAME
ISONCASTLEWAR
ISONREADYCASTLEWAR
ISCASTLEGUILD
ISATTACKGUILD
ISDEFENSEGUILD
CHECKSHOOTER
CHECKSAVEDSHOOTER
HAVEGUILD
CHECKCASTLEDOOR
CHECKCASTLEDOOROPEN
CHECKPOS
CANCHARGESHOOTER
ISATTACKALLYGUILD
ISDEFENSEALLYGUILD
TESTTEAM
ISSYSOP
ISADMIN
CHECKBONUS
CHECKMARRIAGE
CHECKMARRIAGERING
CHECKGMETERM
CHECKOPENGME
CHECKENTERGMEMAP
CHECKSERVER
ELARGE
ESMALL
CHECKGROUPCOUNT
CHECKACCESSORY
ONERROR
CHECKARMOR
CHECKACCOUNTLIST
CHECKIPLIST
CHECKCREDITPOINT
CHECKPOSEDIR
CHECKPOSELEVEL
CHECKPOSEGENDER
CHECKLEVELEX
CHECKBONUSPOINT
CHECKMARRY
CHECKPOSEMARRY
CHECKMARRYCOUNT
CHECKMASTER
HAVEMASTER
CHECKPOSEMASTER
POSEHAVEMASTER
CHECKPOSEISMASTER
CHECKISMASTER
CHECKNAMEIPLIST
CHECKACCOUNTIPLIST
CHECKSLAVECOUNT
ISCASTLEMASTER
ISNEWHUMAN
CHECKMEMBERTYPE
CHECKMEMBERLEVEL
CHECKGAMEGOLD
CHECKGAMEPOINT
CHECKNAMELISTPOSITION
CHECKGUILDLIST
CHECKRENEWLEVEL
CHECKSLAVELEVEL
CHECKSLAVENAME
CHECKCREDITPOINT
CHECKOFGUILD
CHECKPAYMENT
CHECKUSEITEM
CHECKBAGSIZE
CHECKLISTCOUNT
CHECKDC
CHECKMC
CHECKSC
CHECKHP
CHECKMP
CHECKITEMTYPE
CHECKEXP
CHECKCASTLEGOLD
PASSWORDERRORCOUNT
ISLOCKPASSWORD
ISLOCKSTORAGE
CHECKGUILDBUILDPOINT
CHECKGUILDAURAEPOINT
CHECKGUILDSTABILITYPOINT
CHECKGUILDFLOURISHPOINT
CHECKCONTRIBUTION
CHECKRANGEMONCOUNT
CHECKITEMADDVALUE
CHECKINMAPRANGE
CASTLECHANGEDAY
CASTLEWARAY
ONLINELONGMIN
CHECKGUILDCHIEFITEMCOUNT
CHECKNAMEDATELIST
CHECKMAPHUMANCOUNT
CHECKMAPMONCOUNT
CHECKVAR
CHECKSERVERNAME
CHECKMAPNAME
INSAFEZONE
CHECKSKILL
CHECKUSERDATE
CHECKCONTAINSTEXT
COMPARETEXT
CHECKTEXTLIST
ISGROUPMASTER
CHECKCONTAINSTEXTLIST
CHECKONLINE
CHECKTEXTLENGTH
ISDUPMODE
SET
TAKE
GIVE
TAKEW
CLOSE
RESET
SETOPEN
SETUNIT
RESETUNIT
BREAK
TIMERECALL
PARAM1
PARAM2
PARAM3
PARAM4
EXEACTION
MAPMOVE
MAP
TAKECHECKITEM
MONGEN
MONGENP
MONCLEAR
MOV
INC
DEC
SUM
DIV
MUL
PERCENT
BREAKTIMERECALL
SENDMSG
CHANGEMODE
PKPOINT
CHANGEXP
RECALLMOB
KICK
MOVR
EXCHANGEMAP
RECALLMAP
ADDBATCH
BATCHDELAY
BATCHMOVE
PLAYDICE
PASTEMAP
LOADGEN
ADDNAMELIST
DELNAMELIST
ADDGUILDLIST
DELGUILDLIST
ADDACCOUNTLIST
DELACCOUNTLIST
ADDIPLIST
DELIPLIST
GOQUEST
ENDQUEST
GOTO
HAIRCOLOR
WEARCOLOR
HAIRSTYLE
MONRECALL
HORSECALL
HAIRRNDCOL
RANDSETDAILYQUEST
REFINEWEAPON
RECALLGROUPMEMBERS
MAPTING
WRITEWEAPONNAME
DELAYGOTO
ENABLECMD
LINEMSG
EVENTMSG
SOUNDMSG
SETMISSION
CLEARMISSION
MONPWR
ENTER_OK
ENTER_FAIL
MONADDITEM
CHANGEWEATHER
CHANGEWEAPONATOM
GETREPAIRCOST
KILLHORSE
REPAIRITEM
USEREMERGENCYCLOSE
BUILDGUILD
GUILDWAR
CHANGEUSERNAME
CHANGEMONLEVEL
DROPITEMMAP
CLEARITEMMAP
PROPOSECASTLEWAR
FINISHCASTLEWAR
MOVENPC
SPEAK
SENDCMD
INCFAME
DECFAME
CAPTURECASTLEFLAG
MAKESHOOTER
KILLSHOOTER
LEAVESHOOTER
CHANGEMAPATTR
RESETMAPATTR
MAKECASTLEDOOR
REPAIRCASTLEDOOR
CHARGESHOOTER
SETAREAATTR
CLEARDELAYGOTO
TESTFLAG
APPLYFLAG
PASTEFLAG
GETBACKCASTLEGOLD
GETBACKUPGITEM
TINGWAR
SAVEPASSWD
CREATENPC
TAKEBONUS
SYSMSG
LOADVALUE
SAVEVALUE
SAVELOG
GETMARRIED
DIVORCE
CAPTURESAYING
CANCELMARRIAGERING
OPENUSERMARKET
SETTYPEUSERMARKET
CHECKSOLDITEMSUSERMARKET
SETGMEMAP
SETGMEPOINT
SETGMETIME
STARTNEWGME
MOVETOGMEMAP
FINISHGME
CONTINUEGME
SETGMEPLAYTIME
SETGMEPAUSETIME
SETGMELIMITUSER
SETEVENTMAP
RESETEVENTMAP
TESTREFINEPOINTS
RESETREFINEWEAPON
TESTREFINEACCESSORIES
REFINEACCESSORIES
APPLYMONMISSION
MAPMOVER
ADDSTR
SETEVENTDAMAGE
FORMATSTR
CLEARPATH
ADDPATH
APPLYPATH
MAPSPELL
GIVEEXP
GROUPMOVE
GIVEEXPMAP
APPLYMONEX
CLEARNAMELIST
TINGCASTLEVISITOR
MAKEHEALZONE
MAKEDAMAGEZONE
CLEARZONE
READVALUESQL
READSTRINGSQL
WRITEVALUESQL
INCVALUESQL
DECVALUESQL
UPDATEVALUESQL
KILLSLAVE
SETITEMEVENT
REMOVEITEMEVENT
RETURN
CLEARCASTLEOWNER
DISSOLUTIONGUILD
CHANGEGENDER
SETFAME
CHANGELEVEL
MARRY
UNMARRY
GETMARRY
GETMASTER
CLEARSKILL
DELNOJOBSKILL
DELSKILL
ADDSKILL
SKILLLEVEL
CHANGEPKPOINT
CHANGEEXP
CHANGEJOB
MISSION
MOBPLACE
SETMEMBERTYPE
SETMEMBERLEVEL
GAMEGOLD
AUTOADDGAMEGOLD
AUTOSUBGAMEGOLD
CHANGENAMECOLOR
CLEARPASSWORD
RENEWLEVEL
KILLMONEXPRATE
POWERRATE
CHANGEMODE
CHANGEPERMISSION
KILL
KICK
BONUSPOINT
RESTRENEWLEVEL
DELMARRY
DELMASTER
MASTER
UNMASTER
CREDITPOINT
CLEARNEEDITEMS
CLEARMAKEITEMS
SETSENDMSGFLAG
UPGRADEITEM
UPGRADEITEMEX
MONGENEX
CLEARMAPMON
SETMPAMODE
GAMEPOINT
PKZONE
RESTBONUSPOINT
TAKECASTLEGOLD
HUMANHP
HUMANMP
GUILDBUILDPOINT
GUILDAURAEPOINT
GUILDSTABILITYPOINT
GUILDFLOURISHPOINT
OPENITEMBOX
SETRANKLEVELNAME
GMEXECUTE
GUILDCHIEFITEMCOUNT
ADDNAMEDATELIST
DELNAMEDATELIST
MOBFIREBURN
MESSAGEBOX
SETSCRIPTFLAG
SETAUTOGETEXP
VAR
LOADVAR
SAVEVAR
CALCVAR

So the overlap was large at some point. But to add the remaining mir3 specific code, you would have to spend hours in a disassembler trying to make a sense of it. I'm not sure if it would be worth it, just to recreate it 1 to 1
 

84785238

LOMCN Veteran
Veteran
Sep 30, 2007
480
10
65
Posts MUST be in English.
不是有个
日月传说 全 c++ 传奇3代码改的?
 

Omikkk

Dedicated Member
Dedicated Member
Jul 20, 2006
232
10
65
Poland
I'm not sure if I got the question right, so I'll answer broadly. What I did was I took the source code posted in >this thread<. The zip file linked there contained source code for `Mir3USA`, `Mir3Korea` and `Mir3China`. I made the `Mir3Korea` one compile gathering necessary dependencies like DirectX 7 static libraries. Then I tried to use the client with an online server called DarkSide which uses 3.55 Holley files. I was fixing issues with the client until I was able to log in and run around in the game. I did not upload it anywhere, since it's too buggy to be 'released'. The link in the first post points to untouched, unchanged source code.
 

84785238

LOMCN Veteran
Veteran
Sep 30, 2007
480
10
65
Posts MUST be in English.
rycs-4.jpg
可以确定的是 客户端是mir3 c++改的。
 

Omikkk

Dedicated Member
Dedicated Member
Jul 20, 2006
232
10
65
Poland
可以确定的是 客户端是mir3 c++改的。>>> It is certain that the client is modified by mir3 c++.
I'm not sure what you are trying to say, I'm sorry. Are you saying that the sources are modified, meaning they contain some stuff that was not part of the official client? I have no idea what the screen shot means.

By the way, I think I found the base for eiserver.exe, take a look.
http://en.verysource.com/item/hanguodaima2005_rar-20696.html
http://en.verysource.com/item/source_rar-964433.html
I found it by searching for "** B-Count/Remain SendBytes SendCount" string which can be found in the eiserver.exes, so I'm pretty sure it's valuable. And google failed here, duckduckgo found those.
To download it I need to wait 10 days. Or I need to use alipay to pay few $, but I have trouble getting verified in that app. Is someone willing to help me with that?, I'll pay. Alternatively every file can be copy pasted directly from the site, but some of the formatting gets lost and it's a tedious process.
 
Last edited:

Damian

Golden Oldie
Golden Oldie
Ravagers
Game Master
Jun 13, 2003
1,081
77
255
I'm not sure what you are trying to say, I'm sorry. Are you saying that the sources are modified, meaning they contain some stuff that was not part of the official client? I have no idea what the screen shot means.

By the way, I think I found the base for eiserver.exe, take a look.
http://en.verysource.com/item/hanguodaima2005_rar-20696.html
http://en.verysource.com/item/source_rar-964433.html
I found it by searching for "** B-Count/Remain SendBytes SendCount" string which can be found in the eiserver.exes, so I'm pretty sure it's valuable. And google failed here, duckduckgo found those.
To download it I need to wait 10 days. Or I need to use alipay to pay few $, but I have trouble getting verified in that app. Is someone willing to help me with that?, I'll pay. Alternatively every file can be copy pasted directly from the site, but some of the formatting gets lost and it's a tedious process.
Just looking at the filenames its source code from mir2 outtest, I don't see anything there unique for mir3.
 

Omikkk

Dedicated Member
Dedicated Member
Jul 20, 2006
232
10
65
Poland
Well, I didn't say there was, all I'm saying is in my opinion official mir3 server code and those files have a common ancestor let's say. Are those `mir2 outtest` files available somewhere by any chance?
 

Damian

Golden Oldie
Golden Oldie
Ravagers
Game Master
Jun 13, 2003
1,081
77
255
  • Like
Reactions: Omikkk