Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #61  
Old 04-25-2008, 01:10 AM
zydria
Fire Beetle
 
Join Date: Nov 2004
Posts: 12
Default MQWarp/MQZone/MQGate Detector Discussion

Quote:
Originally Posted by TheLieka View Post
Example:

Legitimate Zone Request:
  • Fault is running through the tunnel in East Commonlands to meet up with his guild, he hits the North Ro zone point line.
  • Fault's client sends a zone request to the server.
  • The server checks Fault's last player position update location (his x, y, and z in East Commonlands) for the closest zone point in the table for East Commonlands.
  • The server sees that based on Fault's location of
    Code:
    (y, x, z = -2444, -62.5, 3.8)
    in the East Commons, the closest zone point is:
    Code:
    (id, zone, number, y, x, z, heading, target_y, target_x, target_z, target_heading, zoneinst, target_zone_id)
    575, 'ecommons', 1, -2462, -105, 3.13, 0, 2604, 2903, 3.13, 999, 0, 34
  • The server checks the distance between Fault and the zonepoint (sqrt(-2444 - -2462)^2 + (-62.5 - -105)^2). This answer is 2130.25.
  • Since the distance between fault and the zoneline is less than 4000, the server determines that the zone request is valid, and processes it.

Not sure if I understood this correctly or not, but when his distance is less than 4000 does the code check to make sure he's actually zoning into nro (zone_id 34) or could he stand near the nro zone and type /zone to get to nexus?
Reply With Quote
  #62  
Old 04-25-2008, 09:05 AM
TheLieka
Developer
 
Join Date: Oct 2004
Location: THE ATL (wut wut)
Posts: 325
Default

Well, if you want to get into the nuts and bolts of it, there are two types of unsolicited (client originating) zone requests: With or Without providing a destination zone to the server.

If the client specifies the target zone, then the zone server will check to make sure that a zone point exists for the requested zone, within the current zone, within a reasonable distance of the player's location. If it does, then the player's zone request will be processed. If there is no zone point for the requested zone within the specified zone, or the zone point is not within a reasonable distance, then the request will be cancelled, and the player will trigger the /MQZone detector.

If the client does not specify the target zone (this is the case with zone points built into many of the zone files), then it will basically just tell the server "Hey, I need to zone". The server will look for the closest zone point to the player's location, if it's within an acceptable distance, then the player's request will be processed for the zone that comes up. If not, then the request will be cancelled, and the player will trigger the /MQZone detector.

That's why it's so important to get x, y, z populated for your zone_points table.

So, to answer your question, if you're standing in east commons beside the nektulos forest zone line, and send through a /zone nexus, then you will trigger the detector.

Dax
__________________
Daxum



Former ServerOp - Vallon Zek / Tallon Zek Emu Server - Legit / Guild PvP - (2007 - 2011 RIP)

Last edited by TheLieka; 04-25-2008 at 05:08 PM..
Reply With Quote
  #63  
Old 04-27-2008, 12:31 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

Funny story, now that most the other small nagging things are taken care of I can start looking at getting this and related things into source.
Reply With Quote
  #64  
Old 04-27-2008, 12:57 AM
jenco420
Banned
 
Join Date: Jan 2006
Location: /dev/null
Posts: 99
Default

Quote:
Originally Posted by KLS View Post
Funny story, now that most the other small nagging things are taken care of I can start looking at getting this and related things into source.

I <3 you =D Seriously thought this is great work so far Dax.
Reply With Quote
  #65  
Old 04-28-2008, 09:35 AM
TheLieka
Developer
 
Join Date: Oct 2004
Location: THE ATL (wut wut)
Posts: 325
Default

Take your time KLS. I think most of the people that were dying to get their hands on it are already running it. I am a little curious at the lack of feedback though. I assume that means that: it's flawless, it was so bad that they didn't even bother to post any bugs, or no one has done any testing with it. I'm curious to hear some solid feedback on it.

Dax
__________________
Daxum



Former ServerOp - Vallon Zek / Tallon Zek Emu Server - Legit / Guild PvP - (2007 - 2011 RIP)
Reply With Quote
  #66  
Old 04-28-2008, 02:59 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

CD has told me after all the revisions it works quite well just that it uncovered some somewhat serious problems with the zone points table.
Reply With Quote
  #67  
Old 04-28-2008, 05:08 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Well, I am waiting for this to go into the release since I seem to have trouble compiling sometimes. I know of at least a couple other popular servers that are waiting to use this as well.

I will definitely give you feedback once I get it running. I can't wait to try it out. Looks like you have made some amazing changes since the initial submission.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #68  
Old 05-01-2008, 12:31 PM
Wiz
Dragon
 
Join Date: Feb 2002
Posts: 583
Default

Preventing players from using /zone is actually pretty easy - what you do is code an internal server function that flips on when the player is "allowed" to zone (allowed_zone = true or whatever). Then you set this to true in all legitimate functions like server-called MovePC. When the player is zoning via a zoneline, check that he's feasibly close to it (like KLS is doing), and if he is, set to true.

If the player zones without having this permission flag enabled, you disconnect him or otherwise prevent him from zoning and log the incident. This way, instead of trying to figure out how to detect every time a player isn't allowed to zone, you just define the times he is allowed to zone (there isn't that many) and get him via method of exclusion.

