Fixed instances not initializing after reloadscript (bugreport:3522).
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14167 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
96c3de31a6
commit
ada5a13abe
@ -214,12 +214,9 @@ int instance_map_npcsub(struct block_list* bl, va_list args)
|
|||||||
void instance_init(int instance_id)
|
void instance_init(int instance_id)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
if( !instance_id ) return;
|
|
||||||
if( instance[instance_id].state != INSTANCE_IDLE )
|
if( !instance_id )
|
||||||
{
|
return; // nothing to do
|
||||||
ShowError("instance_init: instance already initialited.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for( i = 0; i < instance[instance_id].num_map; i++ )
|
for( i = 0; i < instance[instance_id].num_map; i++ )
|
||||||
map_foreachinmap(instance_map_npcsub, map[instance[instance_id].map[i]].instance_src_map, BL_NPC, instance[instance_id].map[i]);
|
map_foreachinmap(instance_map_npcsub, map[instance[instance_id].map[i]].instance_src_map, BL_NPC, instance[instance_id].map[i]);
|
||||||
@ -314,7 +311,7 @@ void instance_destroy(int instance_id)
|
|||||||
time_t now = time(NULL);
|
time_t now = time(NULL);
|
||||||
|
|
||||||
if( !instance_id || instance[instance_id].state == INSTANCE_FREE )
|
if( !instance_id || instance[instance_id].state == INSTANCE_FREE )
|
||||||
return;
|
return; // nothing to do
|
||||||
|
|
||||||
if( instance[instance_id].progress_timeout && instance[instance_id].progress_timeout <= now )
|
if( instance[instance_id].progress_timeout && instance[instance_id].progress_timeout <= now )
|
||||||
type = 1;
|
type = 1;
|
||||||
|
@ -3371,7 +3371,7 @@ void do_final(void)
|
|||||||
mapit_free(iter);
|
mapit_free(iter);
|
||||||
|
|
||||||
for( i = 0; i < MAX_INSTANCE; i++ )
|
for( i = 0; i < MAX_INSTANCE; i++ )
|
||||||
if( instance[i].state != INSTANCE_FREE ) instance_destroy(i);
|
instance_destroy(i);
|
||||||
|
|
||||||
id_db->foreach(id_db,cleanup_db_sub);
|
id_db->foreach(id_db,cleanup_db_sub);
|
||||||
chrif_char_reset_offline();
|
chrif_char_reset_offline();
|
||||||
|
@ -3347,7 +3347,7 @@ int npc_reload(void)
|
|||||||
npc_id - npc_new_min, npc_warp, npc_shop, npc_script, npc_mob, npc_cache_mob, npc_delay_mob);
|
npc_id - npc_new_min, npc_warp, npc_shop, npc_script, npc_mob, npc_cache_mob, npc_delay_mob);
|
||||||
|
|
||||||
for( i = 0; i < ARRAYLENGTH(instance); ++i )
|
for( i = 0; i < ARRAYLENGTH(instance); ++i )
|
||||||
if( instance[i].instance_id ) instance_init(instance[i].instance_id);
|
instance_init(instance[i].instance_id);
|
||||||
|
|
||||||
//Re-read the NPC Script Events cache.
|
//Re-read the NPC Script Events cache.
|
||||||
npc_read_event_script();
|
npc_read_event_script();
|
||||||
|
@ -14004,6 +14004,13 @@ BUILDIN_FUNC(instance_set_timeout)
|
|||||||
BUILDIN_FUNC(instance_init)
|
BUILDIN_FUNC(instance_init)
|
||||||
{
|
{
|
||||||
int instance_id = script_getnum(st, 2);
|
int instance_id = script_getnum(st, 2);
|
||||||
|
|
||||||
|
if( instance[instance_id].state != INSTANCE_IDLE )
|
||||||
|
{
|
||||||
|
ShowError("instance_init: instance already initialized.\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
instance_init(instance_id);
|
instance_init(instance_id);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user