EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::Windows Servers (https://www.eqemulator.org/forums/forumdisplay.php?f=587)
-   -   If mob is up... Have to fight it (https://www.eqemulator.org/forums/showthread.php?t=41473)

Fridgecritter 08-11-2017 03:43 PM

If mob is up... Have to fight it
 
I'm trying to make it so when a player enters the sleeper zone, if a certain mob is up, and they do a #zone x y z to get passed the mob, they get summoned to the npc. Like when you enter the zone soldungb and you're over a certain level, if he's up, naggy will banish you.

I toyed with EVENT_ENTER a little but I'm not getting it right. I want the NPC to summon them after 30 seconds or so in the zone. That way they can get a few buffs in, start to aggro something else and BAM! When the mob has been killed, it won't matter and players can zone in. But I'm going to make the respawn timers such that by the time the first few mobs start to respawn, the summoning mob will respawn too.

Maybe there can be a flag put on the player that makes it so it won't summon them if they have the flag? That's just an extra thought.

I've learned a ton over the last few months making this server, and I appreciate all of the help.

Fridgecritter 08-11-2017 04:58 PM

This is what I've got right now, just so you know I'm not just leeching. I'm trying.

Code:

sub EVENT_ENTERZONE {
  if (($ulevel < 70) && ($status < 80)) {
    quest::ze(0,"You are not worthy!");
    $client->MovePC(202,-285,-148,-159.12,71.5);
  }
  elsif (($ulevel >= 70) && ($status < 80)) {
    quest::echo(0, "You must best me before you are deemed worthy!");
    $client->MovePC(128,37.29,-7.22,1.98,199.8);
  }
}


The_Beast 08-11-2017 05:26 PM

I've always used quest::

quest::movepc(202,-285,-148,-159.12,71.5);

As for the rest, maybe Kingly will pop around, he's a wiz for more advanced perl :)

The_Beast 08-11-2017 05:40 PM

Actually, if you want something to practice with timers, check out the player.pl script for the guildlobby EVENT_ENTER section.
(It sets you afk after xx minutes)

Fridgecritter 08-11-2017 05:41 PM

Quote:

Originally Posted by The_Beast (Post 255450)
Actually, if you want something to practice with timers, check out the player.pl script for the guildlobby EVENT_ENTER section.
(It sets you afk after xx minutes)

Thanks! Was looking for something I could rape and pillage from, err I mean use as an example.

The_Beast 08-11-2017 05:47 PM

Quote:

Originally Posted by Fridgecritter (Post 255451)
Thanks! Was looking for something I could rape and pillage from, err I mean use as an example.

EXACTLY ! lol Everything I've learned in perl so far, I've started with examples like that and went from there.

Fridgecritter 08-11-2017 06:30 PM

I'm hitting a brick wall. I know it's as simple as a } in the wrong place or something.

Fridgecritter 08-11-2017 06:48 PM

I don't even need the quest flag part. I just wanna get the level check < 70 = boot to POK and =>70 = move to right in front of him so he'll aggro.

The_Beast 08-11-2017 07:19 PM

Quote:

Originally Posted by Fridgecritter (Post 255456)
I don't even need the quest flag part. I just wanna get the level check < 70 = boot to POK and =>70 = move to right in front of him so he'll aggro.

Try this. I've always had probs when tryng to specify a heading in x,y,z in a movepc script, so I just don't bother.
Code:


sub EVENT_ENTERZONE {
  if (($ulevel < 70) && ($status < 80)) {
    quest::ze(0,"You are not worthy!");
    quest::movepc(202,-285,-148,-159.12);
  }
  elsif (($ulevel >= 70) && ($status < 80)) {
    quest::emote(0, "You must best me before you are deemed worthy!");
    quest::movepc(128,37.29,-7.22,1.98);
  }
}


The_Beast 08-11-2017 07:24 PM

Myself, I usually don't call for status in something so simple, I use a level range.

if (($ulevel > 0) && ($ulevel < 70)) {

and this

elsif (($ulevel > 69) && ($ulevel < 80)) {

The_Beast 08-11-2017 07:50 PM

I just ran a test with this entering Nexus, <70 it sent me to pok, 70+ it sent me to center nexus. I used "ze" for both msg's.

Code:

sub EVENT_ENTERZONE {
  if (($ulevel > 0) && ($ulevel < 70)) {
    quest::ze(0,"You are not worthy!");
    quest::movepc(202,-285,-148,-159.12);
  }
  elsif (($ulevel > 69) && ($ulevel < 76)) {
    quest::ze(0, "You must best me before you are deemed worthy!");
    quest::movepc(152,-6.17,0.75,-31.81);
  }
}


Xzam 08-11-2017 08:03 PM

I wonder if you could just have the mob summon the player every 6 sec or so?

The_Beast 08-11-2017 09:08 PM

Quote:

Originally Posted by Xzam (Post 255460)
I wonder if you could just have the mob summon the player every 6 sec or so?

Once the mob is aggro'd you would have to zone to lose it. If it has summoning ability added to special attacks, then
you won't have to worry about being invited back :P

Fridgecritter 08-11-2017 10:20 PM

Didn't work. Had a level 70 player zone in and it didn't move him. I logged on a regular account and zoned in with a level 69 character and it didn't boot me.

Fridgecritter 08-11-2017 10:20 PM

This mob will kill most 70s unless they are super geared, let alone anyone else. Once there's aggro you can either kill the mob or you can't. It happens super fast if you can't

Fridgecritter 08-11-2017 10:37 PM

OK so I changed the script name to player.pl and it works. But it won't work as an NPC script. Super weird.

The_Beast 08-11-2017 11:03 PM

No, ENTERZONE has to be on a player.pl script. On an NPC, using a sub EVENT_ENTER is for coming within a proximity of an NPC.

Fridgecritter 08-11-2017 11:31 PM

Ahh ok, well then I need a check to see if the NPC is up, for the summon part. If the NPC isn't up then it doesn't need to move them. So a group of players can kill the guardian for the server for a while until he repops, but it will keep new players from zoning in just to loot corpses still. I'll check naggy's script cause I know it does a check for the NPC.

The_Beast 08-11-2017 11:47 PM

Something I doing on mine, with a customized zone, players have to be script ported in and they will have the option to
go instance or non-instance version. Some like to be alone, others don't, lol

Fridgecritter 08-12-2017 12:18 AM

After I get the server migrated to the new machine I can do a lot more with it. That sounds cool.

Kingly_Krab 08-12-2017 04:32 AM

This isn't the best, but it'll do what you want it to do I believe. When the player zones in the script checks if NPC ID # is spawned. If it is a timer for 30 seconds is set on the player. When the timer expires, the client is moved to the NPC's current co-ordinates.

Code:

sub EVENT_ENTERZONE {
    if ($entity_list->GetNPCByNPCTypeID(#)) {
        quest::settimer("Summon", 30);
    }
}

sub EVENT_TIMER {
    if ($timer eq "Summon") {
        if ($entity_list->GetNPCByNPCTypeID(#)) {
            $client->MovePC($zoneid, $entity_list->GetNPCByNPCTypeID(#)->GetX(), $entity_list->GetNPCByNPCTypeID(#)->GetY(), $entity_list->GetNPCByNPCTypeID(#)->GetZ(), $entity_list->GetNPCByNPCTypeID(#)->GetHeading());
        }
        quest::stoptimer("Summon");
    }
}


NatedogEZ 08-12-2017 05:47 AM

Why not just make the NPC spawn immune until that mob is killed? Have like a 30sec timer that checks if the NPC is dead it sets him attackable.

The_Beast 08-12-2017 07:10 AM

Quote:

Originally Posted by Kingly_Krab (Post 255471)
This isn't the best, but it'll do what you want it to do I believe.

I just checked this out myself. I put it in the player script in nexus for one of the scion ID's and I did indeed get
summoned. I don't need it for FC's purpose, but it gives me other ideas. Thanks to you Kingly :)
I am curious if something like this would be picked up as a "warp" in the db radar system. I'll check it out later.

Scorpious2k 08-12-2017 09:33 AM

Seems to me the problem is that you give players #zone. Why not just give them #peqzone instead and disable it in any zone where it causes a problem?

Fridgecritter 08-12-2017 10:24 AM

Yeah it's more of a fun thing than preventing any kind of cheat. I just want them to kill that dragon first as sort of a right of passage.

Fridgecritter 08-12-2017 10:24 AM

That code looks simple and amazing. Thanks a ton.


All times are GMT -4. The time now is 04:08 PM.

Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.