NatedogEZ |
01-21-2013 11:51 PM |
Here is the instance code I am using.
Currently allows Solo / Group / Guild
Guild and group will only show up if you are in.. well... a GUILD or GROUP! =p
If that guild / group / solo -- has an instance already defined you have 2 options now!
Can either Enter the instance or Delete it -- I might have to add a pop-up for delete so people don't just go ... OOPS deleted.
The event spawn / timer were not written by me but adds a neat effect to the NPC.
Use this / pick through it --- might help you with what you are trying to do.
One thing I need to add is an Instance Wipe .. but I am lazy
Code:
sub EVENT_SPAWN {
my $x = $npc->GetX();
my $y = $npc->GetY();
my $z = $npc->GetZ();
my $range = (15);
quest::set_proximity($x - $range, $x + $range, $y - $range, $y + $range, $z - 10, $z + 20);
quest::settimer("effect",1);
quest::settimer("effect2",1);
}
sub EVENT_ENTER
{
$client->Message(315, "For Waypoint Options: Target the portal and Hail for options.");
}
sub EVENT_TIMER
{
if($timer eq "effect"){
$npc->SpellEffect(178);
$npc->SpellEffect(203);
$npc->SendAppearanceEffect(77,78);
quest::stoptimer("effect");
quest::settimer("effect",12);
}
if($timer eq "effect2"){
$npc->SendAppearanceEffect(77,78);
quest::stoptimer("effect2");
quest::settimer("effect2",4);
}
}
sub EVENT_SAY
{
my $Cx = $client->GetX();
my $Cy = $client->GetY();
my $Cz = $client->GetZ();
my $createsolo = quest::saylink("Create Solo",1);
my $entersolo = quest::saylink("Enter Solo",1);
my $deletesolo = quest::saylink("Delete Solo",1);
my $createguild = quest::saylink("Create Guild",1);
my $enterguild = quest::saylink("Enter Guild",1);
my $deleteguild = quest::saylink("Delete Guild",1);
my $creategroup = quest::saylink("Create Group",1);
my $entergroup = quest::saylink("Enter Group",1);
my $deletegroup = quest::saylink("Delete Group",1);
my $space = "_";
my $instguild = "guild";
my $soloinst = "solo";
my $groupinst = "group";
my $soloname = "$name";
my $sologlob = "$name$space$soloinst$space$zonesn";
my $guildglob = "$uguild_id$space$instguild$space$zonesn";
my $qglobals = plugin::var('qglobals');
my $GETGROUP = plugin::GetGroupID();
my $groupglob = "$GETGROUP$space$groupinst$space$zonesn";
if($text=~/Hail/i)
{
$client->Message(15,"---------- ");
#Check to see if player has solo instance in current zone
if (defined $qglobals{$sologlob})
{
$client->Message(15,"$entersolo instance!");
$client->Message(15,"$deletesolo instance!");
}
else
{
$client->Message(15,"$createsolo instance!");
}
$client->Message(15,"----------");
#End solo check
#Check if player is in guild otherwise no prompt for guild
if($uguild_id >=1)
{
if (defined $qglobals{$guildglob})
{
$client->Message(15,"$enterguild instance!");
$client->Message(15,"$deleteguild instance!");
}
else
{
$client->Message(15,"$createguild instance!");
}
}
#End Guild check
$client->Message(15,"----------"); #break
#Check if player is grouped otherwise no prompt
if ($GETGROUP >= 1)
{
if (defined $qglobals{$groupglob})
{
$client->Message(15,"$entergroup instance!");
$client->Message(15,"$deletegroup instance!");
}
else
{
$client->Message(15,"$creategroup instance!");
}
}
#End Group Check
}
#Start Create
#Create solo start
if($text=~/Create Solo/i && !defined $qglobals{$sologlob})
{
plugin::SendToInstance("solo", "$zonesn", 0, $Cx, $Cy, $Cz, solo, 86400);
}
elsif($text=~/Create Solo/i && defined $qglobals{$sologlob})
{
$client->Message(15,"You have a solo instance type - $entersolo!");
}
#Create solo end
#Create group start
if($text=~/Create Group/i && !defined $qglobals{$groupglob})
{
my $isgrouped = $client->GetGroup();
if($isgrouped >= 1)
{
my $groupsid = $isgrouped->GetID();
plugin::SendToInstance("group", "$zonesn", 0, $Cx, $Cy, $Cz, group, 86400);
}
else
{
$client->Message(315,"You must be in a Group to create a Group Instance!");
}
}
elsif($text=~/Create Group/i && defined $qglobals{$groupglob})
{
$client->Message(15,"You have a guild instance type - $entergroup!");
}
#Create group end
#Create guild start
if($text=~/Create Guild/i && !defined $qglobals{$guildglob})
{
if ($uguild_id >=1)
{
plugin::SendToInstance("guild", "$zonesn", 0, $Cx, $Cy, $Cz, guild, 259200);
}
else {
$client->Message(15,"You must be in a guild to create a guild instance!");
}
}
elsif($text=~/Create Guild/i && defined $qglobals{$guildglob})
{
$client->Message(15,"You have a guild instance type - $enterguild!");
}
#Create guild end
#END CREATE
#Start ENTER
if($text=~/Enter Solo/i && defined $qglobals{$sologlob})
{
my $instid = $qglobals->{$sologlob};
quest::AssignToInstance($instid);
quest::MovePCInstance($zonesn, $instid, $Cx, $Cy, $Cz);
}
if($text=~/Enter Guild/i && defined $qglobals{$guildglob})
{
my $instid = $qglobals->{$guildglob};
quest::AssignToInstance($instid);
quest::MovePCInstance($zonesn, $instid, $Cx, $Cy, $Cz);
}
if($text=~/Enter Group/i && defined $qglobals{$groupglob})
{
my $instid = $qglobals->{$groupglob};
quest::AssignToInstance($instid);
quest::MovePCInstance($zonesn, $instid, $Cx, $Cy, $Cz);
}
#End Enter
#Start Delete
if($text=~/Delete Solo/i && defined $qglobals{$sologlob})
{
quest::delglobal($sologlob);
}
if($text=~/Delete Group/i && defined $qglobals{$groupglob})
{
quest::delglobal($groupglob);
}
if($text=~/Delete Guild/i && defined $qglobals{$guildglob})
{
quest::delglobal($guildglob);
}
#End Delete
}
|