Hi guys,
Metin2 programming was kinda of a fun hobby for me. I've been working on this source files for about 10 months, but I have now more projects and academic work ahead of me, so I kinda won't have the time anymore to play with it. I was going to delete it today, but thought of sharing it first, it could help someone out there.
It's not a great source code, but every problem I have encountered, I solved it. Here is a list of the things I've done (which I remember, there could be more):-
Server Side:
- All upgrading scrolls are activated and working probably
- Devil Tower Blacksmith give 20% boost (and I believe that he give a fee discount also)
- Some pets can pickup items (CPetActor::isPickUpPet in PetSystem.cpp)
- Skills manuals now do give a success boost of 20%
- 7/8 skills now can be trained by books even before they reach m1, like the official version
- Guild banks have been activated (only depositing)
- Guild lands and other guild NPCs will now be bought by the yang in the guild's bank
- New quest function the change guild's gold (change_gold)
- Guild blacksmiths now have levels (will be explained later in the topic)
- Rituals Stone, Anti-Resistances and new monsters bonuses have been added eg. Strong Against Desert Monsters
- Transmutation system is working probably, even with weapons costumes
- Most events drops now is managed by the source, you won't need to make a quest for the drop. as soon as you activated the game flag, the associated item will start dropping (managed in void ITEM_MANAGER::CreateQuestDropItem in item_manager.cpp)
- Events that has special NPCs eg. Christmas and Ramadan event, the NPCs will summoned automatically in their respected location (managed in questmanager.cpp in void CQuestManager::SetEventFlag)
- mapindex GM command will return the map index
- GM restrict system is in place, they can't trade, friend, duel with normal players. IMPLEMENTOR Level is not affected by that restriction.
- Almost everything I've added is controllable by a macro
Client Side:
-
A lot of function has been added:-
- GetMasterPID returns the Guild leader PID, used later to prevent a visual bug where a member with withdraw authority can kick the leader (the leader won't be kicked actually, but it will look like s/he was kicked)
- itemBindable checks if the item is bind-able
- GetMonsterRaceFlag returns the monster's race. (doesn't work probably if the monster have more than one flag)
- CItemData::GetLevelLimit returns the level limit of an item, 0 if there was not any level limit.
- And much more you find them out yourself...
- The solution has been upgraded to VS2017, hadn't much time to test it, but seems to be working well, a old not upgraded version will be attached as well
Root:
-
Fixed a lot of bugs with (uiinventory.py and uitooltip.py)
- Visual bug with the Change attributes item, if you placed it on a item that doesn't have any bonuses, it will be green.
- Same bug with Blessing Marble, now it will only be green if the item has 4 bonuses
- if the item has 4 of more bonuses, add attribute will have a red effect
- Bind and unbind working perfectly with right effects
- Deleted some of the unnecessary files
- Tried to move all localized text to locale_game, not sure if there's more.
Now let me explain the upgradable guild NPCs, at the moment it's only the blacksmith. So there are 3 levels, as levels go up, the upgrade fees increase, and the succeeding rate go up as well. at Level 3, the blacksmith return 10% of the upgrade cost to the guild bank, of course only when the player is not a member of the blacksmith's guild. They are upgraded by a quest (which will be attached as well). if anyone need more explanation, I'm happy to explain it more.
Other thing that I've changed dramatically is the New pet system. So the public version of the pet system, the time of the pet doesn't change unless the pet is summoned, and that doesn't make any sense. I've changed that so the timer will change even if the pet is not summoned. I've also changed the system that most of the data will be saved on the item, and less data will be queried form the DB each time the player summon the pet, it's not perfect, but it's better version, atleast for me. the number of skills will appear once you open the egg on the item, just like official. the timer of transportation box will not begin now until the pet is placed in it. and more information about the pet now appear on the transportation box.
I was trying to communicate the pet's information using packets instead of commands, put didn't have the time to finish it. you will find the basis of it there, so you always can complete my job.
I think I have mentioned everything, If I remember any more information, I will update the topic.
Please note that the EterPack is changed, you can access them from Bitte melden Sie sich an, um diesen Link zu sehen.
The Client is in Arabic language, so I don't think anyone will use it, but I'm gonna upload it anyway. I'll upload the root, locale and uiscript separately if anyone needed them.
Downloads
Server Source
Bitte melden Sie sich an, um diesen Link zu sehen.
Client Source
Upgraded to VS2017 version:
Bitte melden Sie sich an, um diesen Link zu sehen.
Bitte melden Sie sich an, um diesen Link zu sehen.
Old VS2013 version:
Bitte melden Sie sich an, um diesen Link zu sehen.
Client
Full Client:
Bitte melden Sie sich an, um diesen Link zu sehen.
Root, Locale and Uiscript:
Bitte melden Sie sich an, um diesen Link zu sehen.
Launcher:
Bitte melden Sie sich an, um diesen Link zu sehen.
Dump Proto:
Bitte melden Sie sich an, um diesen Link zu sehen.
Virus Scans:
Bitte melden Sie sich an, um dieses Bild zu sehen.
Bitte melden Sie sich an, um dieses Bild zu sehen.
Bitte melden Sie sich an, um dieses Bild zu sehen.
Cheers,
Abood