Çözüldü martysama fixleri hakkında

  • Konuyu açan Konuyu açan TheAdmin33
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 1
  • Gösterim Gösterim 225
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

TheAdmin33

Ah, bu şarkıların gözü kör olsun
Geliştirici
Yardımsever Üye
Usta Üye
Editör
Mesaj
1.044
Çözümler
59
Beğeni
2.651
Puan
1.849
Ticaret Puanı
0
marty nin fileslarında yapmış olduğu fixleri @fixme olarak belirtiyor ama bu fixlerin açıklamaları, ne işe yaradıkları nerde yazıyor ?
 
Çözüm
orjinal martylerin içinde vardır o her konumda oluyor warezlerde bulamazsın

readme client:
Genişlet Daralt Kopyala
# README #

This README would normally document whatever steps are necessary to get your application up and running.

### What is this repository for? ###

* Quick summary
* Version
* [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)

### How do I get set up? ###

* Summary of set up
-Extract Extern.rar in ".\Srcs\"
-Open ".\Srcs\Extern\cryptopp\cryptlib.sln" and compile it
-Open ".\Srcs\Client\Metin2Client.sln" and compile it

@\Srcs\Extern\cryptopp is compiler-version based and should recompile with MT target option
>maybe without /GL and /LTCG should be fine too

* Configuration
@#PYTHON2 2.7
>in ".\Srcs\Extern\include\Python27"

@#GRANNY2...
orjinal martylerin içinde vardır o her konumda oluyor warezlerde bulamazsın

readme client:
Genişlet Daralt Kopyala
# README #

This README would normally document whatever steps are necessary to get your application up and running.

### What is this repository for? ###

* Quick summary
* Version
* [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)

### How do I get set up? ###

* Summary of set up
-Extract Extern.rar in ".\Srcs\"
-Open ".\Srcs\Extern\cryptopp\cryptlib.sln" and compile it
-Open ".\Srcs\Client\Metin2Client.sln" and compile it

@\Srcs\Extern\cryptopp is compiler-version based and should recompile with MT target option
>maybe without /GL and /LTCG should be fine too

* Configuration
@#PYTHON2 2.7
>in ".\Srcs\Extern\include\Python27"

@#GRANNY2 (granny2.11 by default)
>easy switch in ".\Srcs\Extern\include\granny.h" amongst granny2.4, 2.7, 2.8, 2.9, 2.11

@#GENERAL MACROS
#define __OBSOLETE__                    //useless and pointless code removed
#define __UNIMPLEMENTED__                //drafts of new things to be implemented

@\Srcs\Client\UserInterface\Locale_inc.h for ymir system implementations
>>default
#define LOCALE_SERVICE_EUROPE            //locale you want for locale.cpp
#define ENABLE_COSTUME_SYSTEM            //costume system    [@warme666]
#define ENABLE_ENERGY_SYSTEM            //energy system    [@warme666]
#define ENABLE_DRAGON_SOUL_SYSTEM        //dss system    [@warme666]
#define ENABLE_NEW_EQUIPMENT_SYSTEM        //belt system    [@warme666]
>>new macros
#define ENABLE_PACK_GET_CHECK            //enable py|pyc|txt check on pack.Get
#define ENABLE_CANSEEHIDDENTHING_FOR_GM    //enable gm to see invisible characters (both normal semi-transparent and gm invisibility)
#define ENABLE_PROTOSTRUCT_AUTODETECT    // if enabled, all the item_proto/mob_proto official structures (2007~2016) are automatically detected and supported without recompiling
#define ENABLE_PLAYER_PER_ACCOUNT5        //enable 5 characters per account    [@warme666]
#define ENABLE_LEVEL_IN_TRADE            //for localeInfo.EXCHANGE_TITLE with level
#define ENABLE_TEXT_LEVEL_REFRESH        //enable text tail level refresh when levelup
#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]
#define ENABLE_EXTEND_INVEN_SYSTEM        //enable 4 inventory pages    [@warme666]
#define ENABLE_LVL115_ARMOR_EFFECT        //enable sparkle effect for 115 armors
#define ENABLE_USE_COSTUME_ATTR            //enable the items reset costume and enchant costume
#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)
#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)
#define ENABLE_WOLFMAN_CHARACTER        //enable wolfman features    [@warme666]
#define DISABLE_WOLFMAN_ON_CREATE        //disable wolfman on create phase [@warme666]
#define ENABLE_SEQUENCE_SYSTEM            // enable sequence system    [@warme666]
#define ENABLE_MAGIC_REDUCTION_SYSTEM    // enable resist magic reduction bonus    [@warme666]
#define ENABLE_MOUNT_COSTUME_SYSTEM        // enable mount costume slot    [@warme666]
#define ENABLE_WEAPON_COSTUME_SYSTEM    // enable weapon costume system    [@warme666]
#define ENABLE_PET_SYSTEM_EX            // enable item pet without quest    [@warme666]
#define ENABLE_LOCALE_EX        // it loads data from locale/ui and locale/ex
#define ENABLE_NO_DSS_QUALIFICATION    //disable dragon soul qualification [@warme666]
#define ENABLE_NO_SELL_PRICE_DIVIDED_BY_5    // disable dividing the sell price by 5 [@warme666]
#define ENABLE_PENDANT_SYSTEM    // pendant equip implementation [@warme666]
#define ENABLE_GLOVE_SYSTEM    // glove equip implementation [@warme666]
#define ENABLE_MOVE_CHANNEL    // enable channel switch [@warme666]
#define ENABLE_4TH_AFF_SKILL_DESC    // enable the 4th affect skill desc

