* Shinomori's method (kinda) of remote script execution with interaction.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6151 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
Lance
2006-04-18 11:40:36 +00:00
parent cbe3f6ac6f
commit c0b1eb7787
6 changed files with 33 additions and 17 deletions

View File

@@ -10856,6 +10856,7 @@ int run_func(struct script_state *st)
int run_script_main(struct script_state *st)
{
int c/*,rerun_pos*/;
struct block_list *bl;
int cmdcount=script_config.check_cmdcount;
int gotocount=script_config.check_gotocount;
struct script_stack *stack=st->stack;
@@ -10868,6 +10869,15 @@ int run_script_main(struct script_state *st)
}
} else {
st->state = RUN;
if(st->oid && st->rid && (bl = map_id2bl(st->oid))){
if(bl->type == BL_PC){
clif_sendfakenpc(((TBL_PC *)bl),dummy_npc_id);
st->oid = dummy_npc_id;
} else if(bl->type == BL_NPC){
if(npc_checknear(((TBL_PC *)bl), bl->id))
clif_sendfakenpc(((struct map_session_data *)bl),st->oid);
}
}
}
while( st->state == RUN) {
c= get_com((unsigned char *) st->script,&st->pos);
@@ -10965,8 +10975,13 @@ int run_script_main(struct script_state *st)
{
struct map_session_data *sd=map_id2sd(st->rid);
st->pos=-1;
if(sd && sd->npc_id==st->oid)
if(sd && sd->npc_id==st->oid){
if(sd->state.using_fake_npc){
clif_clearchar_id(sd->npc_id, 0, sd->fd);
sd->state.using_fake_npc = 0;
}
npc_event_dequeue(sd);
}
}
break;
case RERUNLINE: