----------------------------------------------------------------------SERVER SOURCE-----------------------------------------------------------------------

General information.

  • Initially, the server source had about 350 files, now only 250. So it's very clean, I just deleted what was useless and never used.
  • The source can be compiled on both Windows and FreeBSD, as well as debug or release modes, as well as amd64 or i386 configuration.
  • I added comments explaining what each function does. Thanks martysama for this, this thing is public, so I thought nobody would be upset if I add.
  • Support and updates are free, I will always help my clients. I will only help you with source-related problems, and within the limits of free time other kinds of issues related to serverfiles/client and so on.
  • Source don't have any explits/backdoors. Evrything is clean, tested, and without security issues.
  • Repository contain a README. It explain how-to-compile, compatibility with other serverfiles issues, removed/changed/deprecated functions and stuff.
  • Fixed all warnings you can have using clang compiler 4.0
  • Removed all locale from server and client source. And merged in one

General changes.

  • I've solved problems with buffer overflow ( Game freezing for certain players, followed by the buffer overflow syserr).
  • I have reviewed the network and the"unknown packet header" issues have been resolved.
  • The default compiler is now CLANG 3.6 to CLANG 4.0
  • I've replaced the whole building system with CMAKE. Instead of Makefile. Two compile modes are available [Debug / Release].
  • Public IP is detected automatically, you do not have to set the BIND_IP line in CONFIG.
  • I have completly rewritten the buffer codes using asio::streambuff (Now the buffer capacity is untlimited)
  • Some of the codes have been upgraded using modern coding standards C ++ 11 / C ++ 17.
  • I have replaced the primitives include guards with pragma once.
  • I have rewritten Blend_item using modern coding standards.. etc
  • I have rewritten the whole DBManager using unique_ptr/observer_ptr/shared_ptr

 

Extern upgrades:

  • boost         1.66
  • devIL         1.8.0
  • lua             5.0
  • mysql        5.7.23
  • cryptopp   7.0.0
  • minilzo      2.10
  • gtest          removed

Obsolete/unused code removed:

 

passpod (login 5), openid (login 4), greet_message, teen packet, locale (ymir, canada, newcibn, japan, brazil), auction, block country, block exception, ip ban, freebsd filemonitor, dev log, monarch, threeway war, speed server, vcard, marble, auth brazil, auth japan, pcbang, germany codes, xtrap, check server, hackshield, billing, version.txt, test codes, shopEX, panama, over9refine, matrix card, limit time, g_IUseLocale, lotto event, mobile, CRC codes, hybrid crypt, over time, koreean hidden commands, hotbackup, stl.h from common folder, login sim, Version2 checK, mobile system, server check/ server key, china event server && china toxification prevent, Useles logs, distribution test tserver, DBString ,spam checK , unsued variables, unused argumnts, unused packets from server client,  unused header and source files,

  • I can't describe in words how clean is, i removed evrything which is useless and not used. I not even remeber evrything, that's is just a small 50% summany.

List of fixes:

  • belt bug
  • war crash when useing negative numbers 
  • mount with full inventory bug
  • dice crash
  • all compile warnings
  • status point
  • bonus change on equipped items
  • bonus change on equipped stones
  • change empire bug
  • scroll bug
  • horse skills bug
  • item swap bug
  • negative HP bug
  • 6/7 bonus on costumes bug
  • all mounts can attack now
  • sql injection in messenger
  • sql injection in guild
  • change empire crash
  • server timers crash
  • party crash
  • dungeon crash
  • cube crash
  • unknown packet header crash
  • affect bug (double affect)
  • sequence mismatch
  • UpdatePacket() double sending
  • charseletct update issues: the stats (HT, ST, Playtime, level) and the parts (armor, head)
  • SAMLL type in ProtoReader
  • messeneger_auth overflow hack
  • Here is write just 40% of the fixes, in 2 years of development and testing source has been tested and fixed over 200 bugs.

Defines list:

 

#define MAP_ALLOW_LIMIT 32                                               here you can set maximum maps per core.

#define CAN_SHOUT_MAX_LEVEL 15                                     here you can set the minimum level to shout

#define MAX_STATUS_POINT 100                                           here you can set the maximum status points

#define PARTY_CAN_JOIN_MAX_LEVEL 30                             here you can set the difference in level for join party

#define MAX_ITEM_INTRO_STACK 200                                   here you can set the maximum items intro stack