@\Srcs\Client\GameLib\ActorInstanceAttach.cpp
#define AUTODETECT_LYCAN_RODNPICK_BONE    // adjust fishrod/pickaxe attached bone for lycan to equip_right instead of equip_right_weapon

@\Srcs\Client\GameLib\ActorInstanceCollisionDetection.cpp
#define ENABLE_PETS_WITHOUT_COLLISIONS        // disable collisions for pets
#define ENABLE_SHOPS_WITHOUT_COLLISIONS        // disable collisions for shops
#define ENABLE_MOUNTS_WITHOUT_COLLISIONS    // disable collisions for mounts

@\Srcs\Client\GameLib\MapOutdoor.cpp
#define ENABLE_FOG_LOAD                // enable fog.tga load

@\Srcs\Client\EterLib\error.cpp
#define ENABLE_CRASH_MINIDUMP            // it will generate a debuggable client\logs\metin2client_{version}_{date}.dmp file instead of "??????"

@\Srcs\Client\EterPack\EterPack.cpp
#define ENABLE_CRC32_CHECK                //mine: enable/disable crc32 check for type2

@\Srcs\Client\UserInterface\PythonApplication.cpp
#define ENABLE_LOAD_ITEM_LIST_FROM_ROOT        //load item_list.txt from root

@\Srcs\Client\UserInterface\PythonMiniMap.cpp
#define ENABLE_NEW_ATLAS_MARK_INFO        //read the new locale/<lan>/map/<mapname>_point.txt structure (files used for offline minimap npc rendering)

@\Srcs\Client\UserInterface\PythonPlayer.cpp
#define ENABLE_NO_PICKUP_LIMIT        //if enabled, there will be no 0.5s of delay when picking up items with keyboard (\\z)

@\Srcs\Client\UserInterface\UserInterface.cpp
#define ENABLE_PYLIB_CHECK                //check python lib files to prevent exploit before load them
#define ENABLE_MILES_CHECK                //check miles files to prevent mss32.dll exploit before load them

@\Srcs\Client\UserInterface\InstanceBase.cpp
#define ENABLE_SIMPLE_REFINED_EFFECT_CHECK        // enable simple refine effect check (+7 blue, +8 green, +9 red) for any weapon/armor
#define USE_WEAPON_COSTUME_WITH_EFFECT            // enable refine effect for weapon costume
#define USE_BODY_COSTUME_WITH_EFFECT            // enable refine effect for body costume

@\Srcs\Client\UserInterface\PythonBackground.cpp
#define ENABLE_ATLASINFO_FROM_ROOT        //read atlasinfo.txt from root instead of locale

@\Srcs\Client\GameLib\GameLibDefines.h
>moved all to Locale_inc.h

@\Srcs\Client\GameLib\RaceDataFile.cpp
#define ENABLE_SKIN_EXTENDED            //extended source/targetskin[2-9] inside .msm

@\Srcs\Client\GameLib\ItemData.cpp
#define ENABLE_LOAD_ALTER_ITEMICON        //load a default item icon if the one inside the item_list.txt is missing

@\Srcs\Client\UserInterface\InstanceBase.cpp
#define ENABLE_NO_MOUNT_CHECK            //enable attack and skill from all horses/mounts

@\Srcs\Tools\DumpProto\dump_proto\dump_proto.cpp
#define ENABLE_ADDONTYPE_AUTODETECT                //it autodetects the addontype field from already known vnums (compatibility 100%)

@\Srcs\Tools\DumpProto\dump_proto\ItemCSVReader.cpp
#define ENABLE_NUMERIC_FIELD                //txt protos now can read numbers instead of tags as well

* Dependencies
@\Srcs\Extern.rar
>it contains all is needed

* Database configuration
* How to run tests
* Deployment instructions
-Debug and Release are for UserInterface.sln
-MfcDebug and MfcRelease are for WorldEditor.sln

### Contribution guidelines ###

* Writing tests
* Code review
#@@Globally
@warme601: use release as advanced distribute with syserr.txt and so on
@warme666: those features requires the same feature server-sidely otherwise you'll get random issues. (packets not correctly handled)
@warme667: on ScriptLib/StdAfx.h; AT has been unset before loading python include
@warme668: trivial errors will be treated as mere warnings (sys_err -> sys_log) (TraceError -> Tracenf)
@warme669: on UserInterface/PythonNetworkStreamPhaseGame.cpp; the packet receive will be increased from 4 to 8 (totally removing the limit will cause packet instability)
@warme670: on PythonApplication.cpp; the text in the error message was wrong


#@@Client
@warme001: AIL_startup responsible to load *.asi *.flt *.m3d *.mix
@warme002: comments to be cleaned if necessary


@fixme001: on UserInterface/Packet.h; for do_view_equip (WEAR_MAX_NUM: server 32, client 11) now equal (32 both sides)
@fixme002: on EterLib/GrpImageTexture.cpp, GrpImage.cpp; to show the name of the failed mapped .dds load
@fixme003: on PRTerrainLib/TextureSet.cpp; a new texture was added where the last was put
@fixme004: on PRTerrainLib/TextureSet.cpp; a new textureset index was -1 instead of 0
@fixme005: on EterLib/SkyBox.cpp; the bottom pic was not shown
@fixme006: on UserInterface/PythonNetworkStreamModule.cpp, PythonNetworkStreamPhaseGame.cpp; "SEQUENCE mismatch 0xaf != 0x64 header 254" fix
            This happens due to a bug on the TODO_RECV_SYMBOL phase when calling the __SendSymbolCRCList.
            That function will connect via MarkServer_Login and iterate m_kVec_dwGuildID to send sub-"HEADER_CG_SYMBOL_CRC" packets.
            If m_kVec_dwGuildID is 0, the server will never receive packets after logged in the MarkServer, and the connection won't be closed.
            When a connection is established, a ping_event will be triggered every 60 seconds.
            When the time will come, a ping packet will be send to the client, and the client will reply back with a pong one.
            In this case, the secondary marklogin connection would be asynchronous, and the packet sequence for the pong mismatched too.
            After the sequence error occurs, the marklogin connection will be finally closed.

            In few words, everytime someone logs in the server (after character selection),
            the syserr will get once the mismatch error after 60 seconds.
            The fix is to not establish a marklogin connection for TODO_RECV_SYMBOL if the m_kVec_dwGuildID is 0.
