mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-23 00:08:23 +00:00
Updated Perl API Perl Sub Event Examples (markdown)
@@ -11,7 +11,6 @@ Often used for flavor text--just remember that every NPC_Type has an EmoteID tha
|
|||||||
|
|
||||||
```perl
|
```perl
|
||||||
sub EVENT_AGGRO {
|
sub EVENT_AGGRO {
|
||||||
|
|
||||||
quest::say("Time to die $name.");
|
quest::say("Time to die $name.");
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -70,7 +69,6 @@ Note the subtle difference from EVENT_AGGRO, which is triggered when the NPC is
|
|||||||
|
|
||||||
```perl
|
```perl
|
||||||
sub EVENT_ATTACK {
|
sub EVENT_ATTACK {
|
||||||
|
|
||||||
quest::say("Time to die $name.");
|
quest::say("Time to die $name.");
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -88,7 +86,6 @@ You would likely use this event in your global player.pl file.
|
|||||||
|
|
||||||
```perl
|
```perl
|
||||||
sub EVENT_AUGMENT_ITEM {
|
sub EVENT_AUGMENT_ITEM {
|
||||||
|
|
||||||
$client->Message(15, "Yay, it fit!");
|
$client->Message(15, "Yay, it fit!");
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -107,7 +104,6 @@ You would likely use this event in your global player.pl file.
|
|||||||
|
|
||||||
```perl
|
```perl
|
||||||
sub EVENT_AUGMENT_INSERT {
|
sub EVENT_AUGMENT_INSERT {
|
||||||
|
|
||||||
$client->Message(15, "Yay, it fit!");
|
$client->Message(15, "Yay, it fit!");
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -124,7 +120,6 @@ sub EVENT_AUGMENT_INSERT {
|
|||||||
|
|
||||||
```perl
|
```perl
|
||||||
sub EVENT_AUGMENT_ITEM {
|
sub EVENT_AUGMENT_ITEM {
|
||||||
|
|
||||||
$client->Message(15, "Yay, you pulled it out!");
|
$client->Message(15, "Yay, you pulled it out!");
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -147,7 +142,6 @@ sub EVENT_AUGMENT_ITEM {
|
|||||||
|
|
||||||
```perl
|
```perl
|
||||||
sub EVENT_CAST {
|
sub EVENT_CAST {
|
||||||
|
|
||||||
quest::me("regains his concentration and casts his spell.");
|
quest::me("regains his concentration and casts his spell.");
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -308,10 +302,10 @@ sub EVENT_COMBAT {
|
|||||||
|
|
||||||
### Exports
|
### Exports
|
||||||
|
|
||||||
| Name | Type | Description
|
| Name | Type | Usage
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
|recipe_id | int | quest::say($recipe_id); # returns int
|
|recipe_id | int | `quest::say($recipe_id); # returns int`
|
||||||
|recipe_name | int | quest::say($recipe_name); # returns int
|
|recipe_name | int | `quest::say($recipe_name); # returns int`
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
|
|
||||||
@@ -331,13 +325,34 @@ sub EVENT_COMBINE_FAILURE {
|
|||||||
|
|
||||||
### Trigger
|
### Trigger
|
||||||
|
|
||||||
- when a combine is successful.
|
- When a combine is successful.
|
||||||
|
|
||||||
|
### Exports
|
||||||
|
|
||||||
|
| Name | Type | Usage
|
||||||
|
| --- | --- | --- |
|
||||||
|
|recipe_id | int | `quest::say($recipe_id); # returns int`
|
||||||
|
|recipe_name | int | `quest::say($recipe_name); # returns int`
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
- In this example, we send the client a message when they successfully combine a Hand Made Backpack
|
||||||
|
|
||||||
|
```perl
|
||||||
|
sub EVENT_COMBINE_SUCCESS {
|
||||||
|
#:: Match Recipe 2686: "Hand Made Backpack" by ID
|
||||||
|
if ($recipe_id == 2686) {
|
||||||
|
#:: Send the client a message in color 15 (yellow)
|
||||||
|
$client->Message(15,"Yay, now you have a place to put all of your stuff!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
# EVENT_COMMAND
|
# EVENT_COMMAND
|
||||||
|
|
||||||
### Trigger
|
### Trigger
|
||||||
|
|
||||||
- When a player says anything like a command. Replaced/Synonymous with EVENT_SAY.
|
- When a player says anything like a command. Replaced/Synonymous with [EVENT_SAY](https://github.com/EQEmu/Server/wiki/Perl-API---Perl-Sub-Event-Examples#event_say).
|
||||||
|
|
||||||
# EVENT_CONNECT
|
# EVENT_CONNECT
|
||||||
|
|
||||||
@@ -345,11 +360,76 @@ sub EVENT_COMBINE_FAILURE {
|
|||||||
|
|
||||||
- when a player connects to the world.
|
- when a player connects to the world.
|
||||||
|
|
||||||
|
You would likely be using this event in your global_player.pl.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
- In this example, veteran AAs are awarded based on accumulated play time.
|
||||||
|
|
||||||
|
```perl
|
||||||
|
sub EVENT_CONNECT {
|
||||||
|
my %vet_aa = (481 => [31536000, 1, 1],
|
||||||
|
482 => [63072000, 1, 1],
|
||||||
|
483 => [94608000, 1, 1],
|
||||||
|
484 => [126144000, 1, 1],
|
||||||
|
485 => [157680000, 1, 1],
|
||||||
|
486 => [189216000, 1, 1],
|
||||||
|
487 => [220752000, 1, 1],
|
||||||
|
511 => [252288000, 1, 1],
|
||||||
|
2000 => [283824000, 1, 1],
|
||||||
|
8081 => [315360000, 1, 1],
|
||||||
|
8130 => [346896000, 1, 1],
|
||||||
|
453 => [378432000, 1, 1],
|
||||||
|
182 => [409968000, 1, 1],
|
||||||
|
600 => [441504000, 1, 1]);
|
||||||
|
foreach my $key (keys %vet_aa) {
|
||||||
|
if ($vet_aa{$key}[2] && ($vet_aa{$key}[2] || $client->GetAccountAge() >= $vet_aa{$key}[0])) {
|
||||||
|
$client->GrantAlternateAdvancementAbility($key, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
# EVENT_DEATH
|
# EVENT_DEATH
|
||||||
|
|
||||||
### Trigger
|
### Trigger
|
||||||
|
|
||||||
- when the NPC dies. Fires before death finishes.
|
- When the NPC dies. Fires before death finishes.
|
||||||
|
|
||||||
|
### Exports
|
||||||
|
|
||||||
|
| Name | Type | Details
|
||||||
|
| --- | --- | ---
|
||||||
|
| client | client | client who killed mob
|
||||||
|
| npc | npc | npc that was killed
|
||||||
|
| killer_id | int | client ID of killer. (Does not seem castable to mob)
|
||||||
|
| killer_damage | int | How much damage was dealt on killing blow
|
||||||
|
| killer_spell | int | Spell ID used to kill mob
|
||||||
|
| killer_skill | int | Skill ID used to kill mob
|
||||||
|
| charid | int | Character ID who killed mob
|
||||||
|
| class | string | Class Name who killed mob
|
||||||
|
| faction | int | Faction comparison of killed mob vs killer
|
||||||
|
| h | float | heading of mob during death
|
||||||
|
| hpratio | float | percent health of mob after death (negative value)
|
||||||
|
| mlevel | int | level of mob killed
|
||||||
|
| mname | string | name of mob killed
|
||||||
|
| mobid | int | id of mob killed
|
||||||
|
| name | string | name of killer
|
||||||
|
| race | string | race of killer
|
||||||
|
| status | int | account status of killer
|
||||||
|
| uguild_id | int | uguild of killer
|
||||||
|
| ulevel | int | level of killer
|
||||||
|
| userid | int | user id of killer
|
||||||
|
| x | float | x position of killed mob
|
||||||
|
| y | float | y position of killed mob
|
||||||
|
| z | float | z position of killed mob
|
||||||
|
| zonehour | int | hour of zone when mob died
|
||||||
|
| zoneid | int | zone id where mob died
|
||||||
|
| zoneln | string | long name of zone where mob died
|
||||||
|
| zonemin | int | minimum level to enter zone where mob died
|
||||||
|
| zonesn | string | short name of zone where mob died
|
||||||
|
| zonetime | int | time of zone where mob died
|
||||||
|
| zoneweather | int |
|
||||||
|
|
||||||
# EVENT_DEATH_COMPLETE
|
# EVENT_DEATH_COMPLETE
|
||||||
|
|
||||||
@@ -488,7 +568,6 @@ sub EVENT_EXIT {
|
|||||||
|
|
||||||
```perl
|
```perl
|
||||||
sub EVENT_FISH_FAILURE {
|
sub EVENT_FISH_FAILURE {
|
||||||
|
|
||||||
$client->Message(1, "Maybe you're using the wrong bait!")
|
$client->Message(1, "Maybe you're using the wrong bait!")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -505,7 +584,6 @@ sub EVENT_FISH_FAILURE {
|
|||||||
|
|
||||||
```perl
|
```perl
|
||||||
sub EVENT_FISH_START {
|
sub EVENT_FISH_START {
|
||||||
|
|
||||||
$client->Message(1, "You crack a beer and toss your line in.");
|
$client->Message(1, "You crack a beer and toss your line in.");
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -546,7 +624,6 @@ In this example, some flavor text is added as a player is added and removed from
|
|||||||
|
|
||||||
```perl
|
```perl
|
||||||
sub EVENT_HATE_LIST {
|
sub EVENT_HATE_LIST {
|
||||||
|
|
||||||
if ($hate_state == 1) {
|
if ($hate_state == 1) {
|
||||||
quest::say("$name is gonna die!");
|
quest::say("$name is gonna die!");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user