We've caught a lot of MQ users on SoD with this.
Reply With Quote
  #69  
Old 05-01-2008, 11:16 PM
TheLieka
Developer
 
Join Date: Oct 2004
Location: THE ATL (wut wut)
Posts: 325
Default

Quote:
Originally Posted by Wiz View Post
Preventing players from using /zone is actually pretty easy - what you do is code an internal server function that flips on when the player is "allowed" to zone (allowed_zone = true or whatever). Then you set this to true in all legitimate functions like server-called MovePC. When the player is zoning via a zoneline, check that he's feasibly close to it (like KLS is doing), and if he is, set to true.

If the player zones without having this permission flag enabled, you disconnect him or otherwise prevent him from zoning and log the incident. This way, instead of trying to figure out how to detect every time a player isn't allowed to zone, you just define the times he is allowed to zone (there isn't that many) and get him via method of exclusion.

We've caught a lot of MQ users on SoD with this.
That's what the code does.

Dax
__________________
Daxum



Former ServerOp - Vallon Zek / Tallon Zek Emu Server - Legit / Guild PvP - (2007 - 2011 RIP)
Reply With Quote
  #70  
Old 05-01-2008, 11:40 PM
Wiz
Dragon
 
Join Date: Feb 2002
Posts: 583
Default

Quote:
Originally Posted by TheLieka View Post
That's what the code does.

Dax
Ah, very nice. Good luck, always enjoy catching cheaters.
Reply With Quote
  #71  
Old 05-10-2008, 04:07 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Well, I went through and finally added this code into my source manually. Took me a while to get all of that stuff in lol. Though, once I did, it seemed to compile perfectly as far as I can tell.

I disabled most rules accept for the warping and ghosting checks. Unfortunately, it still seems to be doing the /zone checks. I have gotten a ton of players reporting that they are getting stuck in infinite zone loops. I went ahead and added the PEQ Char Mover PHP script (thanks PEQ!) to allow players to unstuck themselves while I try to get this issue worked out. I am guessing that the rules to disable the zone checks aren't working or something else is causing the weird loops. Unless it is the warp detector that is causing it because I don't have my zone_points table updated. But, I am not getting any broadcasts of cheaters, so I don't think that is it. I do have the broadcast enabled, but penalties is disabled.

Other than that, I have had 0 reports of warping since I added it in. If I can get this zone loop issue worked out, it seems great! I haven't really noticed any other issues with it so far, but it has only been in for a few days now. I will update with any other issues I see. Thanks again for the code, Dax and the others that helped from TZ/VZ!
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #72  
Old 05-10-2008, 07:53 AM
cavedude's Avatar
cavedude
The PEQ Dude
 
Join Date: Apr 2003
Location: -
Posts: 1,988
Default

The zone looping is the zone_points problem
Reply With Quote
  #73  
Old 05-11-2008, 01:22 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Ya, I figured that, but should that matter if I have the zone detector disabled? Or am I just not understanding the problem? I am not getting any broadcasts of cheaters so far at all.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #74  
Old 05-11-2008, 05:03 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I am not 100% sure that this is related to the MQ code that I added in, but every since I added it I have been getting random crashes and my terminal window reports something like this:

*** glibc detected *** double free or corruption (!prev):

This causes all of my players to be disconnected and I think it crashes the world. It may be coincidence that this started after I added in the MQ code though. I have had a couple issues with my ISP connection and one of these glibc errors kicked out yesterday about the same time my internet went out. I have also had a bard problem where the bard crashes any zone it logs into and it just so happened that I was trying to log the bard in at the exact same time my internet and this error kicked out lol. So, it could be any of those 3 issues. But, I have had this a few times over the past few days that I have had the MQ code in and I don't think the others were during any ISP issues or issues with this bard.

After doing a bit of googling, I think this is a memory error and I believe it can be disabled by turning off that memory allocation check. Here is the command I issued to disable it:

export MALLOC_CHECK_=0

I am sorry if this is completely unrelated to the MQ code. I considered posting this in the Linux Support section, but it started almost right after I loaded the MQ source in and I never had it 1 time before that. Either way, I think this fix should resolve the problem for anyone who has it. I will post back here if the problem starts up again. Also, I don't know if I need to do that export each time I restart the server PC or if that changes the setting permanently.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #75  
Old 05-12-2008, 07:06 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Nevermind the post about the glibc issue. That was unrelated to this. Turns out that was the bard that was causing it. I am assuming it is some issue with AAs. Finally had to change their class to warrior and log them in and clear their AAs then back to bard. The "fix" I posted doesn't seem to work either lol. I will make a new thread on this issue if I have anymore problems with it.

The MQ warp detection doesn't seem to be working properly for me yet. I still haven't seen any broadcasts of cheaters or any entries in my hackers table, but I know for a fact people have been warping on my server... Maybe I missed something in the source before I compiled. Any chance someone has the 1108 source with the MQ stuff coded in them that they could host somewhere? I only need the files that were changed by the MQ code, but I would take the whole package if it is available.

Thanks.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 05:37 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3