From 5d7c8d9857f096abfc4f205c8771b0b4c91fab2c Mon Sep 17 00:00:00 2001 From: Ibrahim Zidan Date: Tue, 7 May 2019 06:37:11 +0200 Subject: Implement new script fields for items triggered on rentral status changes - OnRentalStartScript triggered when a rental item is added to inventory - OnRentalEndScript triggered when a rental period end/expire of the item Related #140 Signed-off-by: Ibrahim Zidan --- src/map/script.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/map/script.c') diff --git a/src/map/script.c b/src/map/script.c index de00f66be..8658b7ab5 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -25891,6 +25891,36 @@ static void script_run_item_unequip_script(struct map_session_data *sd, struct i script->current_item_id = 0; } +static void script_run_item_rental_start_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull(1, 2))); + +/** + * Run item rental start script + * @param sd player session data. Must be correct and checked before. + * @param data rental item data. Must be correct and checked before. + * @param oid npc id. Can be also 0 or fake npc id. + **/ +static void script_run_item_rental_start_script(struct map_session_data *sd, struct item_data *data, int oid) +{ + script->current_item_id = data->nameid; + script->run(data->rental_start_script, 0, sd->bl.id, oid); + script->current_item_id = 0; +} + +static void script_run_item_rental_end_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull(1, 2))); + +/** +* Run item rental end script +* @param sd player session data. Must be correct and checked before. +* @param data rental item data. Must be correct and checked before. +* @param oid npc id. Can be also 0 or fake npc id. +**/ +static void script_run_item_rental_end_script(struct map_session_data *sd, struct item_data *data, int oid) +{ + script->current_item_id = data->nameid; + script->run(data->rental_end_script, 0, sd->bl.id, oid); + script->current_item_id = 0; +} + #define BUILDIN_DEF(x,args) { buildin_ ## x , #x , args, false } #define BUILDIN_DEF2(x,x2,args) { buildin_ ## x , x2 , args, false } #define BUILDIN_DEF_DEPRECATED(x,args) { buildin_ ## x , #x , args, true } @@ -27443,4 +27473,6 @@ void script_defaults(void) script->run_use_script = script_run_use_script; script->run_item_equip_script = script_run_item_equip_script; script->run_item_unequip_script = script_run_item_unequip_script; + script->run_item_rental_start_script = script_run_item_rental_start_script; + script->run_item_rental_end_script = script_run_item_rental_end_script; } -- cgit v1.2.3-70-g09d2 From 3d595e664563bf6ac3e434152baadd7dbc295d06 Mon Sep 17 00:00:00 2001 From: Ibrahim Zidan Date: Tue, 7 May 2019 06:57:09 +0200 Subject: Implement getfont script command which returns player's current chat font Signed-off-by: Ibrahim Zidan --- doc/script_commands.txt | 6 ++++++ src/map/script.c | 14 ++++++++++++++ 2 files changed, 20 insertions(+) (limited to 'src/map/script.c') diff --git a/doc/script_commands.txt b/doc/script_commands.txt index d14393a8a..72f86024e 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -9172,6 +9172,12 @@ currently used font is used, default interface font is used again. --------------------------------------- +*getfont() + +This command return the player's current font. +if no player is attached it would always return a 0, which is also the default font. + +---------------------------------------' *showdigit({, }) Displays given numeric 'value' in large digital clock font on top of the diff --git a/src/map/script.c b/src/map/script.c index 8658b7ab5..64b794ba0 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -22744,6 +22744,19 @@ static BUILDIN(setfont) return true; } +static BUILDIN(getfont) +{ + struct map_session_data *sd = script->rid2sd(st); + + if (sd == NULL) { + script_pushint(st, 0); + return true; + } + + script_pushint(st, sd->status.font); + return true; +} + static int buildin_mobuseskill_sub(struct block_list *bl, va_list ap) { struct mob_data *md = NULL; @@ -26356,6 +26369,7 @@ static void script_parse_builtin(void) BUILDIN_DEF(mercenary_set_faith,"ii"), BUILDIN_DEF(readbook,"ii"), BUILDIN_DEF(setfont,"i"), + BUILDIN_DEF(getfont, ""), BUILDIN_DEF(areamobuseskill,"siiiiviiiii"), BUILDIN_DEF(progressbar,"si"), BUILDIN_DEF(progressbar_unit,"si?"), -- cgit v1.2.3-70-g09d2