Tested On:
Visual Studio Community 2022
Sql Server 2019 Standard
Windows 10 & 11 Professional
How to install:
Compile Lib folder, set the configuration to ReleaseDLL for Win32
Compile the game source, Set all to Release Win32
Restore the .bak files into SQL Server
Create your account using the included script.
Change constexpr char server [] = "DESKTOP-4L4C102"; to your SQL Server in Dekane.hpp
Change constexpr char password [] = "PASS"; to your SQL Password in Dekane.hpp
Compile and Boot Server
Some Notes:
Source upgraded to C17
ODBC and Database settings are in Dekane.hpp
Awakes are set to 3, but can easily be pushed to 5.
Players IP for admin access needs to be put into pmttd.ini
/ Uses des3 to encrypt the password for the db connections.
// The Encrypter project was renamed to des3Encrypter and
// Altered. Just run and convert password.
// Hardcodes db strings to avoid setting them through the
// .ini files, although, that is still possible with this
// type of system. It does skip ODBC.
Code:
#ifndef __VERSION_COMMON_H__
#define __VERSION_COMMON_H__
#pragma once
#if !defined( _DEBUG )
#define __MAINSERVER
#endif
#define __VER 21
#if !defined( __MAINSERVER )
#define __INTERNALSERVER
#endif
#define __S1108_BACK_END_SYSTEM
#define __VENDOR_1106
#define __SFX_OPT
#define __CPU_UTILDOWN_060502
// 16Â÷
#if __VER >= 16
#define __IMPROVE_MAP_SYSTEM // Çâ»óµÈ Áöµµ ½Ã½ºÅÛ
#define __GUILD_HOUSE_MIDDLE // ±æµåÇϿ콺 ÁßÇü
#define __BS_ADDOBJATTR_INVISIBLE // CObj Invisible ¿¡ °üÇÑ ¼Ó¼ºÃß°¡ --> 16Â÷ ¿¹Á¤
#define __BS_EFFECT_LUA // ¿ÀºêÁ§Æ® »óź° È¿°ú¿¬Ãâ ( Lua base ) : CLIENT ONLY!!!!! EVER!!! ABSOLUTE!!!
#define __BS_ADD_CONTINENT_WEATHER // ´ë·ú ³¯¾¾ Ãß°¡ ( ¿Â³È·Î ÀÎÇÑ Å¾糯¾¾, ´Ù¸¥ ¾î¶²ÀÌÀ¯·Îµç º¯ÇÏÁö ¾ÊÀ½ )
#define __BS_CHANGEABLE_WORLD_SEACLOUD // º¯°æ°¡´ÉÇÑ ¿ùµå ¹Ù´Ù±¸¸§
#define __ADDWEAPON_CROSSBOW16 // 16Â÷ Ãß°¡¹«±â Å©·Î½ºº¸¿ì
#define __SKILL_UI16 // 16Â÷ SKILL UI
#define __HYPERLINK_ITEM16 // ¾ÆÀÌÅÛ ¸µÅ©..
#define __ENCHANT_BARUNA16 // ½ÅÁ¦·Ã ( ¹Ù·ç³ª )
#define __AGGRO16 //¾î±×·Î
#endif
// 20Â÷
#if __VER >= 20
#define METEONYKER_SUBSUMMON // meteonyker¸ó½ºÅÍÀÇ ¼¹ö¸ó½ºÅÍ ¼Òȯ°¡´É
#define PARTY_WARP // PartyDungeon.lua¿¡ SetPartyWarp( 1 )·Î ¼ÂÆà ½Ã ÆÄƼ´ÜÀ§·Î ¿öÇÁ°¡´É
#define SCRIPT_ENTER_INSTANCEDUNGEON // ½ºÅ©¸³Æ®¿¡¼ ´øÀü ÀÔÀå
#define DAILY_QUEST // ÀÏÀÏ Äù½ºÆ® °ü·Ã
#define INVENTORY_GENERAL54 // Àκ¥Å丮 42->54
#define INVENTORY_ITEM_ALIGN // Àκ¥Å丮 ¾ÆÀÌÅÛ Á¤·Ä
#define CARD_UPGRADE_SYSTEM // Ä«µå ¾÷±×·¹ÀÌµå ½Ã½ºÅÛ
#define KEYBOARD_SET
//#define PAT_LOOTOPTION // Æê ¿É¼ÇÃß°¡
//#define NEW_GUILD_WINLOG // »õ·Î¿î ±æµå´ëÀü ½Â¸®ÀÚ
//#define SKILL_BUFF21 // ½ºÅ³¹öÇÁÁõ°¡ 14->21
//#define BARUNA_ULTIMATE_UPDATE // ¹Ù·ç³ª ¾óÅÍ¸Ú Ãß°¡
#define PASSWORD_RESET_2ND
#endif
#if __VER >= 21
#define PAT_LOOTOPTION // Æê ¿É¼ÇÃß°¡
#define SKILL_BUFF21
#define ADD_CHARACTER_INFO_DISPLAY
#define COSTUME_UPGRADE_ENHANCEMENT_GEM
#define COSTUME_UPGRADE_MIX
#define ADD_INVENTORY_EDGE
#define ENCHANT_ABSOLUTE_MIX
#define BATTERY_PREMIUM
// 21.2 Version
#define GUILD_WINNER_BUFF
#define BARUNA_UPGRADE_ENHANCEMENT_GEM
#define BARUNA_UPGRADE_SUIT_PIERCING
#define BARUNA_UPGRADE_SMELT_SAFETY
#define INVENTORY_PET_COSTUME42
#endif
#if defined(__INTERNALSERVER) // ³»ºÎ »ç¹«½Ç Å×½ºÆ®¼¹ö
// BEGIN ================================================== =====================================
// note: ´ÙÀ½ Àü󸮱â´Â ÁÖ¼®Ã³¸®°¡ µÇ¾îÀÖ´õ¶óµµ ¼Õ»óÀ» ÀÔÈ÷°Å³ª Äڵ忡¼ Á¦°ÅµÇ¼± ¾ÈµË´Ï´Ù. ( Only client )
// #define __YENV
// #define __YENV_WITHOUT_BUMP
// #define __Y_INTERFACE_VER3 // ÀÎÅÍÆäÀ̽º ¹öÀü 3.0 - Neuz
// #define __CSC_UPDATE_WORLD3D // World3D Object CullingºÎºÐ ¾÷µ¥ÀÌÆ®
// #define __FLYFF_INITPAGE_EXT
// #define __BS_DEATH_ACTION // die »óÅ·ΠÁøÀԽà ¿¬Ãâ È¿°ú
// #define __BS_CONSOLE
// END ================================================== =======================================
#ifndef NO_GAMEGUARD
#define NO_GAMEGUARD
#endif
// #define __CPU_UTILDOWN_060502 // CPU »ç¿ë·ü °¨¼ÒÀÛ¾÷ TODO ¿ä°Ç ¿Ö ³»ºÎ¸¸?
#define __SLIDE_060502 // ¶¥À¸·Î ²¨Áö´Â ¹®Á¦ ¼öÁ¤ TODO ¿ä°Ç ¿Ö ³»ºÎ¸¸?
#define __GUILDVOTE // ±æµå ÅõÇ¥
#define __IAOBJ0622 // »ó´ë ¸ñÇ¥ ÁÂÇ¥ Àü¼Û // ¿ùµå, ´ºÁî
#define __YNOTICE_UNI1026 // °øÁö»çÇ× À¯´ÏÄÚµå Áö¿ø
#define __SKILL0517 // ½ºÅ³ ·¹º§ ÆĶó¹ÌÅÍ
#define __TRAFIC_1218 // ¼¹ö¿¡¼ º¸³½ ÆÐŶ Á¤º¸
#define __Y_HAIR_BUG_FIX // TODO ÀÌ°Ç Å×½ºÆ® ¿ëÀΰ¡?
#define __GLOBAL_COUNT_0705 // CTime::GetTimer TODO ¿Ö »ç¿ë¾ÈÇÏÁö?
#define __ATTACH_MODEL // ¸ðµ¨¿¡ ´Ù¸¥ ¸ðµ¨ ºÙÀ̱â (³¯°³...)
#define __BS_ADJUST_COLLISION // Ãæµ¹ ·çƾ °³¼± ( 2009. 07. 28 )
// #define __USE_SOUND_LIB_FMOD // change the FMOD
// #define __BS_TEST_MTE
#elif defined(__MAINSERVER) // ¿ÜºÎ º»¼·
#endif // end - ¼¹öÁ¾·ùº° define
#ifndef NO_GAMEGUARD
#define __NPROTECT_VER 4
#endif
#endif // VERSION_COMMON_H
//================================================== ================================================== ================================================== ==========
//Note BEGIN
// ´ÙÀ½ÀÇ ±âÈ£´Â ÇØ´çÄڵ尡 ÁÖ¼®ÀÇ Àǹ̶ó´Â°ÍÀ» ¾Ë·ÁÁÝ´Ï´Ù. ( ÄÚµåÀÇ °£°á¼ºÀ» À§ÇØ #defineÀ» »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù )
// ÀÛ¾÷ ÆíÀǼº ¹× ´Ù¸¥ »ç¿ëÀÚ¸¦ À§ÇØ Â÷¼ö¿¡ »ó°ü¾øÀÌ »ç¿ëµË´Ï´Ù.
// _SUN_CHECKDATA_ , gmpbigsun( 20100705 ) : µ¥ÀÌÅÍ °ËÁõ ¹× ¿À·ù º¸¿Ï
// _SUN_LOCALIZE_WNDSTATUS , gmpbigsun( 20100727 ) : TileÀ» ¾²Áö¾Ê´Â À©µµ¿ì¿¡ ´ëÇؼ ÅëÂ¥À̹ÌÁö localizing
// _SUN_DEFAULT_WINDOW, gmpbigsun( 20100830 ) : ÃÖÃÊ ½ÇÇà½Ã â¸ðµå·Î
// _SUN_SKILLSFX_TO_LUA, gmpbigsun( 20100928 ) : // skill sfx -> lua ( ·çƾ°³¼±, XI_SKILL_ Á¦°Å ), PropSkill->sfxÇʵåµé »èÁ¦
// _SUN_PICKING_WITH_WND, gmpbigsun( 20101006 ) : ¿ÀºêÁ§Æ® ÇÇÅ· ½Ãµµ½Ã À©µµ¿ì°Ë»ç
// _SUN_RESPWANINFO_VER8, gmpbigsun( 20101012 ) : ¸®½ºÆù Á¤º¸ Ãß°¡( AI )
// _SUN_JAPAN_HANGAME_UI, gmpbigsun( 20101021 ) : ÀϺ» ÇÑ°ÔÀÓ À¯Àú UI±â´Éº¯°æ
// _JIN_SHOP_CART, flyingjin( 20101012 ) : 17Â÷ Àå¹Ù±¸´Ï ±¸Çö
// _JIN_ITEM_CANCELLATION, flyingjin( 20101109 ) : 17Â÷ ±Í¼ÓÇØÁ¦ ½ºÅ©·Ñ
// _JIN_NEW_INVENTORY, flyingjin( 201011010 ): 17Â÷ Àκ¥Å丮 È®Àå
// _JIN_NEW_BARUNA_PEARCING, flyingjin( 20101115 ) : 17Â÷ ¹Ù·ç³ª ÇǾî½Ì
// _JIN_ITEM_CHARGE, flyingjin( 20101221 ) : 17Â÷ ¾ÆÀÌÅÛÀ¯·áÈ
// _SUN_ENCHANT_EFFECT17, gmpbigsun( 20110116 ) : 17Â÷ ½Å Á¦·ÃÀÌÆåÆ®
// _JIN_COSTUME_MIX, flyingjin( 20110119 ) : 17Â÷ ÄÚ½ºÆ¬ÇÕ¼º
// _JIN_TELEPORT, flyingjin( 20110221 ) : 17Â÷ ÅÚ·¹Æ÷Æ® Áöµµ
// _SUN_RIDER_ANIMATION gmpbigsun( 20110328 ) : ¶óÀÌ´õ ¿¡´Ï¸ÞÀÌ¼Ç Ãß°¡
// _SUN_RENDER_QUESTEMOTICON gmpbigsun( 20110414 ) : Äù½ºÆ® À̸ðƼÄÜ ·»´õ( ij¸¯ÅÍ, ¹Ì´Ï¸Ê, Àüü¸Ê )
// _SUN_SEMI_INDOOR gmpbigsun( 20110414 ) : outdoor ¿Í °°À¸³ª ÀϺΠ( light¿ÀºêÁ§Æ®°°Àº )°¡ Àεµ¾îó·³ µ¿ÀÛ
// _JIN_WORLD_FREETICKET flyingjin( 20010628 ) : 18Â÷ À¯·áÁö¿ª ÀÚÀ¯ÀÌ¿ë±Ç
// _JIN_TREASURE_CHEST flyingjin( 20010712 ) : 18Â÷ º¸¹°»óÀÚ ¾ÆÀÌÅÛ
// _SUN_UPGRADE_WNDMANAGER gmpbigsun( 20110725 ) : CWndManager °³¼±
// _JIN_CHAR_SERVER_MOVEMENT flyingjin( 20110822 ) : ij¸¯ÅÍ ¼¹ö ÀÌÀü
// _SUN_CIRCLE_MINIMAP gmpbigsun( 20111020 ) : ¿øÇü ¹Ì´Ï¸Ê
//Note END
//================================================== ================================================== ================================================== ==========