I am going to start a list here for plugin functions, so that it is more obvious as to what functions we have available in the repository and to inspire others to contribute their own plugins as well.
Plugins are basically Perl sub routine functions that are located in the ServerDirectory/plugins directory where the source code defines where the plugin:: functions are pulled from.
I will start by listing all of the functions in the repository for a quick access list of their syntax and their functions/examples. If the explanation is too bloated or is thoroughly described in another thread I will provide a link to it.
Instances.pl
plugin::SendToInstance("solo/guild/group/public", "Zone Short Name", Version, X, Y, Z, "Identifier", duration in seconds");
Explanation located:
http://www.eqemulator.org/forums/showthread.php?t=32609
plugin::ListZoneSNToID("Zone Short Name Here");
* This plugin returns the ID of a zone's shortname. (Used by the above instance plugin.
Usage:
Code:
my $ZoneID = plugin::ListZoneSNToID("highkeep");
$client->Message(15, "Your zone ID for Highkeep is $ZoneID!");
It will respond with:
Quote:
Your zone ID for Highkeep is 6!
|
Quest_Credit.pl
Refer to this thread for Qglobal based credit system functionality:
http://www.eqemulator.org/forums/sho...526#post200526
anim.pl
Code:
plugin::DoAnim && plugin::SetAnim
Examples located here:
http://eqemulator.org/forums/showthread.php?t=31241
check_handin.pl
Examples located here:
http://code.google.com/p/projecteqqu...of_Elements.pl
See Sub EVENT_ITEM
check_hasitem.pl
Used to check if a player has an item, goes through inventory, bags, cursor, bank, shared bank etc.
Code:
plugin::check_hasitem($client, itemid);
client_functions.pl
Code:
plugin::ClientCheck();
Returns the client in a string: my $ClientVer = plugin::ClientCheck(); would return "Seeds of Destruction" if I had the Seeds of Destruction client, and same for Titanium, SoF, HoT etc.
client_messages.pl
Code:
plugin::Whisper("Message"); & plugin::ClientSay("Message");
Whisper outputs "NPC whispers, 'Message'"
ClientSay outputs "NPC says, 'Message'" and also has a space of empty text right below the message.
formation_tools.pl
Huge array of NPC marching utilities created by Trevius. Usage and examples can be found here:
http://www.eqemulator.org/forums/showthread.php?t=32586
illusion_tools.pl
Code:
plugin::RandomFeatures(Mob);
plugin::CloneAppearance(MobA, MobB, CloneName=false);
Examples can be found here:
http://www.eqemulator.org/forums/showthread.php?t=33511
mob_utils.pl
Code:
#Usage: plugin::MobHealPercentage(Numberofpercent);
#Usage: plugin::MobHealPoints(Hitpoints to heal);
#Usage: plugin::SpawnInPlace(NPCID to spawn in place, [1 = Don't depop what spawns in place]);
#Usage: plugin::SpawnChest(Chest NPCID to spawn in place, [the integer range you want the chest to randomly spawn from the dead mob]);
#Similar to plugin::SpawnInPlace, this plugin will spawn a chest in the same place, or will spawn a chest within a random generated desired range defined in the second arguement
#Usage: plugin::SetLeashMob();
#Usage: plugin::CheckLeashMob(Range); - This script will check the parameters in which the Leash was set and check against the arguement declared, if comes back true, the mob is reset to its leash set point.
#Usage plugin::AERampageEffect($Scale, $Skill, $Max_Distance, $Max_Damage, $Min_Damage); Use scale alone to modifiy ramapage damage by a set amount IE 50% max hit, would be 50 and not set Max/Min -Max Distance is AE rampage radius
#Usage: plugin::ModSpecialAttack("Abilities", Remove?=0);
# Add or remove one or more special attacks to an NPC.
# Abilities is a special ATK value ie "A" or "AB" or "ABH" ect
# Remove is an optional field that defaults to 0 (add). (1 = remove, 0 = add)
# Example1: plugin::ModSpecialAttack("ABH");
npc_tools.pl
Code:
#Usage plugin::SetProx(X/Y Axis Range, Z Axis Range);
path_tools.pl
Code:
#Usage: plugin::RandomRoam(MaxXVariance, MaxYVariance, MaxZVariance, LoSMobSize);
#Usage: plugin::StraightPath(MaxXVariance, MaxYVariance);
#Usage: plugin::RandomSwim(MaxXVariance, MaxYVariance, WaterSurfaceZ);
#Usage: my @DestArray = plugin::CalcDestFromHeading(Heading, Distance, [Mob, MaxZDiff]);
For Examples:
http://www.eqemulator.org/forums/showthread.php?t=30420
popup_window_utils.pl
Code:
###plugin::PWAutoCenter("Text to be centered in popup window", ([Send Character length to window? = 1] [Use AutoCenter based on given character length = 2]));
###If the second arguement is 2, the first arguement has to declare how many characters there are in the line you are presenting. And then it will push the
plugin::PWBreak(); - Sends a break to the popup window
plugin::PWIndent(); - Sends an indent to the popup window
#Usage plugin::PWHyperLink("http://www.google.com", "Google Search it!"); - Creates a hyperlink
###Usage plugin::PWColor("Color Name"); - See list of color names at the bottom of http://code.google.com/p/eqemupluginsrepo/source/browse/trunk/popup_window_utils.pl
quest_handin.pl
Code:
###Usage: plugin::QuestHandIn(ItemRewardID, RewardMessageofNPC, NPCAnimation, Case(How many separate items you want handed in) ItemID1, HowManyItem1, [ItemID2, HowManyItem2, ItemID3, HowManyItem3, ItemID4, HowManyItem4]);
Example here:
http://www.eqemulator.org/forums/showthread.php?t=32080
random_message.pl
Code:
###Usage: plugin::RandomSay(chance(1-100), "message1","message2", etc..);
###Usage: plugin::RandomEmote(chance(1-100), "message1","message2", etc..);
###Usage: plugin::RandomGroupEmote(chance(1-100), "message1","message2", etc..);
random_range.pl
Code:
#Usage: plugin::RandomRange(minvalue, maxvalue);
spawn_utils.pl
Code:
#plugin::moelib_spawn_block(npctypeid, fromx, tox, fromy, toy, space, zposition=20, heading=0, grid=0)
#plugin::moelib_spawn_block_center(npctypeid, centerx, centery, range, amount, zposition=20, heading=0, grid=0)
#plugin::moelib_spawn_circle(npctypeid, centerx, centery, radius, amount, zposition=20, heading=0, grid=0)
text_formatting.pl
Code:
###Usage plugin::commify(12302302); Would output value 12,302,302
time_tools.pl
Code:
###Usage: my $EndTime = plugin::GetEndTime("TypeDur", localtime=false);
# Example: GetEndTime("M60"); # Add 60 minutes to the current timestamp and return in unix time
# Example: GetEndTime("H5", 1); # Add 5 hours to the current timestamp and return in readable local time
# TypeDur is set just like as it is for QGlobals
# S | seconds | "S15" = 15 seconds |
# M | minutes | "M30" = 30 minutes |
# H | hours | "H12" = 12 hours |
# D | days | "D90" = 90 days |
# Y | years | "Y5" = 5 years |
# localtime is an optional field
# If set to 1, it will return a readable date/time stamp, otherwise 0 (default) is unix time
###Usage: my $TimeLeft = plugin::GetTimeLeft(UnixTime, ReturnType=0);
# Example: GetTimeLeft(1285623342); # Check current time against a Unix Timestamp and return secs/mins/hours/days/years remaining
# Example: GetTimeLeft(1285623342, "H"); # Check current time against a Unix Timestamp and return hours remaining
# Returns 0 if no time is left
# ReturnType is one of the following: S seconds, M minutes, H hours, D days, Y years
See:
http://www.eqemulator.org/forums/showthread.php?t=33443
voicetell.pl
Code:
###plugin::vtell("message","race-name","sex(malefemale)"); - Sends Voice Tell
###plugin::vtell("battle","barbarian","male"); - Sends Voice Tell
##plugin::Autovtell("greet/battle/disagree/follow/greet/heal/help/laugh/part/retreat/stop/thanks");
##Automatically converts the race ID and Gender into a format the voicetell object understands
weapon_tools.pl
Code:
#Usage: plugin::RandomWeapons(MinModelNum, MaxModelNum, MyChance, MinShieldNum, MaxShieldNum, NoDualWield?, IgnoreClass? );
#Example: plugin::RandomWeapons(1, 11169, 50, 200, 230, 0, 0);
#MinModelNum - Minimum Model Number to use for selecting Primary/Offhand Weapons
#MaxModelNum - Maximum Model Number to use for selecting Primary/Offhand Weapons
#MyChance - The percent chance that the NPC will wield any weapons (1 - 100)
#MinShieldNum - Minimum Model Number to use for selecting Shields
#MaxShieldNum - Maximum Model Number to use for selecting Shields
#NoDualWield? - 1 = NPCs won't dual wield or use shield, 0 = They have a chance to dual wield / shield
#IgnoreClass? - 1 = Weapon selection will choose any random model number within the range given, 0 = Smart weapon selection based on NPC class
#Usage: plugin::SetWeapons(PrimaryModel, SecondaryModel, EnableRemoving? );
#Example: plugin::SetWeapons(11, 200);