From 96a0bb83a3c679b376c6ee3c17c3c732d5f9b8f7 Mon Sep 17 00:00:00 2001 From: gumi Date: Sun, 5 Mar 2017 12:19:34 -0500 Subject: fix code style in buildin_addtimer --- src/map/script.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/map/script.c b/src/map/script.c index a7e27fc1b..950242e77 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -10785,19 +10785,21 @@ BUILDIN(donpcevent) *------------------------------------------*/ BUILDIN(addtimer) { - int tick = script_getnum(st,2); + int tick = script_getnum(st, 2); const char* event = script_getstr(st, 3); struct map_session_data *sd; script->check_event(st, event); sd = script->rid2sd(st); - if( sd == NULL ) + + if (sd == NULL) return true; - if (!pc->addeventtimer(sd,tick,event)) { - ShowWarning("buildin_addtimer: Event timer is full, can't add new event timer. (cid:%d timer:%s)\n",sd->status.char_id,event); + if (!pc->addeventtimer(sd, tick, event)) { + ShowWarning("script:addtimer: Event timer is full, can't add new event timer. (cid:%d timer:%s)\n", sd->status.char_id, event); return false; } + return true; } /*========================================== -- cgit v1.2.3-70-g09d2 From 0920136eab9db973c3fc8aff2f6d7cdcd389d00e Mon Sep 17 00:00:00 2001 From: gumi Date: Sun, 5 Mar 2017 12:23:13 -0500 Subject: make addtimer return success or failure --- src/map/script.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/map/script.c b/src/map/script.c index 950242e77..6d6ce4e85 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -10792,14 +10792,18 @@ BUILDIN(addtimer) script->check_event(st, event); sd = script->rid2sd(st); - if (sd == NULL) - return true; + if (sd == NULL) { + script_pushint(st, 0); + return false; + } if (!pc->addeventtimer(sd, tick, event)) { ShowWarning("script:addtimer: Event timer is full, can't add new event timer. (cid:%d timer:%s)\n", sd->status.char_id, event); + script_pushint(st, 0); return false; } + script_pushint(st, 1); return true; } /*========================================== -- cgit v1.2.3-70-g09d2 From 404f321df6d5ff717d63528d6bceaadad4c10f07 Mon Sep 17 00:00:00 2001 From: gumi Date: Sun, 5 Mar 2017 12:28:56 -0500 Subject: allow to use addtimer on another player --- src/map/script.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/map/script.c b/src/map/script.c index 6d6ce4e85..ae6cb74ed 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -10790,7 +10790,11 @@ BUILDIN(addtimer) struct map_session_data *sd; script->check_event(st, event); - sd = script->rid2sd(st); + + if (script_hasdata(st, 4)) + sd = map->id2sd(script_getnum(st, 4)); + else + sd = script->rid2sd(st); if (sd == NULL) { script_pushint(st, 0); @@ -21092,7 +21096,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(clone,"siisi????"), BUILDIN_DEF(doevent,"s"), BUILDIN_DEF(donpcevent,"s"), - BUILDIN_DEF(addtimer,"is"), + BUILDIN_DEF(addtimer,"is?"), BUILDIN_DEF(deltimer,"s"), BUILDIN_DEF(addtimercount,"si"), BUILDIN_DEF(initnpctimer,"??"), -- cgit v1.2.3-70-g09d2 From 5d94553ad2a3625b2ba74615c89785a2d92e9e2b Mon Sep 17 00:00:00 2001 From: gumi Date: Sun, 5 Mar 2017 12:30:36 -0500 Subject: fix code style in buildin_deltimer --- src/map/script.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/map/script.c b/src/map/script.c index ae6cb74ed..3da3ff211 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -10819,11 +10819,12 @@ BUILDIN(deltimer) event=script_getstr(st, 2); sd = script->rid2sd(st); - if( sd == NULL ) + + if (sd == NULL) return true; script->check_event(st, event); - pc->deleventtimer(sd,event); + pc->deleventtimer(sd, event); return true; } /*========================================== -- cgit v1.2.3-70-g09d2 From 50c79f0312c25de2c5b5e285f9f1635f8b74a4bb Mon Sep 17 00:00:00 2001 From: gumi Date: Sun, 5 Mar 2017 12:34:12 -0500 Subject: allow to use deltimer on another player --- src/map/script.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/map/script.c b/src/map/script.c index 3da3ff211..43d1822f1 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -10818,7 +10818,11 @@ BUILDIN(deltimer) struct map_session_data *sd; event=script_getstr(st, 2); - sd = script->rid2sd(st); + + if (script_hasdata(st, 3)) + sd = map->id2sd(script_getnum(st, 3)); + else + sd = script->rid2sd(st); if (sd == NULL) return true; @@ -21098,7 +21102,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(doevent,"s"), BUILDIN_DEF(donpcevent,"s"), BUILDIN_DEF(addtimer,"is?"), - BUILDIN_DEF(deltimer,"s"), + BUILDIN_DEF(deltimer,"s?"), BUILDIN_DEF(addtimercount,"si"), BUILDIN_DEF(initnpctimer,"??"), BUILDIN_DEF(stopnpctimer,"??"), -- cgit v1.2.3-70-g09d2 From 083c90c4497e7b5bd19fb5f2491255a3fbc9972c Mon Sep 17 00:00:00 2001 From: gumi Date: Sun, 5 Mar 2017 14:17:31 -0500 Subject: fix code style in buildin_addtimercount --- src/map/script.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/map/script.c b/src/map/script.c index 43d1822f1..84d5ed98f 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -10839,14 +10839,15 @@ BUILDIN(addtimercount) int tick; struct map_session_data *sd; - event=script_getstr(st, 2); - tick=script_getnum(st,3); + event = script_getstr(st, 2); + tick = script_getnum(st, 3); sd = script->rid2sd(st); - if( sd == NULL ) + + if (sd == NULL) return true; script->check_event(st, event); - pc->addeventtimercount(sd,event,tick); + pc->addeventtimercount(sd, event, tick); return true; } -- cgit v1.2.3-70-g09d2 From 9a9294956a47a4eee51b072f6e23ede28962fa69 Mon Sep 17 00:00:00 2001 From: gumi Date: Sun, 5 Mar 2017 14:19:21 -0500 Subject: allow to use addtimercount on another player --- src/map/script.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/map/script.c b/src/map/script.c index 84d5ed98f..1641aba66 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -10841,7 +10841,11 @@ BUILDIN(addtimercount) event = script_getstr(st, 2); tick = script_getnum(st, 3); - sd = script->rid2sd(st); + + if (script_hasdata(st, 4)) + sd = map->id2sd(script_getnum(st, 4)); + else + sd = script->rid2sd(st); if (sd == NULL) return true; @@ -21104,7 +21108,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(donpcevent,"s"), BUILDIN_DEF(addtimer,"is?"), BUILDIN_DEF(deltimer,"s?"), - BUILDIN_DEF(addtimercount,"si"), + BUILDIN_DEF(addtimercount,"si?"), BUILDIN_DEF(initnpctimer,"??"), BUILDIN_DEF(stopnpctimer,"??"), BUILDIN_DEF(startnpctimer,"??"), -- cgit v1.2.3-70-g09d2 From cc6db9e43dea9b0093d7f7617e6016b2635744dc Mon Sep 17 00:00:00 2001 From: gumi Date: Tue, 7 Mar 2017 11:57:29 -0500 Subject: update documentation for the timer buildins --- doc/script_commands.txt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 6df1f6e87..05dcf96ff 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -6475,15 +6475,16 @@ Size is 0 = normal 1 = small 2 = big. //===================================== --------------------------------------- -*addtimer(, "NPC::OnLabel") -*deltimer("NPC::OnLabel") -*addtimercount("NPC::OnLabel", ) +*addtimer(, "NPC::OnLabel"{, }) +*deltimer("NPC::OnLabel"{, }) +*addtimercount("NPC::OnLabel", {, }) These commands will create, destroy, and delay a countdown timer - addtimer() to create, deltimer() to destroy and addtimercount() to delay it by the specified number of ticks. For all three cases, the event label given is the identifier of that timer. The timer runs on the character -object that is attached to the script, and can have multiple instances. +object that is attached to the script, and can have multiple instances. +If is passed, this player will be used instead. When the label is run, it is run as if the player that the timer runs on has clicked the NPC. -- cgit v1.2.3-70-g09d2