Two years ago I released my first source which can be found clicking on it's name.
What I have to say about this new source, is the same thing about the old one. The base still the old one (Phoenix Project), which is not on elitepvpers anymore, but the credits remain mostly on the entire source.
First of all, why I am releasing this?Quote:
Of course you will notice that my codes aren't so great, but if you want to point anything bad, make something constructive so i can improve myself too. I will update the source if the community say that i need to keep the work.
Well, this source has been used on my public beta server and proved to work fairly well with over 100 players, except for a few concurrency problems that sometimes would spawn. Tho, I'll explain the known problems.
I'm releasing this, as it is and I'm not going to give any support to it. This source helped me on learning a lot, I could find out many problems that might occur when a server is running, also I learned what to do and what not to do when running a server. The Concurrency problems lead me to study a lot so I could improve my new systems.
Can you use this to run a public server?
I wouldn't recommend unless you fix the major issues.
Major issues:
- Generator
The generator does have a problem which I fixed on my new source, but I didn't change on this one. But the problem is simple: it stops generating monsters when the map reaches its max monster identity. There is a command "/reloadgen" which can be used and also can be improved. It will reload ALL generators on the Conquer World. Which means: guards, boss, pets, etc (I removed the pets).
- Guild War disconnection
There was an issue causing a disconnection to everybody who's close to the Guild Pole. I think I fixed it (not tested on the public server tho), but I think it's because of the Guild Name Length. So you might check it. It doesn't happen often, but it does, and it's so annoying. If you restart the server it will be fixed (without changing the guild holder).
- Server freeze
It happens randomly. I don't know what I changed on the new code which fixed it, but on this source it appears to happen even when people is doing nothing. I think it's because of the amount of threads which access the Players dictionary, tho, I don't know how, but I fixed. This source still have it with few or many players online. No mather. It's not something that happens just because the server is full. Ah, the server comes back after 5 seconds to 1 minute. I changed some shit on the threading system that helped, so now it will not get permanently stuck requiring the server to be restarted.
Minor issues (some features I didn't bothered about fixing):
- Items removed from arsenal will just leave after maintenance;
- CTF reward wont be delivered correctly (never really bothered about this, nobody ever said anything. They played it for the fun);
- Whoever joins the team will receive the leader information (just change the MsgTeam constructor);
Which features this source have?
Check the Game Packet Handler to see which packets are handled by the server. Puff.Quote:
- Memory Agate (Fully works, even the rename thing);
- PK Exploit (The killing record which you can see who you killed and how many times);
- Trade Partner;
- Item Lock;
- Dragon Souls and Refineries;
- Subclasses;
- Title system;
- Reincarnation;
- Reborn (both quests fully working with rewards to those who complete the quest instead of buy the items from Shopping Mall);
- Arena Qualifier;
- Capture the flag;
- Bonus system (which you can use to give rewards to your player on the site so they can claim it in game);
- Claim CPs button (cq_user column coin_money to use claim CPs on next login. Also remember the players to logout before claiming the CPs on the site);
- Quiz Show;
- Nobility Ranking (Only Money, but if you remove the return; thing on the code it can easily be changed);
- Change name NPC;
- Change gender NPC;
- Lottery;
- Boss Hunting (which includes Terato Dragon on FG6 or TwinCity; Snow Banshee on FG2; Lava Beasts randomly spawned in FG5);
- Mentor/Apprentice (you cant remove them, you will need to code this by yourself);
- Friends/Enemy;
- Guilds with fully working system;
- Clans with some shit bugged, easy to fix. Never fixed because I never really completed it. Will add the clan wars and then fix;
- Broadcast working;
- All chats working;
- Chat logging;
- Mining;
- Booths;
- Appearence type (the one in options, so you can use DragonSouls and show your equipment);
- Guild Recruitment system;
- and so on;
The source got monk with all skills working. Except for a bug with the auras on team, but it's relevant.
I almost forgot: This server targets which client version?
Version 5517.
The interaction processing handle those things.
And about Ninja Skills, they are all working too. Except for a bug on the Shuriken Vortex that I think I fixed before this release. It started to appear after a minor change in the skill system. Tho I think it's fixed. You might check.
If you ever read the old source, you might know how this work. I changed a lot of things on a lot of places, but some systems has just been improved. But methods and functions are still the same.
If you want to do checks before casting skills, read how it works and check the function CheckCondition.
If you want to add new skills sort, look for the boolean Launch(), it does have all you need. I follow TQ client magic type sorts. So, as a player, I know how the skill works and then I write it there, creating a new sort to work there. In general, if I want to change anything later, I don't need to write much. I was too lazy, so some types I just used the same on 2 sort.
I will paste here some references to my old post.
Boss dropsQuote:
Battle System
The battle system may be complex to some peoples, but once you get familiar with it, it's pretty easy.
If you want to change the calculations you should look for the methods CalcAttackPower (Physical and Bow) and CalcMagicPower (Magic) on the file Structures\Entities\Battle System.cs
This will affect any attack calculation. You don't need to create millions of methods to handle each kind of attack.
The method CheckCondition on the same file, will check if the target is able to be attacked by a magic attack.
The methods for Physical and Magic attacks on Battle System are ProcAttack_Hand2Hand() and ProccessMagicAttack(int nType, uint idTarget, ushort x, ushort y, byte ucAutoActive).
Any magic check should be done on ProccessMagicAttack, once it's not the sort requirement. If the requirement is done by the type of magic (sort), you should look below on the Launch method.
The boolean Launch()
This method will just send the skill to it's own processor. Then, you create the processor and make the other Sort support. Check the ready sorts for more information.
The file QuenchDropRule.ini on the ini folder together with the server controls the actions which will be triggered when a boss dies. This can also be used to normal monsters.
And just some more additional screenshots.
The Login Server is designed to accept connections from many servers to redirect them. So you can have 1 login server accepting connections on a low cost host and the game servers running somewhere, tho, you'll need to crack the Conquer.exe to read your own Server.dat or change a loader settings to not redirect the connection after authenticated.
I removed the Cipher between the Login and Game Server because I didn't want to show how shitty my system is, so if you want to hide your information, code it by yourself.
You can also set your MySQL to connect to a different port. I did it only to the login server, but if you're smart enough you can fit your needs doing it to both.
EDIT: I almost forgot, the account table structure is here. And I use the Whirlpool hash on the passwords.
If you want everything like is on the database (items, shops and other shit editions) you might need to download my client and patches. The AutoPatchServer that is used on them, is the one I released .
(Download patch 5024-5034 and you'll be fine)
There is no fucking viruses on the client files. It's just the damn loader.
Some videos on the end of the post.
The source itself isn't hard to read or understand, I tried to follow an standard language and I hope it's easy for people to read. I stopped commenting code at some point, but there are parts that I did. Well, I think that's all for now.
I aint updating this source anymore. I wrote a new one which I removed some trash and changed a few systems to avoid concurrency shit pissing me off again.
Thanks for @, never denied me support and for the Phoenix Project.
Thanks for @ for releasing Cops V6 that helped me on a few items handle algos and for the tips of the portals.
Thanks for @, because of the Albetros Source that been so useful to me with it's packet structures.
And thanks for everyone who at least check out the code or the server itself.