From bde8199e4b83d838d560c3fa7bb66cde45d7ad90 Mon Sep 17 00:00:00 2001 From: gumi Date: Sat, 25 Feb 2017 12:48:31 -0500 Subject: add chr() and ord() buildins --- doc/script_commands.txt | 20 ++++++++++++++++++++ src/map/script.c | 27 ++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/doc/script_commands.txt b/doc/script_commands.txt index a0e3a783d..1737f8796 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -8046,6 +8046,26 @@ Example: --------------------------------------- +*chr() + +Returns a char from its ASCII value. + +Example: + + chr(99); //returns "c" + +--------------------------------------- + +*ord() + +Returns the ASCII value of char . + +Example: + + ord("c"); //returns 99 + +--------------------------------------- + *setchar(, , ) Returns the original string with the char at the specified index set to diff --git a/src/map/script.c b/src/map/script.c index 38931bd11..ef63697a7 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -5197,7 +5197,7 @@ int script_load_translation(const char *file, uint8 lang_id) VECTOR_TRUNCATE(msgstr); continue; } - + if (strncasecmp(line, "msgid \"", 7) == 0) { VECTOR_TRUNCATE(msgid); for (i = 7; i < len - 2; i++) { @@ -15454,6 +15454,29 @@ BUILDIN(charat) { return true; } +//======================================================= +// chr +//------------------------------------------------------- +BUILDIN(chr) +{ + char output[2]; + output[0] = script_getnum(st, 2); + output[1] = '\0'; + + script_pushstrcopy(st, output); + return true; +} + +//======================================================= +// ord +//------------------------------------------------------- +BUILDIN(ord) +{ + const char *chr = script_getstr(st, 2); + script_pushint(st, *chr); + return true; +} + //======================================================= // setchar , , //------------------------------------------------------- @@ -21075,6 +21098,8 @@ void script_parse_builtin(void) { BUILDIN_DEF(getstrlen,"s"), //strlen [Valaris] BUILDIN_DEF(charisalpha,"si"), //isalpha [Valaris] BUILDIN_DEF(charat,"si"), + BUILDIN_DEF(chr,"i"), + BUILDIN_DEF(ord,"s"), BUILDIN_DEF(setchar,"ssi"), BUILDIN_DEF(insertchar,"ssi"), BUILDIN_DEF(delchar,"si"), -- cgit v1.2.3-70-g09d2