diff options
author | Jesusaves <cpntb1@ymail.com> | 2021-12-28 06:50:19 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2021-12-28 06:50:19 -0300 |
commit | e06e87aa12ad659db43d069feff5a8225433d885 (patch) | |
tree | 4a2a394f2643e81bd4726eb7704c222310971d02 | |
parent | b4932b6bde66e5601d178c19f2c6023534d7917d (diff) | |
download | hercules-e06e87aa12ad659db43d069feff5a8225433d885.tar.gz hercules-e06e87aa12ad659db43d069feff5a8225433d885.tar.bz2 hercules-e06e87aa12ad659db43d069feff5a8225433d885.tar.xz hercules-e06e87aa12ad659db43d069feff5a8225433d885.zip |
[TMW2] Add capability for global chat listeners
-rw-r--r-- | src/map/clif.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index d3d3eb230..91f55e323 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -11372,6 +11372,23 @@ static void clif_parse_GlobalMessage(int fd, struct map_session_data *sd) // trigger listening npcs map->foreachinrange(npc_chat->sub, &sd->bl, AREA_SIZE, BL_NPC, full_message, strlen(full_message), &sd->bl); + + // Global listeners + struct linkdb_node **label_linkdb = strdb_get(npc->ev_label_db, "OnGlobalChat"); + if (label_linkdb == NULL) + return; + + struct linkdb_node *node = *label_linkdb; + while (node) + { + struct event_data* ev = node->data; + if (ev) + { + pc->setregstr(sd, script->add_variable("@chat$"), message); + script->run(ev->nd->u.scr.script, ev->pos, sd->bl.id, ev->nd->bl.id); + } + node = node->next; + } } static void clif_parse_MapMove(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); |