* Random updates to instance system.
- Introduced a constant for instance name length. - Corrected comments related to instance packets 0x2cb (ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO) and 0x2ce (ZC_MEMORIALDUNGEON_NOTIFY). - Moved instance finalization out of map.c into instance.c git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14878 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
0a7528681e
commit
b91aa20b3d
@ -1,5 +1,10 @@
|
||||
Date Added
|
||||
|
||||
2011/07/02
|
||||
* Random updates to instance system. [Ai4rei]
|
||||
- Introduced a constant for instance name length.
|
||||
- Corrected comments related to instance packets 0x2cb (ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO) and 0x2ce (ZC_MEMORIALDUNGEON_NOTIFY).
|
||||
- Moved instance finalization out of map.c into instance.c
|
||||
2011/07/01
|
||||
* CMake: marked executables as different components and other miscellaneous changes. [FlavioJS]
|
||||
2011/06/29
|
||||
|
@ -13997,11 +13997,11 @@ int clif_instance(int instance_id, int type, int flag)
|
||||
switch( type )
|
||||
{
|
||||
case 1:
|
||||
// S 0x2cb <Instance name>.63B <Standby Position>.W
|
||||
// S 0x2cb <Instance name>.61B <Standby Position>.W
|
||||
// Required to start the instancing information window on Client
|
||||
// This window re-appear each "refresh" of client automatically until type 4 is send to client.
|
||||
WBUFW(buf,0) = 0x02CB;
|
||||
memcpy(WBUFP(buf,2),instance[instance_id].name,61);
|
||||
memcpy(WBUFP(buf,2),instance[instance_id].name,INSTANCE_NAME_LENGTH);
|
||||
WBUFW(buf,63) = flag;
|
||||
clif_send(buf,packet_len(0x02CB),&sd->bl,PARTY);
|
||||
break;
|
||||
@ -14029,14 +14029,16 @@ int clif_instance(int instance_id, int type, int flag)
|
||||
}
|
||||
clif_send(buf,packet_len(0x02CD),&sd->bl,PARTY);
|
||||
break;
|
||||
case 5: // R 02CE <message ID>.L
|
||||
case 5:
|
||||
// S 0x2ce <Message ID>.L
|
||||
// 0 = Notification (EnterLimitDate update?)
|
||||
// 1 = The Memorial Dungeon expired; it has been destroyed
|
||||
// 2 = The Memorial Dungeon's entry time limit expired; it has been destroyed
|
||||
// 3 = The Memorial Dungeon has been removed.
|
||||
// 4 = Just remove the window, maybe party/guild leave
|
||||
// 4 = Create failure (removes the instance window)
|
||||
WBUFW(buf,0) = 0x02CE;
|
||||
WBUFL(buf,2) = flag;
|
||||
//WBUFL(buf,6) = EnterLimitDate;
|
||||
clif_send(buf,packet_len(0x02CE),&sd->bl,PARTY);
|
||||
break;
|
||||
}
|
||||
|
@ -220,7 +220,7 @@ void instance_init(int instance_id)
|
||||
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]);
|
||||
|
||||
instance[instance_id].state = INSTANCE_BUSSY;
|
||||
instance[instance_id].state = INSTANCE_BUSY;
|
||||
ShowInfo("[Instance] Initialized %s.\n", instance[instance_id].name);
|
||||
}
|
||||
|
||||
@ -444,6 +444,14 @@ void instance_check_kick(struct map_session_data *sd)
|
||||
}
|
||||
}
|
||||
|
||||
void do_final_instance(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for( i = 1; i < MAX_INSTANCE; i++ )
|
||||
instance_destroy(i);
|
||||
}
|
||||
|
||||
void do_init_instance(void)
|
||||
{
|
||||
memset(instance, 0x00, sizeof(instance));
|
||||
|
@ -7,10 +7,12 @@
|
||||
#define MAX_MAP_PER_INSTANCE 10
|
||||
#define MAX_INSTANCE 500
|
||||
|
||||
typedef enum instance_state { INSTANCE_FREE, INSTANCE_IDLE, INSTANCE_BUSSY } instance_state;
|
||||
#define INSTANCE_NAME_LENGTH (60+1)
|
||||
|
||||
typedef enum instance_state { INSTANCE_FREE, INSTANCE_IDLE, INSTANCE_BUSY } instance_state;
|
||||
|
||||
struct s_instance {
|
||||
char name[61]; // Instance Name - required for clif functions.
|
||||
char name[INSTANCE_NAME_LENGTH]; // Instance Name - required for clif functions.
|
||||
instance_state state;
|
||||
short instance_id;
|
||||
int party_id;
|
||||
@ -43,6 +45,7 @@ void instance_check_idle(int instance_id);
|
||||
void instance_check_kick(struct map_session_data *sd);
|
||||
void instance_set_timeout(int instance_id, unsigned int progress_timeout, unsigned int idle_timeout);
|
||||
|
||||
void do_init_instance();
|
||||
void do_final_instance(void);
|
||||
void do_init_instance(void);
|
||||
|
||||
#endif
|
||||
|
@ -3436,9 +3436,6 @@ void do_final(void)
|
||||
for( sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); sd = (TBL_PC*)mapit_next(iter) )
|
||||
map_quit(sd);
|
||||
mapit_free(iter);
|
||||
|
||||
for( i = 0; i < MAX_INSTANCE; i++ )
|
||||
instance_destroy(i);
|
||||
|
||||
id_db->foreach(id_db,cleanup_db_sub);
|
||||
chrif_char_reset_offline();
|
||||
@ -3449,6 +3446,7 @@ void do_final(void)
|
||||
do_final_chrif();
|
||||
do_final_npc();
|
||||
do_final_script();
|
||||
do_final_instance();
|
||||
do_final_itemdb();
|
||||
do_final_storage();
|
||||
do_final_guild();
|
||||
|
Loading…
x
Reference in New Issue
Block a user