#define MAX_MEMBER_INTRO_PARTY 10                              here you can set the maximum members allowed intro a party

#define CAN_RESET_HERE_TIME 170                                      here you can set the time needed to wait for reset here after you die

#define CAN_RESET_TOWN_TIME 173                                    here you can set the time needed to wait for reset town after you die

#define MAX_LEVEL_POINT_CAN_STEP 90                             here you can set the maximum level point can step

 

#define BLOCK_RIDING_WHEN_GUILD_WAR_BEGIN          This option block horse/mount summon when player is intro a guild war.

#define BLOCK_RED_POTION_IF_PLAYER_HAS_DUEL          This option block red potion, auto potion when player duel.

#define BLOCK_HORSE_IF_PLAYER_HAS_DUEL                     This option block horse to be summoned when player is in duel.

#define UDP_BLOCK                                                                  This option block upd connexions.

#define USE_SQL_MODE_FOR_PROTO                                    With this option enable db cache read from .txt protos.

#define USE_TXT_MODE_FOR_PROTO                                     With this option enable db cache read from .sql protos.

#define ENABLE_TRANSLATE_LUA                                           this define enable translate.lua which is disable by default

#define ENABLE_QUEST_DIE_EVENT                                       this define will enable quest die event

#define CHECK_IP_BEFORE_GRANT_TEAM_PRIVILEGES      this define enable a IP check before grant GM privieleges to a specify player

 

#define ENABLE_WOLFMAN                                                     this option enable wolfman and all his features                      (require client define also)

#define ENABLE_SASH_SYSTEM                                               this define will enable sash system                                             (require client define also)

#define ENABLE_COSTUME_MOUNT                                      this option will enable costume mount system                        (require client define also)

#define ENABLE_TRANSMUTATION                                        this option will enable items change look system                   (require client define also)

#define ENABLE_OFFLINE_SHOP                                             this define enable offline shops like metin2global                  (require client define also)

#define ENABLE_COSTUME_WEAPON                                    this define will enable costume weapon system                      (require client define also)

#define ENABLE_NEW_CURRENCY_WON                              this define will enable new curency won beside gold               (equire client define also)

 

New questfunctions:

  • horse.is_summoned

 

New typedef :

  • Gold_DataType
  • Align_DataType