@fixme008: on EterLib/IME.cpp; Ctrl+V crash when pasting images&co (no checks whether the handle was NULL or not)
@fixme009: on UserInterface/PythonPlayerModule.cpp; player.GetItemLink wasn't considering 6-7 bonuses enough
            they could have been seen as 1-5 bonuses if the item didn't have 1-5 bonuses
@fixme010: on UserInterface/PythonCharacterManager.cpp; ymir forgot .m_dwVID in the format argument (c_rkCreateData -> c_rkCreateData.m_dwVID)
@fixme011: on EterLib/IME.cpp; non-printing/control characters were printed in the (chat) input (the ones you get when you press Ctrl+<key> in game)
@fixme012: on EterLib/TextTag.cpp; on arabic locales, the [HyperText code] (alias Prism code) could be edited pressing <Backspace>
@fixme013: on UserInterface/PythonPlayerModule.cpp; player.IsValuableItem was selecting a wrong item.cell
@fixme014: on UserInterface/PythonPlayerInput.cpp; if you (mouse) click a monster without having arrows, the automatic attack will go in loop (clicking on ground again will fix, but moving with WASD will be bad)
@fixme015: on GameLib/MapOutdoorLoad.cpp; regen.txt was loaded from launcher even though it's used only by the WorldEditor
@fixme016: on UserInterface/PythonShop.cpp; ShopEx data weren't cleared if normal shops were open
@fixme018: on EterLib/GrpDevice.cpp; on computers where 800x600 resolution has been removed, it would trigger "CREATE_NO_APPROPRIATE_DEVICE"
@fixme020: on ScriptLib/Resource.cpp; .png textures weren't listed
@fixme021: on GameLib/RaceManager.cpp; new npclist.txt autodetects season shape.msm automatically
@fixme022: on UserInterface/PythonItem.cpp; GetCloseItem distance calculation failed during float conversion (faraway items got distance 2 making them unpickable)
@fixme024: on UserInterface/Packet.h; TChannelStatus will always return the status offline any channel with ports higher than 32767.
@fixme025: on UserInterface/InstanceBase.h, InstanceBaseEffect.cpp; if you were to receive many damage packets, the damage queue will keep showing damange texts even after a while
@fixme026: on GameLib/RaceMotionDataEvent.h; backslashes were giving a wrong crc32 for the registered effects
@fixme027: on EffectLib/EffectMesh.cpp, EffectMeshInstance.cpp; custom mde files with no index vertex would trigger a crash
@fixme028: on EterPythonLib/PythonWindowManagerModule.cpp; wnd.TextSetFontColor had a signed/unsigned limit issue
@fixme029: on UserInterface/PythonApplication.cpp, EterGrnLib/ModelInstanceUpdate.cpp; black screen fix - effectmanager wasn't delecting expired effects, and granny wasn't updating the models
@fixme030: on EffectLib/EffectManager.cpp, GameLib/ActorInstance.cpp, GameLib/ActorInstanceAttach.cpp, GameLib/Area.cpp; the calculated crc32 will mismatch in case of uppercase letters
@fixme031: on UserInterface/PythonApplication.cpp; the dropshadow style in win10 and the bigger taskbar were causing boring issues
@fixme032: on UserInterface/PythonApplicationProcedure.cpp; ALT+key was triggering a windows system sound
@fixme033: on GameLib/ActorInstanceSync.cpp; there was a desync when a mental strong body was being attacked without moving (server-side respawn still glitched)


#@@Tools
#@/DumpProto
@fixme201: on ItemCSVReader.cpp; race splitted with | instead of ,


#@/Metin2PackMaker
@fixme301: on Main.cpp; The path ignored is always "d:/ymir work/sound/" instead of the chosen one
@fixme302: on Main.cpp; The directory ignored is always "CVS" instead of the chosen one


#@/Metin2MsaMaker
@fixme401: on Metin2MSAMaker.cpp; the accumulation wasn't calculated at all on model versions above 2.4


#@/General
@fixme501: on UserInterface/Packet.h; mob race word to dword
@fixme502: on UserInterface/Packet.h; character part word to dword


* Other guidelines
@\Srcs\Client\EterBase\Filename.h pseudo-fix to "successfully" compile
>needs rewriting (or simply fixing)

@\Srcs\Client\ScriptLib\PythonUtils.cpp with pseudo-long fix
#define PyLong_AsLong PyLong_AsLongLong
#define PyLong_AsUnsignedLong PyLong_AsUnsignedLongLong
>just this so it'll be 8 bytes instead of 4 for tuples
>an another way is just to change every color function with Py_xUnsigned instead of its Signed


### Who do I talk to? ###

* Repo owner or admin
martysama0134

readme server:
Genişlet Daralt Kopyala
# README #

### What is this repository for? ###

