diff options
author | Fate <fate-tmw@googlemail.com> | 2008-12-30 04:15:32 -0700 |
---|---|---|
committer | Fate <fate-tmw@googlemail.com> | 2008-12-30 04:15:32 -0700 |
commit | ef1cac570726f59c821ebafd1980302c0035d3ce (patch) | |
tree | 1e07cc5de2a43494fd35cb78bf59f4c3d39c3c55 /src/map/npc.c | |
parent | e22cc45c0dfffa33b981f8674743cacd9915d6e0 (diff) | |
download | tmwa-ef1cac570726f59c821ebafd1980302c0035d3ce.tar.gz tmwa-ef1cac570726f59c821ebafd1980302c0035d3ce.tar.bz2 tmwa-ef1cac570726f59c821ebafd1980302c0035d3ce.tar.xz tmwa-ef1cac570726f59c821ebafd1980302c0035d3ce.zip |
Added OnPCDieEvent and OnPCKillEvent label support
Diffstat (limited to 'src/map/npc.c')
-rw-r--r-- | src/map/npc.c | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/src/map/npc.c b/src/map/npc.c index 849030f..a2ad04d 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -266,6 +266,8 @@ int npc_event_export(void *key,void *data,va_list ap) int npc_event_doall_sub(void *key,void *data,va_list ap) { char *p=(char *)key; + int rid, argc; + argrec_t *argv; struct event_data *ev; int *c; const char *name; @@ -275,53 +277,63 @@ int npc_event_doall_sub(void *key,void *data,va_list ap) nullpo_retr(0, c=va_arg(ap,int *)); name=va_arg(ap,const char *); + rid = va_arg(ap, int); + argc = va_arg(ap, int); + argv = va_arg(ap, argrec_t *); + if( (p=strchr(p,':')) && p && strcasecmp(name,p)==0 ){ - run_script(ev->nd->u.scr.script,ev->pos,0,ev->nd->bl.id); + run_script_l(ev->nd->u.scr.script,ev->pos,rid,ev->nd->bl.id, argc, argv); (*c)++; } return 0; } -int npc_event_doall(const char *name) +int npc_event_doall_l(const char *name, int rid, int argc, argrec_t *args) { int c=0; char buf[64]="::"; strncpy(buf+2,name,62); - strdb_foreach(ev_db,npc_event_doall_sub,&c,buf); - return c; + strdb_foreach(ev_db,npc_event_doall_sub,&c,buf, rid, argc, args); + return c; } -int npc_event_do_sub(void *key,void *data,va_list ap) +int npc_event_do_sub(void *key,void *data, va_list ap) { char *p=(char *)key; struct event_data *ev; int *c; const char *name; + int rid, argc; + argrec_t *argv; nullpo_retr(0, ev=(struct event_data *)data); nullpo_retr(0, ap); nullpo_retr(0, c=va_arg(ap,int *)); name=va_arg(ap,const char *); + rid = va_arg(ap, int); + argc = va_arg(ap, int); + argv = va_arg(ap, argrec_t *); + if (p && strcasecmp(name,p)==0 ) { - run_script(ev->nd->u.scr.script,ev->pos,0,ev->nd->bl.id); + run_script_l(ev->nd->u.scr.script,ev->pos, rid, ev->nd->bl.id, argc, argv); (*c)++; } return 0; } -int npc_event_do(const char *name) +int npc_event_do_l(const char *name, int rid, int argc, argrec_t *args) { int c=0; if (*name==':' && name[1]==':') { - return npc_event_doall(name+2); + return npc_event_doall_l(name+2, rid, argc, args); } - strdb_foreach(ev_db,npc_event_do_sub,&c,name); + strdb_foreach(ev_db,npc_event_do_sub,&c,name, rid, argc, args); return c; } |