Advertisement
Guest User

Waypoint Code 1.0

a guest
Mar 13th, 2013
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 52.98 KB | None | 0 0
  1. #####################################################################################################################################################
  2. ### Quest               : player.pl (Waypoint) will be copied/moved to global_player.pl
  3. ### REQURIED PLUGIN 1   : globals.pl (plugin::var, plugin::val) for subs to get variable values. (Copy plugins to subs in player.pl ?)
  4. ### Version             : 1.0
  5. ### REQURIED PLUGIN 2   : check_hasitem.pl (plugin::check_hasitem) to determine prices via item
  6. ### QGLOBAL SOLO        : $name_Solo_$zonesn_ID
  7. ### QGLOBAL RAID        : $name_Raid_$zonesn_ID, XXX_RaidI_Leader, XXX__RaidI_Time, XXX_RaidI_$zonesn, XXX_RaidI_Status_XXX
  8. ### QGLOBAL GUILD       : XXX_Guild_$zonesn_ID, XXX_GuildI_Leader, XXX__GuildI_Time, XXX_GuildI_$zonesn, XXX_GuildI_Status_XXX
  9. ### Special Thanks      : Used code from Akkadius, Trevius, Natedog, Hateborne and a few other people.
  10. ###
  11. ### STUFF TO DO         : Edit: prices per zone in sub SOLO_COST(), RAID_COST(), GUILD_COST()
  12. ###                       Edit: popup window info for enter solo/raid/guild instance
  13. ###                       Edit: syntax from Raid Join to RaidJoin (minor tweak)
  14. ###                       Add spam delay timer for create/delete in same zone
  15. ###                       Add Join Guild <Player Name> or <Guild Name> in addition to Join Guild <number>
  16. ###                       Add: my $GuildName = $client->GuildID(); my $GuildName = quest::getguildnamebyid($guildID);
  17. ###                       Add: my $RaidGroup = $client->GetRaid(); my $raidID = $RaidGroup->GetID();
  18. ###                       Add: One command to port entire guild/raid into the instance, might require to be in same zone name though.
  19. ###
  20. ### OTHER NOTES         : This is done 100% without DBI, just qglobals. Using DBI would probably be
  21. ###                       more simple and shorter, but also could create more lag on the database.
  22. #####################################################################################################################################################
  23.  
  24. sub EVENT_SAY
  25. {
  26.     my $SoloStatus      = 1;
  27.     my $GroupStatus     = 1;
  28.     my $GuildStatus     = 1;
  29.     my $RaidStatus      = 1;
  30.  
  31.     if ($text=~/^Instance$/i || $text=~/^Instances$/i)
  32.     {
  33.         my $freeinstance = plugin::check_hasitem($client, 120003);  #EDIT item ID for FREE instance item
  34.         my $paidinstance = plugin::check_hasitem($client, 119998);  #EDIT item ID for PAID instance item
  35.         $client->Message(315," ");
  36.         if ($freeinstance)
  37.         {
  38.             $client->Message(315,"Free Waypoint Menu");
  39.             $client->Message(315,"------------------------------");
  40.         }
  41.         elsif ($paidinstance)
  42.         {
  43.             $client->Message(315,"Reglar Waypoint Menu");
  44.             $client->Message(315,"---------------------------------");
  45.         }
  46.         else
  47.         {
  48.             $client->Message(315,"Non Discount Waypoint Menu");
  49.             $client->Message(315,"-------------------------------------------");
  50.         }
  51.     }
  52.  
  53.     ###############################################################################################
  54.     ### START SOLO INSTANCES ######################################################################
  55.     if ($SoloStatus == 1)
  56.     {
  57.         if ($text=~/^Instance$/i || $text=~/^Instances$/i) {
  58.             my $SoloInstanceID  = "$name" . "_Solo_" . "$zonesn" . "_ID";
  59.             if (defined($qglobals{"$SoloInstanceID"})) {
  60.                 my $EnterSoloInstance = quest::saylink("Enter Solo", 1);
  61.                 my $DeleteSoloInstance = quest::saylink("Delete Solo", 1);
  62.                 $client->Message(315,"[$EnterSoloInstance] [$DeleteSoloInstance] Instance");
  63.                 }
  64.             else {
  65.                 my $SoloCreate = quest::saylink("Create Solo Instance", 1);
  66.                 my $SoloCost = SOLO_PRICE();
  67.                 $client->Message(315,"[$SoloCreate] : $SoloCost Platinum");
  68.                 }
  69.             $qglobals{"$SoloInstanceID"} = undef;
  70.             }
  71.  
  72.         if($text=~/^Create Solo Instance$/i) {
  73.             my $SoloInstanceID  = "$name" . "_Solo_" . "$zonesn" . "_ID";
  74.             if (defined($qglobals{"$SoloInstanceID"})) {
  75.                 $client->Message(315,"You already have a solo instance for $zonesn.");
  76.                 }
  77.             else {
  78.                 my $accountid = $client->AccountID();
  79.                 my $bankcredit = $qglobals{"BankCredit_$accountid"};
  80.                 my $SoloCost = SOLO_PRICE();
  81.                 my $cost = $SoloCost;
  82.                 if ($bankcredit < $cost) {
  83.                     $client->Message(315,"You need ". ($cost - $bankcredit) . " more plat!");
  84.                     }
  85.                 else {
  86.                     PayInstance("BankCredit", $cost, "Solo Instance");
  87.                     my $InstVersion = 0;            # Must be 0 to load NPCs into an instance
  88.                     my $InstanceDuration = 14400;
  89.                     my $EnterSoloInstance = quest::saylink("Enter Solo", 1);
  90.                     my $InstID = quest::CreateInstance("$zonesn", $InstVersion, $InstanceDuration);
  91.                     quest::setglobal("$SoloInstanceID","$InstID","7","S$InstanceDuration");
  92.                     quest::AssignToInstance($InstID);
  93.                     # $client->Message(315," ");
  94.                     $client->Message(315,"You created a solo instance ($InstID) for $zonesn.");
  95.                     $client->Message(315,"Would you like to $EnterSoloInstance instance?");
  96.                     } # create instance then send
  97.                 }
  98.             $qglobals{"$SoloInstanceID"} = undef;
  99.             }
  100.  
  101.         if($text=~/^Enter Solo$/i)
  102.         {
  103.             my $SoloInstanceID  = "$name" . "_Solo_" . "$zonesn" . "_ID";
  104.             if (defined($qglobals{"$SoloInstanceID"}))
  105.             {
  106.                 my $timestamp = localtime(time);
  107.                 my $InstID = $qglobals{"$SoloInstanceID"};
  108.                 my $Cx = $client->GetX();
  109.                 my $Cy = $client->GetY();
  110.                 my $Cz = $client->GetZ();
  111.                 quest::popup("ENTER SOLO INSTANCE","<br>
  112.                             <c \"#FE2E2E\">Moving you to SOLO instance!<br>
  113.                             <br>
  114.                             <c \"#FFFF49\">Time : &nbsp;&nbsp;&nbsp;<c \"#00FF00\">$timestamp<br>
  115.                             <c \"#FFFF49\">Name : &nbsp; <c \"#00FF00\">$name<br>
  116.                             <c \"#FFFF49\">Zone : &nbsp;&nbsp;&nbsp; <c \"#00FF00\">$zonesn<br>
  117.                             <c \"#FFFF49\">Type : &nbsp;&nbsp;&nbsp;&nbsp; <c \"#00FF00\">Solo<br>
  118.                             <br>
  119.                             <c \"#00BFFF\">ENJOY!<br>
  120.                             <br>
  121.                             <br>
  122.                             ",1050,0);
  123.                 $client->Message(315, " ");
  124.                 $client->Message(315, "Moving you to solo instance ($InstID) for $zonesn.");
  125.                 quest::MovePCInstance($zoneid, $InstID, $Cx, $Cy, $Cz);
  126.             }
  127.             else
  128.             {
  129.                 $client->Message(315,"You do not have a solo instance for $zonesn.");
  130.             } # create instance then send
  131.             $qglobals{"$SoloInstanceID"} = undef;
  132.         }
  133.  
  134.         if ($text=~/^Delete Solo$/i)
  135.         {
  136.             my $SoloInstanceID  = "$name" . "_Solo_" . "$zonesn" . "_ID";
  137.             if (defined($qglobals{"$SoloInstanceID"}))
  138.             {
  139.                 my $InstID = $qglobals{"$SoloInstanceID"};
  140.                 quest::DestroyInstance($InstID);
  141.                 quest::delglobal($SoloInstanceID);
  142.                 $client->Message(315, " ");
  143.                 $client->Message(315, "Solo Instance ($InstID) Deleted!");
  144.  
  145.             }
  146.             else
  147.             {
  148.                 $client->Message(315, "You do not have a solo instance to delete!");
  149.             }
  150.             $qglobals{"$SoloInstanceID"} = undef;
  151.         }
  152.     }
  153.     ###  END SOLO INSTANCES #######################################################################
  154.     ###############################################################################################
  155.  
  156.  
  157.     ###############################################################################################
  158.     ### START RAID INSTANCES #####################################################################
  159.     if ($RaidStatus == 1)
  160.     {
  161.         if ($text=~/^Instance$/i || $text=~/^Instances$/i)
  162.         {
  163.             my $RaidID = $name;
  164.             my $RaidInstanceID = "$RaidID" . "_Raid_" . "$zonesn" . "_ID";
  165.             if (defined($qglobals{"$RaidInstanceID"}))
  166.             {
  167.                 my $EnterRaidInstance = quest::saylink("Enter Raid", 1);
  168.                 my $DeleteRaidInstance = quest::saylink("Delete Raid", 1);
  169.                 $client->Message(315,"[$EnterRaidInstance] [$DeleteRaidInstance] Instance");
  170.             }
  171.             else
  172.             {
  173.                 my $RaidCreate = quest::saylink("Create Raid Instance", 1);
  174.                 my $RaidCost = RAID_PRICE();
  175.                 $client->Message(315,"[$RaidCreate] : $RaidCost Platinum");
  176.             }
  177.             $qglobals{"$RaidInstanceID"} = undef;
  178.         }
  179.  
  180.         if($text=~/^Create Raid Instance$/i)
  181.         {
  182.             my $RaidID = $name;
  183.             my $RaidInstanceID = "$RaidID" . "_Raid_" . "$zonesn" . "_ID";
  184.             if (defined($qglobals{"$RaidInstanceID"}))
  185.             {
  186.                 $client->Message(315,"You already have a raid instance for $zonesn.");
  187.             }
  188.             else
  189.             {
  190.                 my $accountid = $client->AccountID();
  191.                 my $bankcredit = $qglobals{"BankCredit_$accountid"};
  192.                 my $RaidCost = RAID_PRICE();
  193.                 my $cost = $RaidCost;
  194.                 if ($bankcredit < $cost)
  195.                 {
  196.                     $client->Message(315,"You need ". ($cost - $bankcredit) . " more plat!");
  197.                 }
  198.                 else
  199.                 {
  200.                     PayInstance("BankCredit", $cost, "Raid Instance");
  201.                     my $InstVersion = 0;            # Must be 0 to load NPCs in an instance
  202.                     my $InstanceDuration = 14400;
  203.                     my $EnterRaidInstance = quest::saylink("Enter Raid", 1);
  204.                     my $InstID = quest::CreateInstance("$zonesn", $InstVersion, $InstanceDuration);
  205.  
  206.                     my $LeaderZone = $InstID . "_RaidI_" . $zonesn;                                # Qglobal name for Raid Instance ID + zone to do raid invites
  207.                     quest::setglobal("$LeaderZone","$InstID","7","S$InstanceDuration");            # Qglobal name for Raid Instance ID + zone to do raid invites
  208.  
  209.                     my $LeaderName = $InstID . "_RaidI_Leader";                                    # Qglobal Instance/Zone ID to Leaders Name
  210.                     quest::setglobal("$LeaderName","$name","7","S$InstanceDuration");              # Qglobal Instance/Zone ID to Leaders Name
  211.  
  212.                     my $LeaderTime = $InstID . "_RaidI_Time";                                       # Qglobal Raid Instance Timer
  213.                     my $Expire_Time = time() + $InstanceDuration;                                   # Qglobal Raid Instance Timer
  214.                     quest::setglobal("$LeaderTime","$Expire_Time","7","S$InstanceDuration");        # Qglobal Raid Instance Timer
  215.  
  216.                     quest::setglobal("$RaidInstanceID","$InstID","7","S$InstanceDuration");        # Qglobal Set Raid Instance ID
  217.                     quest::AssignToInstance($InstID);
  218.                     # $client->Message(315," ");
  219.                     $client->Message(315,"You created a raid instance ($InstID) for $zonesn.");
  220.                     $client->Message(315,"Would you like to $EnterRaidInstance instance?");
  221.                     $qglobals{"$LeaderZone"} = undef;
  222.                     $qglobals{"$LeaderName"} = undef;
  223.                 } # create instance then send
  224.             }
  225.             $qglobals{"$RaidInstanceID"} = undef;
  226.         }
  227.  
  228.         if($text=~/^Enter Raid$/i)
  229.         {
  230.             my $RaidID = $name;
  231.             my $RaidInstanceID = "$RaidID" . "_Raid_" . "$zonesn" . "_ID";
  232.             if (defined($qglobals{"$RaidInstanceID"}))
  233.             {
  234.                 my $timestamp = localtime(time);
  235.                 my $InstID = $qglobals{"$RaidInstanceID"};
  236.                 my $Cx = $client->GetX();
  237.                 my $Cy = $client->GetY();
  238.                 my $Cz = $client->GetZ();
  239.                 quest::popup("ENTER RAID INSTANCE","<br>
  240.                             <c \"#FE2E2E\">Moving you to a RAID instance!<br>
  241.                             <br>
  242.                             <c \"#FFFF49\">Time : &nbsp;&nbsp;&nbsp;<c \"#00FF00\">$timestamp<br>
  243.                             <c \"#FFFF49\">Name : &nbsp; <c \"#00FF00\">$name<br>
  244.                             <c \"#FFFF49\">Zone : &nbsp;&nbsp;&nbsp; <c \"#00FF00\">$zonesn<br>
  245.                             <c \"#FFFF49\">Type : &nbsp;&nbsp;&nbsp;&nbsp; <c \"#00FF00\">Raid<br>
  246.                             <br>
  247.                             <c \"#00BFFF\">ENJOY!<br>
  248.                             <br>
  249.                             ",1050,0);
  250.                 $client->Message(315, " ");
  251.                 $client->Message(315, "Moving you to raid instance ($InstID) for $zonesn.");
  252.                 quest::AssignToInstance($InstID);
  253.                 quest::MovePCInstance($zoneid, $InstID, $Cx, $Cy, $Cz);
  254.             }
  255.             else
  256.             {
  257.                 $client->Message(315,"You do not have a raid instance for $zonesn.");
  258.             }   # create instance then send
  259.             $qglobals{"$RaidInstanceID"} = undef;
  260.         }
  261.  
  262.         if ($text=~/^Delete Raid$/i)
  263.         {
  264.             $client->Message(315, " ");
  265.             # $client->Message(315,"Delete Instance Not Available Yet.");
  266.             my $RaidID = $name;
  267.             my $RaidInstanceID = "$RaidID" . "_Raid_" . "$zonesn" . "_ID";
  268.             if (defined($qglobals{"$RaidInstanceID"}))
  269.             {
  270.                 my $InstID = $qglobals{"$RaidInstanceID"};
  271.                 my $LeaderZone = $InstID . "_RaidI_" . $zonesn;                                                 # Qglobal name for charid + zonesn to invite raid
  272.                 my $LeaderName = $InstID . "_RaidI_Leader";                                                     # Qglobal ID to Name
  273.                 my $LeaderTime = $InstID . "_RaidI_Time";                                                       # Qglobal Time
  274.  
  275.                 # DELETE Raid Player Qglobal to change status
  276.                 my $count = 1;
  277.                 my $raid_invite_name = $InstID . "_RaidI_Status_";
  278.                 my $temp_del = "";
  279.                 while ($count > 0)
  280.                 {
  281.                     if (defined($qglobals{"$raid_invite_name$count"}))
  282.                     {
  283.                         $temp_del = $raid_invite_name . $count;
  284.                         quest::delglobal($temp_del);
  285.                         $count ++;
  286.                     }
  287.                     else
  288.                     {
  289.                         $count = $count - 1;
  290.                         quest::gmsay("GM: Deleted $count Invited Players!", 18, 0);
  291.                         $count = 0;
  292.                     }
  293.                 }
  294.                 # END DELETE Raid Player QGlobal to change status
  295.  
  296.                 quest::DestroyInstance($InstID);
  297.                 quest::delglobal($RaidInstanceID);
  298.                 quest::delglobal($LeaderZone);
  299.                 quest::delglobal($LeaderName);
  300.                 quest::delglobal($LeaderTime);
  301.                 $client->Message(315, "Raid Instance ($InstID) Deleted!");
  302.                 $qglobals{"$LeaderZone"} = undef;
  303.                 $qglobals{"$LeaderName"} = undef;
  304.                 $qglobals{"$LeaderTime"} = undef;
  305.             }
  306.             else
  307.             {
  308.                 $client->Message(315, "You do not have a raid instance to delete!");
  309.             }
  310.             $qglobals{"$RaidInstanceID"} = undef;
  311.         }
  312.     }
  313.     ###  END RAID INSTANCES ######################################################################
  314.     ###############################################################################################
  315.  
  316.  
  317.     ###############################################################################################
  318.     ### START GUILD INSTANCES #####################################################################
  319.     if ($GuildStatus == 1)
  320.     {
  321.         if ($text=~/^Instance$/i || $text=~/^Instances$/i)
  322.         {
  323.             my $GuildID = $uguild_id;
  324.             my $GuildInstanceID = "$GuildID" . "_Guild_"  . "$zonesn" . "_ID";
  325.             if (defined($qglobals{"$GuildInstanceID"}))
  326.             {
  327.                 my $EnterGuildInstance = quest::saylink("Enter Guild", 1);
  328.                 my $DeleteGuildInstance = quest::saylink("Delete Guild", 1);
  329.                 $client->Message(315,"[$EnterGuildInstance] [$DeleteGuildInstance] Instance");
  330.             }
  331.             else
  332.             {
  333.                 my $GuildCreate = quest::saylink("Create Guild Instance", 1);
  334.                 my $GuildCost = GUILD_PRICE();
  335.                 $client->Message(315,"[$GuildCreate] : $GuildCost Platinum");
  336.             }
  337.             $qglobals{"$GuildInstanceID"} = undef;
  338.         }
  339.  
  340.         if($text=~/^Create Guild Instance$/i)
  341.         {
  342.             my $GuildID = $uguild_id;
  343.             my $GuildInstanceID = "$GuildID" . "_Guild_"  . "$zonesn" . "_ID";
  344.             if (defined($qglobals{"$GuildInstanceID"}))
  345.             {
  346.                 $client->Message(315,"You already have a guild instance for $zonesn.");
  347.             }
  348.             else
  349.             {
  350.                 my $accountid = $client->AccountID();
  351.                 my $bankcredit = $qglobals{"BankCredit_$accountid"};
  352.                 my $GuildCost = GUILD_PRICE();
  353.                 my $cost = $GuildCost;
  354.                 if ($bankcredit < $cost)
  355.                 {
  356.                     $client->Message(315,"You need ". ($cost - $bankcredit) . " more plat!");
  357.                 }
  358.                 else
  359.                 {
  360.                     PayInstance("BankCredit", $cost, "Guild Instance");
  361.                     my $InstVersion = 0;            # Must be 0 to load NPCs in an instance
  362.                     my $InstanceDuration = 14400;
  363.                     my $EnterGuildInstance = quest::saylink("Enter Guild", 1);
  364.                     my $InstID = quest::CreateInstance("$zonesn", $InstVersion, $InstanceDuration);
  365.  
  366.                     my $LeaderZone = $InstID . "_GuildI_" . $zonesn;                                # Qglobal name for Guild Instance ID + zone to do guild invites
  367.                     quest::setglobal("$LeaderZone","$InstID","7","S$InstanceDuration");             # Qglobal name for Guild Instance ID + zone to do guild invites
  368.  
  369.                     my $LeaderName = $InstID . "_GuildI_Leader";                                    # Qglobal Instance/Zone ID to Leaders Name
  370.                     quest::setglobal("$LeaderName","$name","7","S$InstanceDuration");               # Qglobal Instance/Zone ID to Leaders Name
  371.  
  372.                     my $LeaderTime = $InstID . "_GuildI_Time";                                      # Qglobal Guild Instance Timer
  373.                     my $Expire_Time = time() + $InstanceDuration;                                   # Qglobal Guild Instance Timer
  374.                     quest::setglobal("$LeaderTime","$Expire_Time","7","S$InstanceDuration");        # Qglobal Guild Instance Timer
  375.  
  376.                     quest::setglobal("$GuildInstanceID","$InstID","7","S$InstanceDuration");        # Qglobal Set Guild Instance ID
  377.                     quest::AssignToInstance($InstID);
  378.                     # $client->Message(315," ");
  379.                     $client->Message(315,"You created a guild instance ($InstID) for $zonesn.");
  380.                     $client->Message(315,"Would you like to $EnterGuildInstance instance?");
  381.                     $qglobals{"$LeaderZone"} = undef;
  382.                     $qglobals{"$LeaderName"} = undef;
  383.                 } # create instance then send
  384.             }
  385.             $qglobals{"$GuildInstanceID"} = undef;
  386.         }
  387.  
  388.         if($text=~/^Enter Guild$/i)
  389.         {
  390.             my $GuildID = $uguild_id;
  391.             my $GuildInstanceID = "$GuildID" . "_Guild_"  . "$zonesn" . "_ID";
  392.             if (defined($qglobals{"$GuildInstanceID"}))
  393.             {
  394.                 my $timestamp = localtime(time);
  395.                 my $InstID = $qglobals{"$GuildInstanceID"};
  396.                 my $Cx = $client->GetX();
  397.                 my $Cy = $client->GetY();
  398.                 my $Cz = $client->GetZ();
  399.                 quest::popup("ENTER GUILD INSTANCE","<br>
  400.                             <c \"#FE2E2E\">Moving you to a GUILD instance!<br>
  401.                             <br>
  402.                             <c \"#FFFF49\">Time : &nbsp;&nbsp;&nbsp;<c \"#00FF00\">$timestamp<br>
  403.                             <c \"#FFFF49\">Name : &nbsp; <c \"#00FF00\">$name<br>
  404.                             <c \"#FFFF49\">Zone : &nbsp;&nbsp;&nbsp; <c \"#00FF00\">$zonesn<br>
  405.                             <c \"#FFFF49\">Type : &nbsp;&nbsp;&nbsp;&nbsp; <c \"#00FF00\">Guild<br>
  406.                             <br>
  407.                             <c \"#00BFFF\">ENJOY!<br>
  408.                             <br>
  409.                             ",1050,0);
  410.                 $client->Message(315, " ");
  411.                 $client->Message(315, "Moving you to guild instance ($InstID) for $zonesn.");
  412.                 quest::AssignToInstance($InstID);
  413.                 quest::MovePCInstance($zoneid, $InstID, $Cx, $Cy, $Cz);
  414.             }
  415.             else
  416.             {
  417.                 $client->Message(315,"You do not have a guild instance for $zonesn.");
  418.             }   # create instance then send
  419.             $qglobals{"$GuildInstanceID"} = undef;
  420.         }
  421.  
  422.         if ($text=~/^Delete Guild$/i)
  423.         {
  424.             $client->Message(315, " ");
  425.             # $client->Message(315,"Delete Instance Not Available Yet.");
  426.             my $GuildID = $uguild_id;
  427.             my $GuildInstanceID = "$GuildID" . "_Guild_"  . "$zonesn" . "_ID";
  428.             if (defined($qglobals{"$GuildInstanceID"}))
  429.             {
  430.                 my $InstID = $qglobals{"$GuildInstanceID"};
  431.                 my $LeaderZone = $InstID . "_GuildI_" . $zonesn;
  432.                 my $LeaderName = $InstID . "_GuildI_Leader";
  433.                 my $LeaderTime = $InstID . "_GuildI_Time";
  434.                 # DELETE Guild Player Qglobal to change status
  435.                 my $count = 1;
  436.                 my $guild_invite_name = $InstID . "_GuildI_Status_";
  437.                 my $temp_del = "";
  438.                 while ($count > 0)
  439.                 {
  440.                     if (defined($qglobals{"$guild_invite_name$count"}))
  441.                     {
  442.                         $temp_del = $guild_invite_name . $count;
  443.                         quest::delglobal($temp_del);
  444.                         $count ++;
  445.                     }
  446.                     else
  447.                     {
  448.                         $count = $count - 1;
  449.                         quest::gmsay("GM: Deleted $count Invited Players!", 18, 0);
  450.                         $count = 0;
  451.                     }
  452.                 }
  453.                 # END DELETE Guild Player QGlobal to change status
  454.                 quest::DestroyInstance($InstID);
  455.                 quest::delglobal($GuildInstanceID);
  456.                 quest::delglobal($LeaderZone);
  457.                 quest::delglobal($LeaderName);
  458.                 quest::delglobal($LeaderTime);
  459.                 $client->Message(315, "Guild Instance ($InstID) Deleted!");
  460.  
  461.                 $qglobals{"$LeaderZone"} = undef;
  462.                 $qglobals{"$LeaderName"} = undef;
  463.                 $qglobals{"$LeaderTime"} = undef;
  464.             }
  465.             else
  466.             {
  467.                 $client->Message(315, "You do not have a guild instance to delete!");
  468.             }
  469.             $qglobals{"$GuildInstanceID"} = undef;
  470.         }
  471.     }
  472.     ###  END GUILD INSTANCES ######################################################################
  473.     ###############################################################################################
  474.  
  475.  
  476.     if ($text=~/^Instance$/i || $text=~/^Instances$/i)
  477.     {
  478.         my $GuildInvite     = quest::saylink("Guild Invite", 1);
  479.         my $GuildJoin       = quest::saylink("Guild Join", 1);
  480.         my $GuildRemove     = quest::saylink("Guild Remove", 1);
  481.         my $GuildList       = quest::saylink("Guild List", 1);
  482.  
  483.         my $RaidInvite      = quest::saylink("Raid Invite", 1);
  484.         my $RaidJoin        = quest::saylink("Raid Join", 1);
  485.         my $RaidRemove      = quest::saylink("Raid Remove", 1);
  486.         my $RaidList        = quest::saylink("Raid List", 1);
  487.  
  488.         my $ManageCredit    = quest::saylink("Manage Credit", 1);
  489.         my $LeaveInstance   = quest::saylink("Leave Instance", 1);
  490.  
  491.  
  492.         # $client->Message(315, "[$RaidInvite] [$RaidJoin] [$RaidRemove] [$RaidList]");
  493.         # $client->Message(315, "[$GuildInvite] [$GuildJoin] [$GuildRemove] [$GuildList]");
  494.         $client->Message(315, "[$RaidInvite] [$RaidJoin]");
  495.         $client->Message(315, "[$RaidRemove] [$RaidList]");
  496.         $client->Message(315, "[$GuildInvite] [$GuildJoin]");
  497.         $client->Message(315, "[$GuildRemove] [$GuildList]");
  498.         $client->Message(315, "[$LeaveInstance] [$ManageCredit]");
  499.     }
  500.  
  501.  
  502.     if($text=~/^Guild Invite$/i)
  503.     {
  504.         $client->Message(315, " ");
  505.         $client->Message(315, "Syntax: guild invite <Player Name>");
  506.     }
  507.  
  508.  
  509.     if($text=~/^Raid Invite$/i)
  510.     {
  511.         $client->Message(315, " ");
  512.         $client->Message(315, "Syntax: raid invite <Player Name>");
  513.     }
  514.  
  515.  
  516.     # Invite Guild Member
  517.     if($text=~/^Guild Invite /i && $text ne "Guild Invite")
  518.     {
  519.         my $GuildID = $uguild_id;
  520.         my $GuildInstanceID = "$GuildID" . "_Guild_"  . "$zonesn" . "_ID";
  521.         if (defined($qglobals{"$GuildInstanceID"}))
  522.         {
  523.             my $GetFriendName = substr($text, 13);
  524.             my $Instance_Invite = 0 + $qglobals{"$GuildInstanceID"};
  525.             quest::crosszonesignalclientbyname($GetFriendName, $Instance_Invite);
  526.             $client->Message(315, " ");
  527.             $client->Message(315, "You sent an invite to $GetFriendName to join instance ($Instance_Invite) in $zonesn.");
  528.         }
  529.         else
  530.         {
  531.             $client->Message(315, " ");
  532.             $client->Message(315, "You do not have a guild instance for inviting.");
  533.         }
  534.         $qglobals{"$GuildInstanceID"} = undef;
  535.     }
  536.  
  537.  
  538.     # Invite Raid Member
  539.     if($text=~/^Raid Invite /i && $text ne "Raid Invite")
  540.     {
  541.         my $RaidID = $name;
  542.         my $RaidInstanceID = "$RaidID" . "_Raid_" . "$zonesn" . "_ID";
  543.         if (defined($qglobals{"$RaidInstanceID"}))
  544.         {
  545.             my $GetFriendName = substr($text, 12);
  546.             my $Instance_Invite = 0 + $qglobals{"$RaidInstanceID"};
  547.             quest::crosszonesignalclientbyname($GetFriendName, $Instance_Invite);
  548.             $client->Message(315, " ");
  549.             $client->Message(315, "You sent an invite to $GetFriendName to join instance ($Instance_Invite) in $zonesn.");
  550.         }
  551.         else
  552.         {
  553.             $client->Message(315, " ");
  554.             $client->Message(315, "You do not have a raid instance for inviting.");
  555.         }
  556.         $qglobals{"$RaidInstanceID"} = undef;
  557.     }
  558.  
  559.  
  560.     # Invite Guild Member
  561.     if($text=~/^Guild Remove /i && $text ne "Guild Remove")
  562.     {
  563.         my $GuildID = $uguild_id;
  564.         my $GuildInstanceID = "$GuildID" . "_Guild_"  . "$zonesn" . "_ID";
  565.         if (defined($qglobals{"$GuildInstanceID"}))
  566.         {
  567.             my $GetFriendName = substr($text, 13);
  568.             my $Instance_Remove = 0 + $qglobals{"$GuildInstanceID"};
  569.             my $Instance_Remove9 =  $Instance_Remove + 900000000; # 900,000,000
  570.             quest::crosszonesignalclientbyname($GetFriendName, $Instance_Remove9);
  571.             $client->Message(315, " ");
  572.             $client->Message(315, "You removed $GetFriendName from instance ($Instance_Remove) in $zonesn.");
  573.         }
  574.         else
  575.         {
  576.             $client->Message(315, " ");
  577.             $client->Message(315, "You do not have a guild instance for inviting.");
  578.         }
  579.         $qglobals{"$GuildInstanceID"} = undef;
  580.     }
  581.  
  582.  
  583.     # Invite Raid Member
  584.     if($text=~/^Raid Remove /i && $text ne "Raid Remove")
  585.     {
  586.         my $RaidID = $name;
  587.         my $RaidInstanceID = "$RaidID" . "_Raid_" . "$zonesn" . "_ID";
  588.         if (defined($qglobals{"$RaidInstanceID"}))
  589.         {
  590.             my $GetFriendName = substr($text, 12);
  591.             my $Instance_Remove = 0 + $qglobals{"$RaidInstanceID"};
  592.             my $Instance_Remove9 =  $Instance_Remove + 900000000; # 900,000,000
  593.             quest::crosszonesignalclientbyname($GetFriendName, $Instance_Remove9);
  594.             $client->Message(315, " ");
  595.             $client->Message(315, "You removed $GetFriendName from instance ($Instance_Remove) in $zonesn.");
  596.         }
  597.         else
  598.         {
  599.             $client->Message(315, " ");
  600.             $client->Message(315, "You do not have a raid instance for inviting.");
  601.         }
  602.         $qglobals{"$RaidInstanceID"} = undef;
  603.     }
  604.  
  605.  
  606.     if($text=~/^guild join$/i)
  607.     {
  608.         $client->Message(315, " ");
  609.         $client->Message(315,"Syntax: guild join <number>");
  610.     }
  611.  
  612.  
  613.     if($text=~/^raid join$/i)
  614.     {
  615.         $client->Message(315, " ");
  616.         $client->Message(315,"Syntax: raid join <number>");
  617.     }
  618.  
  619.     if($text=~/^guild remove$/i)
  620.     {
  621.         $client->Message(315, " ");
  622.         $client->Message(315,"Syntax: guild remove <name>");
  623.     }
  624.  
  625.  
  626.     if($text=~/^raid remove$/i)
  627.     {
  628.         $client->Message(315, " ");
  629.         $client->Message(315,"Syntax: raid remove <name>");
  630.     }
  631.  
  632.    
  633.    
  634.     ###############################################################################################
  635.     ### JOIN JOIN GUILD INSTANCE ##################################################################
  636.     if($text=~/^guild join /i)
  637.     {
  638.         my $GetJoinID = substr($text, 11);
  639.         my $Check_G_Invite = $GetJoinID . "_GuildI_" . $zonesn;
  640.         my $Check_G_Leader = $GetJoinID . "_GuildI_Leader";
  641.         if (defined($qglobals{"$Check_G_Invite"}))
  642.         {
  643.             # Find Player Qglobal to change status
  644.             my $count = 1;
  645.             my $guild_invite_name = $GetJoinID . "_GuildI_Status_";
  646.             my $guild_invite_pending = $name . "_pending";
  647.             my $guild_invite_joined = $name . "_joined";
  648.             my $compare_name = "";
  649.             while ($count > 0)
  650.             {
  651.                 if (defined($qglobals{"$guild_invite_name$count"}))
  652.                 {
  653.                     $compare_name = $qglobals{"$guild_invite_name$count"};
  654.                     if ($compare_name eq $guild_invite_pending)
  655.                     {
  656.                         # my $SetTimeLeft = GET_TIME_LEFT("GUILD"); # NO
  657.                         # When qglobal name found, change value from pending to joined, then enter.
  658.                         my $GetSeconds = GET_TIME_LEFT("GUILD", $GetJoinID);
  659.                         quest::setglobal("$guild_invite_name$count","$guild_invite_joined","7","S$GetSeconds");
  660.                         my $Leader = $qglobals{"$Check_G_Leader"};
  661.                         my $timestamp = localtime(time);
  662.                         my $Cx = $client->GetX();
  663.                         my $Cy = $client->GetY();
  664.                         my $Cz = $client->GetZ();
  665.                         quest::popup("ENTERING INVITED GUILD INSTANCE","<br>
  666.                             <c \"#FE2E2E\">Moving you to a INVITED GUILD instance ($GetJoinID)!<br>
  667.                             <br>
  668.                             <c \"#FFFF49\">Time : &nbsp;&nbsp;&nbsp;<c \"#00FF00\">$timestamp<br>
  669.                             <c \"#FFFF49\">Name : &nbsp; <c \"#00FF00\">$name<br>
  670.                             <c \"#FFFF49\">Zone : &nbsp;&nbsp;&nbsp; <c \"#00FF00\">$zonesn<br>
  671.                             <c \"#FFFF49\">Type : &nbsp;&nbsp;&nbsp;&nbsp; <c \"#00FF00\">$Leader Guild Instance<br>
  672.                             <br>
  673.                             <c \"#00BFFF\">ENJOY!<br>
  674.                             <br>
  675.                             ",1050,0);
  676.                         $client->Message(315, " ");
  677.                         $client->Message(315, "Moving you to $Leader guild instance ($GetJoinID) for $zonesn.");
  678.                         $qglobals{"$guild_invite_name"} = undef;
  679.                         quest::MovePCInstance($zoneid, $GetJoinID, $Cx, $Cy, $Cz);
  680.                         $count = 0;
  681.                     }
  682.                     else
  683.                     {
  684.                         $count ++;
  685.                     }
  686.                 }
  687.                 else
  688.                 {
  689.                     $client->Message(315,"You were not invited to Instance $GetJoinID in $zonesn!");
  690.                     $count = 0;
  691.                 }
  692.             }
  693.         }
  694.         else
  695.         {
  696.             $client->Message(315,"Instance $GetJoinID in $zonesn does not exist!");
  697.         }
  698.         $qglobals{"$Check_G_Invite"} = undef;
  699.         $qglobals{"$Check_G_Leader"} = undef;
  700.     }
  701.     ###  END JOIN GUILD INSTANCE ##################################################################
  702.     ###############################################################################################
  703.  
  704.  
  705.     ###############################################################################################
  706.     ### JOIN RAID INSTANCE ########################################################################
  707.     if($text=~/^raid join /i)
  708.     {
  709.         my $GetJoinID = substr($text, 10);
  710.         my $Check_R_Invite = $GetJoinID . "_RaidI_" . $zonesn;
  711.         my $Check_R_Leader = $GetJoinID . "_RaidI_Leader";
  712.         if (defined($qglobals{"$Check_R_Invite"}))
  713.         {
  714.             # Find Player Qglobal to change status
  715.             my $count = 1;
  716.             my $raid_invite_name = $GetJoinID . "_RaidI_Status_";
  717.             my $raid_invite_value = $name . "_pending";
  718.             my $raid_invite_value2 = $name . "_joined";
  719.             while ($count > 0)
  720.             {
  721.                 if (defined($qglobals{"$raid_invite_name$count"}))
  722.                 {
  723.                     if ($qglobals{"$raid_invite_name$count"} eq $raid_invite_value)
  724.                     {
  725.                         # When qglobal name found, change value from pending to joined, then enter
  726.                         my $GetSeconds = GET_TIME_LEFT("RAID", $GetJoinID);
  727.                         quest::setglobal("$raid_invite_name$count","$raid_invite_value2","7","S$GetSeconds");
  728.                         my $Leader = $qglobals{"$Check_R_Leader"};
  729.                         my $timestamp = localtime(time);
  730.                         my $Cx = $client->GetX();
  731.                         my $Cy = $client->GetY();
  732.                         my $Cz = $client->GetZ();
  733.                         quest::popup("ENTERING INVITED RAID INSTANCE","<br>
  734.                             <c \"#FE2E2E\">Moving you to a INVITED RAID instance ($GetJoinID)!<br>
  735.                             <br>
  736.                             <c \"#FFFF49\">Time : &nbsp;&nbsp;&nbsp;<c \"#00FF00\">$timestamp<br>
  737.                             <c \"#FFFF49\">Name : &nbsp; <c \"#00FF00\">$name<br>
  738.                             <c \"#FFFF49\">Zone : &nbsp;&nbsp;&nbsp; <c \"#00FF00\">$zonesn<br>
  739.                             <c \"#FFFF49\">Type : &nbsp;&nbsp;&nbsp;&nbsp; <c \"#00FF00\">$Leader Raid Instance<br>
  740.                             <br>
  741.                             <c \"#00BFFF\">ENJOY!<br>
  742.                             <br>
  743.                             ",1050,0);
  744.                         $client->Message(315, " ");
  745.                         $client->Message(315, "Moving you to $Leader raid instance ($GetJoinID) for $zonesn.");
  746.                         $qglobals{"$raid_invite_name"} = undef;
  747.                         quest::MovePCInstance($zoneid, $GetJoinID, $Cx, $Cy, $Cz);
  748.                         $count = 0;
  749.                     }
  750.                     else
  751.                     {
  752.                         $count ++;
  753.                     }
  754.                 }
  755.                 else
  756.                 {
  757.                     $client->Message(315,"You were not invited to Instance $GetJoinID in $zonesn!");
  758.                     $count = 0;
  759.                 }
  760.             }
  761.         }
  762.         else
  763.         {
  764.             $client->Message(315,"Instance $GetJoinID in $zonesn does not exist!");
  765.         }
  766.         $qglobals{"$Check_R_Invite"} = undef;
  767.         $qglobals{"$Check_R_Leader"} = undef;
  768.     }
  769.     ###  END JOIN RAID INSTANCE ###################################################################
  770.     ###############################################################################################
  771.  
  772.  
  773.     #################################################################################################################################################
  774.     # LIST of players invited/assigned to Guild Instance
  775.     if($text=~/^Guild List$/i)
  776.     {
  777.         my $timestamp = localtime(time);
  778.         $client->Message(315," ");
  779.         my $GuildID = $uguild_id;
  780.         my $GuildInstanceID = "$GuildID" . "_Guild_"  . "$zonesn" . "_ID";
  781.         if (defined($qglobals{"$GuildInstanceID"}))
  782.         {
  783.             my $Check_G_Invite = $qglobals{"$GuildInstanceID"} . "_GuildI_" . $zonesn;
  784.             my $Check_G_Leader = $qglobals{"$GuildInstanceID"} . "_GuildI_Leader";
  785.             my $GID = $qglobals{"$GuildInstanceID"};
  786.  
  787.             # GET TIME LEFT UNTIL INSTANCE EXPIRES
  788.             my $LeaderTime  = $GID . "_GuildI_Time";
  789.             my $ExpireTime  = $qglobals{"$LeaderTime"};
  790.             my $TimeLeft    = $ExpireTime - time();
  791.             my $GetDays     = int($TimeLeft/(24*60*60));
  792.             my $GetHours    = ($TimeLeft/(60*60))%24;
  793.             my $GetMins     = ($TimeLeft/60)%60;
  794.             my $GetSecs     = $TimeLeft%60;
  795.  
  796.             $client->Message(315,"Expires: $GetDays Day, $GetHours Hr, $GetMins Min, $GetSecs Sec");
  797.             $client->Message(315,"List of players in your guild instance ($GID) in $zonesn!");
  798.             my $names_list = "";
  799.             my $temp_name = "";
  800.             my $guild_invite_name = $GID . "_GuildI_Status_";
  801.             my $count = 1;
  802.             my $player_count = 0;
  803.             while ($count > 0)
  804.             {
  805.                 if (defined($qglobals{"$guild_invite_name$count"}))
  806.                 {
  807.                     $player_count = $count;
  808.                     $temp_name = $qglobals{"$guild_invite_name$count"};
  809.                     if ($temp_name=~/pending$/i)
  810.                     {
  811.                         my $player_name = $temp_name;
  812.                         $player_name =~ s/_pending//; # string substitute flag
  813.                         my $player_status = " - Pending";
  814.                         my $player_color_yellow = "<c \"#AEB404\">";
  815.                         my $player_color_white = "<c \"#FFFFFF\">";
  816.                         my $player_space = "&nbsp;";
  817.                         my $player_break = "<br>";
  818.                         my $player_number = "<c \"#0489B1\">$count : "; # Teal Color
  819.                         $names_list = $names_list . $player_number . $player_color_white . $player_name . $player_color_yellow . $player_status . $player_break;
  820.                     }
  821.                     elsif ($temp_name=~/joined$/i)
  822.                     {
  823.                         my $player_name = $temp_name;
  824.                         $player_name =~ s/_joined//;
  825.                         my $player_status = " - Joined";
  826.                         my $player_color_green = "<c \"#298A08\">";
  827.                         my $player_color_white = "<c \"#FFFFFF\">";
  828.                         my $player_space = "&nbsp;";
  829.                         my $player_break = "<br>";
  830.                         my $player_number = "<c \"#0489B1\">$count : "; # Teal Color
  831.                         $names_list = $names_list . $player_number . $player_color_white . $player_name . $player_color_green . $player_status . $player_break;
  832.                     }
  833.                     elsif ($temp_name=~/removed$/i)
  834.                     {
  835.                         my $player_name = $temp_name;
  836.                         $player_name =~ s/_removed//;
  837.                         my $player_status = " - Removed";
  838.                         my $player_color_red = "<c \"#FE2E2E\">";
  839.                         my $player_color_white = "<c \"#FFFFFF\">";
  840.                         my $player_space = "&nbsp;";
  841.                         my $player_break = "<br>";
  842.                         my $player_number = "<c \"#0489B1\">$count : "; # Teal Color
  843.                         $names_list = $names_list . $player_number . $player_color_white . $player_name . $player_color_red . $player_status . $player_break;
  844.                     }
  845.                     else
  846.                     {
  847.                         # quest::gmsay("GM: ADD NAME ERROR.", 18, 0);
  848.                     }
  849.                     # quest::gmsay("GM: $temp_name added to List", 18, 0);
  850.                     $count ++;
  851.                 }
  852.                 else
  853.                 {
  854.                     # quest::gmsay("GM: End of List", 18, 0);
  855.                     $count = 0;
  856.                 }
  857.             }
  858.             quest::popup("GUILD INSTANCE LIST","
  859.                             Expires: $GetDays Day, $GetHours Hr, $GetMins Min, $GetSecs Sec <br>
  860.                             <c \"#FE2E2E\">List of ($player_count) players in Guild Instance ($GID) in $zonesn<br>
  861.                             &nbsp;<br>
  862.                             $names_list
  863.                             <br>
  864.                             ",1050,0);
  865.             $qglobals{"$Check_G_Invite"} = undef;
  866.             $qglobals{"$Check_G_Leader"} = undef;
  867.         }
  868.         else { $client->Message(315,"You do not have a guild instance in $zonesn!"); }
  869.         $qglobals{"$GuildInstanceID"} = undef;
  870.     }
  871.     # End Guild Instance LIST
  872.     #################################################################################################################################################
  873.  
  874.  
  875.     #################################################################################################################################################
  876.     # List of players invited/assigned to Raid Instance
  877.     if($text=~/^Raid List$/i)
  878.     {
  879.         # my $timestamp = localtime(time);
  880.         $client->Message(315," ");
  881.  
  882.         my $RaidID = $name;
  883.         my $RaidInstanceID = "$RaidID" . "_Raid_" . "$zonesn" . "_ID";
  884.         if (defined($qglobals{"$RaidInstanceID"}))
  885.         {
  886.             my $Check_G_Invite = $qglobals{"$RaidInstanceID"} . "_RaidI_" . $zonesn;
  887.             my $Check_G_Leader = $qglobals{"$RaidInstanceID"} . "_RaidI_Leader";
  888.             my $GID = $qglobals{"$RaidInstanceID"};
  889.  
  890.             # GET TIME LEFT UNTIL INSTANCE EXPIRES
  891.             my $LeaderTime  = $GID . "_RaidI_Time";
  892.             my $ExpireTime  = $qglobals{"$LeaderTime"};
  893.             my $TimeLeft    = $ExpireTime - time();
  894.             my $GetDays     = int($TimeLeft/(24*60*60));
  895.             my $GetHours    = ($TimeLeft/(60*60))%24;
  896.             my $GetMins     = ($TimeLeft/60)%60;
  897.             my $GetSecs     = $TimeLeft%60;
  898.  
  899.             $client->Message(315,"Expires: $GetDays Day, $GetHours Hr, $GetMins Min, $GetSecs Sec");
  900.             $client->Message(315,"List of players in your raid instance ($GID) in $zonesn!");
  901.             my $names_list = "";
  902.             my $temp_name = "";
  903.             my $raid_invite_name = $GID . "_RaidI_Status_";
  904.             my $count = 1;
  905.             my $player_count = 0;
  906.             while ($count > 0)
  907.             {
  908.                 if (defined($qglobals{"$raid_invite_name$count"}))
  909.                 {
  910.                     $player_count = $count;
  911.                     $temp_name = $qglobals{"$raid_invite_name$count"};
  912.                     if ($temp_name=~/pending$/i)
  913.                     {
  914.                         my $player_name = $temp_name;
  915.                         $player_name =~ s/_pending//; # string substitute flag
  916.                         my $player_status = " - Pending";
  917.                         my $player_color_yellow = "<c \"#AEB404\">";
  918.                         my $player_color_white = "<c \"#FFFFFF\">";
  919.                         my $player_space = "&nbsp;";
  920.                         my $player_break = "<br>";
  921.                         my $player_number = "<c \"#0489B1\">$count : "; # Teal Color
  922.                         $names_list = $names_list . $player_number . $player_color_white . $player_name . $player_color_yellow . $player_status . $player_break;
  923.                     }
  924.                     elsif ($temp_name=~/joined$/i)
  925.                     {
  926.  
  927.                         my $player_name = $temp_name;
  928.                         $player_name =~ s/_joined//;
  929.  
  930.                         my $player_status = " - Joined";
  931.                         my $player_color_green = "<c \"#298A08\">";
  932.                         my $player_color_white = "<c \"#FFFFFF\">";
  933.                         my $player_space = "&nbsp;";
  934.                         my $player_break = "<br>";
  935.                         my $player_number = "<c \"#0489B1\">$count : "; # Teal Color
  936.                         $names_list = $names_list . $player_number . $player_color_white . $player_name . $player_color_green . $player_status . $player_break;
  937.                     }
  938.                     elsif ($temp_name=~/removed$/i)
  939.                     {
  940.                         my $player_name = $temp_name;
  941.                         $player_name =~ s/_removed//;
  942.                         my $player_status = " - Removed";
  943.                         my $player_color_red = "<c \"#FE2E2E\">";
  944.                         my $player_color_white = "<c \"#FFFFFF\">";
  945.                         my $player_space = "&nbsp;";
  946.                         my $player_break = "<br>";
  947.                         my $player_number = "<c \"#0489B1\">$count : "; # Teal Color
  948.                         $names_list = $names_list . $player_number . $player_color_white . $player_name . $player_color_red . $player_status . $player_break;
  949.                     }
  950.                     else
  951.                     {
  952.                         quest::gmsay("GM: ADD NAME ERROR.", 18, 0);
  953.                     }
  954.                     # quest::gmsay("GM: $temp_name added to List", 18, 0);
  955.                     $count ++;
  956.                 }
  957.                 else
  958.                 {
  959.                     # quest::gmsay("GM: End of List", 18, 0);
  960.                     $count = 0;
  961.                 }
  962.             }
  963.             quest::popup("RAID INSTANCE LIST","
  964.                             Expires: $GetDays Day, $GetHours Hr, $GetMins Min, $GetSecs Sec <br>
  965.                             <c \"#FE2E2E\">List of ($player_count) players in Raid Instance ($GID) in $zonesn<br>
  966.                             &nbsp;<br>
  967.                             $names_list
  968.                             <br>
  969.                             ",1050,0);
  970.             $qglobals{"$Check_G_Invite"} = undef;
  971.             $qglobals{"$Check_G_Leader"} = undef;
  972.         }
  973.         else { $client->Message(315,"You do not have a raid instance in $zonesn!"); }
  974.         $qglobals{"$RaidInstanceID"} = undef;
  975.     }
  976.     # End Raid Instance LIST
  977.     #################################################################################################################################################
  978.  
  979.     if($text=~/^Manage credit$/i)
  980.     {
  981.         $client->Message(315, " ");
  982.         my $Deposit = quest::saylink("Deposit",1);
  983.         my $Withdraw = quest::saylink("Withdraw",1);
  984.         my $Check = quest::saylink("Check Balance",1);
  985.         $client->Message(315, "[$Check]");
  986.         $client->Message(315, "[$Deposit]");
  987.         $client->Message(315, "[$Withdraw]");
  988.     }
  989.  
  990.  
  991.     if($text =~ /^Check Balance$/i)
  992.     {
  993.         # plugin::CreditStatusAccount("BankCredit");
  994.         Check_Balance("BankCredit");
  995.     }
  996.  
  997.  
  998.     if($text =~ /^Deposit$/i)
  999.     {
  1000.         $client->Message(315," ");
  1001.         $client->Message(315,"Just give a Waypoint any amount of platinum you'd like to deposit!");
  1002.     }
  1003.  
  1004.     if($text =~ /^Withdraw$/i)
  1005.     {
  1006.         $client->Message(315," ");
  1007.         $client->Message(315,"Withdraw not available.");
  1008.     }
  1009.  
  1010.  
  1011.     if($text=~/^Leave Instance$/i)
  1012.     {
  1013.         my $Cx = $client->GetX();
  1014.         my $Cy = $client->GetY();
  1015.         my $Cz = $client->GetZ();
  1016.         my $Ch = $client->GetHeading();
  1017.         my $timestamp = localtime(time);
  1018.         $client->Message(315," ");
  1019.         $client->Message(315,"Moving you back to public zone in $zonesn!");
  1020.         quest::popup("ENTER PUBLIC ZONE","<br>
  1021.                             <c \"#FE2E2E\">Moving you to a PUBLIC zone!<br>
  1022.                             <br>
  1023.                             <c \"#FFFF49\">Time : &nbsp;&nbsp;&nbsp;<c \"#00FF00\">$timestamp<br>
  1024.                             <c \"#FFFF49\">Name : &nbsp; <c \"#00FF00\">$name<br>
  1025.                             <c \"#FFFF49\">Zone : &nbsp;&nbsp;&nbsp; <c \"#00FF00\">$zonesn<br>
  1026.                             <c \"#FFFF49\">Type : &nbsp;&nbsp;&nbsp;&nbsp; <c \"#00FF00\">Public<br>
  1027.                             <br>
  1028.                             <c \"#00BFFF\">ENJOY!<br>
  1029.                             <br>
  1030.                             ",1050,0);
  1031.         quest::movepc($zoneid, $Cx, $Cy, $Cz, $Ch);
  1032.     }
  1033.  
  1034.     # $qglobals{"$SoloInstanceID"} = undef;
  1035.     # $qglobals{"$GuildInstanceID"} = undef;
  1036.     # $qglobals{"$Check_G_Invite"}  = undef;
  1037.     # $qglobals{"$Check_G_Leader"}  = undef;
  1038.  
  1039. } # End EVENT_SAY
  1040.  
  1041.  
  1042. sub EVENT_SIGNAL
  1043. {
  1044.     # 900000000 is to remove player from instance (900,000,000)
  1045.     my $signal_instance_ID = $signal;
  1046.     if ($signal_instance_ID > 900000000) { $signal_instance_ID = $signal_instance_ID - 900000000; }
  1047.  
  1048.     my $Check_G_Invite = $signal_instance_ID . "_GuildI_" . $zonesn;
  1049.     my $Check_G_Leader = $signal_instance_ID . "_GuildI_Leader";
  1050.     my $Check_R_Invite = $signal_instance_ID . "_RaidI_" . $zonesn;
  1051.     my $Check_R_Leader = $signal_instance_ID . "_RaidI_Leader";
  1052.  
  1053.     # quest::gmsay("GM: Signal = $signal / $signal_instance_ID", 18, 0);
  1054.  
  1055.     #############################################################################################################################
  1056.     # IF GUILD INVITE ###########################################################################################################
  1057.     if (defined($qglobals{"$Check_G_Invite"}))
  1058.     {
  1059.         my $Leader = $qglobals{"$Check_G_Leader"};
  1060.         quest::AssignToInstance($signal_instance_ID);
  1061.  
  1062.         # Create a qglobal list of players invited/assigned to Guild Instance
  1063.         my $count = 1;
  1064.         my $guild_invite_name       = $signal_instance_ID . "_GuildI_Status_";
  1065.         my $guild_invite_pending    = $name . "_pending";
  1066.         my $guild_invite_joined     = $name . "_joined";
  1067.         my $guild_invite_removed    = $name . "_removed";
  1068.         while ($count > 0)
  1069.         {
  1070.             if (defined($qglobals{"$guild_invite_name$count"}))
  1071.             {
  1072.                 if ($qglobals{"$guild_invite_name$count"} eq $guild_invite_pending ||
  1073.                     $qglobals{"$guild_invite_name$count"} eq $guild_invite_joined)
  1074.                 {
  1075.                     if ($signal > 900000000)
  1076.                     {
  1077.                         my $Cx = $client->GetX();
  1078.                         my $Cy = $client->GetY();
  1079.                         my $Cz = $client->GetZ();
  1080.                         my $Ch = $client->GetHeading();
  1081.                         my $timestamp = localtime(time);
  1082.                         $client->Message(315," ");
  1083.                         $client->Message(315,"You have been removed from guild instance ($signal_instance_ID) in $zonesn!");
  1084.                         quest::popup("YOU HAVE BEEN REMOVED","<br>
  1085.                             <c \"#FE2E2E\">Moving you to a PUBLIC zone!<br>
  1086.                             <br>
  1087.                             <c \"#FFFF49\">Time : &nbsp;&nbsp;&nbsp;<c \"#00FF00\">$timestamp<br>
  1088.                             <c \"#FFFF49\">Name : &nbsp; <c \"#00FF00\">$name<br>
  1089.                             <c \"#FFFF49\">Zone : &nbsp;&nbsp;&nbsp; <c \"#00FF00\">$zonesn<br>
  1090.                             <c \"#FFFF49\">Type : &nbsp;&nbsp;&nbsp;&nbsp; <c \"#00FF00\">Public<br>
  1091.                             <br>
  1092.                             <c \"#00BFFF\">You have been removed from guild instance ($signal_instance_ID) in $zonesn!<br>
  1093.                             <br>
  1094.                             ",1050,0);
  1095.                         my $GetSeconds = GET_TIME_LEFT("GUILD", $signal_instance_ID);
  1096.                         quest::setglobal("$guild_invite_name$count","$guild_invite_removed","7","S$GetSeconds");
  1097.                         $count = 0;
  1098.                         quest::movepc($zoneid, $Cx, $Cy, $Cz, $Ch);
  1099.                     }
  1100.                     $count = 0;
  1101.                 }
  1102.                 elsif ($qglobals{"$guild_invite_name$count"} eq $guild_invite_removed)
  1103.                 {
  1104.                     if ($signal < 900000000)
  1105.                     {
  1106.                         my $GetSeconds = GET_TIME_LEFT("GUILD", $signal_instance_ID);
  1107.                         quest::setglobal("$guild_invite_name$count","$guild_invite_pending","7","S$GetSeconds");
  1108.                         $client->Message(315," ");
  1109.                         $client->Message(315,"$Leader has invited you to join a Guild Instance in $zonesn.");
  1110.                         $client->Message(315,"Type: guild join $signal_instance_ID");
  1111.                     }
  1112.                     $count = 0;
  1113.                 }
  1114.                 else
  1115.                 {
  1116.                     $count ++;
  1117.                 }
  1118.             }
  1119.             else
  1120.             {
  1121.                 ###############################################################################
  1122.                 my $GetSeconds = GET_TIME_LEFT("GUILD", $signal_instance_ID);
  1123.                 quest::setglobal("$guild_invite_name$count","$guild_invite_pending","7","S$GetSeconds");
  1124.                 $client->Message(315," ");
  1125.                 $client->Message(315,"$Leader has invited you to join a Guild Instance in $zonesn.");
  1126.                 $client->Message(315,"Type: guild join $signal_instance_ID");
  1127.                 $count = 0;
  1128.             }
  1129.         }
  1130.         $qglobals{"$Check_G_Invite"} = undef;
  1131.         $qglobals{"$Check_G_Leader"} = undef;
  1132.     }
  1133.     # END IF GUILD INVITE #######################################################################################################
  1134.     #############################################################################################################################
  1135.  
  1136.  
  1137.     #############################################################################################################################
  1138.     # IF RAID INVITE ############################################################################################################
  1139.     if (defined($qglobals{"$Check_R_Invite"}))
  1140.     {
  1141.         my $Leader = $qglobals{"$Check_R_Leader"};
  1142.         quest::AssignToInstance($signal_instance_ID);
  1143.  
  1144.         # Create a qglobal list of players invited/assigned to Raid Instance
  1145.         my $count = 1;
  1146.         my $raid_invite_name        = $signal_instance_ID . "_RaidI_Status_";
  1147.         my $raid_invite_pending     = $name . "_pending";
  1148.         my $raid_invite_joined      = $name . "_joined";
  1149.         my $raid_invite_removed     = $name . "_removed";
  1150.         while ($count > 0)
  1151.         {
  1152.             if (defined($qglobals{"$raid_invite_name$count"}))
  1153.             {
  1154.                 if ($qglobals{"$raid_invite_name$count"} eq $raid_invite_pending ||
  1155.                     $qglobals{"$raid_invite_name$count"} eq $raid_invite_joined)
  1156.                 {
  1157.                     if ($signal > 900000000)
  1158.                     {
  1159.                         my $Cx = $client->GetX();
  1160.                         my $Cy = $client->GetY();
  1161.                         my $Cz = $client->GetZ();
  1162.                         my $Ch = $client->GetHeading();
  1163.                         my $timestamp = localtime(time);
  1164.                         $client->Message(315," ");
  1165.                         $client->Message(315,"You have been removed from raid instance ($signal_instance_ID) in $zonesn!");
  1166.                         quest::popup("YOU HAVE BEEN REMOVED","<br>
  1167.                             <c \"#FE2E2E\">Moving you to a PUBLIC zone!<br>
  1168.                             <br>
  1169.                             <c \"#FFFF49\">Time : &nbsp;&nbsp;&nbsp;<c \"#00FF00\">$timestamp<br>
  1170.                             <c \"#FFFF49\">Name : &nbsp; <c \"#00FF00\">$name<br>
  1171.                             <c \"#FFFF49\">Zone : &nbsp;&nbsp;&nbsp; <c \"#00FF00\">$zonesn<br>
  1172.                             <c \"#FFFF49\">Type : &nbsp;&nbsp;&nbsp;&nbsp; <c \"#00FF00\">Public<br>
  1173.                             <br>
  1174.                             <c \"#00BFFF\">You have been removed from raid instance ($signal_instance_ID) in $zonesn!<br>
  1175.                             <br>
  1176.                             ",1050,0);
  1177.                         my $GetSeconds = GET_TIME_LEFT("RAID", $signal_instance_ID);
  1178.                         quest::setglobal("$raid_invite_name$count","$raid_invite_removed","7","S$GetSeconds");
  1179.                         $count = 0;
  1180.                         quest::movepc($zoneid, $Cx, $Cy, $Cz, $Ch);
  1181.                     }
  1182.                     $count = 0;
  1183.                 }
  1184.                 elsif ($qglobals{"$raid_invite_name$count"} eq $raid_invite_removed)
  1185.                 {
  1186.                     if ($signal < 900000000)
  1187.                     {
  1188.                         my $GetSeconds = GET_TIME_LEFT("RAID", $signal_instance_ID);
  1189.                         quest::setglobal("$raid_invite_name$count","$raid_invite_pending","7","S$GetSeconds");
  1190.                         $client->Message(315," ");
  1191.                         $client->Message(315,"$Leader has invited you to join a Raid Instance in $zonesn.");
  1192.                         $client->Message(315,"Type: raid join $signal_instance_ID");
  1193.                     }
  1194.                     $count = 0;
  1195.                 }
  1196.                 else
  1197.                 {
  1198.                     $count ++;
  1199.                 }
  1200.             }
  1201.             else
  1202.             {
  1203.                 ###############################################################################
  1204.                 my $GetSeconds = GET_TIME_LEFT("RAID", $signal_instance_ID);
  1205.                 quest::setglobal("$raid_invite_name$count","$raid_invite_pending","7","S$GetSeconds");
  1206.                 $client->Message(315," ");
  1207.                 $client->Message(315,"$Leader has invited you to join a Raid Instance in $zonesn.");
  1208.                 $client->Message(315,"Type: raid join $signal_instance_ID");
  1209.                 $count = 0;
  1210.             }
  1211.         }
  1212.         $qglobals{"$Check_R_Invite"} = undef;
  1213.         $qglobals{"$Check_R_Leader"} = undef;
  1214.     }
  1215.     # END IF RAID INVITE ########################################################################################################
  1216.     #############################################################################################################################
  1217.  
  1218. } # End EVENT_SIGNAL
  1219.  
  1220.  
  1221. #################################################################################################################################
  1222. ####   CUSTOM SUBS   ############################################################################################################
  1223. #################################################################################################################################
  1224.  
  1225.  
  1226. ### Usage: PayInstance("Creditname", Cost, "Solo/Guild/Raid");
  1227. ### This will take into account the whole account of the player
  1228. sub PayInstance
  1229. {
  1230.     my $CreditName = $_[0];
  1231.     my $Cost = $_[1];
  1232.     my $Instance_Type = $_[2]; # Solo, Guild, or Raid
  1233.     my $client = plugin::val('$client');
  1234.     my $name = plugin::val('$name');
  1235.     my $zonesn = plugin::val('$zonesn');
  1236.     my $qglobals = plugin::var('qglobals');
  1237.     my $space = "_";
  1238.     my $accountid = $client->AccountID();
  1239.     my $accountname = $client->AccountName();
  1240.     # my $CreditAmnt = $qglobals{"$CreditName$space$accountid"};
  1241.     my $CreditAmnt = $qglobals->{"$CreditName$space$accountid"};
  1242.     my $CreditAmnt2 = commify2($CreditAmnt - $Cost);
  1243.     my $CostCommify = commify2($Cost);
  1244.     if ($CreditAmnt < $Cost)
  1245.     {
  1246.         $client->Message(315,"Insuffient funds... You need " . ($Cost - $CreditAmnt) . " more Platinum pieces.");
  1247.     }
  1248.     else
  1249.     {
  1250.         $CreditAmnt -= $Cost;
  1251.         $client->SetGlobal("$CreditName$space$accountid", "$CreditAmnt", 7, 'F');
  1252.         $client->Message(315," ");
  1253.         $client->Message(315,"You now have $CreditAmnt2 platinum left.");
  1254.         my $ClientCheck = PlayerClientCheck();
  1255.         my $timestamp = localtime(time);
  1256.         quest::popup("Account Balance","
  1257.             <c \"#FFFF66\">Time : </c> $timestamp </c> <br>
  1258.             <c \"#FFFF66\">Client : </c> $ClientCheck </c> <br>
  1259.             <c \"#FFFF66\">Account : </c> $accountname <br>
  1260.             <c \"#FFFF66\">Character : </c>$name <br>
  1261.             <c \"#FFFF66\">Zone Name : </c>$zonesn <br>
  1262.             <c \"#FFFF66\">Instance Type : </c>$Instance_Type <br>
  1263.             <c \"#FFFF66\">Cost from Account : </c>  <c \"#FE2E2E</c> - $CostCommify </c> <br>
  1264.             <c \"#FFFF66\">Remaining Balance : </c> <c \"#33FF99\"> $CreditAmnt2 </c> <br>
  1265.             <br>
  1266.             <c \"#FE2E2E\">WARNING:  </c> Like <c \"#FFFF66\">Other Qglobals</c>, sometimes the zone will bug out
  1267.             and not see the current values. If your balance or instance has disappeared, try going to a public zone
  1268.             or different zone to see if it gets refresh.
  1269.             We apologize for the inconvenience as it will reappear in time.
  1270.             ");
  1271.     }
  1272.     $qglobals{"$CreditName$space$accountid"} = undef;
  1273. } # End PayInstance
  1274.  
  1275.  
  1276. ### POP UP TO DISPLAY WAYPOINT BALANCE
  1277. sub Check_Balance
  1278. {
  1279.     my $CreditName = $_[0];
  1280.     my $client = plugin::val('$client');
  1281.     my $name = plugin::val('$name');
  1282.     my $zonesn = plugin::val('$zonesn');
  1283.     my $qglobals = plugin::var('qglobals');
  1284.     my $space = "_";
  1285.     my $accountid = $client->AccountID();
  1286.     my $accountname = $client->AccountName();
  1287.     # my $CreditAmnt = $qglobals{"$CreditName$space$accountid"};
  1288.     my $CreditAmnt = $qglobals->{"$CreditName$space$accountid"};
  1289.     my $CreditAmnt2 = commify2($CreditAmnt);
  1290.     # my $CreditAmnt2 = $CreditAmnt - $Cost;
  1291.     my $ClientCheck = PlayerClientCheck();
  1292.     my $timestamp = localtime(time);
  1293.     quest::popup("Account Balance","
  1294.             <c \"#FFFF66\">Time : </c> $timestamp </c> <br>
  1295.             <c \"#FFFF66\">Client : </c> $ClientCheck </c> <br>
  1296.             <c \"#FFFF66\">Account : </c> $accountname <br>
  1297.             <c \"#FFFF66\">Character : </c>$name <br>
  1298.             <c \"#FFFF66\">Zone Name : </c>$zonesn <br>
  1299.             <c \"#FFFF66\">Remaining Balance : </c> <c \"#33FF99\"> $CreditAmnt2 </c> <br>
  1300.             <br>
  1301.             <c \"#FE2E2E\">WARNING:  </c> Like <c \"#FFFF66\">Other Qglobals</c> , sometimes the zone will bug out
  1302.             and not see the current values. If your balance or instance has disappeared, try going to a public zone
  1303.             or different zone to see if it gets refresh.
  1304.             We apologize for the inconvenience as it will reappear in time.
  1305.             ");
  1306.     $client->Message(315," ");
  1307.     $client->Message(315,"You now have $CreditAmnt2 platinum left.");
  1308.     $qglobals{"$CreditName$space$accountid"} = undef;
  1309. } # End Check_Balance
  1310.  
  1311.  
  1312. ### Check Expansion Name
  1313. sub PlayerClientCheck
  1314. {
  1315.     my $client = plugin::val('$client');
  1316.     my $clientver = $client->GetClientVersion();
  1317.     my $ShowClient = "";
  1318.     if      ($clientver == 2)   { $ShowClient = "Titanium"; }
  1319.     elsif   ($clientver == 3)   { $ShowClient = "Secrets of Faydwer"; }
  1320.     elsif   ($clientver == 4)   { $ShowClient = "Seeds of Destruction"; }
  1321.     elsif   ($clientver == 5)   { $ShowClient = "Underfoot"; }
  1322.     else                        { $ShowClient = "Other"; }
  1323.     return "$ShowClient";
  1324. }
  1325.  
  1326.  
  1327. ### Change 900000 to 900,000
  1328. sub commify2
  1329. {
  1330.    local $_  = shift;
  1331.    s{(?<!\d|\.)(\d{4,})}
  1332.     {my $n = $1;
  1333.      $n=~s/(?<=.)(?=(?:.{3})+$)/,/g;
  1334.      $n;
  1335.     }eg;
  1336.    return $_;
  1337. }
  1338.  
  1339.  
  1340. ### EDIT/UPDATE PRICES PER ZONE NAME!
  1341. sub SOLO_PRICE
  1342. {
  1343.     my $client = plugin::val('$client');
  1344.     my $freeinstance = plugin::check_hasitem($client, 120003);  #EDIT item ID for FREE instance item
  1345.     my $paidinstance = plugin::check_hasitem($client, 119998);  #EDIT item ID for PAID instance item
  1346.     my $new_price = 99999999;
  1347.  
  1348.     if      ($freeinstance) { $new_price = 0; }
  1349.     elsif   ($paidinstance) { $new_price = 1000; }
  1350.     else                    { $new_price = 50000000; }
  1351.  
  1352.     return $new_price;
  1353. }
  1354.  
  1355.  
  1356. ### EDIT/UPDATE PRICES PER ZONE NAME!
  1357. sub GUILD_PRICE
  1358. {
  1359.     my $freeinstance = plugin::check_hasitem($client, 120003);  #EDIT item ID for FREE instance item
  1360.     my $paidinstance = plugin::check_hasitem($client, 119998);  #EDIT item ID for PAID instance item
  1361.     my $new_price = 99999999;
  1362.  
  1363.     if      ($freeinstance) { $new_price = 0; }
  1364.     elsif   ($paidinstance) { $new_price = 3000; }
  1365.     else                    { $new_price = 50000000; }
  1366.  
  1367.     return $new_price;
  1368. }
  1369.  
  1370.  
  1371. ### EDIT/UPDATE PRICES PER ZONE NAME!
  1372. sub RAID_PRICE
  1373. {
  1374.     my $freeinstance = plugin::check_hasitem($client, 120003);  #EDIT item ID for FREE instance item
  1375.     my $paidinstance = plugin::check_hasitem($client, 119998);  #EDIT item ID for PAID instance item
  1376.     my $new_price = 99999999;
  1377.  
  1378.     if      ($freeinstance) { $new_price = 0; }
  1379.     elsif   ($paidinstance) { $new_price = 5000; }
  1380.     else                    { $new_price = 50000000; }
  1381.  
  1382.     return $new_price;
  1383. }
  1384.  
  1385.  
  1386. ### Gets the amount of time left for the instance so we can sync/set qglobal expire times
  1387. ### for invited player (on list) qglobal and leader created instance qglobal to expire at same time
  1388. sub GET_TIME_LEFT
  1389. {
  1390.     my $instance_type   = $_[0]; # GUILD / RAID
  1391.     my $InstID          = $_[1]; # ID OF INSTANCE
  1392.     my $TimeName    = "";
  1393.     my $qglobals = plugin::var('qglobals');
  1394.     my $LeaderTime  = "";
  1395.     my $ExpireTime  = 0;
  1396.     my $TimeLeft    = 0;
  1397.  
  1398.     if ($instance_type eq "RAID")   { $TimeName = "_RaidI_Time"; }
  1399.     if ($instance_type eq "GUILD")  { $TimeName = "_GuildI_Time"; }
  1400.     $LeaderTime = $InstID . $TimeName;
  1401.     if (defined($qglobals{"$LeaderTime"}))
  1402.     {
  1403.         $ExpireTime = $qglobals{"$LeaderTime"};
  1404.         $TimeLeft = $ExpireTime - time();
  1405.     }
  1406.  
  1407.     return $TimeLeft
  1408. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement