Ask Mootie - Question & Answer Thread

Joined
Apr 21, 2009
Messages
1,377
Reaction score
930
Here you may ask questions(that fall into the categories below), and I will answer to the best of my vast knowledge of Flyff Private Servers.

Question Categories(Development):
  • C++/lua Flyff Development - Intermediate/advanced only, I won't answer questions regarding anything too small/specific, but I will answer questions regarding large custom changes
  • Anti-Hack Development - Server-sided and Client-sided, don't ask how to block specific exploits
  • Performance Improvements - I specialize in improving performance of the server and client while maintaining core server-sided security

Question Categories(Administration):
  • Windows Server Administration - Firewalls, user permissions, remote management, disk partitioning, bottlenecks, etc
  • DDoS Mitigation - Mitigation of any type/volume of flooding
  • Network Security - Some examples: Internal/External Network Firewalls, SSL or any other network encryption, remote administration permissions, etc
  • Webserver Administration - I have experience with: Litespeed(nix), Lighttpd(nix), Apache(nix), and IIS(windows)
  • MSSQL DBA - Permissions, linux-mssql connections, advanced logging & backups


What not to ask about:
  • How to make/setup a pserver, windows server, mssql database... pretty much any setup questions I won't answer.
  • How to fix specific crashes
  • Upgrading to vs2010(I've posted enough info about this already)
  • Things you could figure out yourself by googling for 30minutes

I'll improve this post when I get the chance.
 
Last edited:
Re: Ask Lethal - Question & Answer Thread

I've actually got one for you that I'd like opinions on the httpd section, the endless battle of litespeed versus apache.

In the moderate traffic that (Keep in mind possibly higher loads due to sub-par coding) which would you recommend and why if you were to run your own httpd on a server (Because honestly, who is serious about their project and uses shared?) I know in larger implementations Apache is supposed to win out, but I mean no private server is going to be large enough for the statics that you get when googling this ****. Does this make litespeed more efficient or am I lacking info about apache
 
Re: Ask Lethal - Question & Answer Thread

@ Anti-Hack Development

How can i make sure you can't replace a fake dll :)?

I know the ANSWER to that, but the process I have no idea about though.
Calculate a CRC value of the .dll using an external program and set the result as a variable in Neuz. Then, after Neuz opens the .dll, calculate a new one and compare it against the one you made. That's the process, I don't know how to actually accomplish that though.

edit: slight security issue I realized after typing that, a client side variable could be modded. You'd have to make it a server side variable which gets requested when Neuz starts. Similar to how MSG_VER works.
 
Re: Ask Lethal - Question & Answer Thread

I've actually got one for you that I'd like opinions on the httpd section, the endless battle of litespeed versus apache.

In the moderate traffic that (Keep in mind possibly higher loads due to sub-par coding) which would you recommend and why if you were to run your own httpd on a server (Because honestly, who is serious about their project and uses shared?) I know in larger implementations Apache is supposed to win out, but I mean no private server is going to be large enough for the statics that you get when googling this ****. Does this make litespeed more efficient or am I lacking info about apache

Well, I've used both Apache and Litespeed in the past and can definitely say that without modifying Apache's configuration heavily, Litespeed is much more efficient in terms of resource usage as a HTTPD. However, I'm sure that Apache would be a lot better at resource management with source modifications for performance... I just wouldn't recommend Apache for any mid-sized sites that don't wish to make heavy modifications to its configuration and code.

The main issue with Litespeed is the security issues I've seen with it. There have been a few 0day exploits and they've all been extremely dangerous(source code exposure). This is surprising as Litespeed is closed source, which makes me worry more about the possible exploits that are still unknown. However, most sites wouldn't have to worry about these issues as long as they stay up-to-date. Litespeed's administration panel is VERY easy to use and makes configuring/log viewing a lot more user-friendly than editing Apache config files.

@ Anti-Hack Development

How can i make sure you can't replace a fake dll :)?
And how is it possible to block address scanning?
I googled and failed for this

Well I don't recommend this, but you can provide most of the required DLLs in the client folder and checksum them. However, you probably should do a heuristic scan of the client itself for any strange windows API calls or critical function modification. Themida has a decent method with its xBundler plugin which can check for DLL modification on startup, but that wouldn't stop modification of kernel DLLs that vary based on operating system version. For these I recommend just checking for standard methods of detouring on apis such as WSASend/Recv(for Flyff).
 
Re: Ask Lethal - Question & Answer Thread

If you really need an user-level clientside antihack, compile it into the binary. (using a lib)

That's what I was thinking should be done, although with my limited programming experience I wasn't sure how effective it would be, mainly concerning whether or not it's easily bypassed.
 
Re: Ask Lethal - Question & Answer Thread

If you really need an user-level clientside antihack, compile it into the binary. (using a lib)

This is what should usually be done, the reason XorGuard is a dll is because, as of v3, it implemented a global hook. Also, my comment was regarding fake 3rd party DLLs such as a fake directx DLL.
 
Re: Ask Lethal - Question & Answer Thread

Here's one thing I've been wondering: Is there a good reason for splitting the server into so many programs? My guess is performance, but I'm not entirely sure.

Also, could you possibly explain the general purpose/job of each of them? Including the lesser known ones (ie. Collection server, monitor, etc.)? I'm currently only using the basic 7, but I was wondering if adding the others would be useful or not.
 
Re: Ask Lethal - Question & Answer Thread

I have one question lol

Have you figured out a way to change masquerpet's stats dynamically? In the sense of changing them when they're already spawned to make a determinate individual monster stronger on the fly.
 
Last edited:
Re: Ask Lethal - Question & Answer Thread

I have one question lol

Have you figured out a way to change masquerpet's stats dynamically? In the sense of changing them when they're already spawned to make a determinate individual monster stronger on the fly.

The CMover class just contains the monster's prop ID and the properties are pulled from memory, so modifying them would modify all monsters of that property. The easiest way would be to just create an extra struct or variable(s) that can be modified to change the monster attack rate, HP, etc. This wouldn't be hard either, I'm sure you could figure it out from there.

If not, take a look at CMover::GetHitMinMax.


Here's one thing I've been wondering: Is there a good reason for splitting the server into so many programs? My guess is performance, but I'm not entirely sure.

Also, could you possibly explain the general purpose/job of each of them? Including the lesser known ones (ie. Collection server, monitor, etc.)? I'm currently only using the basic 7, but I was wondering if adding the others would be useful or not.

It's not entirely performance, but also organization and scalability.

AccountServer - Serves as a "controller" type server for the entire login process. It doesn't handle any user requests itself, but it does tell other servers such as certifier how to. Also used for some things such as Adbill.

Certifier - Certifies the username/password and allows or denies access to login.

Trans Server(DatabaseServer) - Handles most game-related database transactions. Also caches some things such as guilds and passes to core.

Core Server - This "Unifies" the individual WorldServers on each cluster. It also passes some data to the WorldServers on startup.

Login Server - Handles the channel selection, character selection, and 2nd password authorization

Cache Server - It should be named Proxy Server because that's what it is. The WorldServer holds all the cache while the cache server is what the users connect to.

World Server - I'm pretty sure you can figure this out.

The Collection server was meant to be an anti-piracy method, but it didn't work too well since the source was leaked lol. It's pretty useless now especially for a pserver. Monitor server is mainly for administration purposes and it's quite an annoying program tbh due to it's restarting methods. I recommend writing your own if you have time.
 
Last edited:
Re: Ask Lethal - Question & Answer Thread

Hi xLethal, I saw these thread that you made for Q&A (yesterday) and mm trying to figure out about China Flyff Stuffs because one of my cousin's friend (GaIa Member) told us that all the 7 servers running in China Flyff (Account/Database/Login/World/Cache/ETC..) are combined in 1 or 2 stuffs when the server is running.

In a clear way (I mean), China Flyff run 1 or 2 server only (idk, what are they) that can run the server without (7 servers stuffs). So my question is "is it possible to make all the 7 servers to 1 or 2 as well same as China Flyff?"

Hope you to answer this question, clear and understandable..

Thanks,
inteL
 
Re: Ask Lethal - Question & Answer Thread

Hi xLethal, I saw these thread that you made for Q&A (yesterday) and mm trying to figure out about China Flyff Stuffs because one of my cousin's friend (GaIa Member) told us that all the 7 servers running in China Flyff (Account/Database/Login/World/Cache/ETC..) are combined in 1 or 2 stuffs when the server is running.

In a clear way (I mean), China Flyff run 1 or 2 server only (idk, what are they) that can run the server without (7 servers stuffs). So my question is "is it possible to make all the 7 servers to 1 or 2 as well same as China Flyff?"

Hope you to answer this question, clear and understandable..

Thanks,
inteL

It's possible, but it would be hard to expand it into a cluster system like eFlyff has.
 
Re: Ask Lethal - Question & Answer Thread

Why don't you just answer help threads?

I think doing a massive question and answer thread like this is a big unorganized mess and not very friendly to the forums search functionality that we are trying to encourage people to use.

This topic will be highly moderated by me personally.

Questions similar to "PLS HALP! Y SERVER NO WORK" will be removed.
And you aren't going to watch others? :?:
 
Re: Ask Lethal - Question & Answer Thread

Why don't you just answer help threads?

I think doing a massive question and answer thread like this is a big unorganized mess and not very friendly to the forums search functionality that we are trying to encourage people to use.


And you aren't going to watch others? :?:

I can answer this. He only wants to give assistance to people with more advanced questions. I've seen him reply to a few topics. One was related to converting the source from VS2003 to VS2010 (which is quite advanced for most of the people here). The other had to do with finding a good dedicated server company and he gave specific reasons for why to use the one he posted.

90% of the help topics in this forum are something like:
"i want to create a server please help" or
"i did this, and this, and this and this happened *posts crash dump*" or
"how do i do this on my server? (a question that could be easily found by searching the forums)"
 
Re: Ask Lethal - Question & Answer Thread

Why don't you just answer help threads?

I think doing a massive question and answer thread like this is a big unorganized mess and not very friendly to the forums search functionality that we are trying to encourage people to use.


And you aren't going to watch others? :?:

I'm not looking to fix people's issues with setup or coding. I'm looking to give my opinionated answers of conceptual questions rather than quick fixes or solutions. As the owner AND head developer of the currently largest Flyff private server, I'm sure I could answer complex questions in a more detailed fashion than others.

Ask yourself this: How would a user search for the questions I have answered so far in this thread? The search feature helps for common and specific issues, not unique and conceptual questions.
 
Re: Ask Lethal - Question & Answer Thread

The CMover class just contains the monster's prop ID and the properties are pulled from memory, so modifying them would modify all monsters of that property. The easiest way would be to just create an extra struct or variable(s) that can be modified to change the monster attack rate, HP, etc. This wouldn't be hard either, I'm sure you could figure it out from there.
Oh lol I was thinking that monster movers were treated the same way as player ones are, but instead appearently they dont have individual stats... Silly me :3
Thanks man.
 
Re: Ask Lethal - Question & Answer Thread

I have questions:
-Why server connects to mssql via ODBC which slows everything(my dad said it does) instead of connecting directly to database with 50 stable connections?
-Which database server is the best for game servers?
 
Re: Ask Lethal - Question & Answer Thread

I have questions:
-Why server connects to mssql via ODBC which slows everything(my dad said it does) instead of connecting directly to database with 50 stable connections?
-Which database server is the best for game servers?

no reply to this question? it's kinda interesting :laugh:
 
Back