New CONFIG :

  • PROXY_IP           (Here you can set the external IP, when runinig rhe server under hamachi or google cloud etc, and you won't be kicked when characterselect)

----------------------------------------------------------------------CLIENT SOURCE-----------------------------------------------------------------------

General information:

  •  I removed all the DLLs from the client. All DLLs are built into launcher when compiling. Click here
  • I've rebuilt the client's source compilation projects with settings different from the original ones. For maximum performance and optimization.
  • The client works perfectly on any version of windows.

 

Extern upgrades:

  • boost           1.66
  • devIL           1.8.0
  • jpeg            9c
  • granny        2.11.8
  • cryptopp     7.0.0
  • speedTree  1.6
  • miles            2.9b
  • directx         8,
  • python        2.7.14
  • lzo               2.10

Obsolete/unused code removed:

 

openid, pcbang, hackshield, NprotectGameGuard, passpod, matrix_card, Is dev, IsLive, IsTest, application logo, movie man, process crc, process scanner, DLL was completly removed from client ,useless defines, Locale (ymir, newcibn, brazil, japan e.t.c)

  • I can't describe in words how clean is, i removed evrything which is useless and not used. I not even remeber evrything, that's is just a small 50% summany.

List of fixes:

  • Level up visual bug
  • unknown packet header
  • sequence mismatch
  • view_equip crash
  • python27 long overflow bug
  • fixed some visual bugs
  • memory leak when teleport (After each teleport memory usage increase to infinite, and client crash when exced computer RAM memory)

 Defines list :

 

#define ENABLE_SHOW_METIN_STONES_ON_MINIMAP     this define enable the metin stones on minimap

#define ENABLE_SHOW_MONSTER_BOSS_ON_MINIMAP   this define enable the monster boss on minimap

#define DISABLE_COLLISION_IN_SAFEZONE                         this define let players walk through all players and shops when they are in safezone

 

#define ENABLE_WOLFMAN                                                     this option enable wolfman and all his features                      (require server define also)

 #define ENABLE_SASH_SYSTEM                                              this define will enable sash system                                             (require server define also)

#define ENABLE_COSTUME_MOUNT                                      this option will enable costume mount system                        (require server define also)

#define ENABLE_TRANSMUTATION                                        this option will enable items change look system                   (require server define also)

#define ENABLE_OFFLINE_SHOP                                             this define enable offline shops like metin2global                  (require server define also)

#define ENABLE_COSTUME_WEAPON                                    this define will enable costume weapon system                      (require server define also)

#define ENABLE_NEW_CURRENCY_WON                               this define will enable new curency won beside gold               (equire server define also)

 

PYTHON ENGINE

  • openid removed
  • pcbang removed
  • matrix card removed
  • IsDev, IsTest, IsLive  removed
  • mobile system removed
  • consolemodule removed
  • autoban removed
  • servercommandparser removed
  • Locale (Is.Ymir , Is.Arabic , Is.NewCibn , Is.Vietnam, etc all those checks.) removed
  • And many other useless stuff, codes, files

 

  • translated
  • clean
  • replaced npclist.txt with npclist.py
  • official root files 2013 month 09 from metin2ro before they cythonized

List of fixes:

  1. Refresh of the skill cooldown  SHOW_BUG
  2. Point skill increase visual bug SHOW BUG
  3. Name of the private shops under player/mob head

  TOOLS

dump proto

  • This tool reads the [item_proto.txt / mob_proto.txt] files and converts them to [item_proto / mob_proto] for the client. (Begginers information)
  • The compiler is Visual Studio 2017

proto editor

  • This tool loads the [item_proto.txt / mob_proto.txt] files into a GUI window for easier editing, like on SQL. (Begginers information)
  • The compiler is Visual Studio 2017

msa maker

  • This tool uploads the files [file.gr2] and automatically creates the msa files needed to animate the models [file.msa]
  • The compiler is Visual Studio 2017

EXTRA

mySQL tables

  • works with mysql 5.7
  • all extra unused tables removed
  • MyIsam replaced with InnoDB
  • translated
  • clean

Cython

  •  

Root Setup

  • I will set up a freebsd system for free. Be it local or server.
  • I will install all the programs required to run/develop a metin server.

Git setup

  • What is “version control”, and why should you care? Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later. you are a graphic or web designer and want to keep every version of an image or layout (which you would most certainly want to), a Version Control System (VCS) is a very wise thing to use. It allows you to revert selected files back to a previous state, revert the entire project back to a previous state, compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when, and more. Using a VCS also generally means that if you screw things up or lose files, you can easily recover. In addition, you get all this for very little overhead.
  • I'll teach you GIT basics. Example, you want to install a system and after you have added it you notice that something is not working anymore. You can revert changes and do again the installation, without compare files e.t.c
  • GIT have much many stuff, like compare tool, merge tool.

SERVERFILES + CLIENT

Server files

  • I wrote new  start.sh clear.sh close.sh
  • I revised all game CONFIG's and removed all unused lines
  • I revised data/monster against all unused files and objects    data/monster is synchronized with client
  • I revised data/pc, data/pc2, data/pc3 against all unused files and removed them
  • I synchronized all maps with server, and renamed them.  Example:  metin2_map_c3 is now town_1_blue
  • I did many fucking tests e.t.c
  • I cleaned questlib.lua
  • I synchronized questnpc.txt with mob_proto
  • I removed all unused quest_functions
  • A clean and working and tested set of quests
  • I tested the files three months

Client

  • I have removed all duplicated files
  • I removed all useless/unused/not working maps
  • I merged all packs in one pack
  • I tested all mobs from mob_proto and fixed/removed all which was not working
  • I tested all items from item_proto and fixed/removed all which was not working
  • I cleaned client and deleted all unused files
  • I tested all objects
  • I tested all effects
  • I walked with character in each map and looked after some syserr and fixed all
  • I fixed all possible syserr, the client is 0 syserr right now
  • I tested fucking evrything
  • I removed duplicated maps
  • I converted koreean letters from property
  • I added lycan stuff
  • I added each asset for each system which is included in source defines (transmutaton, offline shop, sash, and so on.)
  • The client is based on : METIN2 RO OFFICIAL client, date : 09.09.2013
  • THIS CLIENT IS SO FUCKING CLEAN, stable and very tested
  • I did all possible tests
  • I worked three months on cleaning and testing evrything

 

 

Source  : 250 

Serverfiles + client : 100 

Total = 350