PDA

View Full Version : No-Click Zone Points


John Adams
07-27-2007, 06:37 PM
I have spent hours scouring the site, the Wiki, and code trying to figure out just how the hell we're doing the no-click zoning - like when you're running from ecommons to freeport, you hit a sweet spot that magically flings you into the next zone. I know about the 999999 thing, but no matter what I've tried, putting that or any other relative coordinate into the x,y,z, I cannot get a character to zone from [the new] Lavastorm back into Nektulos.

There are many other zones lacking "magic" zone points as well, so if I can figure out how to get any one of them to work, I can start setting up more. I've sat with table `zone`, `zone_points` open, pounding #loc just before the in-game zoner, and I swear... nothing lines up logically at all. I am going bonkers. The target_x,y,z is fine, just not that "cross this line, I zone you" coordinate.

HALP! Anyone, for the love of god and all that's holy, help me with this.

kthx.
/shootself

Theeper
07-28-2007, 12:42 AM
It seems to me that some of the zone points are hard coded into the client. I can delete the entry from the zone_points table and it still works.

I can't override them unless I use a quest and a proximity event on an invisible mob placed in front of the real zone line.

John Adams
07-28-2007, 03:56 AM
That is great info, now I do remember the invisible NPC / proximity thing. I will try that.

Hard coded... who the hell does that? I flog devs daily for trying to hard code things in my products. That's so... 90's ;)

DarkGothic
07-28-2007, 07:55 AM
Are you useing the new maps for the new lavastorm or the old map file, not zone file but map file?

John Adams
07-28-2007, 02:57 PM
Hmm. My lavastorm.map file is dated 9.3.2004... that sounds old. Are there newer maps? I have a oow_maps file someone did recently, but I do not see revamped lavastorm or nektulos in there. I'll have to dig around.

DarkGothic
07-28-2007, 03:07 PM
you can find it in the new_maps.zip on EQEmulator space at SourceForge

wayneg
09-06-2007, 09:34 AM
I have the same problem as John. I set up the zone point from EC to Nek and it works fine, but trying to go from Nek to EC does nothing.

I tried the new map files and same result.

I reduced my database entries down to one entry, and made it simple:
2, 'nektulos', 1, 0, 0, 0, 0, 999999, 607, 0, 65, 0, 22

What does the invisible mob solution look like?

sfisque
09-06-2007, 09:46 AM
the invisible mob quest model for zoning shows up if you have the newer (or newest) peq quest database. in lavastorm you should have some quest perl files like lavnek.pl, laveye.pl, etc. these correspond to invisible mobs in the peq database (again, newer snapshots). the quest fires via proximity trigger and zones the toons into the respective zone it is sitting outside of.

== sfisque

Theeper
09-06-2007, 10:45 AM
You can also put in your own invis mob and use a proximity event to zone characters.

John Adams
09-08-2007, 06:45 AM
I took the invisible man/proximity port approach finally, since using table `zone_points` ended in 8 wasted hours of my life I will never get back. Sigh.

Here's the info -
Create a new NPC "Zone_Out" (can be named anything) with race 1 (Human initially) and body type 1 (Humanoid). Any other stats you like, but they won't matter by the time we're done.

#dbspawn ###### (the ID of the newly created NPC)

Target him, and position him approximately mid-way between the sides of your zone out area - for example, it if is a mountain range, pop your zoner as close to the middle between the two walls of the mountain as you can, nearest to (or beyond) the point you wish to launch players from your zone.

#npcspawn add
This creates the entry in your tables to repop this guy every zone startup. Now, zone out and zone back in to reload the new spawn details. Your dude should now be popped precisely where you need him. A naked, human male that you can target.

Quest script:
# Tipt custom zone outs back to Nexus (152)

sub EVENT_SPAWN {
my $x = $npc->GetX();
my $y = $npc->GetY();
quest::set_proximity($x - 100, $x + 100, $y - 50, $y + 50);
}

sub EVENT_ENTER {
quest::movepc(152,0,0,-24);
}

sub EVENT_EXIT {
quest::clear_proximity();
my $x = $npc->GetX();
my $y = $npc->GetY();
quest::set_proximity($x - 100, $x + 100, $y - 50, $y + 50);
}

#End of File, Zone:tipt NPC:289031 -- Zone_Out

Clearly described --

sub EVENT_SPAWN {
my $x = $npc->GetX();
my $y = $npc->GetY();
quest::set_proximity($x - 100, $x + 100, $y - 50, $y + 50);
}

This sub executes when your NPC spawns, getting it's current x,y coords, and setting a proximity of x +/- 100 (north and south - pay attention to what direction your zone out location faces and adjust accordingly.

In my zoner, the zone out is East/West, so I made the east/west coordinates as close to the NPC as possible without risking passing him up. :) The North/South coords are +/- 100, since that covers from the NPC in both directions and beyond the cavern walls so again, players cannot pass by the NPC. Not sure what happens if they go over his head though... anyway.



sub EVENT_ENTER {
quest::movepc(152,0,0,-24);
}

Simple, this flings the player to the center of Nexus upon entering the above proximity. And finally...


sub EVENT_EXIT {
quest::clear_proximity();
my $x = $npc->GetX();
my $y = $npc->GetY();
quest::set_proximity($x - 100, $x + 100, $y - 50, $y + 50);
}

If the player nears the NPC but somehow manages to not port and back up, we need to re-set the proximity or going forward again will allow the player to pass the NPC completely (I am not 100% certain of this, but it seemed to be a problem on my server).

Now, once your NPC is in place and porting you properly, edit his race and body type:
Race: 127 - Invisible Man
Body: 66 - InvisMan

And he is no longer visible, nor targettable, and players should not be able to kill him. This actually worked so well, I am considering using it throughout my world to make custom zone entries.

wayneg
09-16-2007, 12:17 PM
Thanks john, That works great !

Theeper
09-17-2007, 07:12 AM
The only problem is that sometimes this will fail. I am not sure if it's a lag issue or what, but every once in a while, someone on my server will run right through it and the proximity event never triggers. I have not been able to reproduce it though, so I put a second mob up just in case.

John Adams
09-19-2007, 03:25 AM
It is true with GM speed, you can slip through the cracks. I've tested in normal lowbie speed, and even bard speeds, and got caught every time (if the x,y was wide enough).

cavedude
09-19-2007, 03:51 AM
Grand Creation has been using similar scripts for almost a year now and it's true every now and again players report never zoning but they are almost always mounted. GM speed as mentioned above also breaks this script. Back up and you'll zone. I also get reports from people that the script sometimes sends them to invalid zone coords. Often, if they log and then come back on they find themselves at correct coords. I haven't found a cause of that yet, but it may have something to do with multi people porting at once. Though, overall these scripts are solid.