Go Back   EQEmulator Home > EQEmulator Forums > Quests > Quests::Q&A

Quests::Q&A This is the quest support section

Reply
 
Thread Tools Display Modes
  #1  
Old 07-03-2008, 04:36 PM
Striat
Sarnak
 
Join Date: Aug 2006
Posts: 60
Default

Quote:
Originally Posted by spider661 View Post
i dont think the death guards or proximities wold work becuase of the zone size. the zone the npc 1 sends you 2 is "loading" so its just a very small room with one boss spawned there.

i did have a thought though
how hard would it be to add a new quest command copy the setglobal and get globals and customize them to write to a new table setting a server wide variable that an npc could read.

would i just have to add a new line to questmgr.cpp copying the old and adding to it or would i have to change 200 other files to get it to work?
To add a command, you'd have to do some edits to questmgr.cpp, questmgr.h, perlparser.cpp. I think questmgr even tells you steps you would need to follow. However, I do not think it is necessary. Just use player quests. Basically, have the npc set a global and then port. Say you want 2 hours. Use kind of what I have written. Get groupID for the group and have it set the groupid as a global. then, in the zone the player zones into, have it check for that global. This may need some editing, but here is an idea that should work.

Event_Giver.pl
Code:
sub EVENT_SAY {
$groupid = undef;
my $group = $client->GetGroup();
$a = $client->GetName();

if($text=~/Hail/i){
	quest::say("Hello, $a.  Are you [interested] in a trial?");
}

if($text=~/interested/i){
if ($group) {
$groupid = $group->GetID();
$groupcount = $group->GroupCount();
quest::say("Very, well, $name.  My records show that you have a total of $groupcount members in your group.  Any attempts to add additional members AFTER entering the event will result in immediate disqualification.  Therefore, make sure your group is completely set up before saying ready.  When you are [ready], we shall begin.");
}
else {
quest::say("My records show you that you are not in a group, $name.  You may enter an event without a group, but I strongly discourage it.  If you still wish to enter, just sat when you are [ready].");
}
}

if($text=~/ready/i){
if ($qglobals{eventready} == 1) {
quest::say("Sorry, there is currently an event occurring.  You will need to wait a few minutes.");
}
else {
if ($group) {
$groupid = $group->GetID();
$groupcount = $group->GroupCount();
quest::say("Then get ready!");
quest::delglobal("eventcontender");
quest::delglobal("eventcontendersize");
quest::delglobal("eventready");
quest::setglobal("eventcontender",$groupid,7,"F");
quest::setglobal("eventcontendersize",$groupcount,7,"F");
quest::setglobal("eventready",1,7,"F");
quest::movegrp();		#ADD YOUR INFO HERE
}
}
}

}
And this script would actually go in the folder where the event is located.

player.pl
Code:
sub EVENT_ENTERZONE {
$a = undef;
$group = $entity_list->GetGroupByClient($client);
$a = $client->GetName();
$client->SetHeading(128);
quest::settimer("checkaccess", 1);
if ($group) {
	$groupid = $group->GetID();
	}
if ($qglobals{eventready}) {
if ($group && $qglobals{eventcontender} == $groupid) {
	$client->Message(15, "Your event will begin in less than a minute!");
	}
elsif ($a eq "$qglobals{eventcontender}") {
	$client->Message(15, "Your event will begin in less than a minute!");
	}
else {
	$client->Message(15, "You are not allowed access to this zone, $a!");
	quest::movepc(202,460,378,-128);
	}
	}
else {
	$client->Message(15, "You are not allowed access to this zone, $a!");
	quest::movepc(202,460,378,-128);
	}
}

sub EVENT_TIMER {
$group = $entity_list->GetGroupByClient($client);
$a = $client->GetName();
if ($group) {
	$groupid = $group->GetID();
	$groupcount = $group->GroupCount();
	}
if ($timer eq "checkaccess") {
	if ($qglobals{eventready}){
	if ($group) {
	if ($groupid != $qglobals{eventcontender}) {
      $client->Message(15, "You are not allowed access to this zone, $a!");
	quest::movepc(202,460,378,-128);
	}
	elsif ($groupcount > $qglobals{eventcontendersize}) {
      $client->Message(15, "You have illegally added members to your group!");
	quest::movepc(202,460,378,-128);
	}
	}
	elsif (!$group && $a ne "$qglobals{eventcontender}") {
	$client->Message(15, "You are not allowed access to this zone, $a!");
	quest::movepc(202,460,378,-128);
	}
      }

	}
 }
Reply With Quote
Reply

Thread Tools
Display Modes

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 03:09 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 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3