* Quick summary
* Version
* [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)
####
# git config --global http.sslVerify false
# git config --global credential.helper "cache --timeout=3600"
###
# git add -A
# git commit -m "base added"
### or
# git commit -am "files updated"
###
# git push
###
# git pull
####

### How do I get set up? ###

* Summary of set up
// mysql dep
# cd /usr/ports/databases/mysql56-client
# make WITH_XCHARSET=all install clean
## OR
# pkg install mysql56-client

// extern extract
# cd ./Srcs
# tar -xzf Extern.tgz

// cryptopp dep
# cd ./Srcs/Extern/cryptopp
# gmake libcryptopp.a -j4

//how to compile all-the-server (db+game+dep)
# cd ./Srcs/Server
# gmake all -j4

//how to compile just game (not necessary)
# cd ./Srcs/Server/game/src
# gmake -j4

//how to compile just db (not necessary)
# cd ./Srcs/Server/db/src
# gmake -j4

* Configuration
@#GENERAL MACROS
#define __OBSOLETE__                    //useless and pointless code removed
#define __UNIMPLEMENTED__                //drafts of new things to be implemented

@/Src/Server/common/CommonDefines.h
>>default
#define _IMPROVED_PACKET_ENCRYPTION_    //enable cryptopp mixed encryption for client<>server comunication
#define __PET_SYSTEM__            //enable traditional pet system
#define __UDP_BLOCK__
#define ENABLE_QUEST_CATEGORY        //enable quest category+new packet types (unimplemented)
>>systems
#define ENABLE_D_NJGUILD            //enable d.new_jump_all_guild+cpp relative functions (untested)
#define ENABLE_NEWSTUFF                //enable new stuff (new lua funcs, new CONFIG options, ecc)
#define ENABLE_FULL_NOTICE            //enable new big notice features
#define ENABLE_PORT_SECURITY        // block db_port, p2p_port, and remote adminpage exploits
#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
#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)
#define ENABLE_USE_COSTUME_ATTR        // enable the items reset costume and enchant costume
#define ENABLE_ITEM_ATTR_COSTUME    // enable costume_hair, costume_body, costume_weapon item_attr/_rare parts
#define ENABLE_SEQUENCE_SYSTEM        // enable sequence system
#define MAP_ALLOW_LIMIT <int>        // define how many maps are allowed per game core (default 32)
#define ENABLE_PLAYER_PER_ACCOUNT5    // enable 5 characters (per account) in the select phase (instead of 4)
#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
#define ENABLE_EXTEND_INVEN_SYSTEM    //enable 4 inventory pages
#define ENABLE_MOUNT_COSTUME_SYSTEM        // enable mount costume slot
#define ENABLE_WEAPON_COSTUME_SYSTEM    //enable weapon costume slot
#define ENABLE_PET_SYSTEM_EX            // enable item pet without quest    [@warme666]
#define ENABLE_SKILL_FLAG_PARTY        //enable skill flag party (separated from lycan define)
#define ENABLE_NO_DSS_QUALIFICATION    //disable dragon soul qualification [@warme666]
#define ENABLE_NO_SELL_PRICE_DIVIDED_BY_5    // disable dividing the sell price by 5 [@warme666]
#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
#define ENABLE_GOTO_LAG_FIX    // it force-clears the entities when switching sectree
#define ENABLE_MOUNT_COSTUME_EX_SYSTEM    //mount load via item_proto with APPLY_MOUNT (118) bonus like official
#define ENABLE_PENDANT_SYSTEM    // pendant equip implementation
#define ENABLE_GLOVE_SYSTEM    // glove equip implementation
#define ENABLE_MOVE_CHANNEL    // enable channel switch
>>lycan
#define ENABLE_WOLFMAN_CHARACTER    // enable wolfman character and the relative new features (claws, bleeding and so on) [@warme666]
#define DISABLE_WOLFMAN_ON_CREATE    // disable wolfman on create phase [@warme666]
#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
#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
#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
#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
#define USE_WOLFMAN_STONES            // if enabled, lycan stones can be dropped from the metin stones
#define USE_WOLFMAN_BOOKS            // if enabled, lycan skill books can be dropped
>>magic reduction stone
#define ENABLE_MAGIC_REDUCTION_SYSTEM    // enable resist magic reduction bonus
#define USE_MAGIC_REDUCTION_STONES    // enable resist magic reduction stone drops from metins

@/Src/Server/db/src/ClientManager.h
#define ENABLE_PROTO_FROM_DB        //read protos from db if "PROTO_FROM_DB = 1" is specified inside conf.txt
                                    //mirror protos to db if "MIRROR2DB = 1" is specified inside conf.txt

@/Src/Server/db/src/ClientManager.cpp
#define ENABLE_DEFAULT_PRIV            //enable default priv loading from common.priv_settings
#define ENABLE_ITEMAWARD_REFRESH    //enable a select query every 5 seconds into player.item_award

@/Src/Server/db/src/ClientManagerBoot.cpp
#define ENABLE_AUTODETECT_VNUMRANGE    //if protos are loaded from db, it will automatically detect the vnum range for ds items

@/Src/Server/db/src/ProtoReader.cpp
#define ENABLE_NUMERIC_FIELD    //txt protos now can read numbers instead of tags as well

@/Srcs/Server/game/src/stdafx.h
>moved to CommonDefines.h

@/Srcs/Server/game/src/stdafx.h
#define ENABLE_LIMIT_TIME            //enable game timestamp expiration

@/Srcs/Server/game/src/guild.h
#define ENABLE_NEWGUILDMAKE            //enable pc.make_guild0 and disable CInputMain::AnswerMakeGuild

@/Srcs/Server/game/src/horse_rider.h
#define ENABLE_INFINITE_HORSE_HEALTH_STAMINA    // full horse health and stamina all the times

