diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/script.c | 35 |
1 files changed, 32 insertions, 3 deletions
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; } |