diff options
-rw-r--r-- | Changelog-Trunk.txt | 2 | ||||
-rw-r--r-- | src/map/script.c | 35 |
2 files changed, 34 insertions, 3 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index b1d354a31..e14c060bf 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,8 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. +2008/05/31 + * Crashfix to attach/detach timers, thanks to Konard (fixed recent crashes) [Lupus] 2008/05/28 * Updated Ankle Snare duration (bugreport:1438) [Playtester] - agi now has only half the effect on the duration (100 agi reduces it by 50%) diff --git a/src/map/script.c b/src/map/script.c index ebe02db0f..423cb4983 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -7768,7 +7768,7 @@ BUILDIN_FUNC(getnpctimer) if (!nd || nd->bl.type != BL_NPC) { script_pushint(st,0); - ShowError("getnpctimer: Invalid NPC\n"); + ShowError("getnpctimer: Invalid NPC.\n"); return 1; } @@ -7803,7 +7803,15 @@ BUILDIN_FUNC(setnpctimer) else nd=(struct npc_data *)map_id2bl(st->oid); + if (!nd || nd->bl.type != BL_NPC) + { + script_pushint(st,1); + ShowError("setnpctimer: Invalid NPC.\n"); + return 1; + } + npc_settimerevent_tick(nd,tick); + script_pushint(st,0); return 0; } @@ -7816,15 +7824,28 @@ BUILDIN_FUNC(attachnpctimer) struct npc_data *nd; nd=(struct npc_data *)map_id2bl(st->oid); + + if (!nd || nd->bl.type != BL_NPC) + { + script_pushint(st,1); + ShowError("setnpctimer: Invalid NPC.\n"); + return 1; + } + if( script_hasdata(st,2) ) sd=map_nick2sd(script_getstr(st,2)); else sd = script_rid2sd(st); - if (sd==NULL) - return 0; + if (!sd) + { + script_pushint(st,1); + ShowWarning("attachnpctimer: Invalid player.\n"); + return 1; + } nd->u.scr.rid = sd->bl.id; + script_pushint(st,0); return 0; } @@ -7839,7 +7860,15 @@ BUILDIN_FUNC(detachnpctimer) else nd=(struct npc_data *)map_id2bl(st->oid); + if (!nd || nd->bl.type != BL_NPC) + { + script_pushint(st,1); + ShowError("detachnpctimer: Invalid NPC.\n"); + return 1; + } + nd->u.scr.rid = 0; + script_pushint(st,0); return 0; } |