diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/char/char.c | 13 | ||||
-rw-r--r-- | src/char_sql/char.c | 22 | ||||
-rw-r--r-- | src/common/mmo.h | 3 | ||||
-rw-r--r-- | src/map/clif.h | 3 |
4 files changed, 35 insertions, 6 deletions
diff --git a/src/char/char.c b/src/char/char.c index 1978b225b..f3bc477d8 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -1685,10 +1685,16 @@ int mmo_char_send006b(int fd, struct char_session_data *sd) { for(i = found_num; i < 9; i++) sd->found_char[i] = -1; +#if PACKETVER > 7 + WFIFOHEAD(fd, offset + found_num * 108); + memset(WFIFOP(fd,0), 0, offset + found_num * 108); + WFIFOW(fd,2) = offset + found_num * 108; +#else WFIFOHEAD(fd, offset + found_num * 106); memset(WFIFOP(fd,0), 0, offset + found_num * 106); - WFIFOW(fd,0) = 0x6b; WFIFOW(fd,2) = offset + found_num * 106; +#endif + WFIFOW(fd,0) = 0x6b; for(i = 0; i < found_num; i++) { p = &char_dat[sd->found_char[i]].status; @@ -1733,7 +1739,12 @@ int mmo_char_send006b(int fd, struct char_session_data *sd) { WFIFOB(fd,j+101) = (p->int_ > 255) ? 255 : p->int_; WFIFOB(fd,j+102) = (p->dex > 255) ? 255 : p->dex; WFIFOB(fd,j+103) = (p->luk > 255) ? 255 : p->luk; +#if PACKETVER > 7 + WFIFOW(fd,j+104) = p->char_num; + WFIFOB(fd,j+106) = 1; //TODO: Handle this rename bit: 0 to enable renaming +#else WFIFOB(fd,j+104) = p->char_num; +#endif } WFIFOSET(fd,WFIFOW(fd,2)); diff --git a/src/char_sql/char.c b/src/char_sql/char.c index a6bc9dbea..f921ff48a 100644 --- a/src/char_sql/char.c +++ b/src/char_sql/char.c @@ -1680,7 +1680,11 @@ int mmo_char_send006b(int fd, struct char_session_data *sd) { int i, j, found_num = 0; struct mmo_charstatus *p = NULL; const int offset = 24; +#ifdef PACKETVER > 7 + WFIFOHEAD(fd, offset +9*108); +#else WFIFOHEAD(fd, offset +9*106); +#endif set_char_online(-1, 99,sd->account_id); @@ -1705,9 +1709,15 @@ int mmo_char_send006b(int fd, struct char_session_data *sd) { for(i = found_num; i < 9; i++) sd->found_char[i] = -1; - memset(WFIFOP(fd, 0), 0, offset + found_num * 106); WFIFOW(fd, 0) = 0x6b; + +#ifdef PACKETVER > 7 + memset(WFIFOP(fd, 0), 0, offset + found_num * 108); + WFIFOW(fd, 2) = offset + found_num * 108; +#endif + memset(WFIFOP(fd, 0), 0, offset + found_num * 106); WFIFOW(fd, 2) = offset + found_num * 106; +#endif if (save_log) ShowInfo("Loading Char Data ("CL_BOLD"%d"CL_RESET")\n",sd->account_id); @@ -1717,7 +1727,11 @@ int mmo_char_send006b(int fd, struct char_session_data *sd) { p = &char_dat; +#ifdef PACKETVER > 7 + j = offset + (i * 108); +#else j = offset + (i * 106); // increase speed of code +#endif WFIFOL(fd,j) = p->char_id; WFIFOL(fd,j+4) = p->base_exp>LONG_MAX?LONG_MAX:p->base_exp; @@ -1758,9 +1772,13 @@ int mmo_char_send006b(int fd, struct char_session_data *sd) { WFIFOB(fd,j+101) = (p->int_ > UCHAR_MAX) ? UCHAR_MAX : p->int_; WFIFOB(fd,j+102) = (p->dex > UCHAR_MAX) ? UCHAR_MAX : p->dex; WFIFOB(fd,j+103) = (p->luk > UCHAR_MAX) ? UCHAR_MAX : p->luk; +#if PACKETVER > 7 + WFIFOW(fd,j+104) = p->char_num; + WFIFOB(fd,j+106) = 1; //TODO: Handle this rename bit: 0 to enable renaming +#else WFIFOB(fd,j+104) = p->char_num; +#endif } - WFIFOSET(fd,WFIFOW(fd,2)); // printf("mmo_char_send006b end..\n"); return 0; diff --git a/src/common/mmo.h b/src/common/mmo.h index d0606dd4e..ade3e4e04 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -8,6 +8,9 @@ #include "cbasetypes.h" #include "utils.h" // _WIN32 +// server protocol version +#define PACKETVER 7 + #define FIFOSIZE_SERVERLINK 256*1024 // set to 0 to not check IP of player between each server. diff --git a/src/map/clif.h b/src/map/clif.h index 6edf5eef5..3bef6dcda 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -6,9 +6,6 @@ #include "map.h" -// protocol version -#define PACKETVER 7 - // packet DB #define MAX_PACKET_DB 0x300 #define MAX_PACKET_VER 25 |