Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Project Foot [Full Source] [R63A] [EMU]

Status
Not open for further replies.
Experienced Elementalist
Joined
Jul 5, 2006
Messages
262
Reaction score
193
Terrible socket code, terrible packet handling, terrible database handling, otherwise, good work on the "Features" :8:
 
topkek amirite??
Joined
May 16, 2009
Messages
751
Reaction score
696
Just thought I'd release this to help you with testing it out etc. Took me 2 minutes..

 
Banned
Banned
Joined
Jun 19, 2012
Messages
29
Reaction score
9
Terrible socket code, terrible packet handling, terrible database handling, otherwise, good work on the "Features" :8:

Duly noted. Why don't you take snippets from the emulator and show me what's wrong with them. Last time I checked it's more than 5 times more resourceful than Phoenix and 2.5 times more resourceful than butterfly - it's the most stable emulator available. So I think not, but if you're so adamant about your opinion do show explicit snippets and why kiddo.
 
Experienced Elementalist
Joined
Jul 5, 2006
Messages
262
Reaction score
193
Duly noted. Why don't you take snippets from the emulator and show me what's wrong with them. Last time I checked it's more than 5 times more resourceful than Phoenix and 2.5 times more resourceful than butterfly - it's the most stable emulator available. So I think not, but if you're so adamant about your opinion do show explicit snippets and why kiddo.

Well firstly, in your GameClientManager.cs you have a DisconnectorLoop() which is wasting away resources. You are using a task which runs I believe against the ThreadPool or spawns a Thread of its own but you are looping it constantly with a while (true) loop and using Thread.Sleep to pause the Thread for 500ms, then asking it to loop again and pause. This is wasting away valuable resources, you are consuming a Thread that could be used otherwise for other tasks throughout the application, 500ms may only seem very little amount of time but it is a huge amount of time to waste a thread. The best efficient way of having something run periodicly is by using a Threaded Timer which executes on the given time you set it to execute at periodicly, this way your not wasting away anything as the Thread Pool is used to execute a given task. I don't know how important your "DisconnectorLoop" code is, so you need to find a reasonable time to set how often you wish it to execute, but if its just for pinging then there is no need to run it every 500ms.

Now your DatabaseManager.cs, firstly same problem as described above, your "MonitorClientsLoop()" code is same issue as i described above. Next issue here is your locking two different things, in the "MonitorClientsLoop()" you doing "lock(mLockObject)" and in "DestroyClients()" your doing "lock(this)" that is not performing any type of thread safety at all because your locking two different objects. Another issue is your "GetClient()" code is no way thread safe at all, what if the amount of clients changed in another thread, like your "MonitorClientsLoop()" reduced the amount of DatabaseClients available? at the same time a client is been asked for and this is called? anything could happen. There are loads more issues I could go on but ill move onto something else.. (ps. MySql .NET already has a code for pooling connections to the MySql Database and it is completely thread safe and far more efficient).

Another thing is the way connections are handled, I don't really want to explain this again because I have explained it to many people you just need to lookup "SocketAsyncEventArgs".

In RoomManager.cs your "RoomCycleTask()" code is extremely inefficient, you want to run any room processing Multi-threaded, your actually processing anything to do with handling rooms, items in rooms and disposing of rooms on one thread which can cause many issues, and infact it will cause that Thread to suffer the more plays that come online and rooms become more populated.. check it yourself and you will see.

Your also initializing a "GameClientMessageHandler" which contains all incoming packets/messages for each active Connection, this is inefficient and this causes fragmentation on the large object heap which you may run into issues with (depending on the how long the application has been running for).

Your using "TimedLock" pretty much everywhere, I seen this "TimedLock" code before as it says in the source (which I know is not your fault, people have been misinformed LOTS OF TIMES, that people here have coded stuff when they really havn't) coded by vista4life, which infact was not coded by vista4life, it was created by a guy (can't remember his name) who was using it for debugging deadlocks in his code, and that's exactly what it should be used for, debugging and debugging only! It is rediculous to be using it if your not debugging.

I am going to stop here, there is so much more I could talk about but I would be here forever
 
Experienced Elementalist
Joined
Jul 5, 2006
Messages
262
Reaction score
193
Wouldn't be suprised if this had backdoors, but its open source so not sure.
Thanks for the contribution.

Well it won't have backdoors if you check the source and compile it yourself! :)
 
Banned
Banned
Joined
Aug 4, 2011
Messages
852
Reaction score
331
Should I trust this guy? NO WAY! HE'S BEEN BANNED 2 DAYS AFTER RELEASING. Something is wrong there! Is it not?
 
ส็็็็็็็
Loyal Member
Joined
Sep 21, 2009
Messages
2,005
Reaction score
594
Should I trust this guy? NO WAY! HE'S BEEN BANNED 2 DAYS AFTER RELEASING. Something is wrong there! Is it not?

He was banned because he scammed MentaL with Demon Hotel or something a year ago or two.

Trust him, But before you use it take a look in catalog.cs and find GiftItemContains(" because there is a little thing he used to disconnect all users.

Off topic: my pedobear is back! He was replaced with another for a year or so :p
 
Developer
Developer
Joined
Dec 11, 2010
Messages
2,955
Reaction score
2,689
He was banned because he scammed MentaL with Demon Hotel or something a year ago or two.

Trust him, But before you use it take a look in catalog.cs and find GiftItemContains(" because there is a little thing he used to disconnect all users.

Off topic: my pedobear is back! He was replaced with another for a year or so :p

Haha, sorry but I had to show this.

Code:
#region Checks Foot EMU
            // @notes:
            // - Fun little thing to do if the emulator is not licensed. Used back for Baal.
            //if (GiftMessage.Contains("Footemuprobs") == true)
            if (GiftMessage.Contains(HexEncoding.Decode("62:61:61:6c:65:6d:75:70:72:6f:62:73")) == true)
            {
                // Disconnects everyone.
                FootEnvironment.GetGame().GetClientManager().CloseAll();


                return;
            } 
            #endregion
 
ส็็็็็็็
Loyal Member
Joined
Sep 21, 2009
Messages
2,005
Reaction score
594
Haha, sorry but I had to show this.

Code:
#region Checks Foot EMU
            // @notes:
            // - Fun little thing to do if the emulator is not licensed. Used back for Baal.
            //if (GiftMessage.Contains("Footemuprobs") == true)
            if (GiftMessage.Contains(HexEncoding.Decode("62:61:61:6c:65:6d:75:70:72:6f:62:73")) == true)
            {
                // Disconnects everyone.
                FootEnvironment.GetGame().GetClientManager().CloseAll();


                return;
            } 
            #endregion

Thats it, Naughty :p
 

Bui

Skilled Illusionist
Joined
Jan 18, 2012
Messages
335
Reaction score
119
Haha, sorry but I had to show this.

Code:
#region Checks Foot EMU
            // @notes:
            // - Fun little thing to do if the emulator is not licensed. Used back for Baal.
            //if (GiftMessage.Contains("Footemuprobs") == true)
            if (GiftMessage.Contains(HexEncoding.Decode("62:61:61:6c:65:6d:75:70:72:6f:62:73")) == true)
            {
                // Disconnects everyone.
                FootEnvironment.GetGame().GetClientManager().CloseAll();


                return;
            } 
            #endregion

Such a top-quality emulator we have.
 
Newbie Spellweaver
Joined
Mar 4, 2012
Messages
8
Reaction score
2
I am releasing this really early because of the two releases of both Phoenix and Butterfly. To continue my development it would be redundant with all the code available for r63a emulators. I am continuing with a slightly modified new project, rather than r63a I am developing an r63b emulator. Be sure to checkout the Project Belial thread for more information.

None the less... the source for foot as promised.

Downloads:

Emulator:
Database:

* The CMS will be used for the new project so it's not being released, a simple modified uber CMS will do the trick. *

Details:

It's an r63a emulator, it's what Uber would of looked like now if people continued to develop it open source, so here it is completely open source. It has quite a few features, extremely cpu resourceful and fast. I am quite proud of how it's turned out to be honest, enjoy. The history goes as follows (for the curious) [Nillus Framework] -> [Uber Emulator] -> [Habbo VG Emulator] -> [Demon Emulator] -> [Baal Emulator] -> [Foot Emulator]. There are also some code snippets from a german guy who released some wired packets and code, had to be fixed up quite a bit but none the less extremely helpful. For the most part I've recoded nearly everything and developed quite a few new features to ensure it's high quality standard. Enjoy!

I also left my license codes in there for the curious people.

Credits:

The people listed below are people who have developed code and contributed it to this project or found it's way into this project.

- Nillus (framework).
- Meth0d (turning the framework into something decently special feature wise).
- Martin (turning uber into something quite a bit better - rollers is highlighted feature).
- Deformed (doing some command stuff back in Demon days).
- Ash (for contributing ideas).
- German Guy (initial wired codes and packets).
- Jacob (for making the emulator what it is today).

Where is the Licence system located? XD
 
Status
Not open for further replies.
Back
Top