@/Srcs/Server/game/src/quest.h
#define ENABLE_QUEST_DIE_EVENT        //add quest event "die"
#define ENABLE_QUEST_BOOT_EVENT        //add quest event "boot"
#define ENABLE_QUEST_DND_EVENT        //add quest event "dnd"

@/Srcs/Server/game/src/config.cpp
#define ENABLE_CMD_PLAYER            //enable PLAYER grade inside CMD
#define ENABLE_EXPTABLE_FROMDB        //read the exp table from the db
#define ENABLE_AUTODETECT_INTERNAL_IP    //autodetect internal ip if the public one is missing
#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"
#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"
                                    //in the GENERAL_CONFIG, all the options are valid except: HOSTNAME, CHANNEL, PLAYER_SQL, COMMON_SQL, LOG_SQL, PORT, P2P_PORT, MAP_ALLOW, AUTH_SERVER, TEEN_ADDR, TEEN_PORT

@/Srcs/Server/game/src/char_resist.cpp
#define ENABLE_IMMUNE_PERC            //enable 90% of success instead of 100% regarding immunes (antistun/slow/fall)

@/Srcs/Server/game/src/item.cpp
#define ENABLE_IMMUNE_FIX            //fix immune bug where you need to equip shield at last (or refresh compute e.g. un/riding horse)

@/Srcs/Server/game/src/item_manager.h
#define ENABLE_ITEM_PROTO_MAP            //improves GetTable load by O(1)

@/Srcs/Server/game/src/db.cpp
#define ENABLE_SPAMDB_REFRESH            //enable a select query every 10 minutes into common.spam_db

@/Srcs/Server/game/src/questlua.cpp
#define ENABLE_TRANSLATE_LUA            //enable translate.lua loading
#define ENABLE_QUESTLIB_EXTRA_LUA        //enable questlib_extra.lua loading

@/Srcs/Server/game/src/questlua_dungeon.cpp
#define D_JOIN_AS_JUMP_PARTY            //d.join will internally work as d.new_jump_party

@/Srcs/Server/game/src/questlua_pc.cpp
#define ENABLE_LOCALECHECK_CHANGENAME    //enable check that unable change name on Europe Locales
#define ENABLE_PC_OPENSHOP                //enable pc.open_shop0(idshop) but buy/sell not work yet

@/Srcs/Server/game/src/shop.cpp
#define ENABLE_SHOP_BLACKLIST        //enable ignore 70024 (Blessing Marble) and 70035 (Magic Copper Ore)

@/Srcs/Server/game/src/cmd.cpp
#define ENABLE_BLOCK_CMD_SHORTCUT    //if enabled, people won't be able to shorten commands

@/Srcs/Server/game/src/cmd_gm.cpp
#define ENABLE_STATPLUS_NOLIMIT            //disable only 90 points for con+/int+/str+/dex+ commands
#define ENABLE_SET_STATE_WITH_TARGET    // enable set_state target as 3rd arg
#define ENABLE_CMD_IPURGE_EX            // /ipurge 2nd arg can remove items from a specific window (inv/equip/ds/belt/all)

@/Srcs/Server/game/src/char_skill.cpp
#define ENABLE_FORCE2MASTERSKILL    //skill always pass to m1 when b17 instead of b(number(17-20))
#define ENABLE_NO_MOUNT_CHECK        //check whether horse mount vnum should be checked when skilling
#define ENABLE_NULLIFYAFFECT_LIMIT    //sura skill 66 won't nullify players with level < or > of yours by 9
#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

@/Srcs/Server/game/src/char_item.cpp
#define ENABLE_FIREWORK_STUN        //enable stun affect when using firework items
#define ENABLE_ADDSTONE_FAILURE        //enable add stone failure
#define ENABLE_EFFECT_EXTRAPOT        //enable extrapot effects when using green/purple potions
#define ENABLE_BOOKS_STACKFIX        //enable stackable books instead of remove all the pile
#define ENABLE_ITEM_RARE_ATTR_LEVEL_PCT    //enable 1-5 level pct for item rare attr add/change

@/Srcs/Server/game/src/char_battle.cpp
#define ENABLE_NEWEXP_CALCULATION    //recalculate exp rate so you won't get random negative exp/marriage points
#define ENABLE_EFFECT_PENETRATE        //enable penetrate effect when performing a penetration
#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)

@/Srcs/Server/game/src/char.h
#define NEW_ICEDAMAGE_SYSTEM        //add new system for nemere dungeon and so on
#define ENABLE_ANTI_CMD_FLOOD        //limit player's command execution to 10 commands per second, otherwise it'll be disconnected!
#define ENABLE_OPEN_SHOP_WITH_ARMOR    //if enabled, people can open a personal shop with the armor equipped
#define ENABLE_SKILL_COOLDOWN_CHECK    //if enabled, it will add a check on the skill usage to prevent some damage hacks

@/Srcs/Server/game/src/char.cpp
#define ENABLE_SHOWNPCLEVEL                    //show Lv %d level even for NPCs (not applicable on mob/stone/warp)
#define ENABLE_GOHOME_IF_MAP_NOT_ALLOWED    //you'll go back to your village if you're not allowed to go in that map
#define ENABLE_GM_FLAG_IF_TEST_SERVER        //show the gm flag if it's on test server mode
#define ENABLE_GM_FLAG_FOR_LOW_WIZARD        //show the gm flag for low wizard too
#define ENABLE_MOUNT_ENTITY_REFRESH            //it will refresh entities when riding/unriding (it's also a quick work-around when the client desyncs)

