Quote:
Originally Posted by spider661
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);
}
}
}
}