View Single Post
  #4  
Old 09-25-2018, 06:40 PM
superpally1
Sarnak
 
Join Date: Jul 2018
Location: Tennessee
Posts: 33
Default

Ok here it is with the added teleporter code. I also added options to view/edit hotzone bonus value

Code:
#
#
# Can be used for an NPC that will only list current hot zones to players with status < 150
#
#
# Must have status > 150 to change server settings.
#
#
# To change hotzones type: /say add hotzone zonesn or /say remove hotzone zonesn.
# Example: /say add hotzone nro
# This would add nro to the hotzone list.
# Example: /say remove hotzone nro
# This would remove nro from the hotzone list.
#
#
# To set the Hot Zone Bonus value, type /say set hotzonebonus value
# Example : /say set hotzonebonus 1.50
# This would set the Hot Zone Bonus to double the default setting. (default = 0.75)
#
#
# To set the AA XP Modifier value, type /say set aaxpmod value
# Example : /say set aaxpmod 1.50
# This would set the AA XP Modifier to double the default setting. (default = 0.75)
#
#
# To set the EXP Modifier value, type /say set expmod value
# Example : /say set expmod 1.50
# This would set the EXP Modifier to double the default setting. (default = 0.75)
#
#
# To set the Group EXP Modifier value, type /say set groupexpmod value
# Example : /say set groupexpmod 1.20
# This would set the Group EXP Modifier to double the default setting. (default = 0.60)
#
#
# To set the Global Loot Multiplier value, type /say set lootmod value
# Example : /say set lootmod 2
# This would set the Global Loot Multiplier to double the default setting. (default = 1)
#
#
sub EVENT_SAY {
	@args = split(' ', $text);
	my @zone_array = plugin::NonCustomZoneArray();
	my $count = 0;
 	if ($text=~/hail/i) {
		$client->Message(15,"Tell me the short name of a zone and I will see if I have a spell to send you there.");
		$client->Message(15,"I will " . quest::saylink("display", 1) . " zone names if you like.");
		$client->Message(15,"I can also list the"  .  quest::saylink("Current hotzones", 1) . ".");
		$client->Message(15,"And I can"  .  quest::saylink("bind you here", 1)  .  ".");
		if($status > 150) {
		    $client->Message(15,""  .quest::saylink("Server Settings", 1)."");
		}
	}
	if($text=~/Current hotzones/i) {
		$client->Message(15,"Current hotzones are : ");
		my $connect = plugin::LoadMysql();
		my $found_zone = 0;
                my $sql_query = ("SELECT short_name FROM zone WHERE hotzone=1");
		my $sql_handler = $connect->prepare($sql_query);
		$sql_handler->execute();
		while (@zone_row = $sql_handler->fetchrow_array()) {
		$found_zone++;
    		$say_links = quest::saylink("$zone_row[0]", 1);
		$client->Message(15,"$say_links.");
                $connect->disconnect();
		}
		if($status > 150) {
		    $client->Message(12,"To change hotzones type: /say add hotzone zonesn or /say remove hotzone zonesn.");
		    $client->Message(12,"Example: /say add hotzone nro");
		    $client->Message(12,"This would add nro to the hotzone list.");
		    $client->Message(12,"Example: /say remove hotzone nro");
		    $client->Message(12,"This would remove nro from the hotzone list.");
		}
	}
	if($status > 150) {
	    if($text=~/add hotzone/i) {
                my $connect = plugin::LoadMysql();
                $query = ("UPDATE zone SET hotzone = 1 WHERE short_name = '$args[2]'");
	        $client->Message(14,"$args[2], added to hotzone list.");
                $query_handle = $connect->prepare($query);
                $query_handle->execute();
                $connect->disconnect;		
	    }
	    if($text=~/remove hotzone/i) {
                my $connect = plugin::LoadMysql();
                $query = ("UPDATE zone SET hotzone = 0 WHERE short_name = '$args[2]'");
		$client->Message(13,"$args[2], removed from hotzone list.");
                $query_handle = $connect->prepare($query);
                $query_handle->execute();
                $connect->disconnect;
	    }
	    if($text=~/Server Settings/i) {
                $client->Message(15,"Display_"  .  quest::saylink("HOTZONE Bonus", 1)  .  ".");
	        $client->Message(15,"Display_"  .  quest::saylink("AA XP Modifier", 1)  .  ".");
		$client->Message(15,"Display_"  .  quest::saylink("EXP Modifier", 1)  .  ".");
		$client->Message(15,"Display_"  .  quest::saylink("Group EXP Modifier", 1)  .  ".");
		$client->Message(15,"Display_"  .  quest::saylink("LOOT Multiplier", 1)  .  ".");
	    }
            if($text=~/HOTZONE Bonus/i) {
	        $client->Message(15,"Current Hot Zone bonus  is : ");
		my $connect = plugin::LoadMysql();
		my $sql_query = ("SELECT rule_value FROM rule_values WHERE rule_name='Zone:HotZoneBonus'");
		my $sql_handler = $connect->prepare($sql_query);
		$sql_handler->execute();
                @data_found = $sql_handler->fetchrow_array();
		$client->Message(15,"$data_found[0].");
		$connect->disconnect();
		$client->Message(12,"Default value is 0.75");
		$client->Message(12,"To set the Hot Zone Bonus value, type /say set hotzonebonus value");
		$client->Message(12,"Example : /say set hotzonebonus 1.50");
		$client->Message(12,"This would set the Hot Zone Bonus to double the default setting.");
	    }
	    if($text=~/set hotzonebonus/i) {
                my $connect = plugin::LoadMysql();
                $query = ("UPDATE rule_values SET rule_value='$args[2]' WHERE rule_name='Zone:HotZoneBonus'");
                $query_handle = $connect->prepare($query);
                $query_handle->execute();
		$connect->disconnect;
                $client->Message(14,"Hot Zone Bonus set to : $args[2].");	
            }		
	    if($text=~/AA XP Modifier/i) {
	        $client->Message(15,"Current AA XP Modifier is : ");
		my $connect = plugin::LoadMysql();
		my $sql_query = ("SELECT value FROM variables WHERE varname='AAXPMod'");
		my $sql_handler = $connect->prepare($sql_query);
		$sql_handler->execute();
                @data_found = $sql_handler->fetchrow_array();
		$client->Message(15,"$data_found[0].");
		$connect->disconnect();
		$client->Message(12,"Default value is 0.75");
		$client->Message(12,"To set the AA XP Modifier value, type /say set aaxpmod value");
		$client->Message(12,"Example : /say set aaxpmod 1.50");
		$client->Message(12,"This would set the AA XP Modifier to double the default setting.");
	    }
	    if($text=~/set aaxpmod/i) {
                my $connect = plugin::LoadMysql();
                $query = ("UPDATE variables SET value='$args[2]' WHERE varname='AAXPMod'");
                $query_handle = $connect->prepare($query);
                $query_handle->execute();
		$connect->disconnect;
                $client->Message(14,"AA XP Modifier set to : $args[2].");	
            }
	    if($text=~/EXP Modifier/i) {
	        $client->Message(15,"Current EXP Modifier is : ");
	        my $connect = plugin::LoadMysql();
	        my $sql_query = ("SELECT value FROM variables WHERE varname='EXPMod'");
	        my $sql_handler = $connect->prepare($sql_query);
	        $sql_handler->execute();
                @data_found = $sql_handler->fetchrow_array();
	        $client->Message(15,"$data_found[0].");
	        $connect->disconnect();
	        $client->Message(12,"Default value is 0.75");
	        $client->Message(12,"To set the EXP Modifier value, type /say set expmod value");
	        $client->Message(12,"Example : /say set expmod 1.50");
	        $client->Message(12,"This would set the EXP Modifier to double the default setting.");
	    }
	    if($text=~/set expmod/i) {
                my $connect = plugin::LoadMysql();
                $query = ("UPDATE variables SET value='$args[2]' WHERE varname='EXPMod'");
                $query_handle = $connect->prepare($query);
                $query_handle->execute();
                $connect->disconnect;
                $client->Message(14,"EXP Modifier set to : $args[2].");
            }
	    if($text=~/Group EXP Modifier/i) {
	        $client->Message(15,"Current Group EXP Modifier is : ");
		my $connect = plugin::LoadMysql();
		my $sql_query = ("SELECT value FROM variables WHERE varname='GroupEXPBonus'");
		my $sql_handler = $connect->prepare($sql_query);
	        $sql_handler->execute();
                @data_found = $sql_handler->fetchrow_array();
		$client->Message(15,"$data_found[0].");
		$connect->disconnect();
		$client->Message(12,"Default value is 0.60");
		$client->Message(12,"To set the Group EXP Modifier value, type /say set groupexpmod value");
		$client->Message(12,"Example : /say set groupexpmod 1.20");
		$client->Message(12,"This would set the Group EXP Modifier to double the default setting.");
	    }
	    if($text=~/set groupexpmod/i) {
                my $connect = plugin::LoadMysql();
                $query = ("UPDATE variables SET value='$args[2]' WHERE varname='GroupEXPBonus'");
                $query_handle = $connect->prepare($query);
                $query_handle->execute();
                $connect->disconnect;
                $client->Message(14,"Group EXP Modifier set to : $args[2].");	
            }
	    if($text=~/LOOT Multiplier/i) {
	        $client->Message(15,"Current Global Loot Multiplier is : ");
		my $connect = plugin::LoadMysql();
		my $sql_query = ("SELECT rule_value FROM rule_values WHERE rule_name='Zone:GlobalLootMultiplier'");
		my $sql_handler = $connect->prepare($sql_query);
		$sql_handler->execute();
                @data_found = $sql_handler->fetchrow_array();
		$client->Message(15,"$data_found[0].");
		$connect->disconnect();
		$client->Message(12,"Default value is 1");
		$client->Message(12,"To set the Global Loot Multiplier value, type /say set lootmod value");
		$client->Message(12,"Example : /say set lootmod 2");
		$client->Message(12,"This would set the Global Loot Multiplier to double the default setting. (Double Loot)");
	    }
	    if($text=~/set lootmod/i) {
                my $connect = plugin::LoadMysql();
                $query = ("UPDATE rule_values SET rule_value='$args[2]' WHERE rule_name='Zone:GlobalLootMultiplier'");
                $query_handle = $connect->prepare($query);
                $query_handle->execute();
                $connect->disconnect;
                $client->Message(14,"Global Loot Multiplier set to : $args[2].");		
            }
	}
	if($text=~/bind you here/i) {
	    quest::say("Binding your soul. You will return here when you die.");
	    quest::selfcast(2049);
	}
	if($text=~/display/i) {
	    plugin::Whisper("I may list them alphabetically, just say a letter from 'A' to 'Z'.");
	}
	if($text=~/[a-zA-Z]/ && length($text) == 1) {
	    foreach $zone (@zone_array) {
	        if(substr($zone, 0, 1)=~/$text/i) {
		    $count++;
	            plugin::Message("$count: " . quest::saylink($zone, 1, plugin::Zone("SN", "LN", $zone)));
		}
	    }
	    plugin::Message("There are $count zones that begin with $text!");
	}
	if($text!~/[a-zA-Z]/) {
	    plugin::Whisper("You must search with alphabetic characters, try again.");
	}
	if($text!~/hail/i && $text!~/list/i && $text!~/bind you here/i && $text!~/Current hotzones/i 
	&& $text!~/add hotzone/i && $text!~/remove hotzone/i && $text!~/Server Settings/i && $text!~/AA XP Modifier/i 
	&& $text!~/set aaxpmod/i && $text!~/EXP Modifier/i && $text!~/set expmod/i && $text!~/Group EXP Modifier/i 
	&& $text!~/set groupexpmod/i && $text!~/LOOT Multiplier/i && $text!~/set lootmod/i 
        && $text!~/HOTZONE Bonus/i && $text!~/set hotzonebonus/i && length($text) != 1) {
		foreach $zone (@zone_array) 
		{
		    if($text eq $zone) {
		        quest::zone($text);
		    }
		}
	}
}
Reply With Quote