@/Srcs/Server/game/src/input_db.cpp
#define ENABLE_GOHOME_IF_MAP_NOT_EXIST            //you'll go back to your village if the map doesn't exist

@/Srcs/Server/game/src/guild.cpp
#define ENABLE_GUILD_COMMENT_ANTIFLOOD            //prevent flood in guild comments

@/Srcs/Server/game/src/mining.cpp
#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.

@/Srcs/Server/game/src/fishing.cpp
#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.

@/Srcs/Server/game/src/questmanager.cpp
#define ENABLE_PARTYKILL            //re-enable PartyKill

@/Srcs/Server/game/src/input_auth.cpp
#define ENABLE_ACCOUNT_W_SPECIALCHARS    //enable special characters in account names (account.account.login)

@/Srcs/Server/game/src/input_main.cpp
#define ENABLE_CHAT_COLOR_SYSTEM        //enable chat colors based on IsGm or GetEmpire (+colored empire name)
#define ENABLE_CHAT_SPAMLIMIT            //limit chat spam to 4 messages for 5 seconds, if you spam it for 10 times, you'll be disconnected!
#define ENABLE_WHISPER_CHAT_SPAMLIMIT    //limit whisper chat to 10 messages per 5 seconds, otherwise you'll be disconnected!
#define ENABLE_CHAT_LOGGING                //enable chat logging (which saves all the gm chats)
#define ENABLE_CHECK_GHOSTMODE            //enable check that blocks the movements if the character is dead
#define ENABLE_TP_SPEED_CHECK            //enable speed check teleport back

@/Srcs/Server/game/src/input_login.cpp
#define USE_LYCAN_CREATE_POSITION        // if enabled, the lycan will be warped to his own village at character creation

@/Srcs/Server/game/src/PetSystem.cpp
#define ENABLE_ACTIVE_PET_SEAL_EFFECT        // it will activate the pet slot if it's active


@/Src/Server/game/src/quest/qc.cc
#define ENABLE_WHEN_PARENTHESIS        //it enables () [] usage in the when cause for the quest file


* Dependencies
@/Srcs/Extern/include/boost
@/Srcs/Extern/include/cryptopp
@/Srcs/Extern/include/IL
@/Srcs/Extern/lib:
    libIL.a            //from DevIL
    libcryptopp.a    //from cryptopp
    libjasper.a
    libpng.a
    libtiff.a
    libjbig.a
    libmng.a
    liblcms.a
    libjpeg.a
@/usr/lib/liblzma.a    //or lib32

* Database configuration
* How to run tests
* Deployment instructions

### Contribution guidelines ###

* Writing tests
* Code review
#@general
@warme001: be aware about PLAYER_MAX_LEVEL_CONST (common/length.h) and gPlayerMaxLevel (game/config.h)
@warme002: be aware about ITEM_MAX_COUNT (common/item_length.h) and g_bItemCountLimit (game/config.h)
@warme003: do_click_safebox can be used by PLAYER in every map!
@warme004: `when vnum.kill begin` and `when kill begin` are both triggered
@warme005: different locale stuff
@warme006: not implemented stuff from another locale
@warme007: on db/src/ClientManager.cpp; commented locale set from common.locale due to its uselessness and bugginess (./close && ./start)
            it processes a NULL mysql connection (dat ymir threading) if there was a bit of overload before starting the process up again
@warme008: on char_item.cpp; now 27996 (poison bottle) can inflict poison
@warme009: on char_resist.cpp; if bleeding is used as poison, the bleeding enchantment is poison enchantment/50 (so mobs can bleed players)
@warme010: on char_state.cpp; test_server is used as "BOOL g_test_server"
@warme011: on dungeon.cpp; you should never use d.join instead of d.new_jump_party since it causes random crashes due to a wrong implementation of the party hash check
@warme012: trivial errors are now considered as simple logs
@warme013: unneccessary errors are now simply commented
@warme014: wrong lua return arguments number
@warme015: increased buffer size for prevention
@warme016: improved info in the relative print

#@common
@fixme400: on tables.h; TPlayerTable hp/mp from short to int (hp/mp >32767 should be fixed)

#@db/src
@fixme201: on ProtoReader.cpp; changed 'SAMLL' into 'SMALL'
@fixme202: on ClientManagerGuild.cpp; fixed the guild remove member time issue if the player was offline
            (withdraw_time -> new_withdraw_time)
@fixme203: on ClientManagerPlayer.cpp; dandling pointer for "command"
@fixme204: on Cache.cpp; myshop_pricelist primary key duplication error if there are many items of the same vnum in the personal shop
@fixme205: on Cache.cpp, ClientManager.cpp; "replace into item" was deleting any foreign keys pointed to player.item

#@game/src
@fixme101: on log.cpp; fixed '%s' for invalid_server_log
@fixme102: on cmd_general.cpp; inside ACMD(do_war) fixed the unsigned bug
@fixme103: on config, input_login, input_main.cpp; fixed clientcheckversion (version > date) to (version != date) and delay from 10 to 0
@fixme104: on char.cpp, questlua_pc.cpp; fixed get status point after lv90 changing 90 with gPlayerMaxLevel
@fixme105: on cmd.cpp; disabled every korean command
@fixme106: on input_main.cpp; if a full-speeded player is on a mount (es. lion), he'll be brought back due to the distance range
@fixme107: on char_battle.cpp; if character (player|mob) has negative hp on dead, sura&co will absorb hp/mp losing 'em themselves
@fixme108: on char.cpp; if you change a mount but the previous is not 0, all the entities (npcs&co) in the player client
            (not others) are vanished until another refresh (not exists mounts still bug you after second mount call)
@fixme109: on questmanager.cpp; if you kill a player (war m), `when kill begin` will be triggered twice
@fixme110: on char_affect.cpp; if you attack when semi-transparent (revived or ninja skill or white flag) you'll still be transparent
@fixme111: on test.cpp; ConvertAttribute2 has x and y inverted (before y->x after x->y)
@fixme112: on char_item.cpp; you can change bonuses in equipped items too (until re-login)
            bonus values will not be refreshed by ChangePoint and unequipping it will remove back only the new bonuses set on
            e.g. you had a 2500hp bonus shoes, you changed it to 50mp when equipped and you'll unequipped
                what will it happen? instead of remove 2500hp, you won't receive 50mp and you also lose 50mp when unequipped
@fixme113: on char_item.cpp; same thing of #112
            you can remove stones from equipped items w/o losing bonuses
            e.g. have an item with antiwar+4 equipped:
                    1) remove all the stones 2) unequip it 3) re-add stone 4) re-equip it 5) repeat it thrice
                result? an item with no stones but you'll have 75% of antiwar
@fixme114: on char_item.cpp; gathering of #111, #112 and few others.
@fixme115: on char_item.cpp; you can retrieve all the item on the ground if you're in a party and the owner is not in yours.
@fixme116: on char_skill.cpp; normal horse mount skills cannot inflict damage
@fixme117: on char_item.cpp; you can't swap equipment from inventory if full, and also prevent unmotivated belt swap if its inventory is not empty
@fixme118: on char.cpp; when ComputePoints is called:
            you'll gain as many hp/mp as many you have in your equipment bonuses
            affect hp/mp will be lost when login or updating
@fixme119: on input_main.cpp; you can put items from safebox/mall to belt inventory w/o checking the type (items with size>1 are not placeable anyway)
@fixme120: on input_login.cpp; few packet IDs not checked
@fixme121: on char_item.cpp; the refine scroll item value 1 from the magic stone was generating useless syserrs
@fixme122: on arena.cpp; few other potions were not checked on arena map
@fixme123: on char_item.cpp; USE_CHANGE_ATTRIBUTE2 (24) sub type check bug (the condition could never be true)
@fixme124: on char_item.cpp; no check on 6-7 add/change items about costume stuff
@fixme125: on char.cpp; dungeon regen pointing to a dangling pointer (not required -> removed)
@fixme126: on marriage.cpp; fix lovepoints overflow
@fixme127: on cube.cpp; /cube r_info exploit fix; it can cause a crash due to an unchecked cube npc masters vnums
            e.g. 1) you open the Baek-Go cube's console 2) click on an npc/kill a mob without close the cube console
                3) digit /cube r_info 4) crash core
@fixme128: on char.cpp; mining hack fix; you can mine a vein anywhere in the map because there's no check on the character
            which means, you can stay at 0x0y and mining a vein in 666x999y and get the stuff beside him or in the pc's inventory
@fixme129: on PetSystem.cpp; the azrael pets (53005->34004 normal/53006->34009 gold) don't give the buff if not in dungeon at summon up and remove them anyway when unsummoned
@fixme130: on messenger_manager.cpp; and cmd_general.cpp if you do /messenger_auth n XXX, the player with the name XXX will receive a "refused friend invite" print from you
            which means, if you flood this packet, the "victim" will be disconnected or at maximum could get lag
@fixme131: on char.cpp; fix annoying sync packets sendable even on unfightable pc/npc entities
            e.g. wallhack against players' shops inside the village's squares (where the NOPK attr is set) to move them out and kill them
