summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/script_commands.txt7
-rw-r--r--src/map/script.c32
2 files changed, 39 insertions, 0 deletions
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index ede73cb18..378a29f12 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -4109,6 +4109,13 @@ chat window.
---------------------------------------
+*showscript "<message>"{,<GID>};
+
+Makes attached player or GID says a message like shouting a skill name, the message
+will be seen to everyone around but not in chat window.
+
+---------------------------------------
+
*warp "<map name>",<x>,<y>;
This command will take the invoking character to the specified map, and if
diff --git a/src/map/script.c b/src/map/script.c
index 87762f44e..b74f1d0ab 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -19660,6 +19660,37 @@ BUILDIN(channelmes)
return true;
}
+
+/** By Cydh
+Display script message
+showscript "<message>"{,<GID>};
+*/
+BUILDIN(showscript) {
+ struct block_list *bl = NULL;
+ const char *msg = script_getstr(st, 2);
+ int id = 0;
+
+ if (script_hasdata(st, 3)) {
+ id = script_getnum(st, 3);
+ bl = map->id2bl(id);
+ }
+ else {
+ bl = st->rid ? map->id2bl(st->rid) : map->id2bl(st->oid);
+ }
+
+ if (!bl) {
+ ShowError("buildin_showscript: Script not attached. (id=%, rid=%d, oid=%d)\n", id, st->rid, st->oid);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ clif->ShowScript(bl, msg);
+
+ script_pushint(st, 1);
+
+ return true;
+}
+
/** place holder for the translation macro **/
BUILDIN(_) {
return true;
@@ -20297,6 +20328,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(shopcount, "i"),
BUILDIN_DEF(channelmes, "ss"),
+ BUILDIN_DEF(showscript, "s?"),
BUILDIN_DEF(_,"s"),
};
int i, len = ARRAYLENGTH(BUILDIN);