Plugins

Extensive Plugin Explanation Pages:

  • DiaWind - This plugin is an extensive plugin for quest::popup (Popup window uses) - Akkadius

  • Doors Manipulation - This plugin is revolves around letting developers manipulate objects/doors in realtime to custom fit their story/servers vision. - Akkadius

  • Diablo Loot - Akkadius

File

Plugin & Description

anim.pl

plugin::DoAnim("salute");

Description: Will take in an easy to remember name or string and take care of the conversion to ID in the scripting process.

See Animations Reference List

anim.pl

plugin::SetAnim("animation") see below for SetAnim options (stand/sit/duck/dead/kneel)

Description: Will take in an easy to remember name or string and take care of the conversion to ID in the scripting process

check_hastitem.pl

plugin::check_hasitem($client, itemid)

Checks for items in just about every place for a player

  • #Checks to see if player has item

  • #Check main inventory and cursor

  • #Check main inventory's and cursor's containers

  • #Check bank slots

  • #Check bank's containers

  • #Check shared bank

  • #Check shared bank's containers

  • #Check corpses

check_handin.pl

  • plugin::check_handin

  • plugin::return_items

guildmasters.pl

  • plugin::try_tome_handins

    • looks through the items haded in for discipline tomes, processing them as we find them.

group_utility.pl

  • @members = plugin::GetGroupMembers($client)

  • plugin::MoveGroup(zoneid, x, y, z, h)

  • plugin::MoveGroupInstance(zoneid, instanceid, x, y, z, h)

  • plugin::CastOnGroup(SpellID, MaxDist=0, Client=$client);

  • plugin::MessageGroup(color, message)

illusion_tools.pl

  • plugin::RandomFeatures(Mob);

  • plugin::CloneAppearance(MobA, MobB, CloneName=false);

Instances.pl

plugin::SendToInstance("solo/guild/group/public", "Zone Short Name", Version, X, Y, Z, "Identifier", duration in seconds");

Description

Used to simplify the instancing process.

Also keeps track of the Zone ID via qglobals, so whatever NPC you use this on must have qglobals enabled!

spawn_utils.pl

  • my $LoSDistance = plugin::GetMaxLoSDistFromHeading(Heading, [DistIncrements, MaxDist, Mob]);

  • plugin::FaceBestHeading([MinLoSDist]);

  • my $ShortestHeading = plugin::HeadingToShortestLoS([MaxDistToCheck=8]);

  • my $NPCMoved = plugin::MoveAwayFromWall([MinLoSDist=5]);

  • plugin::MoveToFirstBestZ();

  • plugin::SpawnZone(X, Y, Z, Distance, Variance, Columns, Rows);

  • my $ReverseHeading = plugin::GetReverseHeading([$mob]);

  • my $Degrees = plugin::ConvertHeadingToDegrees(Heading);

This is used for populating zones from scratch

spawn_utils.pl

  • plugin::moelib_spawn_block(npctypeid, fromx, tox, fromy, toy, space, zposition=20, heading=0, grid=0)

    • Spawns NPC's in a block

  • plugin::moelib_spawn_block_center(npctypeid, centerx, centery, range, amount, zposition=20, heading=0, grid=0)

    • Spawns NPC's in a block around specified 'center' coordinate

  • plugin::moelib_spawn_circle(npctypeid, centerx, centery, radius, amount, zposition=20, heading=0, grid=0)

    • Spawns NPC's in a circle

random_messages.pl

  • plugin::RandomSay(chance(1-100), "message1","message2", etc..);

  • plugin::RandomSay(chance(1-100), "message1","message2", etc..);

  • plugin::RandomEmote(chance(1-100), "message1","message2", etc..);

  • plugin::RandomGroupEmote(chance(1-100), "message1","message2", etc..);

  • plugin::RandomCloseEmote(chance(1-100), "message1","message2", etc..);

text_formatting.pl

  • plugin::commify(12302302); Would output value 12,302,302

random_range

  • plugin::RandomRange(minvalue, maxvalue);

mob_utils.pl

  • plugin::MobHealPercentage(Percent [1-100]);

  • plugin::MobDamagePercentage(Percent [1-100]);

  • plugin::MobHealPoints(Number);

  • plugin::MobDamagePoints(Number);

  • plugin::SpawnInPlace(NPCID To Spawn In Place, [1 = Don't depop what spawns in place]);

  • plugin::SpawnInPlaceByEnt{(NPCID To Spawn In Place, [1 = Don't depop what spawns in place]);

  • plugin::SpawnChest{(NPCID To Spawn In Place, [1 = Don't depop what spawns in place]);

    • This will spawn a chest within proximity with specified NPC ID

npc_tools.pl

  • plugin::CountNPCTYPE($NPC_TYPE_ID);

    • Description: Will return the number of NPC's in the zone from NPC ID

  • plugin::SetProx(X/Y Axis Range, Z Axis Range, [1 = Skeleton Reference proximity for debugging]);

    • Description: This will set the proximity of an NPC, with simply two arguments, 30 (x-y axis) and 30 (z axis)

    • Note, if you set the 3rd arguement of SetProx to 1, it will spawn skeletons that represent how truly big your proximity is

utility.pl

plugin::AddLoot(amount, chance, @itemarray)

utility.pl

plugin::SEV(entity, variable_name, variable_value)

This is a shorthand way of setting an entity variable.

NOTE: Entity variables are EXTREMELY powerful! Know how to use them!

utility.pl

plugin::REV(entity, variable_name);

This is a shorthand way of reading an entity variable, it will return a value.

NOTE: Entity variables are EXTREMELY powerful! Know how to use them!

utility.pl

plugin::CheckDist(entity, distance);

A simple way to return the distance between the NPC initiating this plugin and the player, useful for all kinds of situations. Will return true if within distance, false if not.If you are not familiar with entites, they can be a client, npc, object, door etc.You have to utilize entity_list calls to get an entity object

utility.pl

plugin::CheckDistBetween2Ents(entity1, entity2, distance);

A simple way to return the distance between two select entities, useful for all kinds of situations. Will return true if within distance, false if not. If you are not familiar with entites, they can be a client, npc, object, door etc.You have to utilize entity_list calls to get an entity object

client_messages.pl

plugin::Autovtell("voicemessage");

Options:

  • greet

  • battle

  • disagree

  • follow

  • greet

  • heal

  • help

  • laugh

  • part

  • retreat

  • stop

  • thanks

client_messages.pl

plugin::Whisper("Message");

Whispers a message to the player

client_messages.pl

plugin::ClientSay("Message", "Message2", "Message3");

If Multiple arguments are supplied, it will return a random message from the list. If any of the arguments is a number, it will parse that number as the color to use for the TextColor of the message

client_messages.pl

plugin::MM("Message")

Will display a Marquee message on the screen

DiaWind.pl

plugin::DiaWind("Window text");

Plugin for making use of popup windows

See DiaWind

Doors_Manip.pl

This is a hooked mod, to see how to install and use. See Doors Manipulation

MP3.pl

plugin::U_MP3

This plugin utilizes a database full of the EverQuest sound files and their lengths to utilize sound looping and other features.

This is an extension of $client->PlayMP3 which can play both mp3/wav as well as the old EverQuest .xmi file format (MIDI)

PlayMP3 packet will ignore the clients music and sound level sliders so this can be annoying if you use it, however this restores the ability to use music in EverQuest because this plugin will only play one sound file per IP, which allows music to be played without walking over each clients sound files.

All of the sound file lengths are queried from the custom table listed below. All Wav/MP3 files are in this database, no XMI's. If you want to use XMI's you will have to use them on your own accord.

Options:

repeat_on_end - Will repeat the sound file after the song plays

delay_repeat - How long the sound timer will wait before repeating

interrupt - This will interrupt another sound that is playing

Required Database Table:

DOWNLOAD

constants.pl

Task_Utils.pl

  • plugin::AssignTask(UpdateType=[solo, group, raid], TaskID, [NPCID = 0] ($npc>GetID());

  • plugin::FailTask(UpdateType=[solo, group, raid], TaskID);

  • plugin::UpdateTaskActivity(UpdateType [solo, group, raid], TaskID, ActivityID, Count);

formation_tools.pl

  • plugin::FollowFormLeader([LeaderMob, OnGrid = 0, MoveToX = 0, MoveToY = 0, NoSpeedBuffs = false]);

  • plugin::MoveInFormation(NPCID, [$npc = 0, OnGrid = 0, MoveToX = 0, MoveToY = 0, NoSpeedBuffs = false]);

  • plugin::MoveToFormation(NPCID, LeaderMob, Distance, Columns, Rows, [LeadDist, MaxZDiff]);

  • plugin::RandomFormRoam(MaxVariance, MaxZVariance, LoSMobSize);

  • plugin::SpawnInFormation(NPCID, LeaderMob, Distance, Columns, Rows, [LeadDist, MaxZDiff]);

  • plugin::SpawnInFormationXY(NPCID, X, Y, Z, Distance, Columns, Rows, Heading, MaxZDiff);

  • plugin::SpawnMixedFormation(LeaderMob, Distance, Columns, Rows, LeadDist=Distance, MaxZDiff=15, NPCID, NPCID...);

  • plugin::FollowInFormation(NPCID, Mob, [MaxZDiff]);

  • plugin::SquadAttackTarget(SquadNPCID, TargetID);

  • plugin::SquadAttackSquad(Squad1NPCID, Squad2NPCID);

  • plugin::GetReverseHeading($mob)

weapon_tools.pl

  • plugin::RandomWeapons(MinModelNum, MaxModelNum, MyChance, MinShieldNum, MaxShieldNum, NoDualWield?, IgnoreClass? );

  • plugin::SetWeapons(PrimaryModel, SecondaryModel, EnableRemoving? );