similar topic appear in rathena forum
prontera,155,180,0 script Test Instance 1_F_MARIA,{
if ( has_instance2("guild_vs2") >= 0 ) {
// dispbottom has_instance2("guild_vs2") +" destroy";
instance_destroy has_instance2("guild_vs2");
}
if ( ( .@ins = instance_create( "Test Instance", getcharid(CHAR_ID_ACCOUNT), IOT_CHAR ) ) < 0 ) {
mes "error : "+ .@ins;
close;
}
if ( !getstrlen( instance_attachmap( "guild_vs2", .@ins, true, ( getcharid(CHAR_ID_ACCOUNT) )+"INST" ) ) ) {
mes "error : 5";
instance_destroy .@ins;
close;
}
instance_set_timeout 3600, 15, .@ins;
instance_init .@ins;
warp has_instance("guild_vs2"), 49,49;
end;
}
guild_vs2,49,49,5 script test dialog 1_F_MARIA,{
dispbottom strnpcinfo(NPC_MAP);
mesf "%d monsters on this map", 'amount;
next;
select "Destroy";
instance_destroy;
end;
OnInstanceInit:
monster has_instance("guild_vs2"), 49,49, "--ja--", PORING, 10, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnMobDead";
'amount = 10;
end;
OnMobDead:
--'amount;
if ( !'amount )
instance_announce -1, "all monster killed", bc_map;
end;
}
few things noted for hercules ones
1. hercules has more instance related script commands, but also make this more flexible to write once you learn them all
a. hercules has *instance_attach script command, make sure this script command is added before trying do anything instance related in the register npc
b. hercules has to emulate the map name with *instance_attachmap if the map name doesn't follow the syntax <number>@<5 string limit>
2. hercules instance ID start from 0, rathena instance ID start from 1
a. make sure the instance_announce is set to -1
3. hercules seems cannot *instance_destroy inside the instance map itself ... has to rely on *instance_set_timeout of the timeout value