Check what's done recently Changelog
Are you interested? BuyInfo

Advanced Source Files

flash_on

Speeds up development

Refactored code with new modern C++ and Python features

group

User Experience Focused

Used and Tested by hundreds of clients and tens of thousands of players.

settings

Easy to work with

Fast configurable settings to provide the best result.

contact_mail

Installation Support

You're followed step by step

code

All exploits fixed

You don't have to worry about vulnerabilities

check_circle

No errors / warnings

More secure, more fast

system_update_alt

Source Control

Every update can be checked individually

sync

Always up to date

Updates are automatically provided

shop

Server Installation

A running and clean game server will be also installed

  • update General Information
    
    • They are clean and compilable everytime and everywhere. I fixed all the bugs I found so the files would be more than stable.
    • The repositories include a README.txt containing how to compile it, where I fixed such stuff and all the customable constants.
    • There are NO BACKDOORS.
    • There are tons of added stuff directly made by me. (you can disable ‘em whenever you want)
    • I personally made every kind of things you can retrieve from such sources. (the -extended version also contains already installed released systems)
  • settings_backup_restore Server Sources
    
    • blur_circular General
      1. Currently compiling on the latest Freebsd version 64bit on 64bit mode v10
      2. The code has been refactored using new c++20 features, standardized types, and standardized code style v10
      3. Removed all the dead code in the source files v5 v10 (such as: passpod, openid, teen packet, auction, vcard, netmarble, auth_brazil, pcbang, serverkey, hshield, xtrap, unit tests, runup matrix card quiz (securitycode), limit_time, login_sim, auth sms, etc; unused arguments and LOTS MORE)
      4. Fixed all the warnings you could have when compiling (and sanatized all print formats!)
      5. Developed a plugin system to allow developers to write unstealable code on my source files v10
      6. Merged all the locales except inside locale_service, so you can use Italy (latin1), Czech (latin2) and all the other ones with the relative detected charset.

        So you won’t have differences between we_korea or german except for the charset and the file names (locale/korea <> locale/germany)

    • whatshot List of fixes: (the full explanation is written in the README.txt)
      1. SAMLL typo in mob proto
      2. invalid_server_log query syntax error
      3. /war -1 bug crash
      4. ClientCheckVersion comparing issue (int<> to string now)
      5. Status Point stopped increasing to level 90 issue
      6. the korean commands have been disabled
      7. Full-Speeded player will not warp you back when using mounts like lion
      8. Absorb HP/MP issue (the one which decreases the gauge instead of increases it)
      9. Entities disappearing when mounting many mounts or not existent ones
      10. Double triggering of “when kill begin” when you kill a player
      11. The semi-transparent affect not disappearing when attacking (when reviving or using ninja hidden skill)
      12. Bonus changing on equipped items issue
      13. Stone changing on equipped items issue
      14. Refine Scrolls using (et similia) on equipped items issue
      15. Drop Hack bug about party detection
      16. Normal horse skills couldn’t inflict damage
      17. You couldn’t swap equipment when inventory is full
      18. Gaining as many hp/mp as many you have on your equipment when refreshing stuff issue
      19. Losing of hp/mp increased via affect when refreshing stuff issue
      20. Negative hp/mp when greater than 32767 issue
      21. item movable from mall/safebox to belt inventory w/o checking the real type issue (potion check bypass)
      22. few packet IDs were not checked
      23. refine scroll item value 1 check error
      24. sub type 24 check bug (the condition could never be true)
      25. missing check on 6-7 add/change items about costume stuff
      26. dungeon regen pointing to a dangling pointer
      27. disband and withdraw guild time limit problem if player is offline
      28. lovepoints overflow issue
      29. affect hack at login
      30. /cube r_index bug crash
      31. all the new mounts can now attack and/or inflict skill damage if they should (like official)
      32. unsummoning azrael pets out of dungeons won’t decrease the relative “ghost” bonuses anymore
      33. messenger_auth flood hack
      34. sync packets sendable to everyone hack
      35. wrong checks on normal chat buf
      36. pc.mount_bonus bypass checks issue
      37. random crashes if mob’s hp is 0
      38. now, when a player dies, his HP will be set as 0 instead of having a negative number
      39. now, the passwords are hashed before being processed (preventing password stealing from server)
      40. memory leak fix about CShopEx
      41. belt unequip if its inventory isn’t empty fix
      42. items in belt inventory usable even if the slot is disabled fix
      43. sql injection fix about net.SendMessengerRemovePacket
      44. sql injection fix about net.SendAnswerMakeGuildPacket
      45. map/index crash if it has no newline in the end fix
      46. guild_add_member exploit fix
      47. player.myshop_pricelist corrupted data fix
      48. myshop_pricelist primary key duplication error fix
      49. ramadan candy item could be used even if the relative affect is still up
      50. type quest, special, attr not handled in ConvSpecialDropItemFile (doing /special_item, special_item_group_vnum.txt will be now generated perfectly)
      51. prevent item module swapping if the quest is suspended (important!)
      52. incomplete refine pct for specific scrolls fix
      53. wrong socket checking for the mount seals fix
      54. no kill counts for players over lvl99 in the empire war fix
      55. all_skill_master skill level overflow fix
      56. ram exploit fix
      57. another doubling affect fix
      58. the ox attender list wasn’t cleared after restarting the ox event
      59. deviltower refiner flag not properly reset fix
      60. exchanging space calculation fix
      61. ds stone unequipping replacing the slot fix
      62. quest info name null crash core fix
      63. mythical peach missing check fix
      64. special mineral slots with more bonuses fix
      65. FCountMonster miscounting other entities fix
      66. FNotice sending packets to mobs fix
      67. pickup z fix
      68. core crash if server_timer had an internal error fix
      69. /priv_guild wrong format fix
      70. db crash with proto names without names fix
      71. /hair /costume exploit bonus fix
      72. glitch horse level with no job set fix
      73. player rename clear up fix
      74. some slots of the dragon soul inventory weren't working properly fix
      75. player rename clear up fix
      76. refine_proto material count not properly handled core crash fix
      77. ClearMountAttributeAndAffect without owner core crash fix
      78. input buffer memory exploit fix
      79. scripted Dead misdropping items fix
      80. Stones array overflow fix
      81. player rename clear up fix
      82. exploit by accessing non-existing players
      83. player rename clear up fix
      84. safebox size level memory leak fix
      85. missing deathblow for warrior and wolfman bug fix
      86. observer players count exploit in war fix
      87. mobs not dropping items in mountains fix
      88. missing 'ma' 'ra' 'sa' handling regen type
      89. splitting items same slot dupe exploit fix
      90. stucked connections after quitting game fix
      91. karma drop dupe exploit fix
      92. mobs allocating unused memory fix (ram reduced by 40%)
      93. /full and /ipurge were causing a glitch in the status page by having negative status fix
      94. leaders and party members can leave the party while being on other channels fix
      95. HEADER_GC_QUEST_INFO had a wrong calculated size fix
      96. the load of items had O(n) complexity for each vnum of any Group fix
      97. yielded quest states were pointing to dangling item pointers fix
      98. skill affects were not cleared after a skill reset fix
      99. real time items were not expired if inside the safebox fix
      100. crash core if the item for feeding the horse didn't exist in the item proto fix
      101. map load regen duplication fix
      102. change name dupe exploit fix
      103. full empire select check exploit fix
      104. CancelServerTimers self erase core crash fix
      105. mob death animation glitch fix
      106. sync of fast mounts fix
      107. unique items can now be be stackable without issues fix
      108. Others are made configurable via define preprocessor
    • details List of defines:
      1. #define _IMPROVED_PACKET_ENCRYPTION_ //enable cryptopp mixed encryption for client<>server comunication
      2. #define ENABLE_D_NJGUILD //enable d.new_jump_all_guild+cpp relative functions (untested)
      3. #define ENABLE_NEWSTUFF //enable new stuff (new lua funcs, new CONFIG options, ecc)
      4. #define ENABLE_FULL_NOTICE //enable new big notice features
      5. #define ENABLE_PORT_SECURITY // block db_port, p2p_port, and remote adminpage exploits
      6. #define ENABLE_BELT_INVENTORY_EX // move the belt items into the BELT_INVENTORY window and prevents unknown belt positions if you de/increase wear/inventory slots
      7. #define ENABLE_CMD_WARP_IN_DUNGEON // /warp <player> will warp successfully even if the player is inside a dungeon (be sure a .quest login event won't still warp you out)
      8. #define ENABLE_USE_COSTUME_ATTR // enable the items reset costume and enchant costume
      9. #define ENABLE_ITEM_ATTR_COSTUME // enable costume_hair, costume_body, costume_weapon item_attr/_rare parts
      10. #define ENABLE_SEQUENCE_SYSTEM // enable sequence system
      11. #define MAP_ALLOW_LIMIT <int> // define how many maps are allowed per game core (default 32)
      12. #define ENABLE_PLAYER_PER_ACCOUNT5 // enable 5 characters (per account) in the select phase (instead of 4)
      13. #define ENABLE_DICE_SYSTEM // enable dice system: if the mob is king or boss and you're in party, the dropped item is randomly rolled
      14. #define ENABLE_EXTEND_INVEN_SYSTEM //enable 4 inventory pages
      15. #define ENABLE_MOUNT_COSTUME_SYSTEM // enable mount costume slot
      16. #define ENABLE_WEAPON_COSTUME_SYSTEM //enable weapon costume slot
      17. #define ENABLE_PET_SYSTEM_EX // enable item pet without quest [@warme666]
      18. #define ENABLE_SKILL_FLAG_PARTY //enable skill flag party (separated from lycan define)
      19. #define ENABLE_NO_DSS_QUALIFICATION //disable dragon soul qualification [@warme666]
      20. #define ENABLE_NO_SELL_PRICE_DIVIDED_BY_5 // disable dividing the sell price by 5 [@warme666]
      21. #define ENABLE_CHECK_SELL_PRICE // it checks if the sell price is higher than the buy price; if yes, sell price will be equal to the buy price
      22. #define ENABLE_GOTO_LAG_FIX // it force-clears the entities when switching sectree
      23. #define ENABLE_MOUNT_COSTUME_EX_SYSTEM //mount load via item_proto with APPLY_MOUNT (118) bonus like official
      24. #define ENABLE_PENDANT_SYSTEM // pendant equip implementation
      25. #define ENABLE_GLOVE_SYSTEM // glove equip implementation
      26. #define ENABLE_MOVE_CHANNEL // enable channel switch
      27. #define ENABLE_REDUCED_ENTITY_VIEW // it reduces the complexity of the entity view
      28. #define ENABLE_WOLFMAN_CHARACTER // enable wolfman character and the relative new features (claws, bleeding and so on) [@warme666]
      29. #define DISABLE_WOLFMAN_ON_CREATE // disable wolfman on create phase [@warme666]
      30. #define USE_MOB_BLEEDING_AS_POISON // if enabled, the mob_proto structure won't change and the bleeding % will be get from the poison field
      31. #define USE_MOB_CLAW_AS_DAGGER // if enabled, the mob_proto structure won't change and the claw % will be get from the dagger field
      32. #define USE_ITEM_BLEEDING_AS_POISON // if enabled, the poison reduce bonus can also reduce the bleeding damage as if it's bleeding reduce itself
      33. #define USE_ITEM_CLAW_AS_DAGGER // if enabled, the resist dagger bonus can also reduce the claw damage as if it's resist claw itself
      34. #define USE_WOLFMAN_STONES // if enabled, lycan stones can be dropped from the metin stones
      35. #define USE_WOLFMAN_BOOKS // if enabled, lycan skill books can be dropped
      36. #define ENABLE_MAGIC_REDUCTION_SYSTEM // enable resist magic reduction bonus
      37. #define USE_MAGIC_REDUCTION_STONES // enable resist magic reduction stone drops from metins
      38. #define __PET_SYSTEM__ // enable traditional pet system
      39. #define USE_ACTIVE_PET_SEAL_EFFECT // it will activate the pet slot if it's active
      40. #define USE_PET_SEAL_ON_LOGIN // it will automatically spawn the pet after a rewarp
      41. #define ENABLE_PROTO_FROM_DB //read protos from db if "PROTO_FROM_DB = 1" is specified inside conf.txt
      42. #define ENABLE_DEFAULT_PRIV //enable default priv loading from common.priv_settings
      43. #define ENABLE_ITEMAWARD_REFRESH //enable a select query every 5 seconds into player.item_award
      44. #define ENABLE_AUTODETECT_VNUMRANGE //if protos are loaded from db, it will automatically detect the vnum range for ds items
      45. #define ENABLE_NUMERIC_FIELD //txt protos now can read numbers instead of tags as well
      46. #define ENABLE_NEWGUILDMAKE //enable pc.make_guild0 and disable CInputMain::AnswerMakeGuild
      47. #define ENABLE_INFINITE_HORSE_HEALTH_STAMINA // full horse health and stamina all the times
      48. #define ENABLE_QUEST_DIE_EVENT //add quest event "die"
      49. #define ENABLE_QUEST_BOOT_EVENT //add quest event "boot"
      50. #define ENABLE_QUEST_DND_EVENT //add quest event "dnd"
      51. #define ENABLE_CMD_PLAYER //enable PLAYER grade inside CMD
      52. #define ENABLE_EXPTABLE_FROMDB //read the exp table from the db
      53. #define ENABLE_AUTODETECT_INTERNAL_IP //autodetect internal ip if the public one is missing
      54. #define ENABLE_GENERAL_CMD //if enabled, it reads a general CMD from "locale/%s/conf/GENERAL_CMD", "locale/%s/conf/GENERAL_CMD_CHANNEL_%d", and/or "locale/%s/conf/GENERAL_CMD_CHANNEL_%d_HOSTNAME_%s"
      55. #define ENABLE_GENERAL_CONFIG //if enabled, it reads a general CONFIG from "locale/%s/conf/GENERAL_CONFIG", "locale/%s/conf/GENERAL_CONFIG_CHANNEL_%d", and/or "locale/%s/conf/GENERAL_CONFIG_CHANNEL_%d_HOSTNAME_%s"
      56. #define ENABLE_IMMUNE_PERC //enable 90% of success instead of 100% regarding immunes (antistun/slow/fall)
      57. #define ENABLE_IMMUNE_FIX //fix immune bug where you need to equip shield at last (or refresh compute e.g. un/riding horse)
      58. #define ENABLE_ITEM_PROTO_MAP //improves GetTable load by O(1)
      59. #define ENABLE_SPAMDB_REFRESH //enable a select query every 10 minutes into common.spam_db
      60. #define ENABLE_TRANSLATE_LUA //enable translate.lua loading
      61. #define ENABLE_QUESTLIB_EXTRA_LUA //enable questlib_extra.lua loading
      62. #define D_JOIN_AS_JUMP_PARTY //d.join will internally work as d.new_jump_party
      63. #define ENABLE_LOCALECHECK_CHANGENAME //enable check that unable change name on Europe Locales
      64. #define ENABLE_PC_OPENSHOP //enable pc.open_shop0(idshop) but buy/sell not work yet
      65. #define ENABLE_SHOP_BLACKLIST //enable ignore 70024 (Blessing Marble) and 70035 (Magic Copper Ore)
      66. #define ENABLE_BLOCK_CMD_SHORTCUT //if enabled, people won't be able to shorten commands
      67. #define ENABLE_STATPLUS_NOLIMIT //disable only 90 points for con+/int+/str+/dex+ commands
      68. #define ENABLE_SET_STATE_WITH_TARGET // enable set_state target as 3rd arg
      69. #define ENABLE_CMD_IPURGE_EX // /ipurge 2nd arg can remove items from a specific window (inv/equip/ds/belt/all)
      70. #define ENABLE_FORCE2MASTERSKILL //skill always pass to m1 when b17 instead of b(number(17-20))
      71. #define ENABLE_NO_MOUNT_CHECK //check whether horse mount vnum should be checked when skilling
      72. #define ENABLE_NULLIFYAFFECT_LIMIT //sura skill 66 won't nullify players with level < or > of yours by 9
      73. #define ENABLE_MASTER_SKILLBOOK_NO_STEPS //if enabled, you will only need a book to increase a master skill, and not as many as the level-20
      74. #define ENABLE_FIREWORK_STUN //enable stun affect when using firework items
      75. #define ENABLE_ADDSTONE_FAILURE //enable add stone failure
      76. #define ENABLE_EFFECT_EXTRAPOT //enable extrapot effects when using green/purple potions
      77. #define ENABLE_BOOKS_STACKFIX //enable stackable books instead of remove all the pile
      78. #define ENABLE_ITEM_RARE_ATTR_LEVEL_PCT //enable 1-5 level pct for item rare attr add/change
      79. #define ENABLE_UNIQUE_ITEM_AUTOSPLIT //enable autosplit when equipping stacked unique items
      80. #define ENABLE_NEWEXP_CALCULATION //recalculate exp rate so you won't get random negative exp/marriage points
      81. #define ENABLE_EFFECT_PENETRATE //enable penetrate effect when performing a penetration
      82. #define ENABLE_NO_DAMAGE_QUEST_RUNNING //if enabled, no damage will be dealt to monsters while running quests (otherwise the quest kill event wouldn't be triggered)
      83. #define NEW_ICEDAMAGE_SYSTEM //add new system for nemere dungeon and so on
      84. #define ENABLE_ANTI_CMD_FLOOD //limit player's command execution to 10 commands per second, otherwise it'll be disconnected!
      85. #define ENABLE_OPEN_SHOP_WITH_ARMOR //if enabled, people can open a personal shop with the armor equipped
      86. #define ENABLE_SKILL_COOLDOWN_CHECK //if enabled, it will add a check on the skill usage to prevent some damage hacks
      87. #define ENABLE_SHOWNPCLEVEL //show Lv %d level even for NPCs (not applicable on mob/stone/warp)
      88. #define ENABLE_GOHOME_IF_MAP_NOT_ALLOWED //you'll go back to your village if you're not allowed to go in that map
      89. #define ENABLE_GM_FLAG_IF_TEST_SERVER //show the gm flag if it's on test server mode
      90. #define ENABLE_GM_FLAG_FOR_LOW_WIZARD //show the gm flag for low wizard too
      91. #define ENABLE_MOUNT_ENTITY_REFRESH //it will refresh entities when riding/unriding (it's also a quick work-around when the client desyncs)
      92. #define ENABLE_GOHOME_IF_MAP_NOT_EXIST //you'll go back to your village if the map doesn't exist
      93. #define ENABLE_GUILD_COMMENT_ANTIFLOOD //prevent flood in guild comments
      94. #define ENABLE_PICKAXE_RENEWAL //if the upgrading of the pickaxe will fail, it won't turn back of 1 grade, but just lose 10% mastering points.
      95. #define ENABLE_FISHINGROD_RENEWAL //if the upgrading of the fishing rod will fail, it won't turn back of 1 grade, but just lose 10% mastering points.
      96. #define ENABLE_PARTYKILL //re-enable PartyKill
      97. #define ENABLE_ACCOUNT_W_SPECIALCHARS //enable special characters in account names (account.account.login)
      98. #define ENABLE_CHAT_COLOR_SYSTEM //enable chat colors based on IsGm or GetEmpire (+colored empire name)
      99. #define ENABLE_CHAT_SPAMLIMIT //limit chat spam to 4 messages for 5 seconds, if you spam it for 10 times, you'll be disconnected!
      100. #define ENABLE_WHISPER_CHAT_SPAMLIMIT //limit whisper chat to 10 messages per 5 seconds, otherwise you'll be disconnected!
      101. #define ENABLE_CHAT_LOGGING //enable chat logging (which saves all the gm chats)
      102. #define ENABLE_CHECK_GHOSTMODE //enable check that blocks the movements if the character is dead
      103. #define ENABLE_TP_SPEED_CHECK //enable speed check teleport back
      104. #define USE_LYCAN_CREATE_POSITION // if enabled, the lycan will be warped to his own village at character creation
      105. #define ENABLE_WHEN_PARENTHESIS //it enables () [] usage in the when cause for the quest file
    • filter_center_focus List of new db/conf.txt options
      1. PROTO_FROM_DB = 1/0 // enable/disable item/mob proto loading from db (otherwise, .txt)
      2. MIRROR2DB = 1/0 // convert .txt protos to .sql ones
    • filter_center_focus List of new game/CONFIG options (used by NEWSTUFF and/or by few others)
      1. ITEM_COUNT_LIMIT <1-250> // you can set the maximum item count (e.g.) to 250 (200 by default)
      2. DISABLE_SHOP_PRICE_3X // disable the price increase on foreign empires (not disabled by default)

        SHOP_PRICE_3X_TAX <0-1> // alternative (1 as default)

      3. DISABLE_CHANGE_ATTR_TIME // disable bonus switching time limit (not disabled by default)

        CHANGE_ATTR_TIME_LIMIT <seconds> // alternative (60 secs as default, 0=disable)

      4. DISABLE_PRISM_ITEM // disable prism requirement (not disabled by default)

        PRISM_ITEM_REQUIRE <0-1> // alternative (1 as default)

      5. ENABLE_GLOBAL_SHOUT // enable shout as global (not enabled by default)

        GLOBAL_SHOUT <0-1> // alternative (0 as default)

      6. DISABLE_EMOTION_MASK // disable emotion mask requirement (not disabled by default)

        EMOTION_MASK_REQUIRE <0-1> // alternative (1 as default)

      7. ENABLE_BOOTARY_CHECK // enable opening a shop only in village maps (not enabled by default)

        BOOTARY_CHECK <0-1> // alternative (0 as default)

      8. CHECK_VERSION_SERVER <0-1> // set to check the ClientVersion (checked by default)

      9. CHECK_VERSION_VALUE <STRING> // set the ClientVersion numeric string (1215955205 by default)
      10. STATUS_POINT_GET_LEVEL_LIMIT <level> // set the maximum level to get status point (default lvl 90)
      11. STATUS_POINT_SET_MAX_VALUE <int> // set the maximum settable points for status (default 90)
      12. SHOUT_LIMIT_LEVEL <int> // set the requirement level to use the shout (default 15)
      13. SHOUT_LIMIT_TIME <int> // set the interval time limit to use the shout (default 15 secs) (commented)
      14. DB_LOG_LEVEL <0-3> // set which log information to save inside the database log (3 as default) (0=none, 1=fews, 2=many, 3=all)
      15. ITEM_DESTROY_TIME_AUTOGIVE <0-MAXINT> // set the destroy time for the autogive items (from boxes if inventory is full and so on) spawned (on the ground) (300 as default)
      16. ITEM_DESTROY_TIME_DROPITEM <0-MAXINT> // set the destroy time for the items dropped by the players (300 as default)
      17. ITEM_DESTROY_TIME_DROPGOLD <0-MAXINT> // set the destroy time for the gold (yang) dropped by the players (150 as default)
      18. GM_HOST_CHECK <0-1> // enable the gm host check based on ip (unchecked by default)
      19. GUILD_INVITE_LIMIT <0-1> // if enabled, the guild can invite new members only after an amount of time (not enabled by default)
      20. GUILD_INFINITE_MEMBERS <0-1> // if enabled, every guild can have infinite members (not enabled by default)
      21. EMPIRE_LANGUAGE_CHECK <0-1> // if enabled, you won’t need to read language books or have the relative ring to understand other empires
      22. SKILLBOOK_NEXTREAD_MIN <int> // set the min value of the next read skill book time (default 28800)
      23. SKILLBOOK_NEXTREAD_MAX <int> // set the max value of the next read skill book time (default 43200)
      24. PROXY_IP <ip> // to specify the real ip in which the player will log in (without leaking the public ip); used for servers behind proxies, servers under nat or simply locale/noip/hamachi servers
    • filter_center_focus List of new lua functions (used by NEWSTUFF and/or few others)
      1. pc.is_available0() // it checks whether the pc.* functions are available or not [return lua boolean]

        pc.is_available // alias

      2. pc.delf(skel, opt) // delete quest flag [return lua boolean: successfulness]
      3. pc.make_item0({vnum|locale_name, count}, {socket1,2,3}, {type1, value1, … , type7, value7}, gstate(=0: giveitem, 1: dropitem, 2: drop_item_with_leadership)[, countdown_in_secs_before_ownership_vanish(=if <=10 would be 30; default=10->30)]) // master function

        pc.make_item // alias

      4. pc.pointchange(uint type, int amount, bool bAmount, bool bBroadcast) // same effect of CHARACTER::PointChange [return nothing]

      5. pc.pullmob() // same effect of /pull [return nothing]

        pc.pull_mob // alias

      6. pc.select_pid(pc.get_player_id()) // [return lua number: old pid]
      7. pc.select_vid // alias of pc.select [return lua number: old vid]
      8. pc.set_level0(level) // same effect of /level <lvl> [return nothing]

        pc.set_level_ex // alias

      9. pc.set_gm_level(); instead of /reload a (note: this only refresh gm privileges if you already are gm on common.gm[host|list]) [return nothing]
      10. pc.is_flag_fire(), pc.is_flag_invisible(), pc.is_flag_poison(), pc.is_flag_slow(), pc.is_flag_stun(), pc.is_flag_bleeding() // is_flag [return lua boolean]
      11. pc.set_flag_fire(bool), pc.set_flag_invisible(bool), pc.set_flag_poison(bool), pc.set_flag_slow(bool), pc.set_flag_stun(bool), pc.set_flag_bleeding(bool) // set_flag [return nothing]
      12. pc.set_flag_kill(player_name) // same effect of /kill <nick> [return nothing]
      13. pc.set_flag_dead() // kill themselves [return nothing]
      14. pc.get_exp_level(level) // get needed exp for <level> level [return: lua number]
      15. pc.get_exp_level0(level, perc) // get needed exp for <level> level / 100 * perc [return: lua number]

        pc.get_exp_level_pct // alias

      16. pc.set_max_health() // same as /reset [return nothing]
      17. pc.get_ip0() // get player ip [return lua string]

        pc.get_ip // alias

      18. pc.get_client_version0() // get player client version [return lua string]

        pc.get_client_version // alias

      19. pc.dc_delayed0(secs) // crash a player after x secs [return lua boolean: successfulness]

        pc.dc_delayed // alias

      20. pc.dc_direct0(player_name) // crash the <nick> player [return nothing]

        pc.dc_direct // alias

      21. pc.is_trade0() // get if player is trading [return lua boolean]

        pc.is_trade // alias

      22. pc.is_busy0() // get if player is “busy” (if trade, safebox, npc/myshop, cube are open) [return lua boolean]

        pc.is_busy // alias

      23. pc.is_arena0() // get if player is in arena [return lua boolean]

        pc.is_arena // alias

      24. pc.is_arena_observer0() // get if player is in arena as observer [return lua boolean]

        pc.is_arena_observer // alias

      25. pc.equip_slot0(cell) // [return lua boolean: successfulness]

        pc.equip_slot // alias

      26. pc.unequip_slot0(cell) // [return lua boolean: successfulness]

        pc.unequip_slot // alias

      27. pc.open_shop0(id_shop) // buy/sell won’t work on it [return nothing]

        pc.open_shop // alias

      28. pc.make_guild0(guild_name) // it returns few state values which you can manage via lua [return lua number]

        pc.make_guild // alias

      29. pc.set_race0(race=[0. Warrior, 1. Ninja, 2. Sura, 3. Shaman, 4. Lycan]) // [return nothing]

        pc.set_race // alias

      30. pc.give_random_book0([race]) // it gives a random skill book; if race is specified, the book will be for such race // [return nothing]

        pc.give_random_book // alias

      31. pc.give_item2_with_dice // like give_item2 but with dice roll check if player is in a party [return lua number=item id]
      32. pc.is_pvp0() // returns true if the player is on pvp [return boolean]

        pc.is_pvp // alias

      33. pc.getf2(“quest.flag”) // returns the quest’s flag’s value [return lua number]

        pc.getf_ex // alias

      34. pc.setf2(“quest.flag”, value) // set the quest’s flag’s value to the specified value [return nothing]

        pc.setf_ex // alias

      35. pc.send_whisper(string message, string who, bool isGM) // send message to who with gold text if isGM [return nothing]
      36. pc.open_sash(int type) // open sash dialog for 0 combine or 1 absorption [return nothing]

        pc.open_acce // alias

      37. d.is_available0() // it checks whether the d.* functions are available or not [return lua boolean]

        d.is_available // alias

      38. d.count_real_monster() // count the real number of monsters in the map skipping horses, pets, npcs, portals [return lua number]

      39. d.new_jump_all_guild(map_index, x, y) // [return nothing]

        d.new_jump_guild // alias

      40. // for nemere dungeon and other implementations

        // It can even let you create mobs attackable only by females/males/mix races and/or by hidden/poisoned/buffed players and so on for all the affects and races

        // It works fine with both d.spawn_mob and spawn_mob0

        d.set_damage_from_race(flag, vid) // [return nothing]

        d.set_damage_from_affect(flag, vid) // [return nothing]

        d.reset_damage_from_race(vid) // [return nothing]

        d.reset_damage_from_affect(vid) // [return nothing]

      41. d.get_damage_from_race(vid) // [return lua number]

        d.get_damage_from_affect(vid) // [return lua table]

        d.unset_damage_from_race(flag, vid) // [return nothing]

        d.unset_damage_from_affect(flag, vid) // [return nothing]

      42. d.kill_area(start_x, start_y, end_x, end_y) // it kills every mob in the specific range (similar to d.purge_area, but crash safe) [return nothing]

      43. guild.get_id0() // get guild id [return lua number]

        guild.get_id // alias

      44. guild.get_sp0() // get guild sp [return lua number]

        guild.get_sp // alias

      45. guild.get_maxsp0() // get guild maxsp [return lua number]

        guild.get_maxsp // alias

      46. guild.get_money0() // get money guild [return lua number]

        guild.get_money // alias

      47. guild.get_max_member0() // get max joinable members [return lua number]

        guild.get_max_member // alias

      48. guild.get_total_member_level0() // get the sum of all the members’ level [return lua number]

        guild.get_total_member_level // alias

      49. guild.has_land0() // get whether guild has a land or not [return lua boolean]

        guild.has_land // alias

      50. guild.get_win_count0() // get guild wins [return lua number]

        guild.get_win_count // alias

      51. guild.get_draw_count0() // get guild draws [return lua number]

        guild.get_draw_count // alias

      52. guild.get_loss_count0() // get guild losses [return lua number]

        guild.get_loss_count // alias

      53. guild.add_comment0(msg) // add a comment into guild notice board [return nothing]

        guild.add_comment // alias

      54. guild.set_ladder_point0(points) // set guild ladder points [return nothing]

        guild.set_ladder_point // alias

      55. guild.set_war_data0(win, draw, loss) // set guild win/draw/loss [return nothing] (commented/local update)

        guild.set_war_data // alias

      56. guild.get_skill_level0(vnum) // get guild skill level [return lua number]

        guild.get_skill_level // alias

      57. guild.set_skill_level0(vnum, level) // set guild skill level [return nothing]

        guild.set_skill_level // alias

      58. guild.get_skill_point0() // get guild skill points [return lua number]

        guild.get_skill_point // alias

      59. guild.set_skill_point0(points) // set guild skill points [return nothing]

        guild.set_skill_point // alias

      60. guild.get_exp_level0(level) // get how much exp is necessary for such <level> [return lua number]

        guild.get_exp_level // alias

      61. guild.offer_exp0(exp) // give player’s <exp> to guild [return lua boolean=successfulness]

        guild.offer_exp // alias

      62. guild.give_exp0(exp) // give <exp> to guild [return nothing]

        guild.give_exp // alias

      63. game.drop_item_with_ownership_and_dice // like game.drop_item_with_ownership but with dice roll check if player is in a party [return nothing]
      64. big_notice(string txt) // [return nothing]
      65. big_notice_all(string txt) // [return nothing]
      66. big_notice_in_map(string txt) // [return nothing]
      67. spawn_mob0(int vnum, int map_index, int x, int y) // similar to d.spawn_mob, usable for unique functions too [return lua number=mob vid]

        spawn_mob_ex // alias

      68. spawn_mob_in_map(int vnum, int count, bool is_aggro, int map_index, int x, int y) // [return lua number=count of the spawned mobs]
      69. get_table_postfix() // get table postfix [return lua string]

      70. mysql_direct_query(string query) // get the number of the affected rows and a table containing ‘em [return lua number, lua table]

      71. mysql_escape_string(string str) // escape <str> [return lua string]

      72. mysql_password(string str) // same as the sql function PASSWORD(<str>) [return lua string]

      73. map_allow_find(int mapIndex) // return if mapIndex is in MAP_ALLOW of the current game core [return lua number]

      74. chat_in_map0(int mapIndex, string message) // send a chat packet to everyone in map mapindex with the relative message [return nothing]

        chat_in_map // alias

      75. cmdchat_in_map0(int mapIndex, string message) // send a cmdchat packet to everyone in map mapindex with the relative message [return nothing]

        cmdchat_in_map // alias

      76. syschat_in_map0(int mapIndex, string message) // send a syschat packet to everyone in map mapindex with the relative message [return nothing]

        syschat_in_map // alias

      77. horse.set_stat0(int health, int stamina) // same as /do_horse_set_stat [return nothing]

        horse.set_stat // alias

      78. item.is_available0() // it checks whether the item.* functions are available or not [return lua boolean]

        item.is_available // alias

      79. item.get_wearflag0() // [return lua number]

        item.get_wearflag // alias

      80. item.has_wearflag0(int flag) // [return lua boolean]

        item.has_wearflag // alias

      81. item.get_antiflag0() // [return lua number]

        item.get_antiflag // alias

      82. item.has_antiflag0(int flag) // [return lua boolean]

        item.has_antiflag // alias

      83. item.get_immuneflag0() // [return lua number]

        item.get_immuneflag // alias

      84. item.has_immuneflag0(int flag) // [return lua boolean]

        item.has_immuneflag // alias

      85. item.add_attr0(…)

        item.add_attr // alias

      86. item.change_attr0(…)

        item.change_attr // alias

      87. item.clear_attr0(…)

        item.clear_attr // alias

      88. item.count_attr0(…)

        item.count_attr // alias

      89. item.get_attr0() // get a table containing all the item attrs {1,11,2,22,…,7,77} [return lua table]

        item.get_attr // alias

      90. item.set_attr0({1,11,2,22,…,7,77}) // use a table to set the item attrs [return nothing]

        item.set_attr // alias

      91. item.set_count(int count) // [return nothing]
      92. npc.is_available0() // it checks whether the npc.* functions are available or not [return lua boolean]

        npc.is_available // alias

      93. npc.get_level0() // [return lua number]

        npc.get_level // alias

      94. npc.get_name0() // [return lua string]

        npc.get_name // alias

      95. npc.get_pid0() // [return lua number]

        npc.get_pid // alias

      96. npc.get_vnum0() // [return lua number]

        npc.get_vnum // alias

      97. npc.select_vid0(int vid) // return the previous selected npc vid [return lua number]

        npc.select_vid // alias

      98. npc.talk(string msg) // a message above the npc head will appear for few seconds [return nothing]
      99. party.get_min_level() // [return lua number]
      100. party.leave_party() // [return lua boolean=successfulness]
      101. party.delete_party() // [return lua boolean=successfulness]
      102. oxevent.get_oxquiz_fn() // it returns the name of the oxquiz file to load [return lua string]
      103. oxevent.set_oxquiz_fn(string pathfile) // it sets the name of the oxquiz file to load starting from locale path [return nothing]
      104. oxevent.set_oxquiz_fn0(string pathfile) // it sets the name of the oxquiz file to load [return nothing]

        oxevent.set_oxquiz_fn_ex // alias

      105. quest.get_current_quest_name0() // [return lua string]

        quest.getcurrentquestname // alias

      106. dnd module with all the item.* functions for scrolls triggered by the when dnd begin event v5
      107. ...and many more...
    • filter_center_focus List of new commands (used by NEWSTUFF and/or few others)
      1. /add_rare_attr (like /add_attr)
      2. /change_rare_attr (like /change_attr)
      3. /click_safebox (open the safebox such as the mall)
      4. /force_logout (disconnect themselves)
      5. /big_notice (now global like /notice)
      6. /big_notice_map (big notice that works like /notice_map)
      7. /notice_test (notice printed only to the player himself)
      8. /big_notice_test (big notice printed only to the player himself)
      9. /set <name> <field> <value> (added ‘race’, ‘sex’ and ‘job’ fields + help list)
      10. /poison <name> (the specified player will get poison)
      11. /bleeding <name> (the specified player will get bleeding)
      12. /ipurge <inventory=inv|equip|ds|belt|all> (only if ENABLE_CMD_IPURGE_EX is enabled)
      13. /rewarp (rewarp yourself to the current position)
      14. /change_channel <channelID> (warp yourself to channelID) v5
    • filter_center_focus New server event flags:
      1. gold_drop_limit_time <time_in_secs> // the players will be able to drop a piece of yang/gold every XXX seconds as specified (default=0=no limits) (NB: by ymir)
      2. item_drop_limit_time <time_in_secs> // the players will be able to drop a piece of item every XXX seconds as specified (default=0=no limits)
      3. box_use_limit_time <time_in_secs> // the players will be able to open boxes every XXX seconds as specified (default=0=no limits)
      4. buysell_limit_time <time_in_secs> // the players will be able to buy/sell stuff every XXX seconds as specified (default=0=no limits)
      5. no_drop_metin_stone <0-1> // if enabled, metin stones won’t drop the default spiritual stones
      6. no_mount_at_guild_war <0-1> // if enabled, horses/mounts can’t be used inside guild war maps
      7. no_potions_on_pvp <0-1> // if enabled, all kind of potions and autopots can’t be used on pvp, except for the ones inside IsAllowedPotionOnPVP (by default: only blue potions and blue autopots will work)
    • filter_center_focus List of new adminpage commands:
      1. BIG_NOTICE <text> // like NOTICE <text>
    • filter_center_focus List of new skill_proto flags:
      1. PARTY // the skill will be applied to all the near party’s members, or just the player itself if alone
      2. ATTACK_BLEEDING // the skill will inflict the bleeding malus
    • filter_center_focus List of new miscellaneous things:
      1. Bandage (27124) item implemented
      2. Poison Bottle (27996) now poisons on use
      3. SpecialItemGroup “bleeding” type implemented
      4. /warp /transfer /item /mob will print arg1 in case of unsuccessfulness
      5. Added a system where you can’t inflict damage to stones from a different empire than yours
      6. tourmaline material and vein implemented
      7. USE_CHANGE_COSTUME_ATTR, USE_RESET_COSTUME_ATTR implemented
      8. Arena will have an additional potion using check for uncommon values
      9. You won’t be able to ride the horse in the arena
      10. No exp check when reading books when you’re already at the maximum level
      11. The classic notice when a war between guilds starts.
      12. A further check about the limit of attacking people in protect mode
      13. new command-line parameter -C <0/1> // it enables/disables checkpointing check (enabled by default)
      14. new Makefile option ENABLE_GCC_AUTODEPEND // if enabled, it uses the native gcc autodepend feature instead of the dependent makedepend
      15. ...and many more...
  • toll Client Sources
    
    • blur_circular General
      1. Currently compiling on Visual Studio 2022 (2019 supported too)
      2. 100% Translated
      3. Python upgraded to 2.7
      4. Granny version switchable amongst 2.4, 2.7, 2.8, 2.9, 2.11, 2.12 via define preprocessor (either dynamic or static)
      5. Compatibility with Cython (rootlib & uiscriptlib)
    • whatshot List of fixes: (the full explanation is written in the README.txt)
      1. /view_equip crash
      2. Skybox bottom pic
      3. Python >2.2 long overflow
      4. Added supplementary check for npc_pet (about new pets)
      5. “SEQUENCE mismatch 0xaf != 0x64 header 254” fix
      6. all the new mounts can now attack/skill if they should (like official)
      7. hyper link graphic issue with 6-7 bonuses
      8. crash issues when pasting non-text data (if you specifically enable ctrl+v in client)
      9. non-printing/control characters not more printed in the (chat) input (the ones you get when you press Ctrl+<key> in game)
      10. on arabic locales, the [HyperText code] (alias Prism code) not more editable pressing <Backspace>
      11. loop attack bug when you click a monster with a bow without having arrows
      12. regen.txt loading issue
      13. ShopEx data not cleared fix
      14. 800x600 res CREATE_NO_APPROPRIATE_DEVICE bug fix
      15. png format load fix
      16. npclist.txt new season shape syntax load fix
      17. GetCloseItem float vs2019 upgrade fix
      18. TChannelStatus offline channel status glitch fix
      19. unending damage packets fix
      20. invisible new boss skills fix
      21. custom mde files causing crashes fix
      22. wnd.TextSetFontColor glitch issue fix
      23. black screen fix
      24. invisible effects due to casesensitive fix
      25. dropshadow style starting client position glitch fix
      26. alt+key annoying sound fix
      27. mental strong body desync glitch fix
      28. stones not properly cleared glitch fix
      29. memory leaks for panama/hybrid types fix
      30. level position wrongly positioned fix
      31. horse infinite rotation when picking items fix
      32. stopped sounds played later muted fix
      33. ctrl+alt+canc glitch of blurred textured after recoverydevice fix
    • details List of defines:
      1. #define LOCALE_SERVICE_EUROPE //locale you want for locale.cpp
      2. #define ENABLE_COSTUME_SYSTEM //costume system [@warme666]
      3. #define ENABLE_ENERGY_SYSTEM //energy system [@warme666]
      4. #define ENABLE_DRAGON_SOUL_SYSTEM //dss system [@warme666]
      5. #define ENABLE_NEW_EQUIPMENT_SYSTEM //belt system [@warme666]
      6. #define ENABLE_PACK_GET_CHECK //enable py|pyc|txt check on pack.Get
      7. #define ENABLE_CANSEEHIDDENTHING_FOR_GM //enable gm to see invisible characters (both normal semi-transparent and gm invisibility)
      8. #define ENABLE_PROTOSTRUCT_AUTODETECT // if enabled, all the item_proto/mob_proto official structures (2007~2016) are automatically detected and supported without recompiling
      9. #define ENABLE_PLAYER_PER_ACCOUNT5 //enable 5 characters per account [@warme666]
      10. #define ENABLE_LEVEL_IN_TRADE //for localeInfo.EXCHANGE_TITLE with level
      11. #define ENABLE_TEXT_LEVEL_REFRESH //enable text tail level refresh when levelup
      12. #define ENABLE_DICE_SYSTEM //enable dice system: if the mob is king or boss and you're in party, the dropped item is randomly rolled [@warme666]
      13. #define ENABLE_EXTEND_INVEN_SYSTEM //enable 4 inventory pages [@warme666]
      14. #define ENABLE_LVL115_ARMOR_EFFECT //enable sparkle effect for 115 armors
      15. #define ENABLE_USE_COSTUME_ATTR //enable the items reset costume and enchant costume
      16. #define ENABLE_SLOT_WINDOW_EX //it will fix the refresh of the activated and cooltimed slots in the skill page (V) (except when switching to the equitation tab and vice versa)
      17. #define WJ_SHOW_MOB_INFO //enable mob info update for showing the mob lvl and the asterisk in name if aggro (ENABLE_SHOW_MOBAIFLAG and ENABLE_SHOW_MOBLEVEL)
      18. #define ENABLE_WOLFMAN_CHARACTER //enable wolfman features [@warme666]
      19. #define DISABLE_WOLFMAN_ON_CREATE //disable wolfman on create phase [@warme666]
      20. #define ENABLE_SEQUENCE_SYSTEM // enable sequence system [@warme666]
      21. #define ENABLE_MAGIC_REDUCTION_SYSTEM // enable resist magic reduction bonus [@warme666]
      22. #define ENABLE_MOUNT_COSTUME_SYSTEM // enable mount costume slot [@warme666]
      23. #define ENABLE_WEAPON_COSTUME_SYSTEM // enable weapon costume system [@warme666]
      24. #define ENABLE_PET_SYSTEM_EX // enable item pet without quest [@warme666]
      25. #define ENABLE_LOCALE_EX // it loads data from locale/ui and locale/ex
      26. #define ENABLE_NO_DSS_QUALIFICATION //disable dragon soul qualification [@warme666]
      27. #define ENABLE_NO_SELL_PRICE_DIVIDED_BY_5 // disable dividing the sell price by 5 [@warme666]
      28. #define ENABLE_PENDANT_SYSTEM // pendant equip implementation [@warme666]
      29. #define ENABLE_GLOVE_SYSTEM // glove equip implementation [@warme666]
      30. #define ENABLE_MOVE_CHANNEL // enable channel switch [@warme666]
      31. #define ENABLE_QUIVER_SYSTEM // enable quiver system [@warme666]
      32. #define ENABLE_RACE_HEIGHT // enable race_height.txt load
      33. #define ENABLE_ELEMENTAL_TARGET // enable elemental target
      34. #define ENABLE_INGAME_CONSOLE // enable the debug console back again by pressing "," if gm
      35. #define ENABLE_4TH_AFF_SKILL_DESC // enable the 4th affect skill desc
      36. #define AUTODETECT_LYCAN_RODNPICK_BONE // adjust fishrod/pickaxe attached bone for lycan to equip_right instead of equip_right_weapon
      37. #define ENABLE_NPC_WITHOUT_COLLISIONS // disable collisions for all npc (except doors)
      38. #define ENABLE_PETS_WITHOUT_COLLISIONS // disable collisions for pets
      39. #define ENABLE_SHOPS_WITHOUT_COLLISIONS // disable collisions for shops
      40. #define ENABLE_MOUNTS_WITHOUT_COLLISIONS // disable collisions for mounts
      41. #define ENABLE_FOG_LOAD // enable fog.tga load
      42. #define ENABLE_CRASH_MINIDUMP // it will generate a debuggable client\logs\metin2client_{version}_{date}.dmp file instead of "??????"
      43. #define ENABLE_CRC32_CHECK //mine: enable/disable crc32 check for type2
      44. #define ENABLE_LOAD_ITEM_LIST_FROM_ROOT //load item_list.txt from root
      45. #define ENABLE_NEW_ATLAS_MARK_INFO //read the new locale//map/_point.txt structure (files used for offline minimap npc rendering)
      46. #define ENABLE_NO_PICKUP_LIMIT //if enabled, there will be no 0.5s of delay when picking up items with keyboard (\\z)
      47. #define ENABLE_PYLIB_CHECK //check python lib files to prevent exploit before load them
      48. #define ENABLE_MILES_CHECK //check miles files to prevent mss32.dll exploit before load them
      49. #define ENABLE_SIMPLE_REFINED_EFFECT_CHECK // enable simple refine effect check (+7 blue, +8 green, +9 red) for any weapon/armor
      50. #define USE_WEAPON_COSTUME_WITH_EFFECT // enable refine effect for weapon costume
      51. #define USE_BODY_COSTUME_WITH_EFFECT // enable refine effect for body costume
      52. #define ENABLE_ATLASINFO_FROM_ROOT //read atlasinfo.txt from root instead of locale
      53. #define ENABLE_SKIN_EXTENDED //extended source/targetskin[2-9] inside .msm
      54. #define ENABLE_LOAD_ALTER_ITEMICON //load a default item icon if the one inside the item_list.txt is missing
      55. #define ENABLE_WALK_RUN_ANI_ALTERNATIVE //load run animation instead of walk if missing
      56. #define ENABLE_NO_MOUNT_CHECK //enable attack and skill from all horses/mounts
      57. #define ENABLE_ADDONTYPE_AUTODETECT //it autodetects the addontype field from already known vnums (compatibility 100%)
      58. #define ENABLE_NUMERIC_FIELD //txt protos now can read numbers instead of tags as well
    • filter_center_focus List of new python functions
      1. exchange.GetLevelFromSelf()
      2. exchange.GetLevelFromTarget()
      3. systemSetting.IsShowMobAIFlag()
      4. systemSetting.SetShowMobAIFlag(bool)
      5. systemSetting.IsShowMobLevel()
      6. systemSetting.SetShowMobLevel(bool)
      7. ...and many more...
    • filter_center_focus List of new miscellaneous things:
      1. new event motion types 11-12 workable
      2. tourmaline material and vein handling implemented
      3. USE_CHANGE_COSTUME_ATTR, USE_RESET_COSTUME_ATTR handling implemented
      4. ...and many more...
  • timeline Extras
    
    • blur_circular A clear and complete pack/root&uiscript:
      1. Based on the last official roots before being cythonized
      2. Compatibility with Cython (rootlib & uiscriptlib)
      3. Lycan implemented via app.ENABLE_WOLFMAN_CHARACTER
      4. 5th character per account implemented via app.ENABLE_PLAYER_PER_ACCOUNT5
      5. Level in trade implemented via app.ENABLE_LEVEL_IN_TRADE
      6. Costume System implemented via app.ENABLE_MOUNT_COSTUME_SYSTEM
      7. RESIST_MAGIC_REDUCTION implemented via app.ENABLE_MAGIC_REDUCTION_SYSTEM
      8. ENABLE_EXTEND_INVEN_SYSTEM implemented via app.ENABLE_EXTEND_INVEN_SYSTEM
      9. ENABLE_WEAPON_COSTUME_SYSTEM implemented via app.ENABLE_WEAPON_COSTUME_SYSTEM
      10. ENABLE_LVL115_ARMOR_EFFECT implemented via app.ENABLE_LVL115_ARMOR_EFFECT
      11. WJ_SHOW_MOB_INFO implemented via app.WJ_SHOW_MOB_INFO
      12. Additional constants inside constInfo.py:
        1. ENABLE_RANDOM_CHANNEL_SEL # don't set a random channel when you open the client
        2. ENABLE_CLEAN_DATA_IF_FAIL_LOGIN # don't remove id and password if the login attempt fails
        3. ENABLE_PASTE_FEATURE # ctrl+v will now work
        4. ENABLE_FULLSTONE_DETAILS # display all the bonuses added by a stone instead of the first one
        5. ENABLE_REFINE_PCT # enable successfulness % in the refine dialog
        6. EXTRA_UI_FEATURE # enable extra ui features
        7. NEW_678TH_SKILL_ENABLE # load 6th warrior / ninja skills (instead of app.NEW_678TH_SKILL_ENABLE)
        8. SELECT_CHAR_NO_DELAY.5 # change the 3sec delay while choosing a character in the select phase
        9. ENABLE_ACTIVE_PET_SEAL_EFFECT # enable active effect on pet seals
        10. ENABLE_RECURSIVE_UI_DESTROY # force clears everything inside the UI components
        11. ENABLE_CMDCHAT_VARIADIC_ARGS # enable variadic arguments in cmdchat functions
        12. ENABLE_SELF_STACK_SCROLLS # enable self stack of scrolls, etc
      13. General fixes:
        1. timeOutMsg error after login timeout fix
        2. shop_ex button pressed glitch with 3 buttons fix
        3. ds highlighting glitch fix
        4. mouse-select yang causing empty tooltips fix
        5. blank tooltip issues when the mouse-selected money is over some items
        6. missing info when uiscript script failed fix
        7. >mobs with shop signs above them fix
        8. Leadership skill (guide)’s tooltip fix
        9. /safebox close packet flooded fix
        10. moving equipped ds slots would automatically trigger unequipment fix
        11. item with no remain time shown fix
        12. last shout time miscalculated at rewarp fix
        13. minimap toggling failed fix
        14. mouseModule not cleared properly fix
        15. QuestCurtain memory leak fix
        16. AutoAppendTextLine miscalculating new width position fix
        17. EditLine.OnPressEscapeKey unfocused fix
        18. annoying focus when selecting servers fix
      14. List of new miscellaneous things:
        1. tourmaline material and vein implemented
        2. USE_CHANGE_COSTUME_ATTR, USE_RESET_COSTUME_ATTR handling implemented
        3. more precise logs will be printed in case of uiscript load failure
        4. Disk files should be loaded with old_open
        5. ...and many more...
    • blur_circular An official-compatible Client:
      1. All the duplicated files have been removed.
      2. lycan 100% implemented
      3. type 3-4-5 removed from patch2, and m2_patch_XXX packs
      4. it contains every asset the official client has until now
    • blur_circular Server-Files Scripts:
      1. A clean fixed version of data/ pc/monster files.
      2. A clean version of the databases account, common, log, player as .sql
      3. A clean version of the server scripts to start, clean, stop, generate the server structure as .sh/.py
      4. The Official mob_proto, and item_proto either .txt or .sql and in your preferable language!
      5. A clean and working test-server in which you can already login and start customizing your locale. (only minimal quests have been added inside)
      6. Clean backups scripts for fs/db that can be added in cronjob to perform automatic backups e.g. every hour or day
    • blur_circular Tools/DumpProto ReMIX:
      1. Clean
      2. Translated
      3. New types included (ds, belt, bleeding, wolfman, claws, etc)
      4. Unpack feature (it can re-extract the packed protos into .txt again!)
      5. General splitting issues fix (for mob_proto’s raceflag)
      6. All the item_proto/mob_proto official structures (2007~2016) are automatically detected and supported without recompiling (if ENABLE_PROTOSTRUCT_AUTODETECT is defined in Client)
      7. Load the tags via .json v10
      8. List of defines:
        1. ENABLE_ADDONTYPE_AUTODETECT // it autodetects the addontype field value when unpacking to make an item_proto.txt server-side 100% compatible
    • blur_circular Tools/Mysql2Proto:
      1. This this can directly pack/unpack the item/mob_protos using directly your mysql connection
      2. It can also generate .sql compatible files
      3. It keeps the whole proto structure server-side when packing client-side
    • blur_circular Tools/MSAMaker:
      1. Clean
      2. Usable for granny 2.4/2.7/2.8/2.9/2.11/2.12 models
      3. This tool is used to create the .msa of the .gr2 models, and it also generates the Accumulation parameter for all of them.
      4. This can be used to fix the relative error for the server-side data folder.
      5. It still requires file/system boost libraries compilation. (there’s a how-to file inside for it)
    • blur_circular Tools/PackMaker:
      1. Clean
      2. Translated
      3. Fixed EterPackLog null character printing
      4. Fixed hard-coded ignored path
    • blur_circular Tools/DBManager:
      1. Clean
      2. New types included (ds, belt, bleeding, wolfman, claws, etc)
      3. Fixed \n\nheader issue
      4. Fixed truncated fields issues
      5. Fixed vnum_range (automatically detected)
      6. Created a pan.sh to easily do a .txt-to-db and db-to-.txt proto conversion 100% lossless. Very easy and in just a second.
  • swap_calls ToS
    
    1. All the relative updates are automatically provided.
    2. At the moment of the payment, you can ask to receive one-time help to compile and setup your machine for such service, until the work provided is working as expected (no post-sell service is provided; even though it’s not an obligation, I usually answer free-of-charge in my free time)

      I usually provide the relative “help” using a “teamviewer/anydesk program like”, and you’re free to record the whole session. The interaction between us is usually made through Skype/Discord.

    3. If you’re a team/group of friends purchasing this service, I’ll interact with only one of you.
    4. Re-selling, or leaking part-or-all my work is forbidden; I can stop providing you any contact, service, updates if provided, and anything else on my whim.