@fixme132: on shop.cpp; if two people buy the same item at the same time from a pc's shop, the slower one will receive a wrong return packet (crash client)
@fixme133: on input_main.cpp; banword check and hyper text feature were processing the final chat string instead of the raw one
@fixme134: on questlua_pc.cpp; the pc.mount_bonus was addable even if the mount wasn't spawn (only /unmount pc.unmount can remove it)
@fixme135: on char.cpp; if the Sync is made before a move packet and the sectree differs of few x/y coordinates, the sectree will be changed without update (crash character) (troublesome -> removed)
@fixme136: on char.cpp; there are no checks about the zero division exception: e.g. if you set a mob's max hp to 0 in the mob proto, you'll get random crashes.
@fixme137: on char_battle.cpp; when a player dies, the HP could have a negative value. Now it's 0 like the official.
@fixme138: on db.cpp, input_auth.cpp; the account's password was shown in the mysql history queries as clear text at every login attempt (mysql full granted user required -> now hashed)
@fixme139: on shop.h; CShop class destructor wasn't virtual. If a derived class like CShopEx was deleted, a memory leak would have been generated.
@fixme140: on input_main.cpp; the belt could be put into the safebox even though the belt inventory isn't empty.
@fixme141: on char_item.cpp; the items in the belt inventory could be used even if their slot were not available
@fixme142: on messenger_manager.cpp; sql injection fix about net.SendMessengerRemovePacket
@fixme143: on guild_manager.cpp; sql injection fix about net.SendAnswerMakeGuildPacket
@fixme144: on sectree_manager.cpp; if map/index doesn't end with a newline, the game will crash
@fixme145: on input_main.cpp; guild_add_member can add any vid as guild's member even if it's a mob or an npc
@fixme147: on char_item.cpp; ramadan candy item can be used even if the relative affect is still up
@fixme148: on item_manager_read_tables.cpp; type quest, special, attr not handled in ConvSpecialDropItemFile
@fixme149: on char.cpp; refine material skip exploit if items are swapped
@fixme150: on exchange.cpp; char_item.cpp; prevent item module swapping if the quest is suspended
@fixme152: on questlua_pc.cpp; pc.get_special_ride_vnum was checking socket2 instead of socket0
@fixme153: on threeway_war.cpp; kills made of people over lvl99 weren't counted
@fixme154: on cmd_gm.cpp; the /all_skill_master command will now set the right amount of points to the sub skills
@fixme156: on char_affect.cpp; prevent doubling the affect values before they are loaded (such as pc.mount_bonus at login; because the quest is loaded before the quests)
@fixme157: on OxEvent.cpp; the attender list wasn't cleared after stopping the ox event
@fixme158: on input_main.cpp; the deviltower refiner won't set the flag to 0 anymore if you have no money, and it will decrease it by 1 for allowing multiple refine attempts
@fixme159: on exchange.cpp; when exchanging, a wrong check in the ds items was not allowing the exchange due to "not enough space in ds inventory" if the first sub ds inventory slot was not empty
@fixme160: on DragonSoul.cpp; when removing a ds stone, if the destination slot wasn't empty, the ds item in there would have been replaced and lost
@fixme168: on questevent.cpp; if the quest info name is already null, the std::string constructor will throw an exception
@fixme169: on char_item.cpp; missing checks for mythical peach like a second vnum and nullptr
@fixme170: on item.cpp; missing condition on special mineral slots for just 2 bonuses
@fixme171: on dungeon.cpp; FCountMonster was also counting horses and pets
@fixme172: on dungeon.cpp; FNotice was sending ChatPackets to even non-player characters
@fixme173: on item.cpp; by pressing \\z to pick up items, sometimes, it would fail due to far distance
@fixme174: on questmanager.cpp; in case of quest error in server_timer, it would try to print the error to the current player causing a core crash
@fixme177: on cmd_gm.cpp; /priv_guild snprintf had an empty format
@fixme179: on ClientManagerBoot.cpp, ProtoReader.cpp; the item size with 0 length will cause game cores
@fixme180: on cmd_general.cpp; /costume will cause game core crashes if the relative costume bonus ids aren't present inside fn_string or have no %d
@fixme182: on input_login.cpp; you'd get no horse level if you relogged in with no job set
@fixme183: on input_main.cpp, messenger_manager.cpp; player rename wasn't clearing the previous nickname from the friendlist
@fixme184: on length.h; some slots of the dragon soul inventory weren't working properly
@fixme185: on ClientManagerBoot.cpp; the material count var isn't initialized and cause crashes on certain circumstances
@fixme186: on item.cpp; the ClearMountAttributeAndAffect without owner would trigger a core crash
@fixme187: on input.cpp; the input buffer will keep increasing until it saturates the ram if people keep sending broken packets
@fixme188: on char.h, questlua_npc|dungeon|global.cpp, dungeon.cpp; the scripted npc->Dead() was triggering player rewards if the mob was previously damaged
@fixme189: on item_manager.cpp; the Stones array had an out of range error
@fixme190: on input_login.cpp; exploit by accessing non-existing players
@fixme191: on safebox.cpp; switching safebox size level was causing a memory leak
@fixme192: on char_battle.cpp; the deathblow wasn't affecting warrior and wolfman races
@fixme193: on guild_manager.cpp; observer players can be killed to increment the guild war kills
@fixme194: on char_battle.cpp; mobs killed in non attackable zones weren't dropping yangs/items
@fixme195: on regen.cpp; missing 'ma' 'ra' 'sa' handling regen type
@fixme196: on char_item.cpp; possible item duplication bug while moving splitted items onto the same slot
@fixme197: on cmd_general.cpp; stucked connections while fully quitting from game would leave the character online
@fixme198: on char_battle.cpp; karma drop duplication bug: the dropped item gets duplicated after warping to another game core
@fixme199: on char.h, char.cpp, char_item.cpp, char_quickslot.cpp; the mobs were allocating unused memory
@fixme300: on cmd_gm.cpp; /full and /ipurge were causing a glitch in the status page by having negative status
@fixme301: on input_main.cpp, char.cpp; leaders and party members can leave the party while being on other channels
@fixme302: on questpc.cpp; HEADER_GC_QUEST_INFO had a wrong calculated size
@fixme303: on item_manager_read_tables.cpp; the load of items had O(n) complexity for each vnum of any Group


#@/Server (general)
@fixme401: fixed the guild disband time issue
        on db/src/ClientManagerGuild.cpp
            (withdraw_time -> new_disband_time)
        on game/src/guild.cpp
            (new_withdraw_time -> new_disband_time)
@fixme402: fixed the usage of the affect system before its loading
        on game/src/char_item.cpp
            added an IsAffectLoaded check when using an item
@fixme403: fixed player.myshop_pricelist corrupted data
        on db/src/ClientManager.cpp; db/src/ClientManager.h; game/src/char.cpp
            TPacketMyshopPricelistHeader to TItemPriceListTable

#@/General
@fixme501: on game/src/char.h, game/src/char.cpp, game/src/packet.h; mob race word to dword
@fixme502: on common/tables.h, game/src/packet.h; character part word to dword


* Other guidelines

## Trick to replace ALUA macro (notepad++) for all questlua*.cpp files (CTRL+F)
# Find (Search Type -> Regular Expression)
int[ \t]*([A-Za-z0-9\_]+)[ \t]*\([ \t]*lua_State[ \t]*\*[ \t]*[\/\*]*L[\*\/]*[ \t]*\)
# Replace with (File -> Save all) [26 files, 621 replaces]
ALUA\($1\)

### Who do I talk to? ###

* Repo owner or admin
martysama0134
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst