diff options
Diffstat (limited to 'src')
57 files changed, 12721 insertions, 1229 deletions
diff --git a/src/char/HPMchar.c b/src/char/HPMchar.c index e0f81c61f..3a74f443d 100644 --- a/src/char/HPMchar.c +++ b/src/char/HPMchar.c @@ -36,6 +36,7 @@ #include "char/int_party.h" #include "char/int_pet.h" #include "char/int_quest.h" +#include "char/int_rodex.h" #include "char/int_storage.h" #include "char/loginif.h" #include "char/mapif.h" diff --git a/src/char/Makefile.in b/src/char/Makefile.in index 7806ce2bb..1a7d067a4 100644 --- a/src/char/Makefile.in +++ b/src/char/Makefile.in @@ -42,11 +42,11 @@ MT19937AR_H = $(MT19937AR_D)/mt19937ar.h CHAR_C = char.c HPMchar.c loginif.c mapif.c geoip.c inter.c int_auction.c int_elemental.c int_guild.c \ int_homun.c int_mail.c int_mercenary.c int_party.c int_pet.c \ - int_quest.c int_storage.c pincode.c + int_quest.c int_rodex.c int_storage.c pincode.c CHAR_OBJ = $(addprefix obj_sql/, $(patsubst %.c,%.o,$(CHAR_C))) CHAR_H = char.h HPMchar.h loginif.h mapif.h geoip.h inter.h int_auction.h int_elemental.h int_guild.h \ int_homun.h int_mail.h int_mercenary.h int_party.h int_pet.h \ - int_quest.h int_storage.h pincode.h + int_quest.h int_rodex.h int_storage.h pincode.h CHAR_PH = HAVE_MYSQL=@HAVE_MYSQL@ diff --git a/src/char/char.c b/src/char/char.c index f66108c00..78b2d19fa 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -34,6 +34,7 @@ #include "char/int_party.h" #include "char/int_pet.h" #include "char/int_quest.h" +#include "char/int_rodex.h" #include "char/int_storage.h" #include "char/inter.h" #include "char/loginif.h" @@ -97,6 +98,8 @@ char auction_db[256] = "auction"; // Auctions System char friend_db[256] = "friends"; char hotkey_db[256] = "hotkey"; char quest_db[256] = "quest"; +char rodex_db[256] = "rodex_mail"; +char rodex_item_db[256] = "rodex_items"; char homunculus_db[256] = "homunculus"; char skill_homunculus_db[256] = "skill_homunculus"; char mercenary_db[256] = "mercenary"; @@ -457,10 +460,10 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p) (p->int_ != cp->int_) || (p->dex != cp->dex) || (p->luk != cp->luk) || (p->option != cp->option) || (p->party_id != cp->party_id) || (p->guild_id != cp->guild_id) || - (p->pet_id != cp->pet_id) || (p->weapon != cp->weapon) || (p->hom_id != cp->hom_id) || - (p->ele_id != cp->ele_id) || (p->shield != cp->shield) || (p->head_top != cp->head_top) || - (p->head_mid != cp->head_mid) || (p->head_bottom != cp->head_bottom) || (p->delete_date != cp->delete_date) || - (p->rename != cp->rename) || (p->slotchange != cp->slotchange) || (p->robe != cp->robe) || + (p->pet_id != cp->pet_id) || (p->look.weapon != cp->look.weapon) || (p->hom_id != cp->hom_id) || + (p->ele_id != cp->ele_id) || (p->look.shield != cp->look.shield) || (p->look.head_top != cp->look.head_top) || + (p->look.head_mid != cp->look.head_mid) || (p->look.head_bottom != cp->look.head_bottom) || (p->delete_date != cp->delete_date) || + (p->rename != cp->rename) || (p->slotchange != cp->slotchange) || (p->look.robe != cp->look.robe) || (p->show_equip != cp->show_equip) || (p->allow_party != cp->allow_party) || (p->font != cp->font) || (p->uniqueitem_counter != cp->uniqueitem_counter) || (p->hotkey_rowshift != cp->hotkey_rowshift) ) { @@ -473,7 +476,7 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p) opt |= OPT_SHOW_EQUIP; if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `base_level`='%d', `job_level`='%d'," - "`base_exp`='%u', `job_exp`='%u', `zeny`='%d'," + "`base_exp`='%"PRIu64"', `job_exp`='%"PRIu64"', `zeny`='%d'," "`max_hp`='%d',`hp`='%d',`max_sp`='%d',`sp`='%d',`status_point`='%d',`skill_point`='%d'," "`str`='%d',`agi`='%d',`vit`='%d',`int`='%d',`dex`='%d',`luk`='%d'," "`option`='%u',`party_id`='%d',`guild_id`='%d',`pet_id`='%d',`homun_id`='%d',`elemental_id`='%d'," @@ -487,11 +490,11 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p) p->max_hp, p->hp, p->max_sp, p->sp, p->status_point, p->skill_point, p->str, p->agi, p->vit, p->int_, p->dex, p->luk, p->option, p->party_id, p->guild_id, p->pet_id, p->hom_id, p->ele_id, - p->weapon, p->shield, p->head_top, p->head_mid, p->head_bottom, + p->look.weapon, p->look.shield, p->look.head_top, p->look.head_mid, p->look.head_bottom, mapindex_id2name(p->last_point.map), p->last_point.x, p->last_point.y, mapindex_id2name(p->save_point.map), p->save_point.x, p->save_point.y, p->rename, (unsigned long)p->delete_date, // FIXME: platform-dependent size - p->robe,p->slotchange,opt,p->font,p->uniqueitem_counter, + p->look.robe,p->slotchange,opt,p->font,p->uniqueitem_counter, p->hotkey_rowshift, p->account_id, p->char_id) ) { @@ -924,7 +927,7 @@ int char_memitemdata_to_sql(const struct item *p_items, int guid, enum inventory if (SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf))) Sql_ShowDebug(inter->sql_handle); } - + aFree(deletes); } @@ -1069,8 +1072,8 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf) || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_SHORT, &p.class, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_INT, &p.base_level, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT, &p.job_level, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_UINT, &p.base_exp, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &p.job_exp, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_UINT64, &p.base_exp, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT64, &p.job_exp, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_INT, &p.zeny, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_SHORT, &p.str, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_SHORT, &p.agi, 0, NULL, NULL) @@ -1091,15 +1094,15 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf) || SQL_ERROR == SQL->StmtBindColumn(stmt, 25, SQLDT_SHORT, &p.hair_color, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 26, SQLDT_SHORT, &p.clothes_color, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 27, SQLDT_SHORT, &p.body, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 28, SQLDT_SHORT, &p.weapon, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 29, SQLDT_SHORT, &p.shield, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_SHORT, &p.head_top, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p.head_mid, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p.head_bottom, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 28, SQLDT_SHORT, &p.look.weapon, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 29, SQLDT_SHORT, &p.look.shield, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_SHORT, &p.look.head_top, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p.look.head_mid, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p.look.head_bottom, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_STRING, &last_map, sizeof(last_map), NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_USHORT, &p.rename, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_UINT32, &p.delete_date, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p.robe, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p.look.robe, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_USHORT, &p.slotchange, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_LONG, &unban_time, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_ENUM, &sex, sizeof(sex), NULL, NULL) @@ -1178,8 +1181,8 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_SHORT, &p->class, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT, &p->base_level, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_INT, &p->job_level, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &p->base_exp, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_UINT, &p->job_exp, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT64, &p->base_exp, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_UINT64, &p->job_exp, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_INT, &p->zeny, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_SHORT, &p->str, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 11, SQLDT_SHORT, &p->agi, 0, NULL, NULL) @@ -1205,11 +1208,11 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p->hair_color, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p->clothes_color, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_SHORT, &p->body, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_SHORT, &p->weapon, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_SHORT, &p->shield, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p->head_top, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_SHORT, &p->head_mid, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_SHORT, &p->head_bottom, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_SHORT, &p->look.weapon, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_SHORT, &p->look.shield, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p->look.head_top, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_SHORT, &p->look.head_mid, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_SHORT, &p->look.head_bottom, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_STRING, &last_map, sizeof(last_map), NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 40, SQLDT_SHORT, &p->last_point.x, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 41, SQLDT_SHORT, &p->last_point.y, 0, NULL, NULL) @@ -1223,7 +1226,7 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every || SQL_ERROR == SQL->StmtBindColumn(stmt, 49, SQLDT_INT, &p->fame, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 50, SQLDT_USHORT, &p->rename, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 51, SQLDT_UINT32, &p->delete_date, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 52, SQLDT_SHORT, &p->robe, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 52, SQLDT_SHORT, &p->look.robe, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 53, SQLDT_USHORT, &p->slotchange, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 54, SQLDT_UINT, &opt, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 55, SQLDT_UCHAR, &p->font, 0, NULL, NULL) @@ -1906,10 +1909,23 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) { return 0; buf = WBUFP(buffer,0); + WBUFL(buf,0) = p->char_id; - WBUFL(buf,4) = min(p->base_exp, INT32_MAX); +#if PACKETVER >= 20170830 + WBUFQ(buf,4) = min(p->base_exp, INT64_MAX); + offset += 4; + buf = WBUFP(buffer, offset); +#else + WBUFL(buf,4) = min((uint32)(p->base_exp), INT32_MAX); +#endif WBUFL(buf,8) = p->zeny; - WBUFL(buf,12) = min(p->job_exp, INT32_MAX); +#if PACKETVER >= 20170830 + WBUFQ(buf,12) = min(p->job_exp, INT64_MAX); + offset += 4; + buf = WBUFP(buffer, offset); +#else + WBUFL(buf,12) = min((uint32)(p->job_exp), INT32_MAX); +#endif WBUFL(buf,16) = p->job_level; WBUFL(buf,20) = 0; // probably opt1 WBUFL(buf,24) = 0; // probably opt2 @@ -1939,14 +1955,14 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) { //When the weapon is sent and your option is riding, the client crashes on login!? // FIXME[Haru]: is OPTION_HANBOK intended to be part of this list? And if it is, should the list also include other OPTION_ costumes? - WBUFW(buf,56) = (p->option&(OPTION_RIDING|OPTION_DRAGON|OPTION_WUG|OPTION_WUGRIDER|OPTION_MADOGEAR|OPTION_HANBOK)) ? 0 : p->weapon; + WBUFW(buf,56) = (p->option&(OPTION_RIDING|OPTION_DRAGON|OPTION_WUG|OPTION_WUGRIDER|OPTION_MADOGEAR|OPTION_HANBOK)) ? 0 : p->look.weapon; WBUFW(buf,58) = p->base_level; WBUFW(buf,60) = min(p->skill_point, INT16_MAX); - WBUFW(buf,62) = p->head_bottom; - WBUFW(buf,64) = p->shield; - WBUFW(buf,66) = p->head_top; - WBUFW(buf,68) = p->head_mid; + WBUFW(buf,62) = p->look.head_bottom; + WBUFW(buf,64) = p->look.shield; + WBUFW(buf,66) = p->look.head_top; + WBUFW(buf,68) = p->look.head_mid; WBUFW(buf,70) = p->hair_color; WBUFW(buf,72) = p->clothes_color; memcpy(WBUFP(buf,74), p->name, NAME_LENGTH); @@ -1970,7 +1986,7 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) { offset += 4; #endif #if PACKETVER >= 20110111 - WBUFL(buf,128) = p->robe; + WBUFL(buf,128) = p->look.robe; offset += 4; #endif #if PACKETVER != 20111116 //2011-11-16 wants 136, ask gravity. @@ -6412,6 +6428,7 @@ void char_load_defaults(void) inter_pet_defaults(); inter_quest_defaults(); inter_storage_defaults(); + inter_rodex_defaults(); inter_defaults(); geoip_defaults(); } diff --git a/src/char/char.h b/src/char/char.h index 6b081e536..3689690c7 100644 --- a/src/char/char.h +++ b/src/char/char.h @@ -328,6 +328,8 @@ extern char pet_db[256]; extern char mail_db[256]; extern char auction_db[256]; extern char quest_db[256]; +extern char rodex_db[256]; +extern char rodex_item_db[256]; extern char homunculus_db[256]; extern char skill_homunculus_db[256]; extern char mercenary_db[256]; diff --git a/src/char/int_auction.c b/src/char/int_auction.c index 2dd65f213..05914c3a0 100644 --- a/src/char/int_auction.c +++ b/src/char/int_auction.c @@ -113,7 +113,7 @@ unsigned int inter_auction_create(struct auction_data *auction) StrBuf->Printf(&buf, ",'%d'", auction->item.card[j]); for (j = 0; j < MAX_ITEM_OPTIONS; j++) StrBuf->Printf(&buf, ",'%d','%d'", auction->item.option[j].index, auction->item.option[j].value); - + StrBuf->AppendStr(&buf, ")"); stmt = SQL->StmtMalloc(inter->sql_handle); diff --git a/src/char/int_guild.c b/src/char/int_guild.c index b4b4bdde4..0102f11a0 100644 --- a/src/char/int_guild.c +++ b/src/char/int_guild.c @@ -138,7 +138,7 @@ int inter_guild_tosql(struct guild *g,int flag) if (g->guild_id<=0 && g->guild_id != -1) return 0; #ifdef NOISY - ShowInfo("Save guild request ("CL_BOLD"%d"CL_RESET" - flag 0x%x).",g->guild_id, flag); + ShowInfo("Save guild request ("CL_BOLD"%d"CL_RESET" - flag 0x%x).\n",g->guild_id, flag); #endif SQL->EscapeStringLen(inter->sql_handle, esc_name, g->name, strnlen(g->name, NAME_LENGTH)); diff --git a/src/char/int_party.c b/src/char/int_party.c index 4b6800699..764387981 100644 --- a/src/char/int_party.c +++ b/src/char/int_party.c @@ -633,7 +633,7 @@ int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id) return 0; //Member not found? mapif->party_withdraw(party_id, account_id, char_id); - + j = p->party.member[i].lv; if (p->party.member[i].online > 0) p->party.count--; diff --git a/src/char/int_rodex.c b/src/char/int_rodex.c new file mode 100644 index 000000000..c45c88eb0 --- /dev/null +++ b/src/char/int_rodex.c @@ -0,0 +1,536 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2017 Hercules Dev Team + * + * Hercules is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#define HERCULES_CORE + +#include "int_rodex.h" + +#include "char/char.h" +#include "char/inter.h" +#include "char/mapif.h" +#include "common/db.h" +#include "common/memmgr.h" +#include "common/mmo.h" +#include "common/nullpo.h" +#include "common/showmsg.h" +#include "common/socket.h" +#include "common/sql.h" +#include "common/strlib.h" +#include "common/timer.h" + +#include <stdio.h> +#include <stdlib.h> + +struct inter_rodex_interface inter_rodex_s; +struct inter_rodex_interface *inter_rodex; + +// Loads new mails of this char_id/account_id +static int inter_rodex_fromsql(int char_id, int account_id, int8 opentype, int64 mail_id, struct rodex_maillist *mails) +{ + int i, count = 0; + struct rodex_message msg = { 0 }; + struct SqlStmt *stmt; + struct SqlStmt *stmt_items; + + nullpo_retr(-1, mails); + + stmt = SQL->StmtMalloc(inter->sql_handle); + + switch (opentype) { + case RODEX_OPENTYPE_MAIL: + if (SQL_ERROR == SQL->StmtPrepare(stmt, + "SELECT `mail_id`, `sender_name`, `sender_id`, `receiver_name`, `receiver_id`, `receiver_accountid`," + "`title`, `body`, `zeny`, `type`, `is_read`, `send_date`, `expire_date`, `weight`" + "FROM `%s` WHERE `expire_date` > '%d' AND `receiver_id` = '%d' AND `mail_id` > '%"PRId64"'" + "ORDER BY `mail_id` ASC", rodex_db, (int)time(NULL), char_id, mail_id) + ) { + SqlStmt_ShowDebug(stmt); + SQL->StmtFree(stmt); + return -1; + } + break; + + case RODEX_OPENTYPE_ACCOUNT: + if (SQL_ERROR == SQL->StmtPrepare(stmt, + "SELECT `mail_id`, `sender_name`, `sender_id`, `receiver_name`, `receiver_id`, `receiver_accountid`," + "`title`, `body`, `zeny`, `type`, `is_read`, `send_date`, `expire_date`, `weight`" + "FROM `%s` WHERE " + "`expire_date` > '%d' AND `receiver_accountid` = '%d' AND `mail_id` > '%"PRId64"'" + "ORDER BY `mail_id` ASC", rodex_db, (int)time(NULL), account_id, mail_id) + ) { + SqlStmt_ShowDebug(stmt); + SQL->StmtFree(stmt); + return -1; + } + break; + + case RODEX_OPENTYPE_RETURN: + if (SQL_ERROR == SQL->StmtPrepare(stmt, + "SELECT `mail_id`, `sender_name`, `sender_id`, `receiver_name`, `receiver_id`, `receiver_accountid`," + "`title`, `body`, `zeny`, `type`, `is_read`, `send_date`, `expire_date`, `weight`" + "FROM `%s` WHERE (`sender_id` = '%d' AND `expire_date` <= '%d' AND `send_date` + '%d' > '%d' AND `mail_id` > '%"PRId64"')" + "ORDER BY `mail_id` ASC", rodex_db, char_id, (int)time(NULL), 2 * RODEX_EXPIRE, (int)time(NULL), mail_id) + ) { + SqlStmt_ShowDebug(stmt); + SQL->StmtFree(stmt); + return -1; + } + break; + } + + if (SQL_ERROR == SQL->StmtExecute(stmt) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT64, &msg.id, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_STRING, &msg.sender_name, sizeof(msg.sender_name), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_INT, &msg.sender_id, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_STRING, &msg.receiver_name, sizeof(msg.receiver_name), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_INT, &msg.receiver_id, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT, &msg.receiver_accountid, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_STRING, &msg.title, sizeof(msg.title), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_STRING, &msg.body, sizeof(msg.body), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_INT, &msg.zeny, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_UINT8, &msg.type, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_INT8, &msg.is_read, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 11, SQLDT_INT, &msg.send_date, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 12, SQLDT_INT, &msg.expire_date, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 13, SQLDT_INT, &msg.weight, 0, NULL, NULL) + ) { + SqlStmt_ShowDebug(stmt); + SQL->StmtFree(stmt); + return -1; + } + + stmt_items = SQL->StmtMalloc(inter->sql_handle); + if (stmt_items == NULL) { + SQL->StmtFreeResult(stmt); + SQL->StmtFree(stmt); + return -1; + } + + // Read mails + while (SQL_SUCCESS == SQL->StmtNextRow(stmt)) { + struct item it = { 0 }; + + if (msg.type & MAIL_TYPE_ITEM) { + if (SQL_ERROR == SQL->StmtPrepare(stmt_items, "SELECT `nameid`, `amount`, `equip`, `identify`," + "`refine`, `attribute`, `card0`, `card1`, `card2`, `card3`, `opt_idx0`, `opt_val0`," + "`opt_idx1`, `opt_val1`, `opt_idx2`, `opt_val2`, `opt_idx3`, `opt_val3`, `opt_idx4`, `opt_val4`," + "`expire_time`, `bound`, `unique_id`" + "FROM `%s` WHERE mail_id = '%"PRId64"' ORDER BY `mail_id` ASC", rodex_item_db, msg.id) + || SQL_ERROR == SQL->StmtExecute(stmt_items) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 0, SQLDT_INT, &it.nameid, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 1, SQLDT_INT, &it.amount, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 2, SQLDT_UINT, &it.equip, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 3, SQLDT_INT8, &it.identify, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 4, SQLDT_INT8, &it.refine, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 5, SQLDT_INT8, &it.attribute, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 6, SQLDT_INT16, &it.card[0], 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 7, SQLDT_INT16, &it.card[1], 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 8, SQLDT_INT16, &it.card[2], 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 9, SQLDT_INT16, &it.card[3], 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 10, SQLDT_INT16, &it.option[0].index, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 11, SQLDT_INT16, &it.option[0].value, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 12, SQLDT_INT16, &it.option[1].index, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 13, SQLDT_INT16, &it.option[1].value, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 14, SQLDT_INT16, &it.option[2].index, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 15, SQLDT_INT16, &it.option[2].value, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 16, SQLDT_INT16, &it.option[3].index, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 17, SQLDT_INT16, &it.option[3].value, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 18, SQLDT_INT16, &it.option[4].index, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 19, SQLDT_INT16, &it.option[4].value, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 20, SQLDT_INT, &it.expire_time, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 21, SQLDT_UINT8, &it.bound, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 22, SQLDT_UINT64, &it.unique_id, 0, NULL, NULL)) { + SqlStmt_ShowDebug(stmt_items); + } + + for (i = 0; i < RODEX_MAX_ITEM && SQL_SUCCESS == SQL->StmtNextRow(stmt_items); ++i) { + msg.items[i].item = it; + msg.items_count++; + } + } + + if (msg.items_count == 0) { + msg.type &= ~MAIL_TYPE_ITEM; + } + + if (msg.zeny == 0) { + msg.type &= ~MAIL_TYPE_ZENY; + } + + msg.opentype = opentype; +#if PACKETVER < 20160601 + // NPC Message Type isn't supported in old clients + msg.type &= ~MAIL_TYPE_NPC; +#endif + + ++count; + VECTOR_ENSURE(*mails, 1, 1); + VECTOR_PUSH(*mails, msg); + memset(&msg, 0, sizeof(struct rodex_message)); + } + + SQL->StmtFreeResult(stmt); + SQL->StmtFreeResult(stmt_items); + + SQL->StmtFree(stmt); + SQL->StmtFree(stmt_items); + + ShowInfo("rodex load complete from DB - id: %d (total: %d)\n", char_id, count); + return count; +} + +// Checks if user has non-read mails +static bool inter_rodex_hasnew(int char_id, int account_id) +{ + int count = 0; + char *data; + + if (SQL_ERROR == SQL->Query(inter->sql_handle, + "SELECT count(*) FROM `%s` WHERE (" + "(`expire_date` > '%d' AND (`receiver_id` = '%d' OR `receiver_accountid` = '%d')) OR" + "(`sender_id` = '%d' AND `expire_date` <= '%d' AND `send_date` + '%d' > '%d')" + ") AND (`is_read` = 0 OR (`type` > 0 AND `type` != 8))", + rodex_db, (int)time(NULL), char_id, account_id, + char_id, (int)time(NULL), 2 * RODEX_EXPIRE, (int)time(NULL)) + ) { + Sql_ShowDebug(inter->sql_handle); + return -1; + } + + if (SQL_SUCCESS != SQL->NextRow(inter->sql_handle)) + return false; + + SQL->GetData(inter->sql_handle, 0, &data, NULL); + count = atoi(data); + SQL->FreeResult(inter->sql_handle); + + return count > 0; +} + +/// Checks player name and retrieves some data +static bool inter_rodex_checkname(const char *name, int *target_char_id, short *target_class, int *target_level) +{ + char esc_name[NAME_LENGTH * 2 + 1]; + bool found = false; + + nullpo_retr(false, name); + nullpo_retr(false, target_char_id); + nullpo_retr(false, target_class); + nullpo_retr(false, target_level); + + // Try to find the Dest Char by Name + SQL->EscapeStringLen(inter->sql_handle, esc_name, name, strnlen(name, NAME_LENGTH)); + if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `char_id`, `class`, `base_level` FROM `%s` WHERE `name` = '%s'", char_db, esc_name)) { + Sql_ShowDebug(inter->sql_handle); + } else { + if (SQL_SUCCESS == SQL->NextRow(inter->sql_handle)) { + char *data; + SQL->GetData(inter->sql_handle, 0, &data, NULL); *target_char_id = atoi(data); + SQL->GetData(inter->sql_handle, 1, &data, NULL); *target_class = (short)atoi(data); + SQL->GetData(inter->sql_handle, 2, &data, NULL); *target_level = atoi(data); + found = true; + } + } + SQL->FreeResult(inter->sql_handle); + + return found; +} + +/// Stores a single message in the database. +/// Returns the message's ID if successful (or 0 if it fails). +int64 inter_rodex_savemessage(struct rodex_message* msg) +{ + char sender_name[NAME_LENGTH * 2 + 1]; + char receiver_name[NAME_LENGTH * 2 + 1]; + char body[RODEX_BODY_LENGTH * 2 + 1]; + char title[RODEX_TITLE_LENGTH * 2 + 1]; + int i; + + nullpo_retr(false, msg); + + SQL->EscapeStringLen(inter->sql_handle, sender_name, msg->sender_name, strnlen(msg->sender_name, NAME_LENGTH)); + SQL->EscapeStringLen(inter->sql_handle, receiver_name, msg->receiver_name, strnlen(msg->receiver_name, NAME_LENGTH)); + SQL->EscapeStringLen(inter->sql_handle, body, msg->body, strnlen(msg->body, RODEX_BODY_LENGTH)); + SQL->EscapeStringLen(inter->sql_handle, title, msg->title, strnlen(msg->title, RODEX_TITLE_LENGTH)); + + if (SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` (`sender_name`, `sender_id`, `receiver_name`, `receiver_id`, `receiver_accountid`, `title`, `body`," + "`zeny`, `type`, `is_read`, `send_date`, `expire_date`, `weight`) VALUES " + "('%s', '%d', '%s', '%d', '%d', '%s', '%s', '%"PRId64"', '%d', '%d', '%d', '%d', '%d')", + rodex_db, sender_name, msg->sender_id, receiver_name, msg->receiver_id, msg->receiver_accountid, + title, body, msg->zeny, msg->type, msg->is_read == true ? 1 : 0, msg->send_date, msg->expire_date, msg->weight)) { + Sql_ShowDebug(inter->sql_handle); + return 0; + } + + msg->id = (int64)SQL->LastInsertId(inter->sql_handle); + + for (i = 0; i < RODEX_MAX_ITEM; ++i) { + // Should we use statement here? [KIRIEZ] + struct item *it = &msg->items[i].item; + if (it->nameid == 0) + continue; + + if (SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` (`mail_id`, `nameid`, `amount`, `equip`, `identify`," + "`refine`, `attribute`, `card0`, `card1`, `card2`, `card3`, `opt_idx0`, `opt_val0`, `opt_idx1`, `opt_val1`, `opt_idx2`," + "`opt_val2`, `opt_idx3`, `opt_val3`, `opt_idx4`, `opt_val4`,`expire_time`, `bound`, `unique_id`) VALUES " + "('%"PRId64"', '%d', '%d', '%u', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%u', '%u', '%"PRIu64"')", + rodex_item_db, msg->id, it->nameid, it->amount, it->equip, it->identify, it->refine, it->attribute, it->card[0], it->card[1], it->card[2], it->card[3], + it->option[0].index, it->option[0].value, it->option[1].index, it->option[1].value, it->option[2].index, it->option[2].value, it->option[3].index, + it->option[3].value, it->option[4].index, it->option[4].value, it->expire_time, it->bound, it->unique_id) + ) { + Sql_ShowDebug(inter->sql_handle); + continue; + } + } + + return msg->id; +} + +/*========================================== + * Inbox Request + *------------------------------------------*/ +void mapif_rodex_sendinbox(int fd, int char_id, int8 opentype, int8 flag, int count, struct rodex_maillist *mails) +{ + int per_packet = (UINT16_MAX - 15) / sizeof(struct rodex_message); + int sent = 0; + nullpo_retv(mails); + Assert_retv(char_id > 0); + Assert_retv(count >= 0); + + do { + int i = 15, j, size, limit; + bool is_last = true; + + if (count <= per_packet) { + size = count * sizeof(struct rodex_message) + 15; + limit = count; + is_last = true; + } else { + int to_send = count - sent; + limit = min(to_send, per_packet); + if (limit != to_send) { + is_last = false; + } + size = limit * sizeof(struct rodex_message) + 15; + } + + WFIFOHEAD(fd, size); + WFIFOW(fd, 0) = 0x3895; + WFIFOW(fd, 2) = size; + WFIFOL(fd, 4) = char_id; + WFIFOB(fd, 8) = opentype; + WFIFOB(fd, 9) = flag; + WFIFOB(fd, 10) = is_last; + WFIFOL(fd, 11) = count; + for (j = 0; j < limit; ++j, ++sent, i += sizeof(struct rodex_message)) { + memcpy(WFIFOP(fd, i), &VECTOR_INDEX(*mails, sent), sizeof(struct rodex_message)); + } + WFIFOSET(fd, size); + } while (sent < count); +} + +void mapif_parse_rodex_requestinbox(int fd) +{ + int count; + int char_id = RFIFOL(fd,2); + int account_id = RFIFOL(fd, 6); + int8 flag = RFIFOB(fd, 10); + int8 opentype = RFIFOB(fd, 11); + int64 mail_id = RFIFOQ(fd, 12); + struct rodex_maillist mails = { 0 }; + + VECTOR_INIT(mails); + if (flag == 0) + count = inter_rodex->fromsql(char_id, account_id, opentype, 0, &mails); + else + count = inter_rodex->fromsql(char_id, account_id, opentype, mail_id, &mails); + mapif->rodex_sendinbox(fd, char_id, opentype, flag, count, &mails); + VECTOR_CLEAR(mails); +} + +/*========================================== +* Checks if there are new mails +*------------------------------------------*/ +void mapif_rodex_sendhasnew(int fd, int char_id, bool has_new) +{ + Assert_retv(char_id > 0); + + WFIFOHEAD(fd, 7); + WFIFOW(fd, 0) = 0x3896; + WFIFOL(fd, 2) = char_id; + WFIFOB(fd, 6) = has_new; + WFIFOSET(fd, 7); +} + +void mapif_parse_rodex_checkhasnew(int fd) +{ + int char_id = RFIFOL(fd, 2); + int account_id = RFIFOL(fd, 6); + bool has_new; + + Assert_retv(account_id >= START_ACCOUNT_NUM && account_id <= END_ACCOUNT_NUM); + Assert_retv(char_id >= START_CHAR_NUM); + + has_new = inter_rodex->hasnew(char_id, account_id); + mapif->rodex_sendhasnew(fd, char_id, has_new); +} + +/*========================================== + * Update/Delete mail + *------------------------------------------*/ +void mapif_parse_rodex_updatemail(int fd) +{ + int64 mail_id = RFIFOL(fd, 2); + int8 flag = RFIFOB(fd, 10); + + Assert_retv(mail_id > 0); + Assert_retv(flag >= 0 && flag <= 3); + + switch (flag) { + case 0: // Read + if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `is_read` = 1 WHERE `mail_id` = '%"PRId64"'", rodex_db, mail_id)) + Sql_ShowDebug(inter->sql_handle); + break; + + case 1: // Get Zeny + if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `zeny` = 0, `type` = `type` & (~2) WHERE `mail_id` = '%"PRId64"'", rodex_db, mail_id)) + Sql_ShowDebug(inter->sql_handle); + break; + + case 2: // Get Items + if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `mail_id` = '%"PRId64"'", rodex_item_db, mail_id)) + Sql_ShowDebug(inter->sql_handle); + if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `zeny` = 0, `type` = `type` & (~4) WHERE `mail_id` = '%"PRId64"'", rodex_db, mail_id)) + Sql_ShowDebug(inter->sql_handle); + break; + + case 3: // Delete Mail + if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `mail_id` = '%"PRId64"'", rodex_db, mail_id)) + Sql_ShowDebug(inter->sql_handle); + if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `mail_id` = '%"PRId64"'", rodex_item_db, mail_id)) + Sql_ShowDebug(inter->sql_handle); + break; + } +} + +/*========================================== + * Send Mail + *------------------------------------------*/ +void mapif_rodex_send(int fd, int sender_id, int receiver_id, int receiver_accountid, bool result) +{ + Assert_retv(sender_id >= 0); + Assert_retv(receiver_id + receiver_accountid > 0); + + WFIFOHEAD(fd,15); + WFIFOW(fd,0) = 0x3897; + WFIFOL(fd,2) = sender_id; + WFIFOL(fd,6) = receiver_id; + WFIFOL(fd,10) = receiver_accountid; + WFIFOB(fd,14) = result; + WFIFOSET(fd,15); +} + +void mapif_parse_rodex_send(int fd) +{ + struct rodex_message msg = { 0 }; + + if (RFIFOW(fd,2) != 4 + sizeof(struct rodex_message)) + return; + + memcpy(&msg, RFIFOP(fd,4), sizeof(struct rodex_message)); + if (msg.receiver_id > 0 || msg.receiver_accountid > 0) + msg.id = inter_rodex->savemessage(&msg); + + mapif->rodex_send(fd, msg.sender_id, msg.receiver_id, msg.receiver_accountid, msg.id > 0 ? true : false); +} + +/*------------------------------------------ + * Check Player + *------------------------------------------*/ +void mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name) +{ + nullpo_retv(name); + Assert_retv(reqchar_id > 0); + Assert_retv(target_char_id >= 0); + + WFIFOHEAD(fd, 16 + NAME_LENGTH); + WFIFOW(fd, 0) = 0x3898; + WFIFOL(fd, 2) = reqchar_id; + WFIFOL(fd, 6) = target_char_id; + WFIFOW(fd, 10) = target_class; + WFIFOL(fd, 12) = target_level; + safestrncpy(WFIFOP(fd, 16), name, NAME_LENGTH); + WFIFOSET(fd, 16 + NAME_LENGTH); +} + +void mapif_parse_rodex_checkname(int fd) +{ + int reqchar_id = RFIFOL(fd, 2); + char name[NAME_LENGTH]; + int target_char_id, target_level; + short target_class; + + safestrncpy(name, RFIFOP(fd, 6), NAME_LENGTH); + + if (inter_rodex->checkname(name, &target_char_id, &target_class, &target_level) == true) + mapif->rodex_checkname(fd, reqchar_id, target_char_id, target_class, target_level, name); + else + mapif->rodex_checkname(fd, reqchar_id, 0, 0, 0, name); +} + +/*========================================== + * Packets From Map Server + *------------------------------------------*/ +int inter_rodex_parse_frommap(int fd) +{ + switch(RFIFOW(fd,0)) + { + case 0x3095: mapif->parse_rodex_requestinbox(fd); break; + case 0x3096: mapif->parse_rodex_checkhasnew(fd); break; + case 0x3097: mapif->parse_rodex_updatemail(fd); break; + case 0x3098: mapif->parse_rodex_send(fd); break; + case 0x3099: mapif->parse_rodex_checkname(fd); break; + default: + return 0; + } + return 1; +} + +int inter_rodex_sql_init(void) +{ + return 1; +} + +void inter_rodex_sql_final(void) +{ + return; +} + +void inter_rodex_defaults(void) +{ + inter_rodex = &inter_rodex_s; + + inter_rodex->savemessage = inter_rodex_savemessage; + inter_rodex->parse_frommap = inter_rodex_parse_frommap; + inter_rodex->sql_init = inter_rodex_sql_init; + inter_rodex->sql_final = inter_rodex_sql_final; + inter_rodex->fromsql = inter_rodex_fromsql; + inter_rodex->hasnew = inter_rodex_hasnew; + inter_rodex->checkname = inter_rodex_checkname; +} diff --git a/src/char/int_rodex.h b/src/char/int_rodex.h new file mode 100644 index 000000000..801ebcb89 --- /dev/null +++ b/src/char/int_rodex.h @@ -0,0 +1,47 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2017 Hercules Dev Team + * + * Hercules is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef CHAR_INT_RODEX_H +#define CHAR_INT_RODEX_H + +#include "common/mmo.h" +#include "common/db.h" + +struct item; + +/** + * inter_rodex interface + **/ +struct inter_rodex_interface { + int (*sql_init) (void); + void (*sql_final) (void); + int (*parse_frommap) (int fd); + int (*fromsql) (int char_id, int account_id, int8 opentype, int64 mail_id, struct rodex_maillist *mails); + bool (*hasnew) (int char_id, int account_id); + bool (*checkname) (const char *name, int *target_char_id, short *target_class, int *target_level); + int64 (*savemessage) (struct rodex_message* msg); +}; + +#ifdef HERCULES_CORE +void inter_rodex_defaults(void); +#endif // HERCULES_CORE + +HPShared struct inter_rodex_interface *inter_rodex; + +#endif /* CHAR_INT_RODEX_H */ diff --git a/src/char/inter.c b/src/char/inter.c index cfbc0fd4d..557ee5313 100644 --- a/src/char/inter.c +++ b/src/char/inter.c @@ -33,6 +33,7 @@ #include "char/int_party.h" #include "char/int_pet.h" #include "char/int_quest.h" +#include "char/int_rodex.h" #include "char/int_storage.h" #include "char/mapif.h" #include "common/cbasetypes.h" @@ -76,7 +77,7 @@ int inter_recv_packet_length[] = { 6,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3060- Quest system [Kevin] [Inkfish] -1,10, 6,-1, 0, 0, 0, 0, 0, 0, 0, 0, -1,10, 6,-1, // 3070- Mercenary packets [Zephyrus], Elemental packets [pakpil] 48,14,-1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3080- - -1,10,-1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3090- Homunculus packets [albator] + -1,10,-1, 6, 0, 20,10,11, -1,6 + NAME_LENGTH, 0, 0, 0, 0, 0, 0, // 3090- Homunculus packets [albator], RoDEX packets }; struct WisData { @@ -974,6 +975,7 @@ int inter_init_sql(const char *file) inter_elemental->sql_init(); inter_mail->sql_init(); inter_auction->sql_init(); + inter_rodex->sql_init(); geoip->init(); inter->msg_config_read("conf/messages.conf", false); @@ -994,6 +996,7 @@ void inter_final(void) inter_elemental->sql_final(); inter_mail->sql_final(); inter_auction->sql_final(); + inter_rodex->sql_final(); geoip->final(true); inter->do_final_msg(); @@ -1416,6 +1419,7 @@ int inter_parse_frommap(int fd) || inter_mail->parse_frommap(fd) || inter_auction->parse_frommap(fd) || inter_quest->parse_frommap(fd) + || inter_rodex->parse_frommap(fd) ) break; else diff --git a/src/char/mapif.c b/src/char/mapif.c index 5fff96ba8..9fccd691b 100644 --- a/src/char/mapif.c +++ b/src/char/mapif.c @@ -26,6 +26,7 @@ #include "char/int_auction.h" #include "char/int_guild.h" #include "char/int_homun.h" +#include "char/int_rodex.h" #include "common/cbasetypes.h" #include "common/mmo.h" #include "common/random.h" @@ -182,6 +183,16 @@ void mapif_quest_save_ack(int fd, int char_id, bool success); int mapif_parse_quest_save(int fd); void mapif_send_quests(int fd, int char_id, struct quest *tmp_questlog, int num_quests); int mapif_parse_quest_load(int fd); +/* RoDEX */ +int mapif_parse_rodex_requestinbox(int fd); +void mapif_rodex_sendinbox(int fd, int char_id, int8 opentype, int8 flag, int count, struct rodex_maillist *mails); +int mapif_parse_rodex_checkhasnew(int fd); +void mapif_rodex_sendhasnew(int fd, int char_id, bool has_new); +int mapif_parse_rodex_updatemail(int fd); +int mapif_parse_rodex_send(int fd); +void mapif_rodex_send(int fd, int sender_id, int receiver_id, int receiver_accountid, bool result); +int mapif_parse_rodex_checkname(int fd); +void mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name); int mapif_load_guild_storage(int fd,int account_id,int guild_id, char flag); int mapif_save_guild_storage_ack(int fd, int account_id, int guild_id, int fail); int mapif_parse_LoadGuildStorage(int fd); @@ -363,6 +374,16 @@ void mapif_defaults(void) { mapif->parse_quest_save = mapif_parse_quest_save; mapif->send_quests = mapif_send_quests; mapif->parse_quest_load = mapif_parse_quest_load; + /* RoDEX */ + mapif->parse_rodex_requestinbox = mapif_parse_rodex_requestinbox; + mapif->rodex_sendinbox = mapif_rodex_sendinbox; + mapif->parse_rodex_checkhasnew = mapif_parse_rodex_checkhasnew; + mapif->rodex_sendhasnew = mapif_rodex_sendhasnew; + mapif->parse_rodex_updatemail = mapif_parse_rodex_updatemail; + mapif->parse_rodex_send = mapif_parse_rodex_send; + mapif->rodex_send = mapif_rodex_send; + mapif->parse_rodex_checkname = mapif_parse_rodex_checkname; + mapif->rodex_checkname = mapif_rodex_checkname; mapif->load_guild_storage = mapif_load_guild_storage; mapif->save_guild_storage_ack = mapif_save_guild_storage_ack; mapif->parse_LoadGuildStorage = mapif_parse_LoadGuildStorage; diff --git a/src/char/mapif.h b/src/char/mapif.h index 07fbed6c6..a78940ba2 100644 --- a/src/char/mapif.h +++ b/src/char/mapif.h @@ -176,6 +176,15 @@ struct mapif_interface { int (*parse_quest_save) (int fd); void (*send_quests) (int fd, int char_id, struct quest *tmp_questlog, int num_quests); int (*parse_quest_load) (int fd); + int(*parse_rodex_requestinbox) (int fd); + void(*rodex_sendinbox) (int fd, int char_id, int8 opentype, int8 flag, int count, struct rodex_maillist *mails); + int(*parse_rodex_checkhasnew) (int fd); + void(*rodex_sendhasnew) (int fd, int char_id, bool has_new); + int(*parse_rodex_updatemail) (int fd); + int(*parse_rodex_send) (int fd); + void(*rodex_send) (int fd, int sender_id, int receiver_id, int receiver_accountid, bool result); + int(*parse_rodex_checkname) (int fd); + void(*rodex_checkname) (int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name); int (*load_guild_storage) (int fd, int account_id, int guild_id, char flag); int (*save_guild_storage_ack) (int fd, int account_id, int guild_id, int fail); int (*parse_LoadGuildStorage) (int fd); diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index 2a1c092b7..7480269e5 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -101,6 +101,11 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { #else #define CHAR_INT_QUEST_H #endif // CHAR_INT_QUEST_H + #ifdef CHAR_INT_RODEX_H + { "inter_rodex_interface", sizeof(struct inter_rodex_interface), SERVER_TYPE_CHAR }, + #else + #define CHAR_INT_RODEX_H + #endif // CHAR_INT_RODEX_H #ifdef CHAR_INT_STORAGE_H { "inter_storage_interface", sizeof(struct inter_storage_interface), SERVER_TYPE_CHAR }, #else @@ -207,6 +212,8 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "party_member", sizeof(struct party_member), SERVER_TYPE_ALL }, { "point", sizeof(struct point), SERVER_TYPE_ALL }, { "quest", sizeof(struct quest), SERVER_TYPE_ALL }, + { "rodex_maillist", sizeof(struct rodex_maillist), SERVER_TYPE_ALL }, + { "rodex_message", sizeof(struct rodex_message), SERVER_TYPE_ALL }, { "s_elemental", sizeof(struct s_elemental), SERVER_TYPE_ALL }, { "s_friend", sizeof(struct s_friend), SERVER_TYPE_ALL }, { "s_homunculus", sizeof(struct s_homunculus), SERVER_TYPE_ALL }, @@ -545,6 +552,31 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "EQUIPSLOTINFO", sizeof(struct EQUIPSLOTINFO), SERVER_TYPE_MAP }, { "ItemOptions", sizeof(struct ItemOptions), SERVER_TYPE_MAP }, { "NORMALITEM_INFO", sizeof(struct NORMALITEM_INFO), SERVER_TYPE_MAP }, + { "PACKET_CZ_ADD_ITEM_TO_MAIL", sizeof(struct PACKET_CZ_ADD_ITEM_TO_MAIL), SERVER_TYPE_MAP }, + { "PACKET_CZ_CHECKNAME", sizeof(struct PACKET_CZ_CHECKNAME), SERVER_TYPE_MAP }, + { "PACKET_CZ_REQ_DELETE_MAIL", sizeof(struct PACKET_CZ_REQ_DELETE_MAIL), SERVER_TYPE_MAP }, + { "PACKET_CZ_REQ_ITEM_FROM_MAIL", sizeof(struct PACKET_CZ_REQ_ITEM_FROM_MAIL), SERVER_TYPE_MAP }, + { "PACKET_CZ_REQ_NEXT_MAIL_LIST", sizeof(struct PACKET_CZ_REQ_NEXT_MAIL_LIST), SERVER_TYPE_MAP }, + { "PACKET_CZ_REQ_OPEN_MAIL", sizeof(struct PACKET_CZ_REQ_OPEN_MAIL), SERVER_TYPE_MAP }, + { "PACKET_CZ_REQ_OPEN_WRITE_MAIL", sizeof(struct PACKET_CZ_REQ_OPEN_WRITE_MAIL), SERVER_TYPE_MAP }, + { "PACKET_CZ_REQ_READ_MAIL", sizeof(struct PACKET_CZ_REQ_READ_MAIL), SERVER_TYPE_MAP }, + { "PACKET_CZ_REQ_REFRESH_MAIL_LIST", sizeof(struct PACKET_CZ_REQ_REFRESH_MAIL_LIST), SERVER_TYPE_MAP }, + { "PACKET_CZ_REQ_REMOVE_ITEM_MAIL", sizeof(struct PACKET_CZ_REQ_REMOVE_ITEM_MAIL), SERVER_TYPE_MAP }, + { "PACKET_CZ_REQ_ZENY_FROM_MAIL", sizeof(struct PACKET_CZ_REQ_ZENY_FROM_MAIL), SERVER_TYPE_MAP }, + { "PACKET_CZ_SEND_MAIL", sizeof(struct PACKET_CZ_SEND_MAIL), SERVER_TYPE_MAP }, + { "PACKET_ZC_ACK_DELETE_MAIL", sizeof(struct PACKET_ZC_ACK_DELETE_MAIL), SERVER_TYPE_MAP }, + { "PACKET_ZC_ACK_ITEM_FROM_MAIL", sizeof(struct PACKET_ZC_ACK_ITEM_FROM_MAIL), SERVER_TYPE_MAP }, + { "PACKET_ZC_ACK_OPEN_WRITE_MAIL", sizeof(struct PACKET_ZC_ACK_OPEN_WRITE_MAIL), SERVER_TYPE_MAP }, + { "PACKET_ZC_ACK_REMOVE_ITEM_MAIL", sizeof(struct PACKET_ZC_ACK_REMOVE_ITEM_MAIL), SERVER_TYPE_MAP }, + { "PACKET_ZC_ACK_ZENY_FROM_MAIL", sizeof(struct PACKET_ZC_ACK_ZENY_FROM_MAIL), SERVER_TYPE_MAP }, + { "PACKET_ZC_ADD_ITEM_TO_MAIL", sizeof(struct PACKET_ZC_ADD_ITEM_TO_MAIL), SERVER_TYPE_MAP }, + { "PACKET_ZC_CHECKNAME", sizeof(struct PACKET_ZC_CHECKNAME), SERVER_TYPE_MAP }, + { "PACKET_ZC_MAIL_LIST", sizeof(struct PACKET_ZC_MAIL_LIST), SERVER_TYPE_MAP }, + { "PACKET_ZC_NOTIFY_UNREADMAIL", sizeof(struct PACKET_ZC_NOTIFY_UNREADMAIL), SERVER_TYPE_MAP }, + { "PACKET_ZC_READ_MAIL", sizeof(struct PACKET_ZC_READ_MAIL), SERVER_TYPE_MAP }, + { "PACKET_ZC_WRITE_MAIL_RESULT", sizeof(struct PACKET_ZC_WRITE_MAIL_RESULT), SERVER_TYPE_MAP }, + { "mail_item", sizeof(struct mail_item), SERVER_TYPE_MAP }, + { "maillistinfo", sizeof(struct maillistinfo), SERVER_TYPE_MAP }, { "packet_additem", sizeof(struct packet_additem), SERVER_TYPE_MAP }, { "packet_authok", sizeof(struct packet_authok), SERVER_TYPE_MAP }, { "packet_banking_check", sizeof(struct packet_banking_check), SERVER_TYPE_MAP }, @@ -672,6 +704,11 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { #else #define MAP_QUEST_H #endif // MAP_QUEST_H + #ifdef MAP_RODEX_H + { "rodex_interface", sizeof(struct rodex_interface), SERVER_TYPE_MAP }, + #else + #define MAP_RODEX_H + #endif // MAP_RODEX_H #ifdef MAP_SCRIPT_H { "Script_Config", sizeof(struct Script_Config), SERVER_TYPE_MAP }, { "casecheck_data", sizeof(struct casecheck_data), SERVER_TYPE_MAP }, diff --git a/src/common/HPMSymbols.inc.h b/src/common/HPMSymbols.inc.h index 30ec45405..5ee8a014b 100644 --- a/src/common/HPMSymbols.inc.h +++ b/src/common/HPMSymbols.inc.h @@ -125,6 +125,9 @@ struct inter_pet_interface *inter_pet; #ifdef CHAR_INT_QUEST_H /* inter_quest */ struct inter_quest_interface *inter_quest; #endif // CHAR_INT_QUEST_H +#ifdef CHAR_INT_RODEX_H /* inter_rodex */ +struct inter_rodex_interface *inter_rodex; +#endif // CHAR_INT_RODEX_H #ifdef CHAR_INT_STORAGE_H /* inter_storage */ struct inter_storage_interface *inter_storage; #endif // CHAR_INT_STORAGE_H @@ -218,6 +221,9 @@ struct quest_interface *quest; #ifdef COMMON_RANDOM_H /* rnd */ struct rnd_interface *rnd; #endif // COMMON_RANDOM_H +#ifdef MAP_RODEX_H /* rodex */ +struct rodex_interface *rodex; +#endif // MAP_RODEX_H #ifdef MAP_SCRIPT_H /* script */ struct script_interface *script; #endif // MAP_SCRIPT_H @@ -405,6 +411,10 @@ HPExport const char *HPM_shared_symbols(int server_type) if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_quest", inter_quest)) return "inter_quest"; #endif // CHAR_INT_QUEST_H +#ifdef CHAR_INT_RODEX_H /* inter_rodex */ + if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_rodex", inter_rodex)) + return "inter_rodex"; +#endif // CHAR_INT_RODEX_H #ifdef CHAR_INT_STORAGE_H /* inter_storage */ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_storage", inter_storage)) return "inter_storage"; @@ -529,6 +539,10 @@ HPExport const char *HPM_shared_symbols(int server_type) if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("rnd", rnd)) return "rnd"; #endif // COMMON_RANDOM_H +#ifdef MAP_RODEX_H /* rodex */ + if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("rodex", rodex)) + return "rodex"; +#endif // MAP_RODEX_H #ifdef MAP_SCRIPT_H /* script */ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("script", script)) return "script"; diff --git a/src/common/cbasetypes.h b/src/common/cbasetypes.h index 2c36c23bc..5be2d62e4 100644 --- a/src/common/cbasetypes.h +++ b/src/common/cbasetypes.h @@ -306,6 +306,13 @@ typedef uintptr_t uintptr; #define PRAGMA_GCC46(str) #endif // ! defined(__GNUC__) && (defined(__clang__) || GCC_VERSION >= 40600) +// Pragma macro only enabled on gcc >= 5 or clang - borrowed from Mana Plus +#if defined(__GNUC__) && (GCC_VERSION >= 50000) +#define PRAGMA_GCC5(str) _Pragma(#str) +#else // ! defined(__GNUC__) && (GCC_VERSION >= 50000) +#define PRAGMA_GCC5(str) +#endif // ! defined(__GNUC__) && (GCC_VERSION >= 50000) + // fallthrough attribute only enabled on gcc >= 7.0 #if defined(__GNUC__) && (GCC_VERSION >= 70000) #define FALLTHROUGH __attribute__ ((fallthrough)); diff --git a/src/common/mmo.h b/src/common/mmo.h index 276e0eb08..fe67d6efb 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -271,6 +271,13 @@ #endif STATIC_ASSERT(MAX_ITEM_OPTIONS <= 5, "This value is limited by the client and database layout and should only be increased if you know the consequences."); +// RoDEX +#define RODEX_TITLE_LENGTH (40 + 1) +#define RODEX_BODY_LENGTH (500 + 1) +#define RODEX_MAX_ITEM (5) +#define RODEX_EXPIRE (1 * 15 * 24 * 60 * 60) +#define RODEX_MAIL_PER_PAGE 7 + // The following system marks a different job ID system used by the map server, // which makes a lot more sense than the normal one. [Skotlex] // These marks the "level" of the job. @@ -586,7 +593,7 @@ struct mmo_charstatus { int mother; int child; - unsigned int base_exp,job_exp; + uint64 base_exp, job_exp; int zeny; int bank_vault; @@ -605,10 +612,14 @@ struct mmo_charstatus { int spear_faith, spear_calls; int sword_faith, sword_calls; - short weapon; // enum weapon_type - short shield; // view-id - short head_top,head_mid,head_bottom; - short robe; + struct { + short weapon; ///< Weapon view sprite id. + short shield; ///< Shield view sprite id. + short head_top; ///< Top headgear view sprite id. + short head_mid; ///< Middle headgear view sprite id. + short head_bottom; ///< Bottom headgear view sprite id. + short robe; ///< Robe view sprite id. + } look; char name[NAME_LENGTH]; int base_level, job_level; @@ -809,6 +820,46 @@ enum fame_list_type { RANKTYPE_PK = 3, //Not supported yet }; +struct rodex_message { + int64 id; + int sender_id; + char sender_name[NAME_LENGTH]; + int receiver_id; + int receiver_accountid; + char receiver_name[NAME_LENGTH]; + char title[RODEX_TITLE_LENGTH]; + char body[RODEX_BODY_LENGTH]; + struct { + struct item item; + int idx; + + } items[RODEX_MAX_ITEM]; + int64 zeny; + uint8 type; + int8 opentype; + bool is_read; + bool is_deleted; + int send_date; + int expire_date; + int weight; + int items_count; +}; + +VECTOR_STRUCT_DECL(rodex_maillist, struct rodex_message); + +enum rodex_opentype { + RODEX_OPENTYPE_MAIL = 0, + RODEX_OPENTYPE_ACCOUNT = 1, + RODEX_OPENTYPE_RETURN = 2, +}; + +enum MAIL_TYPE { + MAIL_TYPE_TEXT = 0x0, + MAIL_TYPE_ZENY = 0x2, + MAIL_TYPE_ITEM = 0x4, + MAIL_TYPE_NPC = 0x8 +}; + /** * Guild Basic Information * It is used to request changes via intif_guild_change_basicinfo in map-server and to @@ -1085,6 +1136,7 @@ enum ammo_type { A_KUNAI, //7 A_CANNONBALL, //8 A_THROWWEAPON, //9 + MAX_AMMO_TYPE }; enum e_char_server_type { diff --git a/src/common/utils.c b/src/common/utils.c index bcfc153e3..0d76a885e 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -359,6 +359,28 @@ unsigned int get_percentage(const unsigned int A, const unsigned int B) return (unsigned int)floor(result); } +/// calculates the value of A / B, in percent (rounded down) +uint64 get_percentage64(const uint64 A, const uint64 B) +{ + double result; + + if( B == 0 ) + { + ShowError("get_percentage(): division by zero! (A=%"PRIu64",B=%"PRIu64")\n", A, B); + return ~0U; + } + + result = 100 * ((double)A / (double)B); + + if( result > UINT_MAX ) + { + ShowError("get_percentage(): result percentage too high! (A=%"PRIu64",B=%"PRIu64",result=%g)\n", A, B, result); + return UINT_MAX; + } + + return (uint64)floor(result); +} + /** * Applies a percentual rate modifier. * diff --git a/src/common/utils.h b/src/common/utils.h index 9d3c323ef..e77c63cf2 100644 --- a/src/common/utils.h +++ b/src/common/utils.h @@ -44,6 +44,7 @@ bool exists(const char* filename); /// calculates the value of A / B, in percent (rounded down) unsigned int get_percentage(const unsigned int A, const unsigned int B); +uint64 get_percentage64(const uint64 A, const uint64 B); int64 apply_percentrate64(int64 value, int rate, int maxrate); int apply_percentrate(int value, int rate, int maxrate); diff --git a/src/map/HPMmap.c b/src/map/HPMmap.c index 84544976a..381dbf599 100644 --- a/src/map/HPMmap.c +++ b/src/map/HPMmap.c @@ -78,6 +78,7 @@ #include "map/pc_groups.h" #include "map/pet.h" #include "map/quest.h" +#include "map/rodex.h" #include "map/script.h" #include "map/searchstore.h" #include "map/skill.h" diff --git a/src/map/Makefile.in b/src/map/Makefile.in index c01826bfb..6147285e9 100644 --- a/src/map/Makefile.in +++ b/src/map/Makefile.in @@ -44,14 +44,14 @@ MAP_C = atcommand.c battle.c battleground.c buyingstore.c channel.c chat.c \ chrif.c clif.c date.c duel.c elemental.c guild.c homunculus.c HPMmap.c \ instance.c intif.c irc-bot.c itemdb.c log.c mail.c map.c mapreg_sql.c \ mercenary.c mob.c npc.c npc_chat.c party.c path.c pc.c pc_groups.c \ - pet.c quest.c script.c searchstore.c skill.c status.c storage.c \ + pet.c quest.c rodex.c script.c searchstore.c skill.c status.c storage.c \ trade.c unit.c vending.c MAP_OBJ = $(addprefix obj_sql/, $(patsubst %c,%o,$(MAP_C))) MAP_H = atcommand.h battle.h battleground.h buyingstore.h channel.h chat.h \ chrif.h clif.h date.h duel.h elemental.h guild.h homunculus.h HPMmap.h \ instance.h intif.h irc-bot.h itemdb.h log.h mail.h map.h mapreg.h \ - mercenary.h mob.h npc.h packets.h packets_struct.h party.h path.h \ - pc.h pc_groups.h pet.h quest.h script.h searchstore.h skill.h \ + mercenary.h mob.h npc.h packets.h packets_keys.h packets_struct.h party.h path.h \ + pc.h pc_groups.h pet.h quest.h rodex.h script.h searchstore.h skill.h \ status.h storage.h trade.h unit.h vending.h MAP_PH = diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 872c31330..7b2c0f8b2 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -1723,6 +1723,8 @@ ACMD(bodystyle) && (sd->job & MAPID_THIRDMASK) != MAPID_WARLOCK && (sd->job & MAPID_THIRDMASK) != MAPID_SHADOW_CHASER && (sd->job & MAPID_THIRDMASK) != MAPID_MINSTRELWANDERER + && (sd->job & MAPID_THIRDMASK) != MAPID_SORCERER + && (sd->job & MAPID_THIRDMASK) != MAPID_SURA ) { clif->message(fd, msg_fd(fd, 35)); // This job has no alternate body styles. return false; diff --git a/src/map/battle.c b/src/map/battle.c index 5c8ad95ef..9c6e67694 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -875,7 +875,7 @@ int64 battle_calc_masteryfix(struct block_list *src, struct block_list *target, } #else if( skill_id != ASC_BREAKER && weapon ) // Adv Katar Mastery is does not applies to ASC_BREAKER, but other masteries DO apply >_> - if( sd->status.weapon == W_KATAR && (skill2_lv=pc->checkskill(sd,ASC_KATAR)) > 0 ) + if (sd->weapontype == W_KATAR && (skill2_lv=pc->checkskill(sd,ASC_KATAR)) > 0) damage += damage * (10 + 2 * skill2_lv) / 100; #endif @@ -2032,7 +2032,7 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block skillratio += 100 + 100 * skill_lv + 100 * (skill_lv / 2); break; case RG_BACKSTAP: - if( sd && sd->status.weapon == W_BOW && battle_config.backstab_bow_penalty ) + if (sd != NULL && sd->weapontype == W_BOW && battle_config.backstab_bow_penalty) skillratio += (200 + 40 * skill_lv) / 2; else skillratio += 200 + 40 * skill_lv; @@ -2053,10 +2053,10 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block case CR_HOLYCROSS: { int ratio = 35 * skill_lv; - #ifdef RENEWAL - if(sd && sd->status.weapon == W_2HSPEAR) - ratio *= 2; - #endif +#ifdef RENEWAL + if (sd != NULL && sd->weapontype == W_2HSPEAR) + ratio *= 2; +#endif skillratio += ratio; break; } @@ -2714,7 +2714,7 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block skillratio += 2*sc->data[SC_TRUESIGHT]->val1; if( sc->data[SC_LKCONCENTRATION] ) skillratio += sc->data[SC_LKCONCENTRATION]->val2; - if( sd && sd->status.weapon == W_KATAR && (i=pc->checkskill(sd,ASC_KATAR)) > 0 ) + if (sd != NULL && sd->weapontype == W_KATAR && (i=pc->checkskill(sd,ASC_KATAR)) > 0) skillratio += skillratio * (10 + 2 * i) / 100; #endif if( (!skill_id || skill_id == KN_AUTOCOUNTER) && sc->data[SC_CRUSHSTRIKE] ){ @@ -3023,7 +3023,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam status_change_end(bl,SC_DEEP_SLEEP,INVALID_TIMER); } if( s_sd && t_sd && sc->data[SC_COLD] && flag&BF_WEAPON ){ - switch(s_sd->status.weapon){ + switch (s_sd->weapontype) { case W_MACE: case W_2HMACE: case W_1HAXE: @@ -3165,7 +3165,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if( (sce = sc->data[SC_STONEHARDSKIN]) && flag&(BF_SHORT|BF_WEAPON) && damage > 0 ) { sce->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX); if( src->type == BL_PC ) { - if (s_sd && s_sd->status.weapon != W_BOW) + if (s_sd != NULL && s_sd->weapontype != W_BOW) skill->break_equip(src, EQP_WEAPON, 3000, BCT_SELF); } else skill->break_equip(src, EQP_WEAPON, 3000, BCT_SELF); @@ -4575,8 +4575,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list if(!skill_id) { //Skills ALWAYS use ONLY your right-hand weapon (tested on Aegis 10.2) - if (sd && sd->weapontype1 == 0 && sd->weapontype2 > 0) - { + if (sd && sd->weapontype1 == W_FIST && sd->weapontype2 != W_FIST) { flag.rh=0; flag.lh=1; } @@ -4649,7 +4648,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list short cri = sstatus->cri; if (sd != NULL) { // if show_katar_crit_bonus is enabled, it already done the calculation in status.c - if (!battle_config.show_katar_crit_bonus && sd->status.weapon == W_KATAR) { + if (!battle_config.show_katar_crit_bonus && sd->weapontype == W_KATAR) { cri <<= 1; } @@ -4822,8 +4821,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list if ((temp = pc->checkskill(sd,BS_WEAPONRESEARCH)) > 0) hitrate += hitrate * ( 2 * temp ) / 100; - if( (sd->status.weapon == W_1HSWORD || sd->status.weapon == W_DAGGER) && - (temp = pc->checkskill(sd, GN_TRAINING_SWORD))>0 ) + if ((sd->weapontype == W_1HSWORD || sd->weapontype == W_DAGGER) && (temp = pc->checkskill(sd, GN_TRAINING_SWORD)) > 0) hitrate += 3 * temp; } @@ -4957,7 +4955,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list (!skill_id && sc && sc->data[SC_HLIF_CHANGE]?4:0)| (sc && sc->data[SC_WEAPONPERFECT]?8:0); if (flag.arrow && sd) - switch(sd->status.weapon) { + switch (sd->weapontype) { case W_BOW: case W_REVOLVER: case W_GATLING: @@ -5583,7 +5581,8 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list if(wd.damage < 1) wd.damage = 1; if(wd.damage2 < 1) wd.damage2 = 1; #endif - } else if(sd->status.weapon == W_KATAR && !skill_id) { //Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2) + } else if (sd->weapontype == W_KATAR && skill_id == 0) { + // Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2) temp = pc->checkskill(sd,TF_DOUBLE); wd.damage2 = wd.damage * (1 + (temp * 2))/100; @@ -5702,7 +5701,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list } //Reject Sword bugreport:4493 by Daegaladh if (wd.damage != 0 && tsc != NULL && tsc->data[SC_SWORDREJECT] != NULL - && (sd == NULL || sd->weapontype1 == W_DAGGER || sd->weapontype1 == W_1HSWORD || sd->status.weapon == W_2HSWORD) + && (sd == NULL || sd->weapontype1 == W_DAGGER || sd->weapontype1 == W_1HSWORD || sd->weapontype == W_2HSWORD) && rnd()%100 < tsc->data[SC_SWORDREJECT]->val2 ) { ATK_RATER(50); @@ -6100,9 +6099,9 @@ bool battle_check_arrows(struct map_session_data *sd) } //Ammo check by Ishizu-chan if (sd->inventory_data[index]) { - switch (sd->status.weapon) { + switch (sd->weapontype) { case W_BOW: - if (sd->inventory_data[index]->look != A_ARROW) { + if (sd->inventory_data[index]->subtype != A_ARROW) { clif->arrow_fail(sd, 0); return false; } @@ -6111,13 +6110,13 @@ bool battle_check_arrows(struct map_session_data *sd) case W_RIFLE: case W_GATLING: case W_SHOTGUN: - if (sd->inventory_data[index]->look != A_BULLET) { + if (sd->inventory_data[index]->subtype != A_BULLET) { clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0); return false; } break; case W_GRENADE: - if (sd->inventory_data[index]->look != A_GRENADE) { + if (sd->inventory_data[index]->subtype != A_GRENADE) { clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0); return false; } @@ -6161,7 +6160,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t if (sd) { - sd->state.arrow_atk = (sd->status.weapon == W_BOW || (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE)); + sd->state.arrow_atk = (sd->weapontype == W_BOW || (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE)); if (sd->state.arrow_atk) { if (battle->check_arrows(sd) == false) @@ -6187,7 +6186,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t return ATK_BLOCK; } } - if( tsc && tsc->data[SC_BLADESTOP_WAIT] && !is_boss(src) && (src->type == BL_PC || tsd == NULL || distance_bl(src, target) <= (tsd->status.weapon == W_FIST ? 1 : 2)) ) + if( tsc && tsc->data[SC_BLADESTOP_WAIT] && !is_boss(src) && (src->type == BL_PC || tsd == NULL || distance_bl(src, target) <= (tsd->weapontype == W_FIST ? 1 : 2)) ) { uint16 skill_lv = tsc->data[SC_BLADESTOP_WAIT]->val1; int duration = skill->get_time2(MO_BLADESTOP,skill_lv); @@ -7336,6 +7335,8 @@ static const struct battle_data { { "monster_eye_range_bonus", &battle_config.mob_eye_range_bonus, 0, 0, 10, }, { "prevent_logout_trigger", &battle_config.prevent_logout_trigger, 0xE, 0, 0xF, }, { "boarding_halter_speed", &battle_config.boarding_halter_speed, 25, 0, 100, }, + { "features/rodex", &battle_config.feature_rodex, 1, 0, 1, }, + { "features/rodex_use_accountmail", &battle_config.feature_rodex_use_accountmail, 0, 0, 1, }, }; #ifndef STATS_OPT_OUT /** diff --git a/src/map/battle.h b/src/map/battle.h index 44e454156..4a63887c4 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -556,6 +556,9 @@ struct Battle_Config { int prevent_logout_trigger; int boarding_halter_speed; + + int feature_rodex; + int feature_rodex_use_accountmail; }; /* criteria for battle_config.idletime_critera */ diff --git a/src/map/clif.c b/src/map/clif.c index bb4d53a99..de0f0573f 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -46,6 +46,7 @@ #include "map/pc.h" #include "map/pet.h" #include "map/quest.h" +#include "map/rodex.h" #include "map/script.h" #include "map/skill.h" #include "map/status.h" @@ -678,7 +679,7 @@ void clif_authok(struct map_session_data *sd) p.font = sd->status.font; #endif // Some clients smaller than 20160330 cant be tested [4144] -#if PACKETVER >= 20141016 && PACKETVER < 20160330 +#if PACKETVER >= 20141022 && PACKETVER < 20160330 p.sex = sd->status.sex; #endif clif->send(&p,sizeof(p),&sd->bl,SELF); @@ -887,8 +888,8 @@ void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, un } #if PACKETVER < 4 - *rhand = sd->status.weapon; - *lhand = sd->status.shield; + *rhand = sd->status.look.weapon; + *lhand = sd->status.look.shield; #else if (sd->equip_index[EQI_HAND_R] >= 0 && sd->inventory_data[sd->equip_index[EQI_HAND_R]]) @@ -1490,8 +1491,8 @@ bool clif_spawn(struct block_list *bl) } if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count > 0) clif->spiritcharm(sd); - if (sd->status.robe) - clif->refreshlook(bl,bl->id,LOOK_ROBE,sd->status.robe,AREA); + if (sd->status.look.robe != 0) + clif->refreshlook(bl, bl->id, LOOK_ROBE, sd->status.look.robe, AREA); } break; case BL_MOB: @@ -2413,9 +2414,9 @@ void clif_addcards2(unsigned short *cards, struct item* item) { int clif_add_item_options(struct ItemOptions *buf, const struct item *it) { int i = 0, j = 0, total_options = 0; - + nullpo_ret(buf); - + // Append the buffer with existing options first. for (i = 0; i < MAX_ITEM_OPTIONS; i++) { if (it->option[i].index) { @@ -2432,7 +2433,7 @@ void clif_addcards2(unsigned short *cards, struct item* item) { WBUFW(buf, j * 5 + 2) = 0; WBUFB(buf, j * 5 + 4) = 0; } - + return total_options; } @@ -2487,7 +2488,7 @@ void clif_additem(struct map_session_data *sd, int n, int amount, int fail) #endif #if PACKETVER >= 20160921 p.favorite = sd->status.inventory[n].favorite; - p.look = sd->inventory_data[n]->look; + p.look = sd->inventory_data[n]->view_sprite; #endif } p.result = (unsigned char)fail; @@ -2596,7 +2597,7 @@ void clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *it, struc #endif #if PACKETVER >= 20100629 - p->wItemSpriteNumber = (id->equip&EQP_VISIBLE) ? id->look : 0; + p->wItemSpriteNumber = (id->equip&EQP_VISIBLE) ? id->view_sprite : 0; #endif #if PACKETVER >= 20120925 @@ -3034,12 +3035,12 @@ void clif_updatestatus(struct map_session_data *sd,int type) break; case SP_BASEEXP: WFIFOW(fd,0)=0xb1; - WFIFOL(fd,4)=sd->status.base_exp; + WFIFOL(fd,4)=(uint32)(sd->status.base_exp); len = packet_len(0xb1); break; case SP_JOBEXP: WFIFOW(fd,0)=0xb1; - WFIFOL(fd,4)=sd->status.job_exp; + WFIFOL(fd,4)=(uint32)(sd->status.job_exp); len = packet_len(0xb1); break; case SP_NEXTBASEEXP: @@ -3182,7 +3183,9 @@ void clif_changelook(struct block_list *bl,int type,int val) struct status_change* sc; struct view_data* vd; enum send_target target = AREA; +#if PACKETVER >= 4 int val2 = 0; +#endif nullpo_retv(bl); sd = BL_CAST(BL_PC, bl); @@ -3526,7 +3529,7 @@ void clif_equipitemack(struct map_session_data *sd,int n,int pos,enum e_EQUIP_IT p.wearLocation = pos; #if PACKETVER >= 20100629 if (result == EIA_SUCCESS && sd->inventory_data[n]->equip&EQP_VISIBLE) - p.wItemSpriteNumber = sd->inventory_data[n]->look; + p.wItemSpriteNumber = sd->inventory_data[n]->view_sprite; else p.wItemSpriteNumber = 0; #endif @@ -4308,8 +4311,8 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl) { clif->specialeffect_single(bl,421,sd->fd); if (tsd->bg_id != 0 && map->list[tsd->bl.m].flag.battleground) clif->sendbgemblem_single(sd->fd,tsd); - if (tsd->status.robe) - clif->refreshlook(&sd->bl,bl->id,LOOK_ROBE,tsd->status.robe,SELF); + if (tsd->status.look.robe != 0) + clif->refreshlook(&sd->bl, bl->id, LOOK_ROBE, tsd->status.look.robe, SELF); } break; case BL_MER: // Devotion Effects @@ -6401,7 +6404,7 @@ void clif_vendinglist(struct map_session_data* sd, unsigned int id, struct s_ven // [4144] date 20160921 not confirmend. Can be bigger or smaller #if PACKETVER >= 20160921 WFIFOL(fd, offset + 47 + i * item_length) = pc->item_equippoint(sd, data); - WFIFOW(fd, offset + 51 + i * item_length) = data->look; + WFIFOW(fd, offset + 51 + i * item_length) = data->view_sprite; #endif } WFIFOSET(fd,WFIFOW(fd,2)); @@ -9448,8 +9451,8 @@ void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) { // Character Looks #if PACKETVER < 4 - clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon); - clif->changelook(&sd->bl,LOOK_SHIELD,sd->status.shield); + clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon); + clif->changelook(&sd->bl, LOOK_SHIELD, sd->status.look.shield); #else clif->changelook(&sd->bl,LOOK_WEAPON,0); #endif @@ -19226,6 +19229,495 @@ unsigned short clif_parse_cmd_optional( int fd, struct map_session_data *sd ) { } /*========================================== + * RoDEX + *------------------------------------------*/ + +void clif_parse_rodex_open_write_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_open_write_mail(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_REQ_OPEN_WRITE_MAIL *rPacket = RFIFOP(fd, 0); + int8 result = (rodex->isenabled() == true) ? 1 : 0; + + clif->rodex_open_write_mail(fd, rPacket->receiveName, result); +} + +void clif_rodex_open_write_mail(int fd, const char *receiver_name, int8 result) +{ +#if PACKETVER >= 20140416 + struct PACKET_ZC_ACK_OPEN_WRITE_MAIL *sPacket = NULL; + + nullpo_retv(receiver_name); + + WFIFOHEAD(fd, sizeof(*sPacket)); + sPacket = WFIFOP(fd, 0); + sPacket->PacketType = rodexopenwrite; + safestrncpy(sPacket->receiveName, receiver_name, NAME_LENGTH); + sPacket->result = result; + WFIFOSET(fd, sizeof(*sPacket)); +#endif +} + +void clif_parse_rodex_add_item(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_add_item(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_ADD_ITEM_TO_MAIL *rPacket = RFIFOP(fd, 0); + int16 idx = rPacket->index - 2; + + rodex->add_item(sd, idx, (int16)rPacket->count); +} + +void clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16 amount, int8 result) +{ +#if PACKETVER >= 20141119 + struct PACKET_ZC_ADD_ITEM_TO_MAIL *packet; + int fd, j; + + nullpo_retv(sd); + if (idx < 0 || idx >= MAX_INVENTORY) + result = RODEX_ADD_ITEM_FATAL_ERROR; + + fd = sd->fd; + + WFIFOHEAD(fd, sizeof(*packet)); + packet = WFIFOP(fd, 0); + memset(packet, 0x0, sizeof(*packet)); + packet->PacketType = rodexadditem; + packet->result = result; + + if (result != RODEX_ADD_ITEM_SUCCESS) { //No need to continue building the packet if it failed + WFIFOSET(fd, sizeof(*packet)); + return; + } + + packet->index = idx + 2; + packet->count = amount; + packet->ITID = sd->status.inventory[idx].nameid; + packet->type = itemtype(sd->inventory_data[idx]->type); + packet->IsIdentified = sd->status.inventory[idx].identify ? 1 : 0; + packet->IsDamaged = (sd->status.inventory[idx].attribute & ATTR_BROKEN) != 0 ? 1 : 0; + packet->refiningLevel = sd->status.inventory[idx].refine; + for (j = 0; j < ARRAYLENGTH(packet->slot.card); ++j) + packet->slot.card[j] = sd->status.inventory[idx].card[j]; + for (j = 0; j < MAX_ITEM_OPTIONS; ++j) { + packet->optionData[j].index = sd->status.inventory[idx].option[j].index; + packet->optionData[j].param = sd->status.inventory[idx].option[j].param; + packet->optionData[j].value = sd->status.inventory[idx].option[j].value; + } + packet->weight = sd->rodex.tmp.weight / 10; + WFIFOSET(fd, sizeof(*packet)); +#endif +} + +void clif_parse_rodex_remove_item(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_remove_item(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_REQ_REMOVE_ITEM_MAIL *rPacket = RFIFOP(fd, 0); + int16 idx = rPacket->index - 2; + + rodex->remove_item(sd, idx, (int16)rPacket->cnt); +} + +void clif_rodex_remove_item_result(struct map_session_data *sd, int16 idx, int16 amount) +{ +#if PACKETVER >= 20140521 + struct PACKET_ZC_ACK_REMOVE_ITEM_MAIL *packet; + int fd; + + nullpo_retv(sd); + Assert_retv(idx >= 0 && idx < MAX_INVENTORY); + + fd = sd->fd; + + WFIFOHEAD(fd, sizeof(*packet)); + packet = WFIFOP(fd, 0); + packet->PacketType = rodexremoveitem; + packet->result = (amount < 0) ? 0 : 1; + packet->cnt = (amount < 0) ? 0 : sd->status.inventory[idx].amount - amount; + packet->index = idx + 2; + packet->weight = sd->rodex.tmp.weight / 10; + WFIFOSET(fd, sizeof(*packet)); +#endif +} + +void clif_parse_rodex_checkname(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_checkname(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_CHECKNAME *rPacket = RFIFOP(fd, 0); + int char_id = 0, base_level = 0; + short class = 0; + char name[NAME_LENGTH]; + + safestrncpy(name, rPacket->Name, NAME_LENGTH); + + rodex->check_player(sd, name, &base_level, &char_id, &class); +} + +void clif_rodex_checkname_result(struct map_session_data *sd, int char_id, short class_, int base_level, const char *name) +{ +#if PACKETVER >= 20140521 + struct PACKET_ZC_CHECKNAME *sPacket; + int fd; + + nullpo_retv(sd); + nullpo_retv(name); + + fd = sd->fd; + WFIFOHEAD(fd, sizeof(*sPacket)); + sPacket = WFIFOP(fd, 0); + sPacket->PacketType = rodexcheckplayer; + if (char_id == 0) { + sPacket->CharId = 0; + WFIFOSET(fd, sizeof(*sPacket)); + return; + } + sPacket->CharId = char_id; + sPacket->Class = class_; + sPacket->BaseLevel = base_level; +#if PACKETVER >= 20160316 + strncpy(sPacket->Name, name, NAME_LENGTH); +#endif + WFIFOSET(fd, sizeof(*sPacket)); +#endif +} + +void clif_parse_rodex_send_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_send_mail(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_SEND_MAIL *rPacket = RFIFOP(fd, 0); + int8 result; + + if (rPacket->TextcontentsLength + rPacket->Titlelength > rPacket->PacketLength - sizeof(*rPacket)) { + result = RODEX_SEND_MAIL_FATAL_ERROR; + } else if (rPacket->TextcontentsLength > RODEX_BODY_LENGTH || rPacket->Titlelength > RODEX_TITLE_LENGTH) { + result = RODEX_SEND_MAIL_FATAL_ERROR; + } else { + char rname[NAME_LENGTH] = ""; + char title[RODEX_TITLE_LENGTH] = ""; + char body[RODEX_BODY_LENGTH] = ""; + + safestrncpy(rname, rPacket->receiveName, NAME_LENGTH); + safestrncpy(title, rPacket->string, RODEX_TITLE_LENGTH); + safestrncpy(body, &rPacket->string[rPacket->Titlelength], RODEX_BODY_LENGTH); + + result = rodex->send_mail(sd, rname, body, title, rPacket->zeny); + } + + if (result != RODEX_SEND_MAIL_SUCCESS) + clif->rodex_send_mail_result(fd, sd, result); + rodex->clean(sd, 1); +} + +void clif_rodex_send_mail_result(int fd, struct map_session_data *sd, int8 result) +{ +#if PACKETVER >= 20131230 + struct PACKET_ZC_WRITE_MAIL_RESULT *sPacket; + + WFIFOHEAD(fd, sizeof(*sPacket)); + sPacket = WFIFOP(fd, 0); + sPacket->PacketType = rodexwriteresult; + sPacket->result = result; + WFIFOSET(fd, sizeof(*sPacket)); +#endif +} + +void clif_rodex_send_maillist(int fd, struct map_session_data *sd, int8 open_type, int64 page_start) +{ +#if PACKETVER >= 20131218 + struct PACKET_ZC_MAIL_LIST *packet; + struct maillistinfo *inner; + int16 size = sizeof(*packet); + int8 count = 0; + + nullpo_retv(sd); + + WFIFOHEAD(fd, sizeof(*packet) + (sizeof(*inner) + RODEX_TITLE_LENGTH) * RODEX_MAIL_PER_PAGE); + packet = WFIFOP(fd, 0); + packet->PacketType = ((page_start == (VECTOR_LENGTH(sd->rodex.messages) - 1)) ? rodexmailList : rodexnextpage); + packet->opentype = open_type; + + inner = WFIFOP(fd, size); + + while (page_start >= 0 && count < RODEX_MAIL_PER_PAGE) { + struct rodex_message *msg = &VECTOR_INDEX(sd->rodex.messages, page_start); + --page_start; + + if (msg->is_deleted) + continue; + + inner->MailID = msg->id; + inner->Isread = msg->is_read == true ? 1 : 0; + inner->type = msg->type; + inner->regDateTime = (int)time(NULL) - msg->send_date; + inner->expireDateTime = msg->expire_date - (int)time(NULL); + if (open_type == RODEX_OPENTYPE_RETURN) { + inner->expireDateTime += RODEX_EXPIRE; + } + inner->Titlelength = (int16)strlen(msg->title) + 1; + if (open_type != RODEX_OPENTYPE_RETURN) { + strncpy(inner->SenderName, msg->sender_name, sizeof(msg->sender_name)); + } else { + strncpy(inner->SenderName, msg->receiver_name, sizeof(msg->receiver_name)); + } + strncpy(inner->title, msg->title, inner->Titlelength); + size += sizeof(*inner) + inner->Titlelength; + inner = WFIFOP(fd, size); + ++count; + } + + packet->PacketLength = size; + packet->cnt = count; + packet->IsEnd = page_start > 0 ? 0 : 1; + WFIFOSET(fd, size); +#endif +} + +void clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_type, int count) +{ +#if PACKETVER >= 20131218 + struct PACKET_ZC_MAIL_LIST *packet; + struct maillistinfo *inner; + int16 size = sizeof(*packet); + int i, j; + + nullpo_retv(sd); + + WFIFOHEAD(fd, sizeof(*packet) + (sizeof(*inner) + RODEX_TITLE_LENGTH) * RODEX_MAIL_PER_PAGE); + packet = WFIFOP(fd, 0); + packet->PacketType = rodexmailList; + packet->opentype = open_type; + + inner = WFIFOP(fd, size); + + i = VECTOR_LENGTH(sd->rodex.messages) - 1; + j = count; + while (i >= 0 && j > 0) { + struct rodex_message *msg = &VECTOR_INDEX(sd->rodex.messages, i); + --i; + + if (msg->is_deleted) + continue; + + inner->MailID = msg->id; + inner->Isread = msg->is_read == true ? 1 : 0; + inner->type = msg->type; + inner->regDateTime = (int)time(NULL) - msg->send_date; + inner->expireDateTime = msg->expire_date - (int)time(NULL); + if (open_type == RODEX_OPENTYPE_RETURN) { + inner->expireDateTime += RODEX_EXPIRE; + } + inner->Titlelength = (int16)strlen(msg->title) + 1; + if (open_type != RODEX_OPENTYPE_RETURN) { + strncpy(inner->SenderName, msg->sender_name, sizeof(msg->sender_name)); + } else { + strncpy(inner->SenderName, msg->receiver_name, sizeof(msg->receiver_name)); + } + strncpy(inner->title, msg->title, inner->Titlelength); + size += sizeof(*inner) + inner->Titlelength; + inner = WFIFOP(fd, size); + --j; + } + + packet->PacketLength = size; + packet->cnt = count; + packet->IsEnd = 1; + WFIFOSET(fd, size); +#endif +} + +void clif_parse_rodex_next_maillist(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_next_maillist(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_REQ_NEXT_MAIL_LIST *packet = RFIFOP(fd, 0); + + rodex->next_page(sd, packet->opentype, packet->Lower_MailID); +} + +void clif_parse_rodex_read_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_read_mail(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_REQ_READ_MAIL *rPacket = RFIFOP(fd, 0); + + rodex->read_mail(sd, rPacket->MailID); +} + +void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, struct rodex_message *msg) +{ +#if PACKETVER >= 20140115 + struct PACKET_ZC_READ_MAIL *sPacket; + struct mail_item *item; + int fd, i, body_len, size; + + nullpo_retv(sd); + nullpo_retv(msg); + + fd = sd->fd; + body_len = (int)strlen(msg->body) + 1; + size = sizeof(*sPacket); + + WFIFOHEAD(fd, sizeof(*sPacket) + body_len + (sizeof(*item) * RODEX_MAX_ITEM)); + sPacket = WFIFOP(fd, 0); + sPacket->PacketType = rodexread; + sPacket->opentype = opentype; + sPacket->MailID = msg->id; + sPacket->TextcontentsLength = body_len; + sPacket->zeny = msg->zeny; + sPacket->ItemCnt = msg->items_count; + strncpy(WFIFOP(fd, size), msg->body, body_len); + size += body_len; + for (i = 0; i < RODEX_MAX_ITEM; ++i) { + struct item *it = &msg->items[i].item; + int j, k; + + if (it->nameid == 0) { + continue; + } + + item = WFIFOP(fd, size); + memset(item, 0x0, sizeof(*item)); + item->ITID = it->nameid; + item->count = it->amount; + item->type = itemtype(itemdb->search(it->nameid)->type); + item->IsIdentified = it->identify ? 1 : 0; + item->IsDamaged = (it->attribute & ATTR_BROKEN) != 0 ? 1 : 0; + item->refiningLevel = it->refine; + for (k = 0; k < MAX_SLOTS; ++k) { + item->slot.card[k] = it->card[k]; + } + for (j = 0; j < MAX_ITEM_OPTIONS; ++j) { + item->optionData[j].index = it->option[j].index; + item->optionData[j].value = it->option[j].value; + } + + size += sizeof(*item); + } + sPacket->PacketLength = size; + WFIFOSET(fd, size); +#endif +} + +void clif_parse_rodex_delete_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_delete_mail(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_REQ_DELETE_MAIL *rPacket = RFIFOP(fd, 0); + + rodex->delete_mail(sd, rPacket->MailID); +} + +void clif_rodex_delete_mail(struct map_session_data *sd, int8 opentype, int64 mail_id) +{ +#if PACKETVER >= 20131218 + struct PACKET_ZC_ACK_DELETE_MAIL *sPacket; + int fd; + + nullpo_retv(sd); + + fd = sd->fd; + + WFIFOHEAD(fd, sizeof(*sPacket)); + sPacket = WFIFOP(fd, 0); + sPacket->PacketType = rodexdelete; + sPacket->opentype = opentype; + sPacket->MailID = mail_id; + WFIFOSET(fd, sizeof(*sPacket)); +#endif +} + +void clif_parse_rodex_request_zeny(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_request_zeny(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_REQ_ZENY_FROM_MAIL *rPacket = RFIFOP(fd, 0); + + rodex->get_zeny(sd, rPacket->opentype, rPacket->MailID); +} + +void clif_rodex_request_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result) +{ +#if PACKETVER >= 20140409 + struct PACKET_ZC_ACK_ZENY_FROM_MAIL *sPacket; + int fd; + + nullpo_retv(sd); + + fd = sd->fd; + + WFIFOHEAD(fd, sizeof(*sPacket)); + sPacket = WFIFOP(fd, 0); + sPacket->PacketType = rodexgetzeny; + sPacket->MailID = mail_id; + sPacket->opentype = opentype; + sPacket->result = result; + WFIFOSET(fd, sizeof(*sPacket)); +#endif +} + +void clif_parse_rodex_request_items(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_request_items(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_REQ_ITEM_FROM_MAIL *rPacket = RFIFOP(fd, 0); + + rodex->get_items(sd, rPacket->opentype, rPacket->MailID); +} + +void clif_rodex_request_items(struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result) +{ +#if PACKETVER >= 20140409 + struct PACKET_ZC_ACK_ITEM_FROM_MAIL *sPacket; + int fd; + + nullpo_retv(sd); + + fd = sd->fd; + + WFIFOHEAD(fd, sizeof(*sPacket)); + sPacket = WFIFOP(fd, 0); + sPacket->PacketType = rodexgetitem; + sPacket->MailID = mail_id; + sPacket->opentype = opentype; + sPacket->result = result; + WFIFOSET(fd, sizeof(*sPacket)); +#endif +} + +void clif_rodex_icon(int fd, bool show) +{ +// packet add date is 20140716, but from players reports it wrong. Using closer known correct version. +#if PACKETVER >= 20141112 + WFIFOHEAD(fd, 3); + WFIFOW(fd, 0) = rodexicon; + WFIFOB(fd, 2) = (show == true ? 1 : 0); + WFIFOSET(fd, 3); +#endif +} + +void clif_parse_rodex_refresh_maillist(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_refresh_maillist(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_REQ_REFRESH_MAIL_LIST *packet = RFIFOP(fd, 0); + rodex->refresh(sd, packet->opentype, packet->Upper_MailID); +} + +void clif_parse_rodex_open_mailbox(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_open_mailbox(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_REQ_OPEN_MAIL *packet = RFIFOP(fd, 0); + rodex->open(sd, packet->opentype); + rodex->clean(sd, 1); +} + +void clif_parse_rodex_close_mailbox(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_close_mailbox(int fd, struct map_session_data *sd) +{ + rodex->clean(sd, 0); + intif->rodex_checkhasnew(sd); +} + +void clif_parse_rodex_cancel_write_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +void clif_parse_rodex_cancel_write_mail(int fd, struct map_session_data *sd) +{ + rodex->clean(sd, 1); +} + +/*========================================== * Main client packet processing function *------------------------------------------*/ int clif_parse(int fd) { @@ -19436,9 +19928,10 @@ void packetdb_loaddb(void) { memset(packet_db,0,sizeof(packet_db)); #define packet(id, size, ...) packetdb_addpacket((id), (size), ##__VA_ARGS__, 0xFFFF) -#define packetKeys(a,b,c) do { clif->cryptKey[0] = (a); clif->cryptKey[1] = (b); clif->cryptKey[2] = (c); } while(0) #include "packets.h" /* load structure data */ #undef packet +#define packetKeys(a,b,c) do { clif->cryptKey[0] = (a); clif->cryptKey[1] = (b); clif->cryptKey[2] = (c); } while(0) +#include "packets_keys.h" #undef packetKeys } void clif_bc_ready(void) { @@ -20265,4 +20758,31 @@ void clif_defaults(void) { clif->dressroom_open = clif_dressroom_open; clif->pOneClick_ItemIdentify = clif_parse_OneClick_ItemIdentify; clif->get_bl_name = clif_get_bl_name; + /* RODEX */ + clif->pRodexOpenWriteMail = clif_parse_rodex_open_write_mail; + clif->rodex_open_write_mail = clif_rodex_open_write_mail; + clif->pRodexAddItem = clif_parse_rodex_add_item; + clif->rodex_add_item_result = clif_rodex_add_item_result; + clif->pRodexRemoveItem = clif_parse_rodex_remove_item; + clif->rodex_remove_item_result = clif_rodex_remove_item_result; + clif->pRodexSendMail = clif_parse_rodex_send_mail; + clif->rodex_send_mail_result = clif_rodex_send_mail_result; + clif->rodex_send_maillist = clif_rodex_send_maillist; + clif->rodex_send_refresh = clif_rodex_send_refresh; + clif->pRodexReadMail = clif_parse_rodex_read_mail; + clif->rodex_read_mail = clif_rodex_read_mail; + clif->pRodexNextMaillist = clif_parse_rodex_next_maillist; + clif->pRodexCloseMailbox = clif_parse_rodex_close_mailbox; + clif->pRodexCancelWriteMail = clif_parse_rodex_cancel_write_mail; + clif->pRodexOpenMailbox = clif_parse_rodex_open_mailbox; + clif->pRodexCheckName = clif_parse_rodex_checkname; + clif->rodex_checkname_result = clif_rodex_checkname_result; + clif->pRodexDeleteMail = clif_parse_rodex_delete_mail; + clif->rodex_delete_mail = clif_rodex_delete_mail; + clif->pRodexRefreshMaillist = clif_parse_rodex_refresh_maillist; + clif->pRodexRequestZeny = clif_parse_rodex_request_zeny; + clif->rodex_request_zeny = clif_rodex_request_zeny; + clif->pRodexRequestItems = clif_parse_rodex_request_items; + clif->rodex_request_items = clif_rodex_request_items; + clif->rodex_icon = clif_rodex_icon; } diff --git a/src/map/clif.h b/src/map/clif.h index ab51de223..73cb72128 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -1366,6 +1366,34 @@ struct clif_interface { void (*pSelectCart) (int fd, struct map_session_data *sd); const char *(*get_bl_name) (const struct block_list *bl); + + /* RoDEX */ + void (*pRodexOpenWriteMail) (int fd, struct map_session_data *sd); + void (*rodex_open_write_mail) (int fd, const char *receiver_name, int8 result); + void (*pRodexAddItem) (int fd, struct map_session_data *sd); + void (*rodex_add_item_result) (struct map_session_data *sd, int16 idx, int16 amount, int8 result); + void (*pRodexRemoveItem) (int fd, struct map_session_data *sd); + void (*rodex_remove_item_result) (struct map_session_data *sd, int16 idx, int16 amount); + void (*pRodexSendMail) (int fd, struct map_session_data *sd); + void (*rodex_send_mail_result) (int fd, struct map_session_data *sd, int8 result); + void (*rodex_send_maillist) (int fd, struct map_session_data *sd, int8 open_type, int64 page_start); + void (*rodex_send_refresh) (int fd, struct map_session_data *sd, int8 open_type, int count); + void (*pRodexReadMail) (int fd, struct map_session_data *sd); + void (*rodex_read_mail) (struct map_session_data *sd, int8 opentype, struct rodex_message *msg); + void (*pRodexNextMaillist) (int fd, struct map_session_data *sd); + void (*pRodexCloseMailbox) (int fd, struct map_session_data *sd); + void (*pRodexCancelWriteMail) (int fd, struct map_session_data *sd); + void (*pRodexOpenMailbox) (int fd, struct map_session_data *sd); + void (*pRodexCheckName) (int fd, struct map_session_data *sd); + void (*rodex_checkname_result) (struct map_session_data *sd, int char_id, short class_, int base_level, const char *name); + void (*pRodexDeleteMail) (int fd, struct map_session_data *sd); + void (*rodex_delete_mail) (struct map_session_data *sd, int8 opentype, int64 mail_id); + void (*pRodexRefreshMaillist) (int fd, struct map_session_data *sd); + void (*pRodexRequestZeny) (int fd, struct map_session_data *sd); + void (*rodex_request_zeny) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result); + void (*pRodexRequestItems) (int fd, struct map_session_data *sd); + void (*rodex_request_items) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result); + void (*rodex_icon) (int fd, bool show); }; #ifdef HERCULES_CORE diff --git a/src/map/date.c b/src/map/date.c index 20ab9fe95..b06ec18d6 100644 --- a/src/map/date.c +++ b/src/map/date.c @@ -84,6 +84,20 @@ int date_get_dayofweek(void) return lt->tm_wday; } +// Returns YYYYMMDD of now +int date_get_date(void) +{ + time_t t; + struct tm * lt; + t = time(NULL); + lt = localtime(&t); + + return + (lt->tm_year + 1900) * 10000 + + (lt->tm_mon + 1) * 100 + + (lt->tm_mday); +} + /*========================================== * Star gladiator related checks *------------------------------------------*/ diff --git a/src/map/date.h b/src/map/date.h index ac0a3a7fa..f4f119ade 100644 --- a/src/map/date.h +++ b/src/map/date.h @@ -32,6 +32,7 @@ int date_get_hour(void); int date_get_min(void); int date_get_sec(void); int date_get_dayofweek(void); +int date_get_date(void); bool is_day_of_sun(void); bool is_day_of_moon(void); diff --git a/src/map/guild.c b/src/map/guild.c index 838df3943..092e066c3 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -1823,7 +1823,7 @@ int guild_gm_change(int guild_id, int char_id) nullpo_ret(g); ARR_FIND(0, MAX_GUILD, i, g->member[i].char_id == char_id); - + if (i == MAX_GUILD ) { // Not part of the guild return 0; diff --git a/src/map/intif.c b/src/map/intif.c index 61d2e3633..1458fc710 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -38,6 +38,7 @@ #include "map/pc.h" #include "map/pet.h" #include "map/quest.h" +#include "map/rodex.h" #include "map/storage.h" #include "common/memmgr.h" #include "common/nullpo.h" @@ -2399,6 +2400,218 @@ void intif_parse_Itembound_ack(int fd) { gstor->lock = 0; //Unlock now that operation is completed #endif } + +/*========================================== +* RoDEX System +*==========================================*/ + +/*------------------------------------------ + * Mail List + *------------------------------------------*/ + +// Rodex Inbox Request +// char_id: char_id +// account_id: account_id (used by account mail) +// flag: 0 - Open/Refresh ; 1 = Next Page +int intif_rodex_requestinbox(int char_id, int account_id, int8 flag, int8 opentype, int64 mail_id) +{ + if (intif->CheckForCharServer()) + return 0; + + WFIFOHEAD(inter_fd, 20); + WFIFOW(inter_fd, 0) = 0x3095; + WFIFOL(inter_fd, 2) = char_id; + WFIFOL(inter_fd, 6) = account_id; + WFIFOL(inter_fd, 10) = flag; + WFIFOB(inter_fd, 11) = opentype; + WFIFOQ(inter_fd, 12) = mail_id; + WFIFOSET(inter_fd, 20); + + return 0; +} + +void intif_parse_RequestRodexOpenInbox(int fd) +{ + struct map_session_data *sd; + int8 opentype = RFIFOB(fd, 8); + int8 flag = RFIFOB(fd, 9); + int8 is_end = RFIFOB(fd, 10); + int count = RFIFOL(fd, 11); + int i, j; + + sd = map->charid2sd(RFIFOL(fd, 4)); + + if (sd == NULL) // user is not online anymore + return; + + sd->rodex.total = count; + if (RFIFOW(fd, 2) - 15 != sd->rodex.total * sizeof(struct rodex_message)) { + ShowError("intif_parse_RodexInboxOpenReceived: data size mismatch %d != %"PRIuS"\n", RFIFOW(fd, 2) - 15, sd->rodex.total * sizeof(struct rodex_message)); + return; + } + + if (flag == 0) + VECTOR_CLEAR(sd->rodex.messages); + + for (i = 0, j = 15; i < count; ++i, j += sizeof(struct rodex_message)) { + struct rodex_message msg = { 0 }; + VECTOR_ENSURE(sd->rodex.messages, 1, 1); + memcpy(&msg, RFIFOP(fd, j), sizeof(struct rodex_message)); + VECTOR_PUSH(sd->rodex.messages, msg); + } + + if (is_end == true) { + if (flag == 0) + clif->rodex_send_maillist(sd->fd, sd, opentype, VECTOR_LENGTH(sd->rodex.messages) - 1); + else + clif->rodex_send_refresh(sd->fd, sd, opentype, count); + } +} + +/*------------------------------------------ + * Notifications + *------------------------------------------*/ +int intif_rodex_hasnew(struct map_session_data *sd) +{ + nullpo_retr(0, sd); + + if (intif->CheckForCharServer()) + return 0; + + WFIFOHEAD(inter_fd, 10); + WFIFOW(inter_fd, 0) = 0x3096; + WFIFOL(inter_fd, 2) = sd->status.char_id; + WFIFOL(inter_fd, 6) = sd->status.account_id; + WFIFOSET(inter_fd, 10); + + return 0; +} + +void intif_parse_RodexNotifications(int fd) +{ + struct map_session_data *sd; + bool has_messages; + + sd = map->charid2sd(RFIFOL(fd, 2)); + has_messages = RFIFOB(fd, 6); + + if (sd == NULL) // user is not online anymore + return; + + clif->rodex_icon(sd->fd, has_messages); +} + +/*------------------------------------------ + * Update Mail + *------------------------------------------*/ + +/// Updates a mail +/// flag: +/// 0 - user Read +/// 1 - user got Zeny +/// 2 - user got Items +/// 3 - delete +int intif_rodex_updatemail(int64 mail_id, int8 flag) +{ + if (intif->CheckForCharServer()) + return 0; + + WFIFOHEAD(inter_fd, 11); + WFIFOW(inter_fd, 0) = 0x3097; + WFIFOQ(inter_fd, 2) = mail_id; + WFIFOB(inter_fd, 10) = flag; + WFIFOSET(inter_fd, 11); + + return 0; +} + +/*------------------------------------------ + * Send Mail + *------------------------------------------*/ +int intif_rodex_sendmail(struct rodex_message *msg) +{ + if (intif->CheckForCharServer()) + return 0; + + nullpo_retr(0, msg); + + WFIFOHEAD(inter_fd, 4 + sizeof(struct rodex_message)); + WFIFOW(inter_fd, 0) = 0x3098; + WFIFOW(inter_fd, 2) = 4 + sizeof(struct rodex_message); + memcpy(WFIFOP(inter_fd, 4), msg, sizeof(struct rodex_message)); + WFIFOSET(inter_fd, 4 + sizeof(struct rodex_message)); + + return 0; +} + +void intif_parse_RodexSendMail(int fd) +{ + struct map_session_data *ssd = NULL, *rsd = NULL; + int sender_id = RFIFOL(fd, 2); + int receiver_id = RFIFOL(fd, 6); + int receiver_accountid = RFIFOL(fd, 10); + + if (sender_id > 0) + ssd = map->charid2sd(sender_id); + + if (receiver_id > 0) + rsd = map->charid2sd(receiver_id); + else if (receiver_accountid > 0) + rsd = map->id2sd(receiver_accountid); + + rodex->send_mail_result(ssd, rsd, RFIFOL(fd, 14)); +} + +/*------------------------------------------ + * Check Player + *------------------------------------------*/ +int intif_rodex_checkname(struct map_session_data *sd, const char *name) +{ + if (intif->CheckForCharServer()) + return 0; + + nullpo_retr(0, sd); + nullpo_retr(0, name); + + WFIFOHEAD(inter_fd, 6 + NAME_LENGTH); + WFIFOW(inter_fd, 0) = 0x3099; + WFIFOL(inter_fd, 2) = sd->status.char_id; + safestrncpy(WFIFOP(inter_fd, 6), name, NAME_LENGTH); + WFIFOSET(inter_fd, 6 + NAME_LENGTH); + + return 0; +} + +void intif_parse_RodexCheckName(int fd) +{ + struct map_session_data *sd = NULL; + int reqchar_id = RFIFOL(fd, 2); + int target_char_id = RFIFOL(fd, 6); + short target_class = RFIFOW(fd, 10); + int target_level = RFIFOL(fd, 12); + char name[NAME_LENGTH]; + + safestrncpy(name, RFIFOP(inter_fd, 16), NAME_LENGTH); + + if (reqchar_id <= 0) + return; + + sd = map->charid2sd(reqchar_id); + + if (sd == NULL) // User is not online anymore + return; + + if (target_char_id == 0) { + clif->rodex_checkname_result(sd, 0, 0, 0, name); + return; + } + + sd->rodex.tmp.receiver_id = target_char_id; + safestrncpy(sd->rodex.tmp.receiver_name, name, NAME_LENGTH); + + clif->rodex_checkname_result(sd, target_char_id, target_class, target_level, name); +} + //----------------------------------------------------------------- // Communication from the inter server // Return a 0 (false) if there were any errors. @@ -2509,6 +2722,12 @@ int intif_parse(int fd) case 0x3891: intif->pRecvHomunculusData(fd); break; case 0x3892: intif->pSaveHomunculusOk(fd); break; case 0x3893: intif->pDeleteHomunculusOk(fd); break; + + // RoDEX + case 0x3895: intif->pRequestRodexOpenInbox(fd); break; + case 0x3896: intif->pRodexHasNew(fd); break; + case 0x3897: intif->pRodexSendMail(fd); break; + case 0x3898: intif->pRodexCheckName(fd); break; default: ShowError("intif_parse : unknown packet %d %x\n",fd,RFIFOW(fd,0)); return 0; @@ -2534,7 +2753,7 @@ void intif_defaults(void) { -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3860 Quests [Kevin] [Inkfish] -1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 3, 0, //0x3870 Mercenaries [Zephyrus] / Elemental [pakpil] 12,-1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3880 - -1,-1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3890 Homunculus [albator] + -1,-1, 7, 3, 0,-1, 7, 15,16 + NAME_LENGTH, 0, 0, 0, 0, 0, 0, 0, //0x3890 Homunculus [albator] / RoDEX [KirieZ] }; intif = &intif_s; @@ -2616,6 +2835,12 @@ void intif_defaults(void) { intif->elemental_request = intif_elemental_request; intif->elemental_delete = intif_elemental_delete; intif->elemental_save = intif_elemental_save; + // RoDEX + intif->rodex_requestinbox = intif_rodex_requestinbox; + intif->rodex_checkhasnew = intif_rodex_hasnew; + intif->rodex_updatemail = intif_rodex_updatemail; + intif->rodex_sendmail = intif_rodex_sendmail; + intif->rodex_checkname = intif_rodex_checkname; /* @accinfo */ intif->request_accinfo = intif_request_accinfo; /* */ @@ -2687,4 +2912,9 @@ void intif_defaults(void) { intif->pRecvHomunculusData = intif_parse_RecvHomunculusData; intif->pSaveHomunculusOk = intif_parse_SaveHomunculusOk; intif->pDeleteHomunculusOk = intif_parse_DeleteHomunculusOk; + /* RoDEX */ + intif->pRequestRodexOpenInbox = intif_parse_RequestRodexOpenInbox; + intif->pRodexHasNew = intif_parse_RodexNotifications; + intif->pRodexSendMail = intif_parse_RodexSendMail; + intif->pRodexCheckName = intif_parse_RodexCheckName; } diff --git a/src/map/intif.h b/src/map/intif.h index 3d6a52440..4bca5f167 100644 --- a/src/map/intif.h +++ b/src/map/intif.h @@ -37,6 +37,7 @@ struct s_elemental; struct s_homunculus; struct s_mercenary; struct s_pet; +struct rodex_message; /** * Defines @@ -131,6 +132,12 @@ struct intif_interface { int (*elemental_request) (int ele_id, int char_id); int (*elemental_delete) (int ele_id); int (*elemental_save) (struct s_elemental *ele); + // RoDEX + int(*rodex_requestinbox) (int char_id, int account_id, int8 flag, int8 opentype, int64 mail_id); + int(*rodex_checkhasnew) (struct map_session_data *sd); + int(*rodex_updatemail) (int64 mail_id, int8 flag); + int(*rodex_sendmail) (struct rodex_message *msg); + int(*rodex_checkname) (struct map_session_data *sd, const char *name); /* @accinfo */ void (*request_accinfo) (int u_fd, int aid, int group_lv, char* query); /* */ @@ -200,6 +207,11 @@ struct intif_interface { void (*pRecvHomunculusData) (int fd); void (*pSaveHomunculusOk) (int fd); void (*pDeleteHomunculusOk) (int fd); + /* RoDEX */ + void(*pRequestRodexOpenInbox) (int fd); + void(*pRodexHasNew) (int fd); + void(*pRodexSendMail) (int fd); + void(*pRodexCheckName) (int fd); }; #ifdef HERCULES_CORE diff --git a/src/map/itemdb.c b/src/map/itemdb.c index 2b0847e1a..7fedb19ae 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -1336,11 +1336,11 @@ void itemdb_read_options(void) if (!libconfig->load_file(&item_options_db, filepath)) return; - + #ifdef ENABLE_CASE_CHECK script->parser_current_file = filepath; #endif // ENABLE_CASE_CHECK - + if ((ito=libconfig->setting_get_member(item_options_db.root, "item_options_db")) == NULL) { ShowError("itemdb_read_options: '%s' could not be loaded.\n", filepath); libconfig->destroy(&item_options_db); @@ -1399,7 +1399,7 @@ void itemdb_read_options(void) ShowError("itemdb_read_options: Script code not found for entry %s (Id: %d) in '%s', skipping...\n", str, t_opt.index, filepath); continue; } - + /* Set Script */ t_opt.script = *str ? script->parse(str, filepath, t_opt.index, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL; @@ -1416,11 +1416,11 @@ void itemdb_read_options(void) count++; } - + #ifdef ENABLE_CASE_CHECK script->parser_current_file = NULL; #endif // ENABLE_CASE_CHECK - + libconfig->destroy(&item_options_db); VECTOR_CLEAR(duplicate_id); @@ -1638,9 +1638,9 @@ int itemdb_gendercheck(struct item_data *id) return 1; if (id->nameid == WEDDING_RING_F) //Bride Ring return 0; - if (id->look == W_MUSICAL && id->type == IT_WEAPON) //Musical instruments are always male-only + if (id->subtype == W_MUSICAL && id->type == IT_WEAPON) //Musical instruments are always male-only return 1; - if (id->look == W_WHIP && id->type == IT_WEAPON) //Whips are always female-only + if (id->subtype == W_WHIP && id->type == IT_WEAPON) //Whips are always female-only return 0; return (battle_config.ignore_items_gender) ? 2 : id->sex; @@ -1788,10 +1788,14 @@ int itemdb_validate_entry(struct item_data *entry, int n, const char *source) { memset(&entry->stack, '\0', sizeof(entry->stack)); } - if (entry->type == IT_WEAPON && (entry->look < 0 || entry->look >= MAX_SINGLE_WEAPON_TYPE)) { - ShowWarning("itemdb_validate_entry: Invalid View for weapon items. View value %d for item %d (%s) in '%s', defaulting to 1.\n", - entry->look, entry->nameid, entry->jname, source); - entry->look = 1; + if (entry->type == IT_WEAPON && (entry->subtype <= 0 || entry->subtype >= MAX_SINGLE_WEAPON_TYPE)) { + ShowWarning("itemdb_validate_entry: Invalid View for weapon items. View value %d for item %d (%s) in '%s', defaulting to W_DAGGER.\n", + entry->subtype, entry->nameid, entry->jname, source); + entry->subtype = W_DAGGER; + } else if (entry->type == IT_AMMO && (entry->subtype <= 0 || entry->subtype >= MAX_AMMO_TYPE)) { + ShowWarning("itemdb_validate_entry: Invalid View for ammunition items. View value %d for item %d (%s) in '%s', defaulting to A_ARROW.\n", + entry->subtype, entry->nameid, entry->jname, source); + entry->subtype = A_ARROW; } entry->wlv = cap_value(entry->wlv, REFINE_TYPE_ARMOR, REFINE_TYPE_MAX); @@ -1803,10 +1807,10 @@ int itemdb_validate_entry(struct item_data *entry, int n, const char *source) { if( entry->type != IT_ARMOR && entry->type != IT_WEAPON && !entry->flag.no_refine ) entry->flag.no_refine = 1; - + if (entry->type != IT_ARMOR && entry->type != IT_WEAPON && !entry->flag.no_options) entry->flag.no_options = 1; - + if (entry->flag.available != 1) { entry->flag.available = 1; entry->view_id = 0; @@ -1986,6 +1990,14 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char * else if( !inherit ) id.type = IT_ETC; + if (itemdb->lookup_const(it, "Subtype", &i32) && i32 >= 0) { + if (id.type == IT_WEAPON || id.type == IT_AMMO) + id.subtype = i32; + else + ShowWarning("itemdb_readdb_libconfig_sub: Field 'Subtype' is only allowed for IT_WEAPON or IT_AMMO (Item #%d: %s). Ignoring.\n", + id.nameid, id.name); + } + if( itemdb->lookup_const(it, "Buy", &i32) ) id.value_buy = i32; else if( !inherit ) @@ -2025,7 +2037,7 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char * itemdb->jobmask2mapid(id.class_base, UINT64_MAX); } - if( itemdb->lookup_const(it, "Upper", &i32) && i32 >= 0 ) + if (itemdb->lookup_const_mask(it, "Upper", &i32) && i32 >= 0) id.class_upper = (unsigned int)i32; else if( !inherit ) id.class_upper = ITEMUPPER_ALL; @@ -2035,7 +2047,7 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char * else if( !inherit ) id.sex = 2; - if( itemdb->lookup_const(it, "Loc", &i32) && i32 >= 0 ) + if (itemdb->lookup_const_mask(it, "Loc", &i32) && i32 >= 0) id.equip = i32; if( itemdb->lookup_const(it, "WeaponLv", &i32) && i32 >= 0 ) @@ -2054,12 +2066,27 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char * if( (t = libconfig->setting_get_member(it, "Refine")) ) id.flag.no_refine = libconfig->setting_get_bool(t) ? 0 : 1; - + if ((t = libconfig->setting_get_member(it, "DisableOptions"))) id.flag.no_options = libconfig->setting_get_bool(t) ? 1 : 0; - if( itemdb->lookup_const(it, "View", &i32) && i32 >= 0 ) - id.look = i32; + if (itemdb->lookup_const(it, "ViewSprite", &i32) && i32 >= 0) + id.view_sprite = i32; + + if (itemdb->lookup_const(it, "View", &i32) && i32 >= 0) { // TODO: Remove (Deprecated - 2016-09-04 [Haru]) + if ((id.type == IT_WEAPON || id.type == IT_AMMO) && id.subtype == 0) { + ShowWarning("itemdb_readdb_libconfig_sub: The 'View' field is deprecated. Please rename it to 'Subtype' (or 'ViewSprite'). (Item #%d: %s)\n", + id.nameid, id.name); + id.subtype = i32; + } else if ((id.type != IT_WEAPON && id.type != IT_AMMO) && id.view_sprite == 0) { + ShowWarning("itemdb_readdb_libconfig_sub: The 'View' field is deprecated. Please rename it to 'ViewSprite' (or 'Subtype'). (Item #%d: %s)\n", + id.nameid, id.name); + id.view_sprite = i32; + } else { + ShowWarning("itemdb_readdb_libconfig_sub: The 'View' field is deprecated. Please rename it to 'Subtype' or 'ViewSprite'. (Item #%d: %s)\n", + id.nameid, id.name); + } + } if( (t = libconfig->setting_get_member(it, "BindOnEquip")) ) id.flag.bindonequip = libconfig->setting_get_bool(t) ? 1 : 0; @@ -2197,21 +2224,76 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char * bool itemdb_lookup_const(const struct config_setting_t *it, const char *name, int *value) { + const char *str = NULL; + nullpo_retr(false, name); nullpo_retr(false, value); - if (libconfig->setting_lookup_int(it, name, value)) - { + + if (libconfig->setting_lookup_int(it, name, value)) { return true; } - else - { + + if (libconfig->setting_lookup_string(it, name, &str)) { + if (*str && script->get_constant(str, value)) + return true; + } + + return false; +} + +bool itemdb_lookup_const_mask(const struct config_setting_t *it, const char *name, int *value) +{ + const struct config_setting_t *t = NULL; + + nullpo_retr(false, it); + nullpo_retr(false, name); + nullpo_retr(false, value); + + if ((t = libconfig->setting_get_member(it, name)) == NULL) { + return false; + } + + if (config_setting_is_scalar(t)) { const char *str = NULL; - if (libconfig->setting_lookup_string(it, name, &str)) - { - if (*str && script->get_constant(str, value)) + + if (config_setting_is_number(t)) { + *value = libconfig->setting_get_int(t); + return true; + } + + if ((str = libconfig->setting_get_string(t)) != NULL) { + int i32 = -1; + if (script->get_constant(str, &i32) && i32 >= 0) { + *value = i32; return true; + } + } + + return false; + } + + if (config_setting_is_aggregate(t) && libconfig->setting_length(t) >= 1) { + const struct config_setting_t *elem = NULL; + int i = 0; + + *value = 0; + + while ((elem = libconfig->setting_get_elem(t, i++)) != NULL) { + const char *str = libconfig->setting_get_string(elem); + int i32 = -1; + + if (str == NULL) + return false; + + if (!script->get_constant(str, &i32) || i32 < 0) + return false; + + *value |= i32; } + + return true; } + return false; } @@ -2369,10 +2451,10 @@ int itemdb_final_sub(union DBKey key, struct DBData *data, va_list ap) int itemdb_options_final_sub(union DBKey key, struct DBData *data, va_list ap) { struct item_option *ito = DB->data2ptr(data); - + if (ito->script != NULL) script->free_code(ito->script); - + return 0; } @@ -2637,4 +2719,5 @@ void itemdb_defaults(void) { itemdb->id2combo = itemdb_id2combo; itemdb->is_item_usable = itemdb_is_item_usable; itemdb->lookup_const = itemdb_lookup_const; + itemdb->lookup_const_mask = itemdb_lookup_const_mask; } diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 35cd154cb..d2d3b6c73 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -337,7 +337,7 @@ enum item_class_upper { ITEMUPPER_UPPER = 0x02, ITEMUPPER_BABY = 0x04, ITEMUPPER_THIRD = 0x08, - ITEMUPPER_THURDUPPER = 0x10, + ITEMUPPER_THIRDUPPER = 0x10, ITEMUPPER_THIRDBABY = 0x20, ITEMUPPER_ALL = 0x3f, // Sum of all the above }; @@ -454,10 +454,10 @@ struct item_data { uint16 nameid; char name[ITEM_NAME_LENGTH],jname[ITEM_NAME_LENGTH]; - //Do not add stuff between value_buy and view_id (see how getiteminfo works) int value_buy; int value_sell; int type; + int subtype; int maxchance; //For logs, for external game info, for scripts: Max drop chance of this item (e.g. 0.01% , etc.. if it = 0, then monsters don't drop it, -1 denotes items sold in shops only) [Lupus] int sex; int equip; @@ -466,7 +466,7 @@ struct item_data { int def; int range; int slot; - int look; + int view_sprite; int elv; int wlv; int view_id; @@ -474,8 +474,6 @@ struct item_data { int elvmax;/* maximum level for this item */ int delay; -//Lupus: I rearranged order of these fields due to compatibility with ITEMINFO script command -// some script commands should be revised as well... uint64 class_base[3]; ///< Specifies if the base can wear this item (split in 3 indexes per type: 1-1, 2-1, 2-2) unsigned class_upper : 6; ///< Specifies if the upper-type can equip it (bitfield, 0x01: normal, 0x02: upper, 0x04: baby normal, 0x08: third normal, 0x10: third upper, 0x20: third baby) struct { @@ -524,7 +522,8 @@ struct item_data { #define itemdb_type(n) (itemdb->search(n)->type) #define itemdb_atk(n) (itemdb->search(n)->atk) #define itemdb_def(n) (itemdb->search(n)->def) -#define itemdb_look(n) (itemdb->search(n)->look) +#define itemdb_subtype(n) (itemdb->search(n)->subtype) +#define itemdb_sprite(n) (itemdb->search(n)->view_sprite) #define itemdb_weight(n) (itemdb->search(n)->weight) #define itemdb_equip(n) (itemdb->search(n)->equip) #define itemdb_usescript(n) (itemdb->search(n)->script) @@ -648,6 +647,7 @@ struct itemdb_interface { struct item_combo * (*id2combo) (unsigned short id); bool (*is_item_usable) (struct item_data *item); bool (*lookup_const) (const struct config_setting_t *it, const char *name, int *value); + bool (*lookup_const_mask) (const struct config_setting_t *it, const char *name, int *value); }; #ifdef HERCULES_CORE diff --git a/src/map/map.c b/src/map/map.c index 17156f631..f8aebcfa6 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -55,6 +55,7 @@ #include "map/skill.h" #include "map/status.h" #include "map/storage.h" +#include "map/rodex.h" #include "map/trade.h" #include "map/unit.h" #include "common/HPM.h" @@ -1915,6 +1916,7 @@ int map_quit(struct map_session_data *sd) { } npc->script_event(sd, NPCE_LOGOUT); + rodex->clean(sd, 0); //Unit_free handles clearing the player related data, //map->quit handles extra specific data which is related to quitting normally @@ -6012,6 +6014,7 @@ int do_final(void) { elemental->final(); map->list_final(); vending->final(); + rodex->final(); HPM_map_do_final(); @@ -6208,6 +6211,7 @@ void map_load_defaults(void) { path_defaults(); quest_defaults(); npc_chat_defaults(); + rodex_defaults(); } /** * --run-once handler @@ -6525,6 +6529,7 @@ int do_init(int argc, char *argv[]) bg->init(minimal); duel->init(minimal); vending->init(minimal); + rodex->init(minimal); if (map->scriptcheck) { bool failed = map->extra_scripts_count > 0 ? false : true; diff --git a/src/map/npc.c b/src/map/npc.c index 38996a0a3..6beff2b77 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -2617,7 +2617,7 @@ void npc_parsename(struct npc_data* nd, const char* name, const char* start, con do { ++i; - snprintf(newname, ARRAYLENGTH(newname), "%d_%d_%d_%d", i, nd->bl.m, nd->bl.x, nd->bl.y); + safesnprintf(newname, ARRAYLENGTH(newname), "%d_%d_%d_%d", i, nd->bl.m, nd->bl.x, nd->bl.y); } while( npc->name2id(newname) != NULL ); strcpy(this_mapname, (nd->bl.m == -1 ? "(not on a map)" : mapindex_id2name(map_id2index(nd->bl.m)))); diff --git a/src/map/packets.h b/src/map/packets.h index 0a774561d..afa986346 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -18,7 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -//Included directly by clif.h in packet_loaddb() +//Included directly by clif.c in packet_loaddb() #ifndef MAP_PACKETS_H #define MAP_PACKETS_H @@ -27,10 +27,6 @@ #define packet(a,b,...) #endif -#ifndef packetKeys - #define packetKeys(a,b,c) -#endif - /* * packet syntax * - packet(packet_id,length) @@ -2858,7 +2854,7 @@ packet(0x96e,-1,clif->ackmergeitems); // new packets packet(0x09e7,2); // ZC_NOTIFY_UNREAD_RODEX packet(0x09e8,18,clif->pDull/*,XXX*/); // CZ_OPEN_RODEXBOX - packet(0x09e9,2,clif->pDull/*,XXX*/); // CZ_CLOSE_RODEXBOX + packet(0x09e9,2,clif->pRodexCloseMailbox); // CZ_CLOSE_RODEXBOX packet(0x09ed,-1); // ZC_ACK_SEND_RODEX packet(0x09ee,-1,clif->pDull/*,XXX*/); // CZ_REQ_NEXT_RODEX // changed packet sizes @@ -2902,13 +2898,13 @@ packet(0x96e,-1,clif->ackmergeitems); // new packets packet(0x09ea,10,clif->pDull/*,XXX*/); // CZ_REQ_READ_RODEX packet(0x09eb,14); // ZC_ACK_READ_RODEX - packet(0x09ef,11,clif->pDull/*,XXX*/); // CZ_REQ_REFRESH_RODEX + packet(0x09ef,11,clif->pRodexRefreshMaillist); // CZ_REQ_REFRESH_RODEX packet(0x09f0,-1); // ZC_ACK_RODEX_LIST - packet(0x09f5,11,clif->pDull/*,XXX*/); // CZ_REQ_DELETE_RODEX + packet(0x09f5,11,clif->pRodexDeleteMail); // CZ_REQ_DELETE_RODEX packet(0x09f6,11); // ZC_ACK_DELETE_RODEX // changed packet sizes packet(0x09e8,10,clif->pDull/*,XXX*/); // CZ_OPEN_RODEXBOX - packet(0x09ee,11,clif->pDull/*,XXX*/); // CZ_REQ_NEXT_RODEX + packet(0x09ee,11,clif->pRodexNextMaillist); // CZ_REQ_NEXT_RODEX #endif // 2013-12-23cRagexe - Yommy @@ -2948,7 +2944,7 @@ packet(0x96e,-1,clif->ackmergeitems); #if PACKETVER >= 20131223 // new packets // changed packet sizes - packet(0x09ea,11,clif->pDull/*,XXX*/); // CZ_REQ_READ_RODEX + packet(0x09ea,11,clif->pRodexReadMail); // CZ_REQ_READ_RODEX packet(0x09eb,24); // ZC_ACK_READ_RODEX #endif @@ -2988,7 +2984,7 @@ packet(0x96e,-1,clif->ackmergeitems); // 2013-12-30aRagexe #if PACKETVER >= 20131230 // new packets - packet(0x09ec,-1,clif->pDull/*,XXX*/); // CZ_REQ_SEND_RODEX + packet(0x09ec,-1,clif->pRodexSendMail); // CZ_REQ_SEND_RODEX packet(0x09ed,3); // ZC_ACK_SEND_RODEX packet(0x09f7,75); // ZC_PROPERTY_HOMUN_2 // changed packet sizes @@ -2997,6 +2993,40 @@ packet(0x96e,-1,clif->ackmergeitems); // 2014 Packet Data +// 2014-01-08cRagexe +#if PACKETVER == 20140108 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0936,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2014-01-15eRagexe #if PACKETVER == 20140115 // shuffle packets @@ -3045,6 +3075,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x09eb,-1); // ZC_ACK_READ_RODEX #endif +// 2014-01-22aRagexe +#if PACKETVER == 20140122 +// shuffle packets + packet(0x0360,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0811,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0863,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0870,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0871,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0872,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x088c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0890,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0893,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0899,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x089d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x08a2,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08aa,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0917,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x091a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0925,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x092f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0940,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0941,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0942,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x094b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x094c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0950,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0952,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0955,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0957,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x095d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x095f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE +#endif + // 2014-01-22aRagexeRE #if PACKETVER >= 20140122 // new packets @@ -3057,6 +3121,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x09f9,143); // ZC_ADD_QUEST_EX #endif +// 2014-01-29aRagexe +#if PACKETVER == 20140129 +// shuffle packets + packet(0x0281,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0367,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0884,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0885,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0889,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0921,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0924,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x092c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x094d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0958,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0961,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2014-01-29bRagexeRE #if PACKETVER >= 20140129 // new packets @@ -3072,37 +3170,72 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // PACKETVER_RE #endif -// 2014-02-05bRagexe - Themon -#if PACKETVER >= 20140205 - packet(0x0369,7,clif->pActionRequest,2,6); - packet(0x083C,10,clif->pUseSkillToId,2,4,6); - packet(0x0437,5,clif->pWalkToXY,2); - packet(0x035F,6,clif->pTickSend,2); - packet(0x0202,5,clif->pChangeDir,2,4); - packet(0x07E4,6,clif->pTakeItem,2); - packet(0x0362,6,clif->pDropItem,2,4); - packet(0x07EC,8,clif->pMoveToKafra,2,4); - packet(0x0364,8,clif->pMoveFromKafra,2,4); - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); - packet(0x096A,6,clif->pGetCharNameRequest,2); - packet(0x0368,6,clif->pSolveCharName,2); - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); - packet(0x0360,6,clif->pReqClickBuyingStore,2); - packet(0x0817,2,clif->pReqCloseBuyingStore,0); - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); - packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); - packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); - packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18); - packet(0x0802,26,clif->pPartyInvite2,2); - packet(0x023B,26,clif->pFriendsListAdd,2); - packet(0x0361,5,clif->pHomMenu,2,4); - packet(0x0938,36,clif->pStoragePassword,0); - packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD - packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK +// 2014-02-05bRagexe +#if PACKETVER == 20140205 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0938,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2014-02-12aRagexe +#if PACKETVER == 20140212 +// shuffle packets + packet(0x02c4,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0369,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0438,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x086e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0874,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0877,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0878,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x087e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0888,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x088c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x089d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x089e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x08a0,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a1,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08a7,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08ac,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08ad,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0919,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x091b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0928,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0930,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0934,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0936,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x093d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0944,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0952,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0953,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0960,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE #endif // 2014-02-12aRagexeRE @@ -3110,7 +3243,41 @@ packet(0x96e,-1,clif->ackmergeitems); // new packets packet(0x0a02,4); // ZC_DRESSROOM_OPEN // changed packet sizes - packet(0x09e8,11,clif->pDull/*,XXX*/); // CZ_OPEN_RODEXBOX + packet(0x09e8,11,clif->pRodexOpenMailbox); // CZ_OPEN_RODEXBOX +#endif + +// 2014-02-19aRagexe +#if PACKETVER == 20140219 +// shuffle packets + packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0360,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0364,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0802,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0838,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x085c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x085d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x085f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0860,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0868,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x086f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x087c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0889,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0898,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x089f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a6,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08aa,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x08ac,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0921,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0927,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0939,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0949,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0953,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x095a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0961,6,clif->pTickSend,2); // CZ_REQUEST_TIME #endif // 2014-02-19aRagexeRE @@ -3125,6 +3292,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // PACKETVER_RE #endif +// 2014-02-26aRagexe +#if PACKETVER == 20140226 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0362,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0877,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0887,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0894,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0895,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x091a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0921,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0931,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0941,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0962,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2014-02-26aRagexeRE #if PACKETVER >= 20140226 // new packets @@ -3135,37 +3336,38 @@ packet(0x96e,-1,clif->ackmergeitems); // changed packet sizes #endif -// 2014-03-05bRagexe - Themon -#if PACKETVER >= 20140305 - packet(0x0369,7,clif->pActionRequest,2,6); - packet(0x083C,10,clif->pUseSkillToId,2,4,6); - packet(0x0437,5,clif->pWalkToXY,2); - packet(0x035F,6,clif->pTickSend,2); - packet(0x0815,5,clif->pChangeDir,2,4); - packet(0x0202,6,clif->pTakeItem,2); - packet(0x0362,6,clif->pDropItem,2,4); - packet(0x07EC,8,clif->pMoveToKafra,2,4); - packet(0x0364,8,clif->pMoveFromKafra,2,4); - packet(0x0436,10,clif->pUseSkillToPos,2,4,6,8); - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); - packet(0x096A,6,clif->pGetCharNameRequest,2); - packet(0x0368,6,clif->pSolveCharName,2); - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); - packet(0x0360,6,clif->pReqClickBuyingStore,2); - packet(0x0817,2,clif->pReqCloseBuyingStore,0); - packet(0x0361,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); - packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); - packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); - packet(0x0438,19,clif->pWantToConnection,2,6,10,14,18); - packet(0x0802,26,clif->pPartyInvite2,2); - packet(0x07E4,26,clif->pFriendsListAdd,2); - packet(0x0934,5,clif->pHomMenu,2,4); - packet(0x095e,36,clif->pStoragePassword,0); - packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD - packet(0x0878,4,clif->pDull); // CZ_GANGSI_RANK +// 2014-03-05aRagexe +#if PACKETVER == 20140305 +// shuffle packets + packet(0x0202,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x07e4,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0878,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0934,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x095e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif // 2014-03-05aRagexeRE @@ -3189,6 +3391,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x09f4,3); // ZC_ACK_ITEM_FROM_RODEX #endif +// 2014-03-12dRagexe +#if PACKETVER == 20140312 +// shuffle packets + packet(0x0202,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x023b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x085e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x086f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0889,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x088d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0891,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0894,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x089b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x089d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x089e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a6,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a9,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08ad,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x091b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x091c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x091e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x092a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0948,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x094a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x094b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x094c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0957,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x095d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x095e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE +#endif + // 2014-03-12bRagexeRE #if PACKETVER >= 20140312 // new packets @@ -3201,49 +3437,84 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a0d,-1); // ZC_INVENTORY_ITEMLIST_EQUIP_V6 #endif +// 2014-03-26aRagexe +#if PACKETVER == 20140326 +// shuffle packets + packet(0x0362,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0365,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x07ec,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x083c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x085b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0865,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0867,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0869,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x086b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x087c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x087e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x087f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0887,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0898,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08aa,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08ac,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x08ad,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0918,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0928,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x092a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x093d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0942,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0945,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0946,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0959,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x095a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x095c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0969,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL +#endif + // 2014-03-26cRagexeRE #if PACKETVER >= 20140326 // changed packet sizes - packet(0x09f1,11,clif->pDull/*,XXX*/); // CZ_REQ_ZENY_FROM_RODEX + packet(0x09f1,11,clif->pRodexRequestZeny); // CZ_REQ_ZENY_FROM_RODEX packet(0x09f2,4); // ZC_ACK_ZENY_FROM_RODEX - packet(0x09f3,11,clif->pDull/*,XXX*/); // CZ_REQ_ITEM_FROM_RODEX + packet(0x09f3,11,clif->pRodexRequestItems); // CZ_REQ_ITEM_FROM_RODEX packet(0x09f4,4); // ZC_ACK_ITEM_FROM_RODEX - packet(0x0a03,2,clif->pDull/*,XXX*/); // CZ_REQ_CANCEL_WRITE_RODEX + packet(0x0a03,2,clif->pRodexCancelWriteMail); // CZ_REQ_CANCEL_WRITE_RODEX packet(0x0a07,6); // ZC_ACK_REMOVE_RODEX_ITEM packet(0x0a08,7,clif->pDull/*,XXX*/); // CZ_REQ_OPEN_WRITE_RODEX #endif -// 2014-04-02gRagexe - Themon -#if PACKETVER >= 20140402 - packet(0x0946,7,clif->pActionRequest,2,6); - packet(0x0868,10,clif->pUseSkillToId,2,4,6); - packet(0x093F,5,clif->pWalkToXY,2); - packet(0x0950,6,clif->pTickSend,2); - packet(0x0360,5,clif->pChangeDir,2,4); - packet(0x0958,6,clif->pTakeItem,2); - packet(0x0882,6,clif->pDropItem,2,4); - packet(0x095C,8,clif->pMoveToKafra,2,4); - packet(0x085B,8,clif->pMoveFromKafra,2,4); - packet(0x0364,10,clif->pUseSkillToPos,2,4,6,8); - packet(0x092D,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); - packet(0x088A,6,clif->pGetCharNameRequest,2); - packet(0x07EC,6,clif->pSolveCharName,2); - packet(0x0965,12,clif->pSearchStoreInfoListItemClick,2,6,10); - packet(0x085D,2,clif->pSearchStoreInfoNextPage,0); - packet(0x0933,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); - packet(0x091F,-1,clif->pReqTradeBuyingStore,2,4,8,12); - packet(0x023B,6,clif->pReqClickBuyingStore,2); - packet(0x0867,2,clif->pReqCloseBuyingStore,0); - packet(0x0944,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); - packet(0x08AC,18,clif->pPartyBookingRegisterReq,2,4); - packet(0x0883,-1,clif->pItemListWindowSelected,2,4,8); - packet(0x0920,19,clif->pWantToConnection,2,6,10,14,18); - packet(0x0890,26,clif->pPartyInvite2,2); - packet(0x089A,26,clif->pFriendsListAdd,2); - packet(0x0896,5,clif->pHomMenu,2,4); - packet(0x0926,36,clif->pStoragePassword,0); - packet(0x088c,4,clif->pDull); // CZ_GANGSI_RANK - packet(0x094c,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD +// 2014-04-02fRagexe +#if PACKETVER == 20140402 +// shuffle packets + packet(0x023b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0360,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0364,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07ec,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x085b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x085d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0867,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0868,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0882,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0883,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x088c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0890,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0896,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x089a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08ac,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x091f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0920,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0926,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x092d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0933,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x093f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0944,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0946,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x094c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0950,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x095c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0965,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK #endif // 2014-04-02eRagexeRE @@ -3255,6 +3526,40 @@ packet(0x96e,-1,clif->ackmergeitems); // changed packet sizes #endif +// 2014-04-09aRagexe +#if PACKETVER == 20140409 +// shuffle packets + packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x085b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0868,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x086a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x086d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0873,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0875,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x087e,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0883,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0884,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x088a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0890,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0893,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0896,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a2,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08a6,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x08a7,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a9,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0918,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x091c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x092e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0942,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0947,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x094c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x095a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x095e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER +#endif + // 2014-04-09aRagexeRE #if PACKETVER >= 20140409 // changed packet sizes @@ -3262,50 +3567,85 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x09f4,12); // ZC_ACK_ITEM_FROM_RODEX #endif -// 2014-04-16aRagexe - Themon -#if PACKETVER >= 20140416 - packet(0x0369,7,clif->pActionRequest,2,6); - packet(0x083C,10,clif->pUseSkillToId,2,4,6); - packet(0x0437,5,clif->pWalkToXY,2); - packet(0x035F,6,clif->pTickSend,2); - packet(0x0202,5,clif->pChangeDir,2,4); - packet(0x07E4,6,clif->pTakeItem,2); - packet(0x0362,6,clif->pDropItem,2,4); - packet(0x07EC,8,clif->pMoveToKafra,2,4); - packet(0x0364,8,clif->pMoveFromKafra,2,4); - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); - packet(0x096A,6,clif->pGetCharNameRequest,2); - packet(0x0368,6,clif->pSolveCharName,2); - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); - packet(0x0360,6,clif->pReqClickBuyingStore,2); - packet(0x0817,2,clif->pReqCloseBuyingStore,0); - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); - packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); - packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); - packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18); - packet(0x0802,26,clif->pPartyInvite2,2); - packet(0x023B,26,clif->pFriendsListAdd,2); - packet(0x0361,5,clif->pHomMenu,2,4); - packet(0x095C,36,clif->pStoragePassword,0); - packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD - packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK +// 2014-04-16aRagexe +#if PACKETVER == 20140416 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x095c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif // 2014-04-16aRagexeRE #if PACKETVER >= 20140416 // new packets - packet(0x0a04,6,clif->pDull/*,XXX*/); // CZ_REQ_ADD_ITEM_RODEX + packet(0x0a04,6,clif->pRodexAddItem); // CZ_REQ_ADD_ITEM_RODEX packet(0x0a12,27); // ZC_ACK_OPEN_WRITE_RODEX - packet(0x0a13,2,clif->pDull/*,XXX*/); // CZ_CHECK_RECEIVE_CHARACTER_NAME + packet(0x0a13,2,clif->pRodexCheckName); // CZ_CHECK_RECEIVE_CHARACTER_NAME // changed packet sizes packet(0x0a05,48); // ZC_ACK_ADD_ITEM_RODEX - packet(0x0a06,6,clif->pDull/*,XXX*/); // CZ_REQ_REMOVE_RODEX_ITEM + packet(0x0a06,6,clif->pRodexRemoveItem); // CZ_REQ_REMOVE_RODEX_ITEM packet(0x0a07,7); // ZC_ACK_REMOVE_RODEX_ITEM - packet(0x0a08,26,clif->pDull/*,XXX*/); // CZ_REQ_OPEN_WRITE_RODEX + packet(0x0a08,26,clif->pRodexOpenWriteMail); // CZ_REQ_OPEN_WRITE_RODEX +#endif + +// 2014-04-23aRagexe +#if PACKETVER == 20140423 +// shuffle packets + packet(0x022d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0436,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0811,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x083c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x085a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x085b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0862,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0863,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0866,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x086b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x086f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0873,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0890,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0895,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0896,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0898,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x089b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x089d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x089f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08a8,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08ad,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x091a,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0920,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x094f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x095e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK #endif // 2014-04-23aRagexeRE @@ -3313,7 +3653,7 @@ packet(0x96e,-1,clif->ackmergeitems); // new packets packet(0x0a14,6); // ZC_CHECK_RECEIVE_CHARACTER_NAME // changed packet sizes - packet(0x0a13,26,clif->pDull/*,XXX*/); // CZ_CHECK_RECEIVE_CHARACTER_NAME + packet(0x0a13,26,clif->pRodexCheckName); // CZ_CHECK_RECEIVE_CHARACTER_NAME #endif // 2014-04-30aRagexeRE @@ -3324,12 +3664,114 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a17,6); // ZC_DYNAMICNPC_CREATE_RESULT #endif +// 2014-05-08aRagexe +#if PACKETVER == 20140508 +// shuffle packets + packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0281,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x02c4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x035f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0360,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0362,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0363,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0365,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0366,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0367,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0436,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0438,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x07e4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x07ec,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0811,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0815,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0817,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0835,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0838,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x083c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK +#endif + // 2014-05-08bRagexeRE #if PACKETVER >= 20140508 // changed packet sizes packet(0x0a15,12); // ZC_GOLDPCCAFE_POINT #endif +// 2014-05-14bRagexe +#if PACKETVER == 20140514 +// shuffle packets + packet(0x0437,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0817,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0865,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0867,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0868,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0876,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0877,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x087d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0885,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0886,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x088a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x088b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0895,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x089a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x089c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a5,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0918,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x091d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0921,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0925,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x092c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x092f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0958,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x095f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0962,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0965,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x096a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW +#endif + +// 2014-05-21bRagexe +#if PACKETVER == 20140521 +// shuffle packets + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0869,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x088b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x088d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x089c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08ac,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0968,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2014-05-21aRagexeRE #if PACKETVER >= 20140521 // changed packet sizes @@ -3337,6 +3779,74 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a14,10); // ZC_CHECK_RECEIVE_CHARACTER_NAME #endif +// 2014-05-28aRagexe +#if PACKETVER == 20140528 +// shuffle packets + packet(0x0202,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x085f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0862,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0872,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0875,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0877,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0879,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x087e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x088a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x088f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0894,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0896,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x089d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08a8,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x091d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0929,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0930,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0938,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x093a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x093f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x094a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x094b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x095f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0963,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0966,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE +#endif + +// 2014-06-05aRagexe +#if PACKETVER == 20140605 +// shuffle packets + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0369,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0921,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0931,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0940,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x094c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + /* Roulette System [Yommy/Hercules] */ // 2014-06-05aRagexe #if PACKETVER >= 20140605 @@ -3349,6 +3859,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a1d,14,clif->pDull/*,XXX*/); // CZ_REQ_CLOSE_ROULETTE #endif +// 2014-06-11cRagexe +#if PACKETVER == 20140611 +// shuffle packets + packet(0x0364,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0438,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x07e4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0838,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0864,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0867,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0878,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0891,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0893,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0894,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a1,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a2,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0924,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x094a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x094f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0950,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0951,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0952,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0957,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0958,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0963,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0965,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE +#endif + /* Roulette System [Yommy/Hercules] */ // 2014-06-11bRagexe / RE. moved by 4144 #if PACKETVER >= 20140611 @@ -3370,6 +3914,108 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a1d,2,clif->pRouletteClose,0); // CZ_REQ_CLOSE_ROULETTE #endif +// 2014-06-12aRagexe +#if PACKETVER == 20140612 +// shuffle packets + packet(0x0364,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0438,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x07e4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0838,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0864,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0867,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0878,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0891,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0893,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0894,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a1,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a2,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0924,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x094a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x094f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0950,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0951,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0952,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0957,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0958,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0963,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0965,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE +#endif + +// 2014-06-13aRagexe +#if PACKETVER == 20140613 +// shuffle packets + packet(0x0364,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0438,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x07e4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0838,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0864,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0867,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0878,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0891,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0893,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0894,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a1,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a2,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0924,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x094a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x094f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0950,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0951,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0952,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0957,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0958,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0963,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0965,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE +#endif + +// 2014-06-18aRagexe +#if PACKETVER == 20140618 +// shuffle packets + packet(0x085d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x085f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0860,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0861,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x086c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0878,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0884,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0885,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0886,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0890,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0892,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a6,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x08a7,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08ac,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0917,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x091f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0929,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0935,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0938,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0939,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x093b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0945,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0954,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0957,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x095d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x095e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0962,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0967,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER +#endif + // 2014-06-18cRagexeRE #if PACKETVER >= 20140618 // changed packet sizes @@ -3377,6 +4023,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a22,5); // ZC_RECV_ROULETTE_ITEM #endif +// 2014-06-25aRagexe +#if PACKETVER == 20140625 +// shuffle packets + packet(0x0202,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x023b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0815,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0817,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0835,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x085a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0861,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0875,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x087b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0885,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0886,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0888,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x088a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0897,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08a1,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x08a2,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x091a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0923,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0928,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0940,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0946,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0959,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0960,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0968,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0969,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2014-06-25aRagexeRE #if PACKETVER >= 20140625 // new packets @@ -3386,6 +4066,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a24,36); // ZC_ACH_UPDATE #endif +// 2014-07-02aRagexe +#if PACKETVER == 20140702 +// shuffle packets + packet(0x022d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0438,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x07e4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0835,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x086c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0887,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0892,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0895,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08a0,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08a2,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0925,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x092c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0933,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0940,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2014-07-02aRagexeRE #if PACKETVER >= 20140702 // new packets @@ -3393,12 +4107,114 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a2a,6,clif->pDull/*,XXX*/); // CZ_ACK_AU_BOT #endif +// 2014-07-09aRagexe +#if PACKETVER == 20140709 +// shuffle packets + packet(0x0364,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0860,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0866,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0869,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0875,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0877,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0879,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x087a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0887,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0888,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x088b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0894,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0897,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0898,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08ad,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x091a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0925,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x092f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0931,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0934,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0939,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x093f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0940,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x094d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x094f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x095f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0961,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP +#endif + +// 2014-07-16aRagexe +#if PACKETVER == 20140716 +// shuffle packets + packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0811,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x085c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x085f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0868,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0871,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0881,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x088d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x088f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0896,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x089a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x089f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08a2,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08a4,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08ac,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0918,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x091f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0926,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x092c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0938,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x093b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0947,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0952,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0959,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES +#endif + // 2014-07-16aRagexeRE #if PACKETVER >= 20140716 // changed packet sizes packet(0x09e7,3); // ZC_NOTIFY_UNREAD_RODEX #endif +// 2014-07-23aRagexe +#if PACKETVER == 20140723 +// shuffle packets + packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0368,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0436,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0819,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0838,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x085f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x086d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x087d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0888,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0891,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0896,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0898,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x089e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08a2,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08ad,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0927,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x092f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0934,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0935,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0939,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x093d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0945,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0947,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0948,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x095f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0960,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + // 2014-07-23aRagexeRE #if PACKETVER >= 20140723 // new packets @@ -3408,12 +4224,250 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a24,56); // ZC_ACH_UPDATE #endif +// 2014-07-30aRagexe +#if PACKETVER == 20140730 +// shuffle packets + packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0366,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0367,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0437,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x07ec,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0802,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0815,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0817,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x085e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x085f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x087d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x087e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x087f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0889,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x088b,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x088d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0892,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a0,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08a6,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x08a7,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08a9,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x08ad,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x091e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0924,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x092a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0934,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0940,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0946,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER +#endif + +// 2014-08-06aRagexe +#if PACKETVER == 20140806 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0948,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2014-08-13aRagexe +#if PACKETVER == 20140813 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0868,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0878,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x087c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0882,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0895,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0897,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0899,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a3,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a7,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0967,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2014-08-14aRagexe +#if PACKETVER == 20140814 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0868,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0878,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x087c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0882,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0895,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0897,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0899,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a3,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a7,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0967,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2014-08-20aRagexe +#if PACKETVER == 20140820 +// shuffle packets + packet(0x035f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0835,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0861,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0864,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0869,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x086c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0872,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0876,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0891,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0899,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x089a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x089b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a3,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08a7,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x091d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x092f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0937,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x093a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x093e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0951,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0952,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0956,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0958,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER +#endif + // 2014-08-20aRagexeRE #if PACKETVER >= 20140820 // new packets packet(0x0a2d,-1); // ZC_EQUIPWIN_MICROSCOPE_V6 #endif +// 2014-08-27aRagexe +#if PACKETVER == 20140827 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0943,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2014-09-03aRagexe +#if PACKETVER == 20140903 +// shuffle packets + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0931,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0943,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0945,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2014-09-03aRagexeRE #if PACKETVER >= 20140903 // new packets @@ -3422,6 +4476,74 @@ packet(0x96e,-1,clif->ackmergeitems); // changed packet sizes #endif +// 2014-09-17aRagexe +#if PACKETVER == 20140917 +// shuffle packets + packet(0x022d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0364,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0365,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0367,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0838,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0864,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x086d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0889,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0895,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0897,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0898,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x089c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x08a8,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0919,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x091e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x092a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0930,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0949,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x094f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0951,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0955,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0956,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0957,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x095a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x095c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x095e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0966,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK +#endif + +// 2014-09-24cRagexe +#if PACKETVER == 20140924 +// shuffle packets + packet(0x0366,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0367,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0815,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0862,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0864,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0865,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0867,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x086b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x086d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x086e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0886,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x088b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0894,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0898,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x089c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a5,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08a7,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0918,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x091b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0925,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0926,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0928,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x092b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x092d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0934,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0949,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0952,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS +#endif + // 2014-09-24bRagexeRE #if PACKETVER >= 20140924 // new packets @@ -3432,82 +4554,322 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a34,6); // ZC_UPDATE_TAIWANCASH #endif +// 2014-10-01aRagexe +#if PACKETVER == 20141001 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0365,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x087c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0884,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0885,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x089c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x089d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08ad,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x091c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x092a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0937,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0939,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x093f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x094b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0952,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER +#endif + // 2014-10-01bRagexeRE #if PACKETVER >= 20141001 // changed packet sizes packet(0x0a24,66); // ZC_ACH_UPDATE #endif +// 2014-10-08aRagexe +#if PACKETVER == 20141008 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0942,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2014-10-08bRagexeRE #if PACKETVER >= 20141008 // changed packet sizes packet(0x0a05,49); // ZC_ACK_ADD_ITEM_RODEX #endif -// 2014-10-16aRagexe - YomRawr -#if PACKETVER >= 20141016 - packet(0x0369,7,clif->pActionRequest,2,6); - packet(0x083C,10,clif->pUseSkillToId,2,4,6); - packet(0x0437,5,clif->pWalkToXY,2); - packet(0x035F,6,clif->pTickSend,2); - packet(0x0967,5,clif->pChangeDir,2,4); - packet(0x07E4,6,clif->pTakeItem,2); - packet(0x0362,6,clif->pDropItem,2,4); - packet(0x07EC,8,clif->pMoveToKafra,2,4); - packet(0x022D,8,clif->pMoveFromKafra,2,4); - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); - packet(0x096A,6,clif->pGetCharNameRequest,2); - packet(0x0368,6,clif->pSolveCharName,2); - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); - packet(0x0360,6,clif->pReqClickBuyingStore,2); - packet(0x0817,2,clif->pReqCloseBuyingStore,0); - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); - packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); - packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); - packet(0x086E,19,clif->pWantToConnection,2,6,10,14,18); - packet(0x0802,26,clif->pPartyInvite2,2); - packet(0x094B,26,clif->pFriendsListAdd,2); - packet(0x0364,5,clif->pHomMenu,2,4); - packet(0x0936,36,clif->pStoragePassword,0); - packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD - packet(0x0922,4,clif->pDull); // CZ_GANGSI_RANK +// 2014-10-15bRagexe +#if PACKETVER == 20141015 +// shuffle packets + packet(0x022d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0922,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0936,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x094b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0967,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-10-22bRagexe - YomRawr -#if PACKETVER >= 20141022 - packet(0x0369,7,clif->pActionRequest,2,6); - packet(0x083C,10,clif->pUseSkillToId,2,4,6); - packet(0x0437,5,clif->pWalkToXY,2); - packet(0x035F,6,clif->pTickSend,2); - packet(0x08AD,5,clif->pChangeDir,2,4); - packet(0x094E,6,clif->pTakeItem,2); - packet(0x087D,6,clif->pDropItem,2,4); - packet(0x0878,8,clif->pMoveToKafra,2,4); - packet(0x08AA,8,clif->pMoveFromKafra,2,4); - packet(0x023B,10,clif->pUseSkillToPos,2,4,6,8); - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); - packet(0x096A,6,clif->pGetCharNameRequest,2); - packet(0x0368,6,clif->pSolveCharName,2); - packet(0x0835,12,clif->pSearchStoreInfoListItemClick,2,6,10); - packet(0x0940,2,clif->pSearchStoreInfoNextPage,0); - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); - packet(0x0360,6,clif->pReqClickBuyingStore,2); - packet(0x0817,2,clif->pReqCloseBuyingStore,0); - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); - packet(0x0955,18,clif->pPartyBookingRegisterReq,2,4); - packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); - packet(0x093B,19,clif->pWantToConnection,2,6,10,14,18); - packet(0x0896,26,clif->pPartyInvite2,2); - packet(0x091A,26,clif->pFriendsListAdd,2); - packet(0x0899,5,clif->pHomMenu,2,4); - packet(0x0438,36,clif->pStoragePassword,0); - packet(0x08ab,4,clif->pDull); // CZ_GANGSI_RANK - packet(0x092b,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD +// 2014-10-16aRagexe +#if PACKETVER == 20141016 +// shuffle packets + packet(0x022d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0922,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0936,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x094b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0967,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2014-10-22bRagexe +#if PACKETVER == 20141022 +// shuffle packets + packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0878,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x087d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0896,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0899,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08aa,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08ad,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x091a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x093b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0940,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x094e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0955,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2014-10-29aRagexe +#if PACKETVER == 20141029 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0940,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2014-11-05aRagexe +#if PACKETVER == 20141105 +// shuffle packets + packet(0x022d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x035f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0360,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x085c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0863,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0864,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0865,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0871,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0874,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0875,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0877,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0879,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0887,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0892,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0898,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a0,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a5,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a7,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08ad,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x091d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x091e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x092b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x093e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0944,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0948,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0950,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0957,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x095f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0968,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER +#endif + +// 2014-11-12cRagexe +#if PACKETVER == 20141112 +// shuffle packets + packet(0x0362,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0438,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x07e4,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0835,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0838,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x083c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x085f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0863,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0869,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x086c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0871,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0885,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0886,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0887,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x088d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x08a0,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08a1,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x08ab,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0919,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0926,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0929,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0943,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x094b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x094c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0955,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x095d,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0960,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0962,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND +#endif + +// 2014-11-19dRagexe +#if PACKETVER == 20141119 +// shuffle packets + packet(0x0202,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x085a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0861,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0865,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0866,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0872,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0873,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0875,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x087c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0885,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0887,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0888,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x088d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0895,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08a8,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08aa,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0918,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0920,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0921,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0929,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x092f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0933,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0938,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0940,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0941,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0942,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0948,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x094c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0963,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX #endif // 2014-11-19bRagexeRE @@ -3518,6 +4880,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a05,53); // ZC_ACK_ADD_ITEM_RODEX #endif +// 2014-11-26aRagexe +#if PACKETVER == 20141126 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0367,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0802,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0871,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0884,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0896,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08a4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08ad,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0920,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0942,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x095a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x095b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x095f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0965,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2014-11-26aRagexeRE #if PACKETVER >= 20141126 // new packets @@ -3525,6 +4921,142 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a37,57); // ZC_ITEM_PICKUP_ACK_V7 #endif +// 2014-12-03aRagexe +#if PACKETVER == 20141203 +// shuffle packets + packet(0x0202,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0281,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0362,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0367,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0368,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0861,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x086c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x086d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x086e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x087b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x087e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0880,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0889,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0898,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x089c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x089d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x08a5,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x08aa,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0917,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x091c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x091d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0928,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x092a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0936,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0957,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x095c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0962,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL +#endif + +// 2014-12-10bRagexe +#if PACKETVER == 20141210 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x087b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0885,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08ac,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0917,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0927,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x092b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0947,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0954,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0955,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0958,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0961,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0963,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0967,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2014-12-24aRagexe +#if PACKETVER == 20141224 +// shuffle packets + packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0438,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0835,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x085a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x085e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0865,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x086c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0870,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x087a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x087b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x089a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x089b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08a3,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08a4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a8,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08ac,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0930,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0932,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x093a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0945,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0946,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0949,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x094f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0950,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0953,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0956,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x095b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x095f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT +#endif + +// 2014-12-31aRagexe +#if PACKETVER == 20141231 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2015-01-07aRagexeRE #if PACKETVER == 20150107 // shuffle packets @@ -3593,6 +5125,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif +// 2015-01-21aRagexe +#if PACKETVER == 20150121 +// shuffle packets + packet(0x0281,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x087c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x088b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x089d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x089e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08ab,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0918,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0919,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x091d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0955,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0959,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0963,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0967,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2015-01-28aRagexe #if PACKETVER == 20150128 // shuffle packets @@ -3626,12 +5192,81 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0963,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x0968,6,clif->pDropItem,2,4); // CZ_ITEM_THROW #endif + // 2015-01-28aRagexeRE #if PACKETVER >= 20150128 // new packets packet(0x0a38,3); #endif +// 2015-01-29aRagexe +#if PACKETVER == 20150129 +// shuffle packets + packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x023b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0365,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0368,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0838,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x085a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0864,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x086d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0870,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0874,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0875,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0888,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x089a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08ab,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x091f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0929,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x092d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x093a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0944,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0963,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0968,6,clif->pDropItem,2,4); // CZ_ITEM_THROW +#endif + +// 2015-01-30aRagexe +#if PACKETVER == 20150130 +// shuffle packets + packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x023b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0365,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0368,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0838,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x085a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0864,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x086d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0870,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0874,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0875,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0888,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x089a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08ab,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x091f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0929,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x092d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x093a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0944,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0963,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0968,6,clif->pDropItem,2,4); // CZ_ITEM_THROW +#endif + // 2015-02-04aRagexe #if PACKETVER == 20150204 // shuffle packets @@ -3666,6 +5301,74 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif +// 2015-02-11aRagexe +#if PACKETVER == 20150211 +// shuffle packets + packet(0x023b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0368,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0369,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0436,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0437,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x07e4,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0817,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0819,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0835,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0862,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0863,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0870,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0873,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x087b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x087f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0882,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0883,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0885,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0886,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x089c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08a0,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08aa,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0919,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0920,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0951,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0957,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0958,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE +#endif + +// 2015-02-17aRagexe +#if PACKETVER == 20150217 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2015-02-25aRagexeRE #if PACKETVER == 20150225 // shuffle packets @@ -3734,6 +5437,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x096a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER #endif +// 2015-03-04aRagexe +#if PACKETVER == 20150304 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0802,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0862,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x086d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0879,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x087e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0892,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x089a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x093a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0947,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x095d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0960,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0961,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2015-03-11aRagexeRE #if PACKETVER == 20150311 // shuffle packets @@ -3775,6 +5512,40 @@ packet(0x96e,-1,clif->ackmergeitems); // changed packet sizes #endif +// 2015-03-18aRagexe +#if PACKETVER == 20150318 +// shuffle packets + packet(0x0202,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x023b,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0281,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0367,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x07e4,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0802,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0862,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0863,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0873,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0885,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0889,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x088c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x089c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a4,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x091d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0920,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0927,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0928,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0936,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0937,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0938,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x093a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x093c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x094c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0951,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0958,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0959,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0960,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER +#endif + // 2015-03-25aRagexe #if PACKETVER == 20150325 // shuffle packets @@ -3843,6 +5614,74 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0964,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION #endif +// 2015-04-08aRagexe +#if PACKETVER == 20150408 +// shuffle packets + packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x085a,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x085c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0865,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0868,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x086b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x086e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0878,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x087e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x087f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0888,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0889,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0891,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0898,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x089c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08a2,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08a4,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x091b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x091e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0922,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x092a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0946,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x094f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0955,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0957,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0959,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0963,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE +#endif + +// 2015-04-15aRagexe +#if PACKETVER == 20150415 +// shuffle packets + packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0364,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0366,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0368,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0802,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0817,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0835,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x085e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0863,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0867,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0868,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0869,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x086c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0880,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0891,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0898,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08a0,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0922,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x092e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x093c,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x093e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0941,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0946,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x094d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0953,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x095c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0960,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER +#endif + // 2015-04-15aRagexeRE #if PACKETVER >= 20150415 // changed packet sizes @@ -3959,37 +5798,71 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2015-05-13aRagexe -#if PACKETVER >= 20150513 - packet(0x0369,7,clif->pActionRequest,2,6); - packet(0x083C,10,clif->pUseSkillToId,2,4,6); - packet(0x0437,5,clif->pWalkToXY,2); - packet(0x035F,6,clif->pTickSend,2); - packet(0x0924,5,clif->pChangeDir,2,4); - packet(0x0958,6,clif->pTakeItem,2); - packet(0x0885,6,clif->pDropItem,2,4); - packet(0x0879,8,clif->pMoveToKafra,2,4); - packet(0x0864,8,clif->pMoveFromKafra,2,4); - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); - packet(0x096A,6,clif->pGetCharNameRequest,2); - packet(0x0368,6,clif->pSolveCharName,2); - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); - packet(0x0360,6,clif->pReqClickBuyingStore,2); - packet(0x022D,2,clif->pReqCloseBuyingStore,0); - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); - packet(0x0883,18,clif->pPartyBookingRegisterReq,2,4); - packet(0x02C4,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD - packet(0x0960,-1,clif->pItemListWindowSelected,2,4,8); - packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); - packet(0x094A,26,clif->pPartyInvite2,2); - packet(0x0927,4,clif->pDull); // CZ_GANGSI_RANK - packet(0x08A8,26,clif->pFriendsListAdd,2); - packet(0x0817,5,clif->pHomMenu,2,4); - packet(0x0923,36,clif->pStoragePassword,0); - packet(0x0a27,8); // ZC_RECOVERY2 +#if PACKETVER == 20150513 +// shuffle packets + packet(0x022d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x02c4,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0864,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0883,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0885,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a8,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0923,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0924,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0927,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x094a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0960,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2015-05-20aRagexe +#if PACKETVER == 20150520 +// shuffle packets + packet(0x0202,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0361,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0835,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x085e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0865,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0868,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x087d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0880,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0882,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x089c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x089e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a2,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x08ad,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x091c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x091d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0924,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x092b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0931,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0936,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x093d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0940,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0945,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x094e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x095b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x095f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0960,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0961,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER #endif // 2015-05-20aRagexeRE @@ -4033,12 +5906,80 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif +// 2015-06-03aRagexe +#if PACKETVER == 20150603 +// shuffle packets + packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0437,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0819,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0860,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0864,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0867,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x086a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0873,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0877,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0881,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0884,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x088b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0897,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x089a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x089d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x089e,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x08a1,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08ad,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x091b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0922,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x092d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x093b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x093f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0955,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0956,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0960,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0969,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x096a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE +#endif + // 2015-06-03bRagexeRE #if PACKETVER >= 20150603 // new packets packet(0x0a3e,-1); #endif +// 2015-06-10aRagexe +#if PACKETVER == 20150610 +// shuffle packets + packet(0x022d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0438,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x07e4,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0835,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0870,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0872,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0877,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x087e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0884,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0885,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0888,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x088d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x088f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0897,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a0,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08ac,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0925,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x092b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x092c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x092e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0932,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x093e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0940,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0946,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0949,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0957,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x095d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0964,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + // 2015-06-17aRagexeRE #if PACKETVER == 20150617 // shuffle packets @@ -4107,12 +6048,250 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif +// 2015-06-24aRagexe +#if PACKETVER == 20150624 +// shuffle packets + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0365,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0870,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0940,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0941,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0966,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2015-06-24aRagexeRE #if PACKETVER >= 20150624 // new packets packet(0x0a3f,9); #endif +// 2015-07-02aRagexe +#if PACKETVER == 20150702 +// shuffle packets + packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0281,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x07e4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0802,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x086d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x087d,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x087e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0883,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x088e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0893,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a0,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a4,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x08a5,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08a6,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08ad,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0919,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0923,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0928,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x092c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x093e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x093f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0946,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x094e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0954,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0956,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0958,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x095f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0960,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0968,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2015-07-08cRagexe +#if PACKETVER == 20150708 +// shuffle packets + packet(0x022d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0368,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0872,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x087f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0884,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x089d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a5,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08ad,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x091f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x092a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x093c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x095b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0962,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2015-07-15aRagexe +#if PACKETVER == 20150715 +// shuffle packets + packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0362,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0436,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0437,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0835,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x083c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x085c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x086f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0873,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0879,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x087c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x087f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0886,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0895,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0896,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0897,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0899,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x089a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a4,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08ac,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0917,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x093e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0944,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0950,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0956,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0961,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0965,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER +#endif + +// 2015-07-29aRagexe +#if PACKETVER == 20150729 +// shuffle packets + packet(0x0437,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0438,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x085b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0860,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x086c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x086d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x086e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x086f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0870,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0880,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0881,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0886,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x089a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a3,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08ac,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08ad,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0920,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x092b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x092f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x093a,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x093f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0940,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x094f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0955,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x095e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0961,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE +#endif + +// 2015-08-05aRagexe +#if PACKETVER == 20150805 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2015-08-12aRagexe +#if PACKETVER == 20150812 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x087f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2015-08-12aRagexeRE #if PACKETVER >= 20150812 // new packets @@ -4187,18 +6366,154 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0969,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO #endif +// 2015-09-02aRagexe +#if PACKETVER == 20150902 +// shuffle packets + packet(0x023b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0360,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0367,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0802,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x083c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x085b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x085d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0863,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x087b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x087f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0886,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0887,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0889,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x088d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0892,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0897,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0899,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x08a9,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0923,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0928,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x092a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x092d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0941,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0947,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x094f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0953,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x095b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0960,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE +#endif + +// 2015-09-09aRagexe +#if PACKETVER == 20150909 +// shuffle packets + packet(0x023b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0361,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0437,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0861,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0871,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x087b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0883,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0886,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0895,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0928,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0940,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0941,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x095e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0962,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x096a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + // 2015-09-09aRagexeRE #if PACKETVER >= 20150909 // new packets packet(0x0a41,18); #endif +// 2015-09-16aRagexe +#if PACKETVER == 20150916 +// shuffle packets + packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0817,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0835,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x085e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0869,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0873,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0877,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x087f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0881,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x089b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x089c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x089e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08ac,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0920,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0924,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x092e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x092f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0934,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0936,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x093e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0942,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0948,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x095a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0960,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0961,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0969,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER +#endif + // 2015-09-16aRagexeRE #if PACKETVER >= 20150916 // new packets packet(0x0a42,43); #endif +// 2015-09-23bRagexe +#if PACKETVER == 20150923 +// shuffle packets + packet(0x0361,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0817,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x085c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x085d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0864,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x086e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x086f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0870,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0879,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x087f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0886,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x088e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0892,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0895,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x089b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x089f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a0,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x08a2,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a5,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x08a6,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x092b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0930,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0936,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x093b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0951,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0961,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES +#endif + // 2015-10-01aRagexe #if PACKETVER == 20151001 // shuffle packets @@ -4308,6 +6623,74 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER #endif +// 2015-10-21aRagexe +#if PACKETVER == 20151021 +// shuffle packets + packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x02c4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x091d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0940,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2015-10-22aRagexe +#if PACKETVER == 20151022 +// shuffle packets + packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x02c4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x091d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0940,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2015-10-28cRagexeRE #if PACKETVER == 20151028 // shuffle packets @@ -4349,75 +6732,105 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2015-10-29aRagexe -#if PACKETVER >= 20151029 - packet(0x0369,7,clif->pActionRequest,2,6); - packet(0x083C,10,clif->pUseSkillToId,2,4,6); - packet(0x0437,5,clif->pWalkToXY,2); - packet(0x035F,6,clif->pTickSend,2); - packet(0x0202,5,clif->pChangeDir,2,4); - packet(0x07E4,6,clif->pTakeItem,2); - packet(0x0362,6,clif->pDropItem,2,4); - packet(0x07EC,8,clif->pMoveToKafra,2,4); - packet(0x0364,8,clif->pMoveFromKafra,2,4); - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); - packet(0x096A,6,clif->pGetCharNameRequest,2); - packet(0x0368,6,clif->pSolveCharName,2); - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); - packet(0x0360,6,clif->pReqClickBuyingStore,2); - packet(0x0817,2,clif->pReqCloseBuyingStore,0); - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); - packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); - packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); - packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18); - packet(0x0802,26,clif->pPartyInvite2,2); - packet(0x023B,26,clif->pFriendsListAdd,2); - packet(0x0361,5,clif->pHomMenu,2,4); - packet(0x0860,36,clif->pStoragePassword,0); - packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD - packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK +#if PACKETVER == 20151029 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0860,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif // 2015-11-04aRagexe -#if PACKETVER >= 20151104 - packet(0x0369,7,clif->pActionRequest,2,6); - packet(0x083C,10,clif->pUseSkillToId,2,4,6); - packet(0x0363,5,clif->pWalkToXY,2); - packet(0x0886,6,clif->pTickSend,2); - packet(0x0928,5,clif->pChangeDir,2,4); - packet(0x0964,6,clif->pTakeItem,2); - packet(0x0437,6,clif->pDropItem,2,4); - packet(0x088B,8,clif->pMoveToKafra,2,4); - packet(0x0364,8,clif->pMoveFromKafra,2,4); - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); - packet(0x0887,6,clif->pGetCharNameRequest,2); - packet(0x0368,6,clif->pSolveCharName,2); - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); - packet(0x0815,-1,clif->pReqTradeBuyingStore,2,4,8,12); - packet(0x0436,6,clif->pReqClickBuyingStore,2); - packet(0x0817,2,clif->pReqCloseBuyingStore,0); - packet(0x023B,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); - packet(0x0811,18,clif->pPartyBookingRegisterReq,2,4,6); - packet(0x093A,-1,clif->pItemListWindowSelected,2,4,8,12); - packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18); - packet(0x08A5,26,clif->pPartyInvite2,2); - packet(0x07EC,26,clif->pFriendsListAdd,2); - packet(0x088D,5,clif->pHomMenu,2,4); - packet(0x0940,36,clif->pStoragePassword,2,4,20); - packet(0x08a3,4,clif->pDull); // CZ_GANGSI_RANK - packet(0x0939,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD -// new packets - packet(0x0a46,14,clif->pDull/*,XXX*/); - packet(0x0a47,3); - packet(0x0a48,2,clif->pDull/*,XXX*/); -// changed packet sizes - packet(0x0a45,2); +#if PACKETVER == 20151104 +// shuffle packets + packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0363,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0437,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07ec,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0811,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0815,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0886,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0887,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x088b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x088d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08a3,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a5,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0928,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0939,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x093a,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES + packet(0x0940,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD + packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP +#endif + +// 2015-11-11aRagexe +#if PACKETVER == 20151111 +// shuffle packets + packet(0x02c4,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0802,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085d,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES + packet(0x0862,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0871,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0885,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x089c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0942,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x094a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0958,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0966,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0967,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0969,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif // 2015-11-18aRagexeRE @@ -4463,6 +6876,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a4c,28); #endif +// 2015-11-25bRagexe +#if PACKETVER == 20151125 +// shuffle packets + packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0366,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES + packet(0x0438,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0802,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0838,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x085e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x085f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0863,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0883,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0884,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD + packet(0x0885,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x088c,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x088d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x089c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x089f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x08a9,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08ad,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0920,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x092a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x092e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0939,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x093e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0951,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0956,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0957,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0959,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX +#endif + // 2015-12-02bRagexeRE #if PACKETVER == 20151202 // shuffle packets @@ -4497,37 +6944,72 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif +// 2015-12-09aRagexe +#if PACKETVER == 20151209 +// shuffle packets + packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x07e4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x07ec,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0811,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0819,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x085b,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD + packet(0x085d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x085e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0861,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0866,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x087a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x087f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0894,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08a1,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0920,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x092d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0930,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0932,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES + packet(0x093b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0948,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x094a,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0956,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x095c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0961,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0964,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS +#endif + // 2015-12-16aRagexe -#if PACKETVER >= 20151216 - packet(0x089D,7,clif->pActionRequest,2,6); - packet(0x0968,10,clif->pUseSkillToId,2,4,6); - packet(0x08A2,5,clif->pWalkToXY,2); - packet(0x085B,6,clif->pTickSend,2); - packet(0x022D,5,clif->pChangeDir,2,4); - packet(0x08A9,6,clif->pTakeItem,2); - packet(0x0966,6,clif->pDropItem,2,4); - packet(0x08AC,8,clif->pMoveToKafra,2,4); - packet(0x0864,8,clif->pMoveFromKafra,2,4); - packet(0x0865,10,clif->pUseSkillToPos,2,4,6,8); - packet(0x0874,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); - packet(0x088B,6,clif->pGetCharNameRequest,2); - packet(0x089E,6,clif->pSolveCharName,2); - packet(0x0436,12,clif->pSearchStoreInfoListItemClick,2,6,10); - packet(0x0960,2,clif->pSearchStoreInfoNextPage,0); - packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); - packet(0x0954,-1,clif->pReqTradeBuyingStore,2,4,8,12); - packet(0x0361,6,clif->pReqClickBuyingStore,2); - packet(0x083C,2,clif->pReqCloseBuyingStore,0); - packet(0x0870,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); - packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); - packet(0x0949,-1,clif->pItemListWindowSelected,2,4,8); - packet(0x0947,19,clif->pWantToConnection,2,6,10,14,18); - packet(0x086E,26,clif->pPartyInvite2,2); - packet(0x091D,26,clif->pFriendsListAdd,2); - packet(0x0362,5,clif->pHomMenu,2,4); - packet(0x0885,36,clif->pStoragePassword,0); - packet(0x0364,4,clif->pDull); // CZ_GANGSI_RANK - packet(0x086a,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD +#if PACKETVER == 20151216 +// shuffle packets + packet(0x022d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0361,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0364,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0436,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x085b,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0864,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0865,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x086a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0870,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0874,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0885,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x088b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x089d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x089e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08a2,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08a9,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08ac,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x091d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0947,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0949,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0954,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0960,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0966,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0968,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL #endif // 2015-12-23bRagexeRE @@ -4564,14 +7046,143 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0967,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK #endif -// 2016-01-27aRagexeRE -#if PACKETVER >= 20160127 -// new packets - packet(0x0a4d,-1); -// changed packet sizes +// 2015-12-30aRagexe +#if PACKETVER == 20151230 +// shuffle packets + packet(0x02c4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x07ec,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0861,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0869,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0886,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x088e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0897,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x091d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0923,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x093a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0949,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x094e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-01-06aRagexeRE +#if PACKETVER == 20160106 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07ec,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0861,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x086a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0878,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x087a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x087f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0885,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0889,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x088a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0891,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a0,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x091d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0940,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-01-13aRagexeRE +#if PACKETVER == 20160113 +// shuffle packets + packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x023b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x035f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0815,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x085b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0864,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x086d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0873,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0888,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x088b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x088c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0892,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0893,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x089a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x08a0,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x08a6,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08aa,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0919,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x091b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0924,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0930,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0932,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x093c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0941,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x094d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0967,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE #endif -// 2016-01-27bRagexeRE +// 2016-01-20aRagexeRE +#if PACKETVER == 20160120 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0865,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-01-27aRagexeRE #if PACKETVER == 20160127 // shuffle packets packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER @@ -4605,6 +7216,13 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif +// 2016-01-27aRagexeRE +#if PACKETVER >= 20160127 +// new packets + packet(0x0a4d,-1); +// changed packet sizes +#endif + // 2016-02-03aRagexeRE #if PACKETVER == 20160203 // shuffle packets @@ -4639,6 +7257,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif +// 2016-02-11aRagexeRE +#if PACKETVER == 20160211 +// shuffle packets + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0870,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0886,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2016-02-17cRagexeRE #if PACKETVER == 20160217 // shuffle packets @@ -4673,6 +7325,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE #endif +// 2016-02-24bRagexeRE +#if PACKETVER == 20160224 +// shuffle packets + packet(0x022d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0364,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0436,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0861,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x086b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0884,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0885,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0888,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08a9,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0920,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0929,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x092f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0936,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0938,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x094c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0961,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2016-03-02bRagexeRE #if PACKETVER == 20160302 // shuffle packets @@ -4752,6 +7438,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2016-03-16aRagexeRE +#if PACKETVER == 20160316 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0922,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-03-16aRagexeRE #if PACKETVER >= 20160316 // new packets packet(0x0a52,20,clif->pDull/*,XXX*/); @@ -4770,6 +7490,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2016-03-23aRagexeRE +#if PACKETVER == 20160323 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0365,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0867,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0869,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x086a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0872,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0878,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0883,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0896,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x089a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x091b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0926,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0927,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0933,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x093c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-03-23aRagexeRE #if PACKETVER >= 20160323 // new packets packet(0x0a68,3); @@ -4818,11 +7572,79 @@ packet(0x96e,-1,clif->ackmergeitems); // new packets packet(0x0a6c,7,clif->pDull/*,XXX*/); packet(0x0a6d,-1); - packet(0x0a6e,-1); + packet(0x0a6e,-1,clif->pRodexSendMail); // CZ_RODEX_SEND_MAIL packet(0x0a6f,-1); // changed packet sizes #endif +// 2016-04-06aRagexeRE +#if PACKETVER == 20160406 +// shuffle packets + packet(0x0364,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x07e4,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x085a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x085c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0869,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0877,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0878,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0879,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0884,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0892,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0895,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0898,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x089b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x089e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a1,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x08a9,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08ac,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0927,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x092d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0933,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0934,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0940,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0949,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x094d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0953,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x095d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x095f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0962,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK +#endif + +// 2016-04-14bRagexeRE +#if PACKETVER == 20160414 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0363,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0862,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0880,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0885,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x089e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0918,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0922,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0927,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0931,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0934,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0945,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0953,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2016-04-20aRagexeRE #if PACKETVER == 20160420 // shuffle packets @@ -4858,6 +7680,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2016-04-27aRagexeRE +#if PACKETVER == 20160427 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0835,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0940,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-04-27aRagexeRE #if PACKETVER >= 20160427 // new packets // changed packet sizes @@ -4865,6 +7721,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2016-05-04aRagexeRE +#if PACKETVER == 20160504 +// shuffle packets + packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0363,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0365,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x083c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x085f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x086b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x087f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0884,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0886,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0887,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x088a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x088d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0890,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0893,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0898,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x089d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08ad,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0918,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0921,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0922,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0924,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x093e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0940,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0941,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0948,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0952,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x095b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0969,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD +#endif + +// 2016-05-04aRagexeRE #if PACKETVER >= 20160504 // new packets packet(0x0a70,2,clif->pDull/*,XXX*/); @@ -4916,6 +7806,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2016-05-18aRagexeRE +#if PACKETVER == 20160518 +// shuffle packets + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0874,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a9,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0928,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-05-18aRagexeRE #if PACKETVER >= 20160518 // new packets packet(0x0a76,80); @@ -4966,12 +7890,46 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2016-06-01aRagexeRE +#if PACKETVER == 20160601 +// shuffle packets + packet(0x0202,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x02c4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0863,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0870,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x087d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x088f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0895,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08a7,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08ac,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0924,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x095b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x095f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-06-01aRagexeRE #if PACKETVER >= 20160601 // new packets packet(0x0a79,-1); packet(0x0a7b,-1); packet(0x0a7c,-1); - packet(0x0a7d,-1); + packet(0x0a7d,-1); // ZC_RODEX_MAILLIST // changed packet sizes #endif @@ -5054,6 +8012,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2016-06-22aRagexeRE +#if PACKETVER == 20160622 +// shuffle packets + packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x035f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x07e4,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0861,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0865,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0867,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0880,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0887,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0890,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0891,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0892,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x089a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x089e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x08a2,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08a8,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x091c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x092d,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x092f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0936,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0937,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x093b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x093f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0946,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0959,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0965,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0969,6,clif->pDropItem,2,4); // CZ_ITEM_THROW +#endif + +// 2016-06-22aRagexeRE #if PACKETVER >= 20160622 // new packets packet(0x0a82,46); @@ -5067,6 +8059,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2016-06-29aRagexeRE +#if PACKETVER == 20160629 +// shuffle packets + packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x022d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x035f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0363,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x085c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x085e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0860,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0861,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0863,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0867,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x086b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0881,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0885,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x088e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0893,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x091e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0922,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0925,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0926,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x093e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0946,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0948,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0957,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x095a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0968,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0969,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE +#endif + +// 2016-06-29aRagexeRE #if PACKETVER >= 20160629 // new packets packet(0x0a89,32); @@ -5239,15 +8265,6 @@ packet(0x96e,-1,clif->ackmergeitems); // changed packet sizes #endif -// 2016-07-27aRagexeRE -#if PACKETVER >= 20160727 -// new packets - packet(0x0a91,-1); - packet(0x0a92,-1); - packet(0x0a93,3); -// changed packet sizes -#endif - // 2016-07-27bRagexeRE #if PACKETVER == 20160727 // shuffle packets @@ -5282,6 +8299,49 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES #endif +// 2016-07-27aRagexeRE +#if PACKETVER >= 20160727 +// new packets + packet(0x0a91,-1); + packet(0x0a92,-1); + packet(0x0a93,3); +// changed packet sizes +#endif + +// 2016-08-03bRagexeRE +#if PACKETVER == 20160803 +// shuffle packets + packet(0x0364,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x085d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0878,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0881,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0886,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0887,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0888,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x088b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0891,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0895,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x089c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x089e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x08a1,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x091b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0929,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0930,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0932,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0934,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0937,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x093a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x093e,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x093f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0952,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0955,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0956,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0959,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x095a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x096a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE +#endif + // 2016-08-03bRagexeRE #if PACKETVER >= 20160803 // new packets @@ -5290,6 +8350,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a81,4); #endif +// 2016-08-10aRagexeRE +#if PACKETVER == 20160810 +// shuffle packets + packet(0x0361,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0819,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0838,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x085d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x085e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x085f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0860,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x086f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0875,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0879,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x087a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0885,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0888,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0890,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x089d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x089f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08a9,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x091a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x091b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x091c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0926,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x092b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x092d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0935,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0943,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x094b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0959,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x095b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0967,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD +#endif + // 2016-08-31bRagexeRE #if PACKETVER == 20160831 // shuffle packets @@ -5365,6 +8459,40 @@ packet(0x96e,-1,clif->ackmergeitems); // changed packet sizes #endif +// 2016-09-13aRagexeRE +#if PACKETVER == 20160913 +// shuffle packets + packet(0x0361,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0817,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x085b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0865,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0874,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0875,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0879,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x087b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0887,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0889,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0891,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0892,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x089b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x089c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a5,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0935,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0949,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x094a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0950,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0952,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0954,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0962,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0963,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0968,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE +#endif + // 2016-09-21bRagexeRE #if PACKETVER == 20160921 // shuffle packets @@ -5407,6 +8535,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0a37,59); // ZC_ITEM_PICKUP_ACK_V7 #endif +// 2016-09-28dRagexeRE +#if PACKETVER == 20160928 +// shuffle packets + packet(0x0202,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0366,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0811,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0838,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0864,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0866,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x086d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0872,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0878,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x087f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0889,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0897,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x089a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a9,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0919,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x091e,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0927,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x092d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0944,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x094e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0953,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0955,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0957,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x095a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK +#endif + // 2016-09-28cRagexeRE #if PACKETVER >= 20160928 // new packets @@ -5423,6 +8585,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2016-10-05aRagexeRE +#if PACKETVER == 20161005 +// shuffle packets + packet(0x0202,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0838,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0863,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0886,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0891,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0892,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x089b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x089c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a0,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08ac,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08ad,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0918,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0919,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x092b,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0931,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0932,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x093b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0942,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0945,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x094a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x094d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0952,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x095a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x095b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0967,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL +#endif + +// 2016-10-05aRagexeRE #if PACKETVER >= 20161005 // new packets packet(0x0aa0,2,clif->pDull/*,XXX*/); @@ -5467,6 +8663,40 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0967,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD #endif +// 2016-10-19aRagexeRE +#if PACKETVER == 20161019 +// shuffle packets + packet(0x022d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0361,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0889,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0892,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0963,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2016-10-26bRagexeRE #if PACKETVER == 20161026 // shuffle packets @@ -5509,6 +8739,74 @@ packet(0x96e,-1,clif->ackmergeitems); // changed packet sizes #endif +// 2016-11-02aRagexeRE +#if PACKETVER == 20161102 +// shuffle packets + packet(0x0361,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0367,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0436,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0802,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0838,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x083c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x085f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x086c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0874,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0886,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x088f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0890,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x089f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08a2,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08aa,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x091b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0922,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0925,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0936,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0949,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0964,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0965,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0966,6,clif->pTickSend,2); // CZ_REQUEST_TIME +#endif + +// 2016-11-03aRagexeRE +#if PACKETVER == 20161103 +// shuffle packets + packet(0x0361,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0367,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0436,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0802,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0838,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x083c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x085f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x086c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0874,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0886,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x088f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0890,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x089f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08a2,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08aa,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x091b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0922,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0925,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0936,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0949,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0964,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0965,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0966,6,clif->pTickSend,2); // CZ_REQUEST_TIME +#endif + // 2016-11-09bRagexeRE #if PACKETVER == 20161109 // shuffle packets @@ -5543,6 +8841,108 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION #endif +// 2016-11-16cRagexeRE +#if PACKETVER == 20161116 +// shuffle packets + packet(0x0368,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0369,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0835,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x085f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0864,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x086f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0885,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x088b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x088d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x088f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0890,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0892,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0893,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x08a1,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a2,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08aa,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x08ac,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0920,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0925,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x092a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0931,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x093c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x094a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0952,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0957,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x095b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x095d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x095f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0967,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD +#endif + +// 2016-11-23aRagexeRE +#if PACKETVER == 20161123 +// shuffle packets + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0437,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x085c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0861,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0862,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0866,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x086f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0871,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0880,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0882,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x088b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x089c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a9,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08aa,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x091a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0926,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x092a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x092f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0930,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0941,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x094d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x094f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x095a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x095b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0962,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x096a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID +#endif + +// 2016-11-30bRagexeRE +#if PACKETVER == 20161130 +// shuffle packets + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0931,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0943,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0954,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0959,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + // 2016-11-30aRagexeRE #if PACKETVER >= 20161130 // new packets @@ -5675,6 +9075,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2016-12-28aRagexeRE +#if PACKETVER == 20161228 +// shuffle packets + packet(0x0362,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x085a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x085e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0865,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x086a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x086c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x086d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0870,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0871,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0875,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x087f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0886,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0889,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0893,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x089f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a2,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a3,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x08a5,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08ab,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08ac,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08ad,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x091c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0929,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x092c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0934,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0935,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x093d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0944,6,clif->pTickSend,2); // CZ_REQUEST_TIME +#endif + +// 2016-12-28aRagexeRE #if PACKETVER >= 20161228 // new packets // changed packet sizes @@ -5682,6 +9116,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2017-01-04bRagexeRE +#if PACKETVER == 20170104 +// shuffle packets + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x085a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x087f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0896,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x091b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0940,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2017-01-04bRagexeRE #if PACKETVER >= 20170104 // new packets packet(0x0ab2,7); @@ -5690,6 +9158,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2017-01-11aRagexeRE +#if PACKETVER == 20170111 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0877,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x087f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x088a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a1,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a3,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a6,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x091a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x091b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0940,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x094c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0961,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0969,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2017-01-11aRagexeRE #if PACKETVER >= 20170111 // new packets packet(0x0ab4,4); @@ -5702,6 +9204,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2017-01-18aRagexeRE +#if PACKETVER == 20170118 +// shuffle packets + packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0862,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0865,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x086f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0873,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x089e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08ad,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x091f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0927,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0933,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0958,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0962,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE +#endif + +// 2017-01-18aRagexeRE #if PACKETVER >= 20170118 // new packets packet(0x0aba,2); @@ -5746,6 +9282,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2017-02-01aRagexeRE +#if PACKETVER == 20170201 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0815,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x085e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0875,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0879,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0881,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0884,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0885,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0886,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x088b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a4,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0919,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0920,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0938,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0940,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x094c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0966,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2017-02-01aRagexeRE #if PACKETVER >= 20170201 // new packets packet(0x0abc,-1); @@ -5787,6 +9357,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2017-02-15aRagexeRE +#if PACKETVER == 20170215 +// shuffle packets + packet(0x02c4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x035f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0360,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x083c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x085c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0876,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x087c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x087d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x087e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0883,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x088a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x088b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x088c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0890,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0896,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x089b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a2,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x08a8,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x091c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0925,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x092b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x092d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0942,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x094e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x095f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0962,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0969,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE +#endif + +// 2017-02-15aRagexeRE #if PACKETVER >= 20170215 // new packets packet(0x0abd,10); @@ -5794,6 +9398,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2017-02-22aRagexeRE +#if PACKETVER == 20170222 +// shuffle packets + packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0866,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0870,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0871,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0877,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0889,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0894,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a3,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a8,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0937,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0939,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0943,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x095d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0962,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2017-02-22aRagexeRE #if PACKETVER >= 20170222 // new packets packet(0x0abe,116); @@ -6051,6 +9689,74 @@ packet(0x96e,-1,clif->ackmergeitems); // changed packet sizes #endif +// 2017-04-12aRagexeRE +#if PACKETVER == 20170412 +// shuffle packets + packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0365,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0863,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0869,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x086d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0878,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0879,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0890,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0893,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0898,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x089a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x089c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a1,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x091a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x091e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0929,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x092e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0938,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0942,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0945,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0949,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x094f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0952,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0959,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x095b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x095c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x095d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD +#endif + +// 2017-04-19bRagexeRE +#if PACKETVER == 20170419 +// shuffle packets + packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0819,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0838,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x085a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x085e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0862,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0868,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x086a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0872,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0881,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x088d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0897,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0898,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x089d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08aa,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x091b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0920,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0922,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0930,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0931,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0935,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x093a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x093f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0942,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x095c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x095d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0963,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0965,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE +#endif + // 2017-04-19bRagexeRE #if PACKETVER >= 20170419 // new packets @@ -6060,6 +9766,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2017-04-26dRagexeRE +#if PACKETVER == 20170426 +// shuffle packets + packet(0x0281,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0866,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x087a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0887,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0899,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x089c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08a2,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x091f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0927,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0940,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0958,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0963,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2017-04-26dRagexeRE #if PACKETVER >= 20170426 // new packets // changed packet sizes @@ -6067,6 +9807,40 @@ packet(0x96e,-1,clif->ackmergeitems); #endif // 2017-05-02dRagexeRE +#if PACKETVER == 20170502 +// shuffle packets + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0875,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0894,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x089c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x093c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0950,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2017-05-02dRagexeRE #if PACKETVER >= 20170502 // new packets packet(0x0ace,4); @@ -6107,498 +9881,650 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP #endif - -/* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */ -#if PACKETVER >= 20110817 - packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20110824 - packetKeys(0x35C91401,0x262A5556,0x28FA03AA); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20110831 - packetKeys(0x3AD67ED0,0x44703C69,0x6F876809); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20110906 - packetKeys(0x3AD67ED0,0x44703C69,0x6F876809); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20111005 - packetKeys(0x291E6762,0x77CD391A,0x60AC2F16); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20111012 - packetKeys(0x7F3C2D29,0x59B01DE6,0x1DBB44CA); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20111021 - packetKeys(0x357D55DC,0x5A8D759F,0x245C30F5); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20111025 - packetKeys(0x50AE1A63,0x3CE579B5,0x29C10406); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20111102 - packetKeys(0x5324329D,0x5D545D52,0x06137269); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20111109 - packetKeys(0x0B642BDA,0x6ECB1D1C,0x61C7454B); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20111122 - packetKeys(0x3B550F07,0x1F666C7C,0x60304EF5); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20111207 - packetKeys(0x2A610886,0x3E09165E,0x57C11888); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20111214 - packetKeys(0x5151306B,0x7AE32886,0x53060628); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20111220 - packetKeys(0x05D53871,0x7D0027B4,0x29975333); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20111228 - packetKeys(0x0FF87E93,0x6CFF7860,0x3A3D1DEC); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120104 - packetKeys(0x262034A1,0x674542A5,0x73A50BA5); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120111 - packetKeys(0x2B412AFC,0x4FF94487,0x6705339D); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120120 - packetKeys(0x504345D0,0x3D427B1B,0x794C2DCC); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120202 - packetKeys(0x2CFC0A71,0x2BA91D8D,0x087E39E0); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120207 - packetKeys(0x1D373F5D,0x5ACD604D,0x1C4D7C4D); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120214 - packetKeys(0x7A255EFA,0x30977276,0x2D4A0448); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120229 - packetKeys(0x520B4C64,0x2800407D,0x47651458); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120307 - packetKeys(0x382A6DEF,0x5CBE7202,0x61F46637); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120314 - packetKeys(0x689C1729,0x11812639,0x60F82967); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120321 - packetKeys(0x21F9683F,0x710C5CA5,0x1FD910E9); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120328 - packetKeys(0x75B8553B,0x37F20B12,0x385C2B40); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120404 - packetKeys(0x0036310C,0x2DCD0BED,0x1EE62A78); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120410 - packetKeys(0x01581359,0x452D6FFA,0x6AFB6E2E); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120418 - packetKeys(0x01540E48,0x13041224,0x31247924); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120424 - packetKeys(0x411D1DBB,0x4CBA4848,0x1A432FC4); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120509 - packetKeys(0x16CF3301,0x1F472B9B,0x0B4A3CD2); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120515 - packetKeys(0x4A715EF9,0x79103E4F,0x405C1238); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120525 - packetKeys(0x70EB4CCB,0x0487713C,0x398D4B08); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120605 - packetKeys(0x68CA3080,0x31B74BDD,0x505208F1); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120612 - packetKeys(0x32E45D64,0x35643564,0x35643564); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120618 - packetKeys(0x261F261F,0x261F261F,0x261F261F); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120702 - packetKeys(0x25733B31,0x53486CFD,0x398649BD); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20120716 - packetKeys(0x76052205,0x22052205,0x22052205); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20130320 - packetKeys(0x3F094C49,0x55F86C1E,0x58AA359A); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20130514 - packetKeys(0x75794A38,0x58A96BC1,0x296E6FB8); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20130522 - packetKeys(0x6948050B,0x06511D9D,0x725D4DF1); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20130529 - packetKeys(0x023A6C87,0x14BF1F1E,0x5CC70CC9); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20130605 - packetKeys(0x646E08D9,0x5F153AB5,0x61B509B5); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20130612 - packetKeys(0x6D166F66,0x3C000FCF,0x295B0FCB); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20130618 - packetKeys(0x434115DE,0x34A10FE9,0x6791428E); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20130626 - packetKeys(0x38F453EF,0x6A040FD8,0X65BD6668); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20130703 - packetKeys(0x4FF90E23,0x0F1432F2,0x4CFA1EDA); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20130807 - packetKeys(0x7E241DE0,0x5E805580,0x3D807D80); /* Thanks to Shakto */ -#endif - -#if PACKETVER >= 20130814 - packetKeys(0x23A23148,0x0C41420E,0x53785AD7); /* Themon */ -#endif - -#if PACKETVER >= 20131218 - packetKeys(0x6A596301,0x76866D0E,0x32294A45); -#endif - -#if PACKETVER >= 20131223 - packetKeys(0x631C511C,0x111C111C,0x111C111C); -#endif - -#if PACKETVER >= 20131230 - packetKeys(0x611B7097,0x01F957A1,0x768A0FCB); -#endif - -// 2014 Packet Keys - -#if PACKETVER >= 20140115 - packetKeys(0x63224335,0x0F3A1F27,0x6D217B24); /* Thanks to Yommy */ -#endif - -#if PACKETVER >= 20140205 - packetKeys(0x63DC7BDC,0x7BDC7BDC,0x7BDC7BDC); /* Themon */ -#endif - -#if PACKETVER >= 20140305 - packetKeys(0x116763F2,0x41117DAC,0x7FD13C45); /* Themon */ -#endif - -#if PACKETVER >= 20140402 - packetKeys(0x15D3271C,0x004D725B,0x111A3A37); /* Themon */ -#endif - -#if PACKETVER >= 20140416 - packetKeys(0x04810281,0x42814281,0x42814281); /* Themon */ -#endif - -#if PACKETVER >= 20141016 - packetKeys(0x2DFF467C,0x444B37EE,0x2C1B634F); /* YomRawr */ -#endif - -#if PACKETVER >= 20141022 - packetKeys(0x290551EA,0x2B952C75,0x2D67669B); /* YomRawr */ -#endif - -// 2015 Packet Keys - -#if PACKETVER == 20150107 - packetKeys(0x6C494A14,0x4DDB6427,0x3E6D7B65); /* 4144 */ -#endif - -#if PACKETVER == 20150114 - packetKeys(0x21C96102,0x13142934,0x1ABF4EA3); /* 4144 */ -#endif - -#if PACKETVER == 20150128 - packetKeys(0x77CA2D55,0x28B608F0,0x75B47957); /* 4144 */ -#endif - -#if PACKETVER == 20150204 - packetKeys(0x134529DB,0x5B4F6CEF,0x29EF11EF); /* 4144 */ -#endif - -#if PACKETVER == 20150225 - packetKeys(0x57FD4B7B,0x19CC16FB,0x0D255D72); /* 4144 */ -#endif - -#if PACKETVER == 20150226 - packetKeys(0x57FD4B7B,0x19CC16FB,0x0D255D72); /* 4144 */ -#endif - -#if PACKETVER == 20150311 - packetKeys(0x48C45D97,0x06CE09B0,0x5836642F); /* 4144 */ -#endif - -#if PACKETVER == 20150325 - packetKeys(0x68F62B8C,0x337C3468,0x38FC0AC7); /* 4144 */ -#endif - -#if PACKETVER == 20150401 - packetKeys(0x207F3A08,0x57E6160C,0x02A60382); /* 4144 */ -#endif - -#if PACKETVER == 20150422 - packetKeys(0x10D22CE2,0x69E279E2,0x79E279E2); /* 4144 */ -#endif - -#if PACKETVER == 20150429 - packetKeys(0x2BF61A71,0x565D5DDF,0x0FB90019); /* 4144 */ -#endif - -#if PACKETVER == 20150507 - packetKeys(0x55B54373,0x58967821,0x67F41832); /* 4144 */ -#endif - -#if PACKETVER >= 20150513 - packetKeys(0x62C86D09,0x75944F17,0x112C133D); /* Dastgir */ -#endif - -#if PACKETVER == 20150527 - packetKeys(0x35AE7BAE,0x3BAE3BAE,0x3BAE3BAE); /* 4144 */ -#endif - -#if PACKETVER == 20150617 - packetKeys(0x250F7E09,0x25416076,0x029A780E); /* 4144 */ -#endif - -#if PACKETVER == 20150618 - packetKeys(0x250F7E09,0x25416076,0x029A780E); /* 4144 */ -#endif - -#if PACKETVER == 20150819 - packetKeys(0x1A2400E0,0x736E5686,0x10F315D5); /* 4144 */ -#endif - -#if PACKETVER == 20150826 - packetKeys(0x77883C56,0x1829359F,0x0DE635B6); /* 4144 */ -#endif - -#if PACKETVER >= 20151001 - packetKeys(0x5CFF4561,0x32514AD1,0x06D126D1); /* Dastgir */ -#endif - -#if PACKETVER == 20151007 - packetKeys(0x3C6447A8,0x032170D7,0x6490476C); /* 4144 */ -#endif - -#if PACKETVER == 20151014 - packetKeys(0x402728A8,0x5D0E309F,0x240018FD); /* 4144 */ -#endif - -#if PACKETVER == 20151028 - packetKeys(0x45B945B9,0x45B945B9,0x45B945B9); /* 4144 */ -#endif - -#if PACKETVER >= 20151029 - packetKeys(0x45B945B9,0x45B945B9,0x45B945B9); /* Dastgir */ -#endif - -#if PACKETVER >= 20151104 - packetKeys(0x4C17382A,0x7ED174C9,0x29961E4F); /* ossi0110 */ -#endif - -#if PACKETVER == 20151118 - packetKeys(0x734C3241,0x6E846F34,0x731C06D6); /* 4144 */ -#endif - -#if PACKETVER == 20151202 - packetKeys(0x4EDE52DE,0x52DE52DE,0x52DE52DE); /* 4144 */ -#endif - -#if PACKETVER >= 20151216 - packetKeys(0x25DD643D,0x61AC39DE,0x77A8206D); /* Dastgir */ -#endif - -#if PACKETVER == 20151223 - packetKeys(0x347D68D0,0x2C705320,0x7B4A199D); /* 4144 */ -#endif - -#if PACKETVER == 20160127 - packetKeys(0x6B1E7146,0x612C47E6,0x274E56EE); /* 4144 */ -#endif - -#if PACKETVER == 20160203 - packetKeys(0x3E1411AF,0x6C744497,0x7CFA1BDE); /* 4144 */ -#endif - -#if PACKETVER == 20160217 - packetKeys(0x25895A8E,0x09421C19,0x763A2D7A); /* 4144 */ -#endif - -#if PACKETVER == 20160302 - packetKeys(0x7B4441B9,0x5BBC63AF,0x45DA0E71); /* 4144 */ -#endif - -#if PACKETVER == 20160309 - packetKeys(0x21587520,0x353A7706,0x1B722B25); /* 4144 */ -#endif - -#if PACKETVER == 20160330 - packetKeys(0x02050940,0x545336FF,0x7E7D4902); /* 4144 */ -#endif - -#if PACKETVER == 20160420 - packetKeys(0x67D2163A,0x3068215B,0x4835474D); /* 4144 */ -#endif - -#if PACKETVER == 20160511 - packetKeys(0x3C666FE2,0x27E84E3E,0x53E11BA5); /* 4144 */ -#endif - -#if PACKETVER == 20160525 - packetKeys(0x485C45B6,0x47DC6192,0x76B34A36); /* 4144 */ -#endif - -#if PACKETVER == 20160608 - packetKeys(0x11D74609,0x77C43E8A,0x44290F53); /* 4144 */ -#endif - -#if PACKETVER == 20160615 - packetKeys(0x062C5C26,0x6CF47E82,0x4DD53480); /* 4144 */ -#endif - -#if PACKETVER == 20160630 - packetKeys(0x0DF31CCC,0x54281606,0x5C4C6855); /* 4144 */ -#endif - -#if PACKETVER == 20160706 - packetKeys(0x33A766D0,0x743F04F8,0x0FA0276C); /* 4144 */ -#endif - -#if PACKETVER == 20160713 - packetKeys(0x714F2495,0x7DDC6F32,0x3FD8533D); /* 4144 */ +// 2017-05-24aRagexeRE +#if PACKETVER == 20170524 +// shuffle packets + packet(0x0364,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0368,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0802,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x085e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x085f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0860,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0864,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0866,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0868,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x086d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0873,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0874,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x087d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0882,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x088d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0894,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x089c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08a1,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0923,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0925,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0934,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0946,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0958,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x095a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x095b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0964,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0967,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0968,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID #endif -#if PACKETVER == 20160720 - packetKeys(0x4F8A19C0,0x2D8E085C,0x37BB67D6); /* 4144 */ +// 2017-05-31aRagexeRE +#if PACKETVER == 20170531 +// shuffle packets + packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0369,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x07e4,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x07ec,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0819,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x085b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x085f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0861,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0868,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0873,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0875,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0878,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x087b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0885,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x088d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0894,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x089c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08a2,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x08ac,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x08ad,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x092d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0933,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0937,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0940,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0945,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0963,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0968,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO +#endif + +// 2017-06-07bRagexeRE +#if PACKETVER == 20170607 +// shuffle packets + packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x07e4,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x085a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x085e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0862,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0863,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0864,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0871,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0873,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0875,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0885,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x088a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0897,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x089d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a9,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08ab,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0917,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0918,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0919,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0925,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0927,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0931,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0934,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0938,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x093d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0942,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0944,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0949,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE +#endif + +// 2017-06-14bRagexeRE +#if PACKETVER == 20170614 +// shuffle packets + packet(0x023b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0361,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0364,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0367,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0437,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0838,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x083c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0860,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0865,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0866,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0867,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x086b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x086c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0877,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x087e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0889,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0899,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x089d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08a2,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08ad,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x091b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0928,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x092f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0936,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0944,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0957,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0963,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK #endif -#if PACKETVER == 20160727 - packetKeys(0x3C6952AB,0x26E4077F,0x37E25DF7); /* 4144 */ +// 2017-06-14bRagexeRE +#if PACKETVER >= 20170614 +// new packets + packet(0x0acf,52); + packet(0x0ad0,11); + packet(0x0ad1,-1); #endif -#if PACKETVER == 20160831 - packetKeys(0x564E13B0,0x7F680549,0x382D273B); /* 4144 */ +// 2017-06-21aRagexeRE +#if PACKETVER == 20170621 +// shuffle packets + packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0365,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0366,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0802,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x087d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0885,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0889,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a8,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0956,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0957,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x095b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x095c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0961,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -#if PACKETVER == 20160907 - packetKeys(0x32E5237D,0x57BD4DBD,0x5DBD5DBD); /* 4144 */ +// 2017-06-21aRagexeRE +#if PACKETVER >= 20170621 +// changed packet sizes + packet(0x0acf,57); #endif -#if PACKETVER == 20160921 - packetKeys(0x11CD15CD,0x15CD15CD,0x15CD15CD); /* 4144 */ +// 2017-06-28bRagexeRE +#if PACKETVER == 20170628 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0863,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -#if PACKETVER == 20161012 - packetKeys(0x5E2311F2,0x14FD012C,0x76EB64F6); /* 4144 */ +// 2017-07-05aRagexeRE +#if PACKETVER == 20170705 +// shuffle packets + packet(0x0202,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0886,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x088d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x088e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x089a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x089d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x091a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x092f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0930,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0932,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0934,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x094c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -#if PACKETVER == 20161026 - packetKeys(0x2CB86AE6,0x7D12660E,0x1B004DEB); /* 4144 */ +// 2017-07-05aRagexeRE +#if PACKETVER >= 20170705 +// changed packet sizes + packet(0x0acf,64); #endif -#if PACKETVER == 20161109 - packetKeys(0x0A5277C0,0x2DB17506,0x0E8F26DA); /* 4144 */ +// 2017-07-12bRagexeRE +#if PACKETVER == 20170712 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0944,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -#if PACKETVER == 20161207 - packetKeys(0x52D267AA,0x4FE42156,0x1292153E); /* 4144 */ +// 2017-07-19aRagexeRE +#if PACKETVER == 20170719 +// shuffle packets + packet(0x022d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0367,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0368,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0369,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x07e4,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x085a,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x085e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0863,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x087d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0881,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0882,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0885,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0891,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0898,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x089d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x08a6,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a8,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x091b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x091f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x092c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x092e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x092f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x093d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x093e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0944,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0946,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE #endif -#if PACKETVER == 20161214 - packetKeys(0x4DDE217B,0x07863AE0,0x5B591656); /* 4144 */ +// 2017-07-19aRagexeRE +#if PACKETVER >= 20170719 +// new packets + packet(0x0ad2,30); + packet(0x0ad3,-1); + packet(0x0ad4,-1); + packet(0x0ad5,2); + packet(0x0ad6,2); + packet(0x0ad7,8); + packet(0x0ad8,8); + packet(0x0ad9,-1); +// changed packet sizes #endif -#if PACKETVER == 20161221 - packetKeys(0x69CB4F56,0x793C165E,0x673A2354); /* 4144 */ +// 2017-07-26cRagexeRE +#if PACKETVER == 20170726 +// shuffle packets + packet(0x0363,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0369,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0438,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0838,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0873,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0874,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0878,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0881,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0888,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x088e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08a3,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08a7,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08aa,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x08ab,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08ac,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x091d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x091e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x091f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0921,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0923,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0943,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x094f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0950,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0952,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0954,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x095a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0963,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO +#endif + +// 2017-07-26cRagexeRE +#if PACKETVER >= 20170726 +// new packets + packet(0x0ada,30); #endif -#if PACKETVER == 20170125 - packetKeys(0x066E04FE,0x3004224A,0x04FF0458); /* 4144 */ +// 2017-08-01aRagexeRE +#if PACKETVER == 20170801 +// shuffle packets + packet(0x022d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0281,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x087d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a6,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x094f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x095a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -#if PACKETVER == 20170208 - packetKeys(0x6A764E5F,0x0609570D,0x28AE07FA); /* 4144 */ +// 2017-08-16cRagexeRE +#if PACKETVER == 20170816 +// shuffle packets + packet(0x022d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x035f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0362,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0438,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x085a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0862,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0864,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x087e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0881,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0882,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0888,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0889,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x08a3,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a7,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a9,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08ac,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x091c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0921,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0925,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x092c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x093a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x093d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0940,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0941,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0950,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0959,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0960,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO #endif -#if PACKETVER == 20170228 - packetKeys(0x771D4F2B,0x20EF1F4C,0x0D5135C8); /* 4144 */ +// 2017-08-23aRagexeRE +#if PACKETVER == 20170823 +// shuffle packets + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x086d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08ac,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x095b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -#if PACKETVER == 20170308 - packetKeys(0x653470A9,0x6B316A71,0x5C712C71); /* 4144 */ +// 2017-08-30bRagexeRE +#if PACKETVER == 20170830 +// shuffle packets + packet(0x0281,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x02c4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0363,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0364,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0860,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0865,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x086a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0875,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0884,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0885,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0888,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0899,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x089a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x089e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a8,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x091e,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0921,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0925,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x092e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0939,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x093e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0940,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0942,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0943,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0947,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0951,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0959,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND #endif -#if PACKETVER == 20170315 - packetKeys(0x399A0856,0x56642A94,0x7F77157D); /* 4144 */ +// 2017-08-30aRagexeRE +#if PACKETVER >= 20170830 +// new packets + packet(0x0adb,-1); +// changed packet sizes + packet(0x006d,157); // HC_ACCEPT_MAKECHAR + packet(0x08e3,157); // HC_UPDATE_CHARINFO + packet(0x0a49,20); #endif -#if PACKETVER == 20170322 - packetKeys(0x2050167B,0x01731233,0x40337033); /* 4144 */ +// 2017-09-06cRagexeRE +#if PACKETVER == 20170906 +// shuffle packets + packet(0x0202,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0281,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0802,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0860,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0866,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x086c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x087b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a2,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a3,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a7,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x091a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x091e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0953,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -#if PACKETVER == 20170329 - packetKeys(0x18B31A80,0x1B0B1D56,0x16857D6A); /* 4144 */ +// 2017-09-06cRagexeRE +#if PACKETVER >= 20170906 +// new packets + packet(0x0adc,6); #endif -#if PACKETVER == 20170405 - packetKeys(0x1FDE7DAC,0x2F9F5B63,0x3F2062AF); /* 4144 */ +// 2017-09-13bRagexeRE +#if PACKETVER == 20170913 +// shuffle packets + packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x035f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0437,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x07e4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0817,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0835,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x085a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0860,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0865,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0866,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x088c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0890,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0891,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0892,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a6,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x08a7,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08aa,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08ab,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08ac,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08ad,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x091b,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x091d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0920,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0923,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0925,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0927,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x095a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x095c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID +#endif + +// 2017-09-13bRagexeRE +#if PACKETVER >= 20170913 +// new packets + packet(0x0add,22); #endif -#if PACKETVER == 20170517 - packetKeys(0x2CC4749A,0x1FA954DC,0x72276857); /* 4144 */ +// 2017-09-20bRagexeRE +#if PACKETVER == 20170920 +// shuffle packets + packet(0x0369,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0436,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x07ec,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x085a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0861,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0862,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0864,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0865,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x086a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x086c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0874,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0875,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0889,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x088e,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x089b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0919,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0921,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0923,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0926,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x092e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0937,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0939,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0945,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x094c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x095d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0961,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0966,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x096a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE #endif -#if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3) - packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3); +#if PACKETVER >= 20170920 +// new packets + packet(0x0ade,6); + packet(0x0adf,58); #endif #endif /* MAP_PACKETS_H */ diff --git a/src/map/packets_keys.h b/src/map/packets_keys.h new file mode 100644 index 000000000..424956bc9 --- /dev/null +++ b/src/map/packets_keys.h @@ -0,0 +1,2139 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2013-2015 Hercules Dev Team + * + * Hercules is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef MAP_PACKETS_KEYS_H +#define MAP_PACKETS_KEYS_H + +#ifndef packetKeys + #define packetKeys(a,b,c) +#endif + +/* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */ + +// 2010-11-23aRagexe, 2010-11-23aRagexeRE +#if PACKETVER == 20101123 + packetKeys(0x49357D72,0x22C370A1,0x5F836591); +#endif + +// 2010-11-24aRagexe, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-24dRagexe, 2010-11-24eRagexe, 2010-11-24fRagexe +#if PACKETVER == 20101124 + packetKeys(0x49357D72,0x22C370A1,0x5F836591); +#endif + +// 2010-11-26aRagexe, 2010-11-26aRagexeRE +#if PACKETVER == 20101126 + packetKeys(0x49357D72,0x22C370A1,0x5F836591); +#endif + +// 2010-11-30aRagexe, 2010-11-30aRagexeRE +#if PACKETVER == 20101130 + packetKeys(0x3726593C,0x0EFD5EE8,0x79036DF9); +#endif + +// 2010-12-07aRagexeRE, 2010-12-07bRagexe +#if PACKETVER == 20101207 + packetKeys(0x66111112,0x2B7B53AA,0x04E76DF8); +#endif + +// 2010-12-14aRagexe, 2010-12-14aRagexeRE +#if PACKETVER == 20101214 + packetKeys(0x5E535D06,0x4E297F0E,0x400B6AD8); +#endif + +// 2010-12-21aRagexe, 2010-12-21aRagexeRE +#if PACKETVER == 20101221 + packetKeys(0x0448466A,0x41554AC9,0x5B4710B2); +#endif + +// 2010-12-28aRagexe, 2010-12-28aRagexeRE +#if PACKETVER == 20101228 + packetKeys(0x50C638A5,0x4BF86B20,0x480C3746); +#endif + +// 2011-01-04aRagexe, 2011-01-04aRagexeRE +#if PACKETVER == 20110104 + packetKeys(0x55DB401F,0x047D4E02,0x6D8F2EA3); +#endif + +// 2011-01-11aRagexe, 2011-01-11aRagexeRE +#if PACKETVER == 20110111 + packetKeys(0x2D5F6302,0x2A361CD6,0x39D661D6); +#endif + +// 2011-01-18aRagexe, 2011-01-18aRagexeRE +#if PACKETVER == 20110118 + packetKeys(0x3C777D2D,0x00541A1D,0x5E0053A2); +#endif + +// 2011-01-25aRagexe, 2011-01-25aRagexeRE +#if PACKETVER == 20110125 + packetKeys(0x6BB84BB0,0x4C004382,0x10AE3260); +#endif + +// 2011-01-26aRagexe, 2011-01-26aRagexeRE, 2011-01-26bRagexe, 2011-01-26bRagexeRE +#if PACKETVER == 20110126 + packetKeys(0x6BB84BB0,0x4C004382,0x10AE3260); +#endif + +// 2011-01-31aRagexe, 2011-01-31aRagexeRE, 2011-01-31bRagexe, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE +#if PACKETVER == 20110131 + packetKeys(0x6BB84BB0,0x4C004382,0x10AE3260); +#endif + +// 2011-02-01aRagexe +#if PACKETVER == 20110201 + packetKeys(0x68871E62,0x60D17266,0x74726DAA); +#endif + +// 2011-02-08aRagexe, 2011-02-08aRagexeRE +#if PACKETVER == 20110208 + packetKeys(0x72BA4E9D,0x281E1DF1,0x208255AA); +#endif + +// 2011-02-10aRagexe, 2011-02-10bRagexe +#if PACKETVER == 20110210 + packetKeys(0x72BA4E9D,0x281E1DF1,0x208255AA); +#endif + +// 2011-02-15aRagexe, 2011-02-15aRagexeRE +#if PACKETVER == 20110215 + packetKeys(0x1B174D76,0x32005014,0x7B8B72D5); +#endif + +// 2011-02-22aRagexe, 2011-02-22aRagexeRE +#if PACKETVER == 20110222 + packetKeys(0x48F73B56,0x155F7D66,0x44AB57CE); +#endif + +// 2011-02-23aRagexe, 2011-02-23aRagexeRE, 2011-02-23bRagexe, 2011-02-23bRagexeRE +#if PACKETVER == 20110223 + packetKeys(0x48F73B56,0x155F7D66,0x44AB57CE); +#endif + +// 2011-02-24aRagexe, 2011-02-24aRagexeRE +#if PACKETVER == 20110224 + packetKeys(0x48F73B56,0x155F7D66,0x44AB57CE); +#endif + +// 2011-02-25aRagexe, 2011-02-25aRagexeRE, 2011-02-25bRagexe +#if PACKETVER == 20110225 + packetKeys(0x48F73B56,0x155F7D66,0x44AB57CE); +#endif + +// 2011-02-28aRagexe, 2011-02-28aRagexeRE +#if PACKETVER == 20110228 + packetKeys(0x26385EBF,0x7A8C7534,0x60AE2C34); +#endif + +// 2011-03-08aRagexe, 2011-03-08aRagexeRE +#if PACKETVER == 20110308 + packetKeys(0x003F1B20,0x7A1E12A3,0x34994AAD); +#endif + +// 2011-03-09aRagexe, 2011-03-09aRagexeRE, 2011-03-09bRagexe, 2011-03-09bRagexeRE, 2011-03-09cRagexe, 2011-03-09cRagexeRE, 2011-03-09dRagexe, 2011-03-09dRagexeRE +#if PACKETVER == 20110309 + packetKeys(0x003F1B20,0x7A1E12A3,0x34994AAD); +#endif + +// 2011-03-15aRagexe, 2011-03-15aRagexeRE +#if PACKETVER == 20110315 + packetKeys(0x62967D7D,0x34833D1A,0x26D45ECA); +#endif + +// 2011-03-16aRagexe +#if PACKETVER == 20110316 + packetKeys(0x62967D7D,0x34833D1A,0x26D45ECA); +#endif + +// 2011-03-22aRagexe, 2011-03-22aRagexeRE +#if PACKETVER == 20110322 + packetKeys(0x5870617C,0x638D5376,0x739F4817); +#endif + +// 2011-03-29aRagexe, 2011-03-29aRagexeRE +#if PACKETVER == 20110329 + packetKeys(0x06900BB7,0x45DB687B,0x197B017B); +#endif + +// 2011-03-30aRagexe, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE +#if PACKETVER == 20110330 + packetKeys(0x06900BB7,0x45DB687B,0x197B017B); +#endif + +// 2011-04-05aRagexe, 2011-04-05aRagexeRE +#if PACKETVER == 20110405 + packetKeys(0x248D5C37,0x1C6A1B37,0x1F644FDB); +#endif + +// 2011-04-12aRagexeRE, 2011-04-12bRagexe +#if PACKETVER == 20110412 + packetKeys(0x3DE86BFC,0x0DD47F80,0x42481C9B); +#endif + +// 2011-04-19aRagexe, 2011-04-19aRagexeRE +#if PACKETVER == 20110419 + packetKeys(0x26073204,0x62013A51,0x22AC58E0); +#endif + +// 2011-04-26aRagexe, 2011-04-26aRagexeRE +#if PACKETVER == 20110426 + packetKeys(0x392813F9,0x09905054,0x40DB732E); +#endif + +// 2011-05-03aRagexe, 2011-05-03aRagexeRE +#if PACKETVER == 20110503 + packetKeys(0x28BE32EE,0x1D506FCB,0x63832421); +#endif + +// 2011-05-11aRagexe, 2011-05-11aRagexeRE +#if PACKETVER == 20110511 + packetKeys(0x6A715733,0x3C5C0D74,0x408A48EC); +#endif + +// 2011-05-17aRagexe, 2011-05-17bRagexeRE +#if PACKETVER == 20110517 + packetKeys(0x07FE0C72,0x46766BAD,0x5EB5126A); +#endif + +// 2011-05-23aRagexe +#if PACKETVER == 20110523 + packetKeys(0x69166916,0x69166916,0x69166916); +#endif + +// 2011-05-26aRagexeRE, 2011-05-26bRagexe +#if PACKETVER == 20110526 + packetKeys(0x69166916,0x69166916,0x69166916); +#endif + +// 2011-05-31aRagexe, 2011-05-31aRagexeRE +#if PACKETVER == 20110531 + packetKeys(0x5ABA2C7C,0x3CD22073,0x78953988); +#endif + +// 2011-06-07aRagexe, 2011-06-07aRagexeRE +#if PACKETVER == 20110607 + packetKeys(0x76B0426C,0x0DD74DEB,0x1F92228E); +#endif + +// 2011-06-08aRagexe, 2011-06-08aRagexeRE, 2011-06-08bRagexe, 2011-06-08bRagexeRE, 2011-06-08cRagexe, 2011-06-08cRagexeRE +#if PACKETVER == 20110608 + packetKeys(0x76B0426C,0x0DD74DEB,0x1F92228E); +#endif + +// 2011-06-09aRagexe, 2011-06-09aRagexeRE +#if PACKETVER == 20110609 + packetKeys(0x76B0426C,0x0DD74DEB,0x1F92228E); +#endif + +// 2011-06-14aRagexe, 2011-06-14bRagexeRE +#if PACKETVER == 20110614 + packetKeys(0x5749027B,0x71710972,0x5B096475); +#endif + +// 2011-06-20aRagexe +#if PACKETVER == 20110620 + packetKeys(0x3A1760D4,0x254E0DF9,0x440E2357); +#endif + +// 2011-06-27aRagexe +#if PACKETVER == 20110627 + packetKeys(0x3EFC29BD,0x699E4B11,0x7B900A13); +#endif + +// 2011-07-05aRagexe +#if PACKETVER == 20110705 + packetKeys(0x48801A5E,0x68FC7726,0x081D7F6E); +#endif + +// 2011-07-11bRagexe +#if PACKETVER == 20110711 + packetKeys(0x489C544B,0x33BA1C25,0x2DE66E4E); +#endif + +// 2011-07-13aRagexe, 2011-07-13aRagexeRE, 2011-07-13bRagexe, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE +#if PACKETVER == 20110713 + packetKeys(0x489C544B,0x33BA1C25,0x2DE66E4E); +#endif + +// 2011-07-18aRagexe +#if PACKETVER == 20110718 + packetKeys(0x08464674,0x1EEB3BD5,0x33395199); +#endif + +// 2011-07-26aRagexe, 2011-07-26aRagexeRE +#if PACKETVER == 20110726 + packetKeys(0x41E5730B,0x119C6C11,0x5356524A); +#endif + +// 2011-08-02aRagexe +#if PACKETVER == 20110802 + packetKeys(0x607C08A1,0x65B20528,0x360571E9); +#endif + +// 2011-08-09aRagexe +#if PACKETVER == 20110809 + packetKeys(0x742A559A,0x047F425D,0x5C8C2CA0); +#endif + +// 2011-08-16aRagexe, 2011-08-16aRagexeRE +#if PACKETVER == 20110816 + packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED); +#endif + +// 2011-08-17aRagexe, 2011-08-17aRagexeRE, 2011-08-17bRagexe, 2011-08-17bRagexeRE +#if PACKETVER == 20110817 + packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED); +#endif + +// 2011-08-23aRagexe, 2011-08-23aRagexeRE +#if PACKETVER == 20110823 + packetKeys(0x35C91401,0x262A5556,0x28FA03AA); +#endif + +// 2011-08-24aRagexe, 2011-08-24aRagexeRE, 2011-08-24bRagexeRE +#if PACKETVER == 20110824 + packetKeys(0x35C91401,0x262A5556,0x28FA03AA); +#endif + +// 2011-08-31aRagexe, 2011-08-31aRagexeRE, 2011-08-31bRagexe, 2011-08-31bRagexeRE, 2011-08-31cRagexe, 2011-08-31cRagexeRE, 2011-08-31dRagexeRE, 2011-08-31eRagexeRE +#if PACKETVER == 20110831 + packetKeys(0x3AD67ED0,0x44703C69,0x6F876809); +#endif + +// 2011-09-06aRagexe, 2011-09-06aRagexeRE +#if PACKETVER == 20110906 + packetKeys(0x350124EC,0x39A14595,0x0DE56125); +#endif + +// 2011-09-14aRagexe, 2011-09-14aRagexeRE +#if PACKETVER == 20110914 + packetKeys(0x350124EC,0x39A14595,0x0DE56125); +#endif + +// 2011-09-20aRagexe, 2011-09-20aRagexeRE, 2011-09-20aRagexeRE2 +#if PACKETVER == 20110920 + packetKeys(0x79C91A12,0x20450CC0,0x584B2A38); +#endif + +// 2011-09-28aRagexe, 2011-09-28aRagexe-retry, 2011-09-28aRagexeRE +#if PACKETVER == 20110928 + packetKeys(0x26567512,0x4B0732DF,0x57D266C6); +#endif + +// 2011-09-29aRagexe, 2011-09-29aRagexeRE +#if PACKETVER == 20110929 + packetKeys(0x26567512,0x4B0732DF,0x57D266C6); +#endif + +// 2011-10-04aRagexe, 2011-10-04aRagexeRE +#if PACKETVER == 20111004 + packetKeys(0x291E6762,0x77CD391A,0x60AC2F16); +#endif + +// 2011-10-05aRagexe, 2011-10-05aRagexeRE +#if PACKETVER == 20111005 + packetKeys(0x291E6762,0x77CD391A,0x60AC2F16); +#endif + +// 2011-10-10aRagexe, 2011-10-10bRagexeRE +#if PACKETVER == 20111010 + packetKeys(0x7F3C2D29,0x59B01DE6,0x1DBB44CA); +#endif + +// 2011-10-12aRagexeRE, 2011-10-12bRagexe +#if PACKETVER == 20111012 + packetKeys(0x7F3C2D29,0x59B01DE6,0x1DBB44CA); +#endif + +// 2011-10-17aRagexe, 2011-10-17aRagexeRE +#if PACKETVER == 20111017 + packetKeys(0x357D55DC,0x5A8D759F,0x245C30F5); +#endif + +// 2011-10-19aRagexeRE, 2011-10-19bRagexeRE +#if PACKETVER == 20111019 + packetKeys(0x357D55DC,0x5A8D759F,0x245C30F5); +#endif + +// 2011-10-21aRagexe, 2011-10-21aRagexeRE, 2011-10-21cRagexe +#if PACKETVER == 20111021 + packetKeys(0x357D55DC,0x5A8D759F,0x245C30F5); +#endif + +// 2011-10-25aRagexe, 2011-10-25aRagexeRE +#if PACKETVER == 20111025 + packetKeys(0x50AE1A63,0x3CE579B5,0x29C10406); +#endif + +// 2011-11-01cRagexe, 2011-11-01cRagexeRE +#if PACKETVER == 20111101 + packetKeys(0x5324329D,0x5D545D52,0x06137269); +#endif + +// 2011-11-02aRagexe, 2011-11-02aRagexeRE +#if PACKETVER == 20111102 + packetKeys(0x5324329D,0x5D545D52,0x06137269); +#endif + +// 2011-11-08aRagexe, 2011-11-08aRagexeRE +#if PACKETVER == 20111108 + packetKeys(0x0B642BDA,0x6ECB1D1C,0x61C7454B); +#endif + +// 2011-11-09aRagexe, 2011-11-09aRagexeRE, 2011-11-09bRagexe, 2011-11-09cRagexe, 2011-11-09dRagexe, 2011-11-09eRagexe +#if PACKETVER == 20111109 + packetKeys(0x0B642BDA,0x6ECB1D1C,0x61C7454B); +#endif + +// 2011-11-14aRagexe, 2011-11-14aRagexeRE +#if PACKETVER == 20111114 + packetKeys(0x419D0DB0,0x74916BF4,0x027371B4); +#endif + +// 2011-11-16aRagexe, 2011-11-16aRagexeRE +#if PACKETVER == 20111116 + packetKeys(0x419D0DB0,0x74916BF4,0x027371B4); +#endif + +// 2011-11-22aRagexe, 2011-11-22aRagexeRE +#if PACKETVER == 20111122 + packetKeys(0x3B550F07,0x1F666C7C,0x60304EF5); +#endif + +// 2011-11-23aRagexe +#if PACKETVER == 20111123 + packetKeys(0x3B550F07,0x1F666C7C,0x60304EF5); +#endif + +// 2011-12-07aRagexe, 2011-12-07aRagexeRE +#if PACKETVER == 20111207 + packetKeys(0x2A610886,0x3E09165E,0x57C11888); +#endif + +// 2011-12-13aRagexe, 2011-12-13aRagexeRE +#if PACKETVER == 20111213 + packetKeys(0x5151306B,0x7AE32886,0x53060628); +#endif + +// 2011-12-14aRagexe, 2011-12-14aRagexeRE, 2011-12-14bRagexeRE, 2011-12-14cRagexeRE +#if PACKETVER == 20111214 + packetKeys(0x5151306B,0x7AE32886,0x53060628); +#endif + +// 2011-12-20bRagexe, 2011-12-20bRagexeRE +#if PACKETVER == 20111220 + packetKeys(0x05D53871,0x7D0027B4,0x29975333); +#endif + +// 2011-12-27aRagexe, 2011-12-27aRagexeRE +#if PACKETVER == 20111227 + packetKeys(0x0FF87E93,0x6CFF7860,0x3A3D1DEC); +#endif + +// 2011-12-28aRagexe, 2011-12-28aRagexeRE +#if PACKETVER == 20111228 + packetKeys(0x0FF87E93,0x6CFF7860,0x3A3D1DEC); +#endif + +// 2012-01-03aRagexe, 2012-01-03bRagexeRE +#if PACKETVER == 20120103 + packetKeys(0x262034A1,0x674542A5,0x73A50BA5); +#endif + +// 2012-01-04aRagexe, 2012-01-04aRagexeRE, 2012-01-04bRagexe +#if PACKETVER == 20120104 + packetKeys(0x262034A1,0x674542A5,0x73A50BA5); +#endif + +// 2012-01-10aRagexeRE, 2012-01-10bRagexe +#if PACKETVER == 20120110 + packetKeys(0x2B412AFC,0x4FF94487,0x6705339D); +#endif + +// 2012-01-17aRagexe, 2012-01-17aRagexeRE +#if PACKETVER == 20120117 + packetKeys(0x24E32C2E,0x48DD17A5,0x64F8771A); +#endif + +// 2012-01-18aRagexe +#if PACKETVER == 20120118 + packetKeys(0x24E32C2E,0x48DD17A5,0x64F8771A); +#endif + +// 2012-01-20aRagexe, 2012-01-20aRagexeRE +#if PACKETVER == 20120120 + packetKeys(0x504345D0,0x3D427B1B,0x794C2DCC); +#endif + +// 2012-01-31aRagexe, 2012-01-31cRagexeRE +#if PACKETVER == 20120131 + packetKeys(0x2CFC0A71,0x2BA91D8D,0x087E39E0); +#endif + +// 2012-02-01aRagexeRE +#if PACKETVER == 20120201 + packetKeys(0x2CFC0A71,0x2BA91D8D,0x087E39E0); +#endif + +// 2012-02-02aRagexe, 2012-02-02aRagexeRE, 2012-02-02bRagexe, 2012-02-02bRagexeRE +#if PACKETVER == 20120202 + packetKeys(0x2CFC0A71,0x2BA91D8D,0x087E39E0); +#endif + +// 2012-02-07bRagexe, 2012-02-07bRagexeRE +#if PACKETVER == 20120207 + packetKeys(0x1D373F5D,0x5ACD604D,0x1C4D7C4D); +#endif + +// 2012-02-08aRagexe +#if PACKETVER == 20120208 + packetKeys(0x1D373F5D,0x5ACD604D,0x1C4D7C4D); +#endif + +// 2012-02-09aRagexe +#if PACKETVER == 20120209 + packetKeys(0x1D373F5D,0x5ACD604D,0x1C4D7C4D); +#endif + +// 2012-02-14bRagexe, 2012-02-14bRagexeRE +#if PACKETVER == 20120214 + packetKeys(0x7A255EFA,0x30977276,0x2D4A0448); +#endif + +// 2012-02-15aRagexe +#if PACKETVER == 20120215 + packetKeys(0x7A255EFA,0x30977276,0x2D4A0448); +#endif + +// 2012-02-21aRagexe, 2012-02-21aRagexeRE +#if PACKETVER == 20120221 + packetKeys(0x1CA5130F,0x43ED240A,0x7FEA3BE0); +#endif + +// 2012-02-22aRagexe, 2012-02-22aRagexeRE +#if PACKETVER == 20120222 + packetKeys(0x1CA5130F,0x43ED240A,0x7FEA3BE0); +#endif + +// 2012-02-28bRagexe, 2012-02-28bRagexeRE +#if PACKETVER == 20120228 + packetKeys(0x520B4C64,0x2800407D,0x47651458); +#endif + +// 2012-02-29aRagexe, 2012-02-29aRagexeRE +#if PACKETVER == 20120229 + packetKeys(0x520B4C64,0x2800407D,0x47651458); +#endif + +// 2012-03-07aRagexe, 2012-03-07aRagexeRE, 2012-03-07bRagexe, 2012-03-07bRagexeRE, 2012-03-07cRagexe, 2012-03-07cRagexeRE, 2012-03-07dRagexe, 2012-03-07dRagexeRE, 2012-03-07eRagexeRE, 2012-03-07fRagexeRE +#if PACKETVER == 20120307 + packetKeys(0x382A6DEF,0x5CBE7202,0x61F46637); +#endif + +// 2012-03-14aRagexe, 2012-03-14aRagexeRE, 2012-03-14bRagexe, 2012-03-14bRagexeRE, 2012-03-14cRagexe, 2012-03-14cRagexeRE +#if PACKETVER == 20120314 + packetKeys(0x689C1729,0x11812639,0x60F82967); +#endif + +// 2012-03-20aRagexe, 2012-03-20aRagexeRE +#if PACKETVER == 20120320 + packetKeys(0x21F9683F,0x710C5CA5,0x1FD910E9); +#endif + +// 2012-03-21aRagexeRE +#if PACKETVER == 20120321 + packetKeys(0x21F9683F,0x710C5CA5,0x1FD910E9); +#endif + +// 2012-03-28aRagexe, 2012-03-28aRagexeRE, 2012-03-28bRagexe, 2012-03-28bRagexeRE, 2012-03-28cRagexe, 2012-03-28cRagexeRE, 2012-03-28dRagexe, 2012-03-28dRagexeRE, 2012-03-28eRagexeRE, 2012-03-28fRagexeRE, 2012-03-28gRagexeRE +#if PACKETVER == 20120328 + packetKeys(0x75B8553B,0x37F20B12,0x385C2B40); +#endif + +// 2012-04-04aRagexe, 2012-04-04aRagexeRE +#if PACKETVER == 20120404 + packetKeys(0x0036310C,0x2DCD0BED,0x1EE62A78); +#endif + +// 2012-04-10aRagexe, 2012-04-10aRagexeRE +#if PACKETVER == 20120410 + packetKeys(0x01581359,0x452D6FFA,0x6AFB6E2E); +#endif + +// 2012-04-17aRagexe, 2012-04-17aRagexeRE +#if PACKETVER == 20120417 + packetKeys(0x01540E48,0x13041224,0x31247924); +#endif + +// 2012-04-18aRagexeRE +#if PACKETVER == 20120418 + packetKeys(0x01540E48,0x13041224,0x31247924); +#endif + +// 2012-04-24aRagexe, 2012-04-24aRagexeRE +#if PACKETVER == 20120424 + packetKeys(0x411D1DBB,0x4CBA4848,0x1A432FC4); +#endif + +// 2012-05-02aRagexeRE +#if PACKETVER == 20120502 + packetKeys(0x37A91D19,0x10190019,0x00190019); +#endif + +// 2012-05-03aRagexe, 2012-05-03aRagexeRE, 2012-05-03bRagexe +#if PACKETVER == 20120503 + packetKeys(0x37A91D19,0x10190019,0x00190019); +#endif + +// 2012-05-08aRagexe, 2012-05-08aRagexeRE +#if PACKETVER == 20120508 + packetKeys(0x16CF3301,0x1F472B9B,0x0B4A3CD2); +#endif + +// 2012-05-09aRagexeRE, 2012-05-09bRagexeRE +#if PACKETVER == 20120509 + packetKeys(0x16CF3301,0x1F472B9B,0x0B4A3CD2); +#endif + +// 2012-05-15aRagexe, 2012-05-15aRagexeRE +#if PACKETVER == 20120515 + packetKeys(0x4A715EF9,0x79103E4F,0x405C1238); +#endif + +// 2012-05-22aRagexe +#if PACKETVER == 20120522 + packetKeys(0x70EB4CCB,0x0487713C,0x398D4B08); +#endif + +// 2012-05-23aRagexe, 2012-05-23aRagexeRE, 2012-05-23bRagexeRE +#if PACKETVER == 20120523 + packetKeys(0x70EB4CCB,0x0487713C,0x398D4B08); +#endif + +// 2012-05-25aRagexeRE +#if PACKETVER == 20120525 + packetKeys(0x70EB4CCB,0x0487713C,0x398D4B08); +#endif + +// 2012-05-29bRagexe, 2012-05-29bRagexeRE, 2012-05-29bragexe +#if PACKETVER == 20120529 + packetKeys(0x53415DDE,0x34953E16,0x27623DF2); +#endif + +// 2012-06-01aRagexeRE +#if PACKETVER == 20120601 + packetKeys(0x68CA3080,0x31B74BDD,0x505208F1); +#endif + +// 2012-06-04aRagexe, 2012-06-04aragexe +#if PACKETVER == 20120604 + packetKeys(0x68CA3080,0x31B74BDD,0x505208F1); +#endif + +// 2012-06-05aRagexeRE +#if PACKETVER == 20120605 + packetKeys(0x68CA3080,0x31B74BDD,0x505208F1); +#endif + +// 2012-06-12aRagexe, 2012-06-12aRagexeRE, 2012-06-12aragexe +#if PACKETVER == 20120612 + packetKeys(0x32E45D64,0x35643564,0x35643564); +#endif + +// 2012-06-18aRagexe, 2012-06-18aRagexeRE, 2012-06-18aragexe +#if PACKETVER == 20120618 + packetKeys(0x261F261F,0x261F261F,0x261F261F); +#endif + +// 2012-06-26aRagexe, 2012-06-26aRagexeRE, 2012-06-26aragexe +#if PACKETVER == 20120626 + packetKeys(0x02277E66,0x045723F1,0x7107392C); +#endif + +// 2012-06-27aRagexe, 2012-06-27aRagexeRE, 2012-06-27aragexe +#if PACKETVER == 20120627 + packetKeys(0x02277E66,0x045723F1,0x7107392C); +#endif + +// 2012-07-02aRagexe, 2012-07-02aRagexeRE, 2012-07-02aragexe +#if PACKETVER == 20120702 + packetKeys(0x25733B31,0x53486CFD,0x398649BD); +#endif + +// 2012-07-10aRagexe, 2012-07-10aRagexeRE +#if PACKETVER == 20120710 + packetKeys(0x0E8B7AFB,0x6930362D,0x42D33A57); +#endif + +// 2012-07-12aRagexe, 2012-07-12aRagexeRE +#if PACKETVER == 20120712 + packetKeys(0x0E8B7AFB,0x6930362D,0x42D33A57); +#endif + +// 2012-07-16aRagexe, 2012-07-16aRagexeRE +#if PACKETVER == 20120716 + packetKeys(0x76052205,0x22052205,0x22052205); +#endif + +// 2012-07-24aRagexe, 2012-07-24aRagexeRE +#if PACKETVER == 20120724 + packetKeys(0x783D5BC6,0x3AAC2176,0x66616F02); +#endif + +// 2012-08-01aRagexe, 2012-08-01aRagexeRE, 2012-08-01bRagexe, 2012-08-01bRagexeRE +#if PACKETVER == 20120801 + packetKeys(0x71FB6768,0x5843166B,0x6CB445C6); +#endif + +// 2012-08-08aRagexe, 2012-08-08aRagexeRE, 2012-08-08bRagexe, 2012-08-08bRagexeRE, 2012-08-08cRagexe, 2012-08-08cRagexeRE, 2012-08-08dRagexeRE +#if PACKETVER == 20120808 + packetKeys(0x5D5068BB,0x36732065,0x47CF7367); +#endif + +// 2012-08-14aRagexe, 2012-08-14aRagexeRE, 2012-08-14bRagexe, 2012-08-14bRagexeRE +#if PACKETVER == 20120814 + packetKeys(0x203E21BD,0x047459FB,0x56AF5A97); +#endif + +// 2012-08-22aRagexe, 2012-08-22aRagexeRE, 2012-08-22bRagexe, 2012-08-22bRagexeRE, 2012-08-22cRagexe, 2012-08-22cRagexeRE +#if PACKETVER == 20120822 + packetKeys(0x06A92E7B,0x3D324F29,0x5FD63004); +#endif + +// 2012-08-30aRagexe, 2012-08-30aRagexeRE, 2012-08-30bRagexeRE +#if PACKETVER == 20120830 + packetKeys(0x0AF1363D,0x4AB33E3B,0x48421DBE); +#endif + +// 2012-09-05aRagexe, 2012-09-05aRagexeRE +#if PACKETVER == 20120905 + packetKeys(0x04F50D80,0x092F5C4D,0x29BF3DCF); +#endif + +// 2012-09-11aRagexe, 2012-09-11aRagexeRE +#if PACKETVER == 20120911 + packetKeys(0x1F3D1145,0x02DB3C32,0x4BE34C49); +#endif + +// 2012-09-19aRagexe, 2012-09-19aRagexeRE +#if PACKETVER == 20120919 + packetKeys(0x72E00F24,0x4EA02D80,0x7C803480); +#endif + +// 2012-09-25aRagexe, 2012-09-25aRagexeRE +#if PACKETVER == 20120925 + packetKeys(0x43A66E22,0x36C2229F,0x08172ECE); +#endif + +// 2012-09-26aRagexe, 2012-09-26aRagexeRE +#if PACKETVER == 20120926 + packetKeys(0x43A66E22,0x36C2229F,0x08172ECE); +#endif + +// 2012-10-10aRagexe, 2012-10-10aRagexeRE, 2012-10-10bRagexe, 2012-10-10bRagexeRE +#if PACKETVER == 20121010 + packetKeys(0x169733E2,0x4C4640DC,0x31636531); +#endif + +// 2012-10-11aRagexeRE +#if PACKETVER == 20121011 + packetKeys(0x169733E2,0x4C4640DC,0x31636531); +#endif + +// 2012-10-17aRagexe, 2012-10-17aRagexeRE, 2012-10-17bRagexe, 2012-10-17bRagexeRE +#if PACKETVER == 20121017 + packetKeys(0x340C0C31,0x33205EA8,0x55964BFF); +#endif + +// 2012-10-24aRagexe, 2012-10-24aRagexeRE +#if PACKETVER == 20121024 + packetKeys(0x6166335C,0x45393483,0x7EDC5478); +#endif + +// 2012-10-31aRagexe, 2012-10-31aRagexeRE +#if PACKETVER == 20121031 + packetKeys(0x66EB7ADB,0x242864BB,0x354A4CDE); +#endif + +// 2012-11-07aRagexe, 2012-11-07aRagexeRE +#if PACKETVER == 20121107 + packetKeys(0x49967892,0x48025276,0x1E192CA3); +#endif + +// 2012-11-14aRagexe, 2012-11-14aRagexeRE +#if PACKETVER == 20121114 + packetKeys(0x3473545C,0x2706445C,0x79647616); +#endif + +// 2012-11-21aRagexe, 2012-11-21aRagexeRE +#if PACKETVER == 20121121 + packetKeys(0x6EB54B0B,0x3F2A6BE5,0x0B2866E6); +#endif + +// 2012-11-28aRagexe, 2012-11-28aRagexeRE +#if PACKETVER == 20121128 + packetKeys(0x146D4D5E,0x5C3D161B,0x759250B8); +#endif + +// 2012-12-05aRagexe, 2012-12-05aRagexeRE, 2012-12-05bRagexe, 2012-12-05bRagexeRE +#if PACKETVER == 20121205 + packetKeys(0x218C64B6,0x4EFE17AE,0x27EA5E74); +#endif + +// 2012-12-12aRagexe, 2012-12-12aRagexeRE, 2012-12-12bRagexe, 2012-12-12bRagexeRE, 2012-12-12cRagexeRE +#if PACKETVER == 20121212 + packetKeys(0x7F8026F0,0x32EE2A4B,0x73746C0E); +#endif + +// 2012-12-18aRagexe, 2012-12-18aRagexeRE, 2012-12-18bRagexe, 2012-12-18bRagexeRE +#if PACKETVER == 20121218 + packetKeys(0x6A5450A2,0x4322498A,0x2C6574FB); +#endif + +// 2012-12-27aRagexe, 2012-12-27aRagexeRE +#if PACKETVER == 20121227 + packetKeys(0x71773018,0x36A14EEB,0x28CD5A20); +#endif + +// 2013-01-03aRagexe, 2013-01-03aRagexeRE +#if PACKETVER == 20130103 + packetKeys(0x1E1A559A,0x199A799A,0x799A799A); +#endif + +// 2013-01-07aRagexe +#if PACKETVER == 20130107 + packetKeys(0x1E1A559A,0x199A799A,0x799A799A); +#endif + +// 2013-01-09aRagexe, 2013-01-09aRagexeRE +#if PACKETVER == 20130109 + packetKeys(0x6435360F,0x0A283678,0x64A04AC7); +#endif + +// 2013-01-15aRagexeRE, 2013-01-15bRagexe +#if PACKETVER == 20130115 + packetKeys(0x273C25CD,0x06AA48AF,0x45A01BD4); +#endif + +// 2013-01-16aRagexe, 2013-01-16aRagexeRE, 2013-01-16bRagexe +#if PACKETVER == 20130116 + packetKeys(0x273C25CD,0x06AA48AF,0x45A01BD4); +#endif + +// 2013-01-21aRagexe, 2013-01-21aRagexeRE +#if PACKETVER == 20130121 + packetKeys(0x5DD874B0,0x7D98233F,0x28FF5566); +#endif + +// 2013-01-30aRagexe, 2013-01-30aRagexeRE +#if PACKETVER == 20130130 + packetKeys(0x1EA57961,0x27786856,0x30301FA0); +#endif + +// 2013-02-06aRagexe, 2013-02-06aRagexeRE +#if PACKETVER == 20130206 + packetKeys(0x1D8F4227,0x675812AA,0x29132929); +#endif + +// 2013-02-15aRagexe, 2013-02-15aRagexeRE, 2013-02-15bRagexe +#if PACKETVER == 20130215 + packetKeys(0x69FB1C38,0x7D386860,0x62805311); +#endif + +// 2013-02-20aRagexe, 2013-02-20bRagexeRE +#if PACKETVER == 20130220 + packetKeys(0x0D555256,0x28C26722,0x72220A22); +#endif + +// 2013-02-27aRagexe, 2013-02-27aRagexeRE +#if PACKETVER == 20130227 + packetKeys(0x44F86842,0x43786A7A,0x71654528); +#endif + +// 2013-03-06aRagexe, 2013-03-06aRagexeRE, 2013-03-06bRagexeRE +#if PACKETVER == 20130306 + packetKeys(0x7E274326,0x7D182DF2,0x4FC27DFA); +#endif + +// 2013-03-13aRagexe, 2013-03-13aRagexeRE, 2013-03-13bRagexeRE, 2013-03-13cRagexeRE +#if PACKETVER == 20130313 + packetKeys(0x560021C3,0x6A5D110F,0x52BD40A5); +#endif + +// 2013-03-20bRagexeRE, 2013-03-20cRagexeRE, 2013-03-20dRagexe, 2013-03-20eRagexe +#if PACKETVER == 20130320 + packetKeys(0x3F094C49,0x55F86C1E,0x58AA359A); +#endif + +// 2013-03-27bRagexe, 2013-03-27bRagexeRE +#if PACKETVER == 20130327 + packetKeys(0x114B1BA0,0x2C4F0AE2,0x5FA1183F); +#endif + +// 2013-04-03aRagexe, 2013-04-03aRagexeRE +#if PACKETVER == 20130403 + packetKeys(0x424A43AE,0x4A9D5EBE,0x4B3518A9); +#endif + +// 2013-04-10aRagexe, 2013-04-10aRagexeRE +#if PACKETVER == 20130410 + packetKeys(0x3AD52ACA,0x314D1AED,0x086E415E); +#endif + +// 2013-04-17aRagexe, 2013-04-17aRagexeRE +#if PACKETVER == 20130417 + packetKeys(0x7FB13B83,0x6E003749,0x07A02B94); +#endif + +// 2013-04-24aRagexe, 2013-04-24aRagexeRE +#if PACKETVER == 20130424 + packetKeys(0x79F679F6,0x79F679F6,0x79F679F6); +#endif + +// 2013-05-02aRagexe, 2013-05-02aRagexeRE, 2013-05-02bRagexe +#if PACKETVER == 20130502 + packetKeys(0x62E733B9,0x62204281,0x7F044DCA); +#endif + +// 2013-05-08bRagexe, 2013-05-08bRagexeRE, 2013-05-08cRagexe, 2013-05-08dRagexe, 2013-05-08eRagexe, 2013-05-08fRagexe +#if PACKETVER == 20130508 + packetKeys(0x25421E49,0x175200BA,0x6C0B5239); +#endif + +// 2013-05-15aRagexe, 2013-05-15aRagexeRE +#if PACKETVER == 20130515 + packetKeys(0x75794A38,0x58A96BC1,0x296E6FB8); +#endif + +// 2013-05-22Ragexe, 2013-05-22aRagexe, 2013-05-22aRagexeRE +#if PACKETVER == 20130522 + packetKeys(0x6948050B,0x06511D9D,0x725D4DF1); +#endif + +// 2013-05-29Ragexe, 2013-05-29aRagexe, 2013-05-29aRagexeRE +#if PACKETVER == 20130529 + packetKeys(0x023A6C87,0x14BF1F1E,0x5CC70CC9); +#endif + +// 2013-06-05Ragexe, 2013-06-05aRagexe, 2013-06-05bRagexe, 2013-06-05cRagexeRE +#if PACKETVER == 20130605 + packetKeys(0x646E08D9,0x5F153AB5,0x61B509B5); +#endif + +// 2013-06-12aRagexe, 2013-06-12bRagexe, 2013-06-12bRagexeRE, 2013-06-12cRagexe, 2013-06-12dRagexe, 2013-06-12eRagexe +#if PACKETVER == 20130612 + packetKeys(0x6D166F66,0x3C000FCF,0x295B0FCB); +#endif + +// 2013-06-18aRagexe, 2013-06-18aRagexeRE +#if PACKETVER == 20130618 + packetKeys(0x434115DE,0x34A10FE9,0x6791428E); +#endif + +// 2013-06-26aRagexeRE, 2013-06-26bRagexe, 2013-06-26bRagexeRE, 2013-06-26cRagexe +#if PACKETVER == 20130626 + packetKeys(0x38F453EF,0x6A040FD8,0x65BD6668); +#endif + +// 2013-07-03aRagexe, 2013-07-03bRagexeRE +#if PACKETVER == 20130703 + packetKeys(0x4FF90E23,0x0F1432F2,0x4CFA1EDA); +#endif + +// 2013-07-10aRagexeRE, 2013-07-10bRagexe, 2013-07-10bRagexeRE, 2013-07-10cRagexeRE, 2013-07-10dRagexeRE, 2013-07-10eRagexeRE +#if PACKETVER == 20130710 + packetKeys(0x4A9C4237,0x4CCF3F8F,0x458F758F); +#endif + +// 2013-07-17cRagexe, 2013-07-17cRagexeRE, 2013-07-17dRagexeRE, 2013-07-17eRagexeRE +#if PACKETVER == 20130717 + packetKeys(0x5EE5520C,0x5F9E00CF,0x2BED4F91); +#endif + +// 2013-07-24eRagexe, 2013-07-24eRagexeRE, 2013-07-24fRagexeRE +#if PACKETVER == 20130724 + packetKeys(0x3C243BF5,0x42CC4E2F,0x02106EC6); +#endif + +// 2013-07-31cRagexe, 2013-07-31cRagexeRE +#if PACKETVER == 20130731 + packetKeys(0x1E9D11A6,0x21A232B8,0x6A9E02B7); +#endif + +// 2013-08-07aRagexe, 2013-08-07aRagexeRE +#if PACKETVER == 20130807 + packetKeys(0x7E241DE0,0x5E805580,0x3D807D80); +#endif + +// 2013-08-14aRagexe, 2013-08-14aRagexeRE +#if PACKETVER == 20130814 + packetKeys(0x23A23148,0x0C41420E,0x53785AD7); +#endif + +// 2013-08-21bRagexe, 2013-08-21dRagexeRE +#if PACKETVER == 20130821 + packetKeys(0x51673F38,0x01663512,0x5CFF0B3D); +#endif + +// 2013-08-28bRagexe, 2013-08-28bRagexeRE, 2013-08-28cRagexe, 2013-08-28cRagexeRE +#if PACKETVER == 20130828 + packetKeys(0x02EF7A9A,0x4882042F,0x76796678); +#endif + +// 2013-09-04aRagexe, 2013-09-04bRagexeRE +#if PACKETVER == 20130904 + packetKeys(0x41AF20C5,0x0997799E,0x4AE803A0); +#endif + +// 2013-09-11aRagexe, 2013-09-11aRagexeRE, 2013-09-11bRagexe, 2013-09-11bRagexeRE +#if PACKETVER == 20130911 + packetKeys(0x232B3F47,0x0AD0515F,0x1CA31828); +#endif + +// 2013-09-17aRagexe, 2013-09-17aRagexeRE +#if PACKETVER == 20130917 + packetKeys(0x5C9164C5,0x32B62F83,0x52864548); +#endif + +// 2013-09-25aRagexe, 2013-09-25aRagexeRE, 2013-09-25bRagexe, 2013-09-25bRagexeRE, 2013-09-25cRagexe +#if PACKETVER == 20130925 + packetKeys(0x4B9C279A,0x0C7849C4,0x72A77646); +#endif + +// 2013-10-02aRagexe, 2013-10-02aRagexeRE +#if PACKETVER == 20131002 + packetKeys(0x63A466F7,0x635362F3,0x41F369F3); +#endif + +// 2013-10-08aRagexe, 2013-10-08bRagexeRE +#if PACKETVER == 20131008 + packetKeys(0x64924AAD,0x08CA0445,0x1CBC36DE); +#endif + +// 2013-10-16aRagexe, 2013-10-16aRagexeRE, 2013-10-16bRagexe, 2013-10-16bRagexeRE +#if PACKETVER == 20131016 + packetKeys(0x33AD7A93,0x720C7C49,0x12C4205A); +#endif + +// 2013-10-23aRagexe, 2013-10-23aRagexeRE +#if PACKETVER == 20131023 + packetKeys(0x02EF6163,0x2B774814,0x58EC3036); +#endif + +// 2013-10-30aRagexe, 2013-10-30aRagexeRE +#if PACKETVER == 20131030 + packetKeys(0x4A6A3EFF,0x7E2D5237,0x01CA019E); +#endif + +// 2013-11-06aRagexe, 2013-11-06aRagexeRE +#if PACKETVER == 20131106 + packetKeys(0x143E528F,0x5CA05899,0x44B85B23); +#endif + +// 2013-11-07aRagexe, 2013-11-07cRagexe +#if PACKETVER == 20131107 + packetKeys(0x143E528F,0x5CA05899,0x44B85B23); +#endif + +// 2013-11-08aRagexe +#if PACKETVER == 20131108 + packetKeys(0x143E528F,0x5CA05899,0x44B85B23); +#endif + +// 2013-11-13aRagexeRE, 2013-11-13bRagexe +#if PACKETVER == 20131113 + packetKeys(0x44EA14CD,0x49311C88,0x40C86C31); +#endif + +// 2013-11-20dRagexe, 2013-11-20eRagexeRE +#if PACKETVER == 20131120 + packetKeys(0x541E5172,0x1B1D30A0,0x28AA7CE5); +#endif + +// 2013-11-27aRagexeRE, 2013-11-27bRagexe, 2013-11-27bRagexeRE +#if PACKETVER == 20131127 + packetKeys(0x21426A48,0x5C505D6A,0x046D06AD); +#endif + +// 2013-12-04dRagexeRE, 2013-12-04eRagexe, 2013-12-04eRagexeRE +#if PACKETVER == 20131204 + packetKeys(0x792760B2,0x5AF45387,0x36165603); +#endif + +// 2013-12-11cRagexeRE, 2013-12-11dRagexe, 2013-12-11eRagexeRE +#if PACKETVER == 20131211 + packetKeys(0x55B0394E,0x4D341FF2,0x60BC1DC3); +#endif + +// 2013-12-18aRagexeRE, 2013-12-18bRagexe +#if PACKETVER == 20131218 + packetKeys(0x6A596301,0x76866D0E,0x32294A45); +#endif + +// 2013-12-23aRagexeRE, 2013-12-23bRagexe, 2013-12-23bRagexeRE, 2013-12-23cRagexe, 2013-12-23xRagexeRE +#if PACKETVER == 20131223 + packetKeys(0x631C511C,0x111C111C,0x111C111C); +#endif + +// 2013-12-30aRagexe, 2013-12-30aRagexeRE +#if PACKETVER == 20131230 + packetKeys(0x611B7097,0x01F957A1,0x768A0FCB); +#endif + +// 2014-01-08bRagexeRE, 2014-01-08cRagexe, 2014-01-08cRagexeRE, 2014-01-08dRagexe +#if PACKETVER == 20140108 + packetKeys(0x4A1E26F2,0x231E7EFE,0x61FE19FE); +#endif + +// 2014-01-15aRagexe, 2014-01-15bRagexe, 2014-01-15cRagexeRE, 2014-01-15dRagexeRE, 2014-01-15eRagexe, 2014-01-15eRagexeRE +#if PACKETVER == 20140115 + packetKeys(0x63224335,0x0F3A1F27,0x6D217B24); +#endif + +// 2014-01-22aRagexe, 2014-01-22aRagexeRE +#if PACKETVER == 20140122 + packetKeys(0x6123177B,0x05B42C99,0x71702594); +#endif + +// 2014-01-29aRagexe, 2014-01-29bRagexeRE, 2014-01-29cRagexe +#if PACKETVER == 20140129 + packetKeys(0x2E52163C,0x605E518B,0x3C7A62CB); +#endif + +// 2014-02-05bRagexe, 2014-02-05bRagexeRE +#if PACKETVER == 20140205 + packetKeys(0x63DC7BDC,0x7BDC7BDC,0x7BDC7BDC); +#endif + +// 2014-02-12aRagexe, 2014-02-12aRagexeRE +#if PACKETVER == 20140212 + packetKeys(0x46837074,0x65292E89,0x77237F9C); +#endif + +// 2014-02-19aRagexe, 2014-02-19aRagexeRE, 2014-02-19bRagexeRE +#if PACKETVER == 20140219 + packetKeys(0x4E3C5327,0x3A6B5469,0x2CE36AED); +#endif + +// 2014-02-26aRagexe, 2014-02-26aRagexeRE, 2014-02-26bRagexeRE +#if PACKETVER == 20140226 + packetKeys(0x36D71056,0x52122F5E,0x6FF76E99); +#endif + +// 2014-03-05aRagexe, 2014-03-05aRagexeRE, 2014-03-05bRagexe, 2014-03-05bRagexeRE +#if PACKETVER == 20140305 + packetKeys(0x116763F2,0x41117DAC,0x7FD13C45); +#endif + +// 2014-03-12bRagexeRE, 2014-03-12dRagexe +#if PACKETVER == 20140312 + packetKeys(0x48911E4E,0x58CB2EB3,0x05232619); +#endif + +// 2014-03-19aRagexeRE +#if PACKETVER == 20140319 + packetKeys(0x3DA44383,0x1ABB165F,0x5B6846B9); +#endif + +// 2014-03-26aRagexe, 2014-03-26cRagexeRE +#if PACKETVER == 20140326 + packetKeys(0x68E72AF6,0x27DB4C3D,0x348F2677); +#endif + +// 2014-04-02eRagexeRE, 2014-04-02fRagexe, 2014-04-02fRagexeRE, 2014-04-02gRagexe +#if PACKETVER == 20140402 + packetKeys(0x15D3271C,0x004D725B,0x111A3A37); +#endif + +// 2014-04-09aRagexe, 2014-04-09aRagexeRE, 2014-04-09bRagexe +#if PACKETVER == 20140409 + packetKeys(0x7F6C390F,0x139C254C,0x7F25708C); +#endif + +// 2014-04-16aRagexe, 2014-04-16aRagexeRE, 2014-04-16bRagexe +#if PACKETVER == 20140416 + packetKeys(0x04810281,0x42814281,0x42814281); +#endif + +// 2014-04-23aRagexe, 2014-04-23aRagexeRE +#if PACKETVER == 20140423 + packetKeys(0x7E0D6B56,0x74673CD3,0x2EBA4940); +#endif + +// 2014-04-30aRagexeRE +#if PACKETVER == 20140430 + packetKeys(0x400145D8,0x3FE50155,0x11624F70); +#endif + +// 2014-05-08aRagexe, 2014-05-08bRagexe, 2014-05-08bRagexeRE +#if PACKETVER == 20140508 + packetKeys(0x087E57EC,0x25224F4A,0x024F12C6); +#endif + +// 2014-05-14bRagexe, 2014-05-14bRagexeRE, 2014-05-14cRagexeRE +#if PACKETVER == 20140514 + packetKeys(0x4BE46730,0x047926E0,0x37773BBB); +#endif + +// 2014-05-21aRagexeRE, 2014-05-21bRagexe +#if PACKETVER == 20140521 + packetKeys(0x14ED2D86,0x17371C33,0x2D0473C8); +#endif + +// 2014-05-28aRagexe, 2014-05-28aRagexeRE +#if PACKETVER == 20140528 + packetKeys(0x579445EB,0x26734878,0x7C861628); +#endif + +// 2014-06-05aRagexe, 2014-06-05aRagexeRE, 2014-06-05bRagexe +#if PACKETVER == 20140605 + packetKeys(0x5ABC4223,0x04DD2636,0x0D5850E0); +#endif + +// 2014-06-11bRagexeRE, 2014-06-11cRagexe, 2014-06-11dRagexe, 2014-06-11eRagexe, 2014-06-11hRagexe +#if PACKETVER == 20140611 + packetKeys(0x4FC83479,0x3AB04D1F,0x477B4010); +#endif + +// 2014-06-12aRagexe +#if PACKETVER == 20140612 + packetKeys(0x4FC83479,0x3AB04D1F,0x477B4010); +#endif + +// 2014-06-13aRagexe +#if PACKETVER == 20140613 + packetKeys(0x4FC83479,0x3AB04D1F,0x477B4010); +#endif + +// 2014-06-18aRagexe, 2014-06-18cRagexeRE +#if PACKETVER == 20140618 + packetKeys(0x2DB507BB,0x11BA12E7,0x7F447760); +#endif + +// 2014-06-25aRagexe, 2014-06-25aRagexeRE, 2014-06-25bRagexe +#if PACKETVER == 20140625 + packetKeys(0x09987045,0x644B1051,0x1A091CB8); +#endif + +// 2014-07-02aRagexe, 2014-07-02aRagexeRE +#if PACKETVER == 20140702 + packetKeys(0x5C4574F4,0x5D446386,0x48BD24C9); +#endif + +// 2014-07-09aRagexe, 2014-07-09aRagexeRE +#if PACKETVER == 20140709 + packetKeys(0x2C7A6E92,0x324F1B85,0x29916FC2); +#endif + +// 2014-07-16aRagexe, 2014-07-16aRagexeRE, 2014-07-16bRagexe, 2014-07-16cRagexe +#if PACKETVER == 20140716 + packetKeys(0x0EB20408,0x6D6C4292,0x4F6E4CF3); +#endif + +// 2014-07-23aRagexe, 2014-07-23aRagexeRE, 2014-07-23bRagexe, 2014-07-23bRagexeRE +#if PACKETVER == 20140723 + packetKeys(0x42A21713,0x51CE6EAD,0x102F7B0B); +#endif + +// 2014-07-30aRagexe, 2014-07-30bRagexeRE +#if PACKETVER == 20140730 + packetKeys(0x63CE4E53,0x04F969A3,0x690954DB); +#endif + +// 2014-08-06aRagexe, 2014-08-06aRagexeRE, 2014-08-06bRagexe +#if PACKETVER == 20140806 + packetKeys(0x0D5B69AC,0x3C001F20,0x0C201420); +#endif + +// 2014-08-13aRagexe, 2014-08-13aRagexeRE, 2014-08-13bRagexe +#if PACKETVER == 20140813 + packetKeys(0x7AD51E0A,0x28C72C46,0x210205BD); +#endif + +// 2014-08-14aRagexe +#if PACKETVER == 20140814 + packetKeys(0x7AD51E0A,0x28C72C46,0x210205BD); +#endif + +// 2014-08-20aRagexe, 2014-08-20aRagexeRE +#if PACKETVER == 20140820 + packetKeys(0x374F15D0,0x64C87DEC,0x65CE2A41); +#endif + +// 2014-08-27aRagexe +#if PACKETVER == 20140827 + packetKeys(0x53814CA2,0x27DE193E,0x503E683E); +#endif + +// 2014-09-03aRagexe, 2014-09-03aRagexeRE +#if PACKETVER == 20140903 + packetKeys(0x2F386F34,0x0F935365,0x76A43888); +#endif + +// 2014-09-17aRagexe +#if PACKETVER == 20140917 + packetKeys(0x180118EA,0x440134CF,0x3A99179D); +#endif + +// 2014-09-24bRagexeRE, 2014-09-24cRagexe, 2014-09-24cRagexeRE +#if PACKETVER == 20140924 + packetKeys(0x6F5222D8,0x593B798C,0x4CBD655E); +#endif + +// 2014-10-01aRagexe, 2014-10-01bRagexeRE, 2014-10-01cRagexeRE +#if PACKETVER == 20141001 + packetKeys(0x6D882C11,0x7DF959E2,0x4F3F60E8); +#endif + +// 2014-10-08aRagexe, 2014-10-08bRagexe, 2014-10-08bRagexeRE, 2014-10-08cRagexe, 2014-10-08cRagexeRE, 2014-10-08dRagexe +#if PACKETVER == 20141008 + packetKeys(0x754365B3,0x36B326B3,0x26B326B3); +#endif + +// 2014-10-15bRagexe, 2014-10-15bRagexeRE, 2014-10-15cRagexe, 2014-10-15dRagexe +#if PACKETVER == 20141015 + packetKeys(0x2DFF467C,0x444B37EE,0x2C1B634F); +#endif + +// 2014-10-16aRagexe, 2014-10-16aRagexeRE +#if PACKETVER == 20141016 + packetKeys(0x2DFF467C,0x444B37EE,0x2C1B634F); +#endif + +// 2014-10-22aRagexeRE, 2014-10-22bRagexe +#if PACKETVER == 20141022 + packetKeys(0x290551EA,0x2B952C75,0x2D67669B); +#endif + +// 2014-10-29aRagexe, 2014-10-29aRagexeRE +#if PACKETVER == 20141029 + packetKeys(0x1AFD581D,0x2E1D4E1D,0x4E1D4E1D); +#endif + +// 2014-11-05aRagexe, 2014-11-05aRagexeRE, 2014-11-05bRagexe, 2014-11-05bRagexeRE +#if PACKETVER == 20141105 + packetKeys(0x7F310819,0x5FF45401,0x2D303DD9); +#endif + +// 2014-11-12aRagexeRE, 2014-11-12cRagexe, 2014-11-12dRagexe +#if PACKETVER == 20141112 + packetKeys(0x430C0C27,0x067153CF,0x5E5439A9); +#endif + +// 2014-11-19bRagexeRE, 2014-11-19dRagexe +#if PACKETVER == 20141119 + packetKeys(0x7A7E7EDE,0x24EB02E3,0x71603607); +#endif + +// 2014-11-26aRagexe, 2014-11-26aRagexeRE, 2014-11-26bRagexe, 2014-11-26bRagexeRE, 2014-11-26cRagexe, 2014-11-26cRagexeRE, 2014-11-26dRagexe, 2014-11-26dRagexeRE, 2014-11-26eRagexeRE +#if PACKETVER == 20141126 + packetKeys(0x01E14C42,0x56D73044,0x4B3278DF); +#endif + +// 2014-12-03aRagexe, 2014-12-03aRagexeRE +#if PACKETVER == 20141203 + packetKeys(0x66CB52E4,0x1EB84093,0x33563E18); +#endif + +// 2014-12-10bRagexe, 2014-12-10cRagexe, 2014-12-10cRagexeRE +#if PACKETVER == 20141210 + packetKeys(0x0B0B1DD3,0x26EF1797,0x4F40370B); +#endif + +// 2014-12-17aRagexeRE +#if PACKETVER == 20141217 + packetKeys(0x01AB478C,0x0FDE58F2,0x1DAC7303); +#endif + +// 2014-12-23cRagexeRE +#if PACKETVER == 20141223 + packetKeys(0x2E8936E6,0x34463C46,0x67CD3885); +#endif + +// 2014-12-24aRagexe +#if PACKETVER == 20141224 + packetKeys(0x2E8936E6,0x34463C46,0x67CD3885); +#endif + +// 2014-12-31aRagexe, 2014-12-31aRagexeRE +#if PACKETVER == 20141231 + packetKeys(0x154C347E,0x54B26512,0x52126A12); +#endif + +// 2015-01-07aRagexe, 2015-01-07aRagexeRE +#if PACKETVER == 20150107 + packetKeys(0x6C494A14,0x4DDB6427,0x3E6D7B65); +#endif + +// 2015-01-14aRagexe, 2015-01-14aRagexeRE, 2015-01-14bRagexe, 2015-01-14cRagexe, 2015-01-14dRagexe +#if PACKETVER == 20150114 + packetKeys(0x21C96102,0x13142934,0x1ABF4EA3); +#endif + +// 2015-01-21aRagexe, 2015-01-21aRagexeRE, 2015-01-21bRagexeRE +#if PACKETVER == 20150121 + packetKeys(0x0B9D2AF5,0x658A3346,0x379E3654); +#endif + +// 2015-01-28aRagexe, 2015-01-28aRagexeRE +#if PACKETVER == 20150128 + packetKeys(0x77CA2D55,0x28B608F0,0x75B47957); +#endif + +// 2015-01-29aRagexe +#if PACKETVER == 20150129 + packetKeys(0x77CA2D55,0x28B608F0,0x75B47957); +#endif + +// 2015-01-30aRagexe +#if PACKETVER == 20150130 + packetKeys(0x77CA2D55,0x28B608F0,0x75B47957); +#endif + +// 2015-02-04aRagexe, 2015-02-04cRagexeRE +#if PACKETVER == 20150204 + packetKeys(0x134529DB,0x5B4F6CEF,0x29EF11EF); +#endif + +// 2015-02-11aRagexe, 2015-02-11aRagexeRE +#if PACKETVER == 20150211 + packetKeys(0x33911A25,0x1E6945FD,0x7385623A); +#endif + +// 2015-02-17aRagexe, 2015-02-17aRagexeRE +#if PACKETVER == 20150217 + packetKeys(0x731B731B,0x731B731B,0x731B731B); +#endif + +// 2015-02-25aRagexeRE, 2015-02-25bRagexeRE, 2015-02-25cRagexeRE, 2015-02-25dRagexeRE, 2015-02-25eRagexe, 2015-02-25eRagexeRE, 2015-02-25fRagexe, 2015-02-25gRagexe, 2015-02-25hRagexe, 2015-02-25iRagexe, 2015-02-25jRagexe +#if PACKETVER == 20150225 + packetKeys(0x57FD4B7B,0x19CC16FB,0x0D255D72); +#endif + +// 2015-02-26aRagexe, 2015-02-26aRagexeRE +#if PACKETVER == 20150226 + packetKeys(0x57FD4B7B,0x19CC16FB,0x0D255D72); +#endif + +// 2015-03-04aRagexe, 2015-03-04aRagexeRE, 2015-03-04bRagexeRE +#if PACKETVER == 20150304 + packetKeys(0x1A657B1C,0x7E1806E7,0x55396A5C); +#endif + +// 2015-03-11aRagexe, 2015-03-11aRagexeRE, 2015-03-11bRagexe, 2015-03-11bRagexeRE +#if PACKETVER == 20150311 + packetKeys(0x48C45D97,0x06CE09B0,0x5836642F); +#endif + +// 2015-03-18aRagexe, 2015-03-18aRagexeRE, 2015-03-18bRagexe, 2015-03-18bRagexeRE, 2015-03-18cRagexeRE +#if PACKETVER == 20150318 + packetKeys(0x1B3738E7,0x0AD4238F,0x7D252A1F); +#endif + +// 2015-03-25aRagexe, 2015-03-25bRagexeRE, 2015-03-25cRagexeRE +#if PACKETVER == 20150325 + packetKeys(0x68F62B8C,0x337C3468,0x38FC0AC7); +#endif + +// 2015-04-01aRagexe, 2015-04-01bRagexeRE +#if PACKETVER == 20150401 + packetKeys(0x207F3A08,0x57E6160C,0x02A60382); +#endif + +// 2015-04-08aRagexe, 2015-04-08aRagexeRE +#if PACKETVER == 20150408 + packetKeys(0x39812C9D,0x23DA516E,0x59A33DD2); +#endif + +// 2015-04-15aRagexe, 2015-04-15aRagexeRE +#if PACKETVER == 20150415 + packetKeys(0x7EC44F6A,0x7DE57139,0x60DA5436); +#endif + +// 2015-04-22aRagexe, 2015-04-22aRagexeRE +#if PACKETVER == 20150422 + packetKeys(0x10D22CE2,0x69E279E2,0x79E279E2); +#endif + +// 2015-04-29aRagexe, 2015-04-29aRagexeRE +#if PACKETVER == 20150429 + packetKeys(0x2BF61A71,0x565D5DDF,0x0FB90019); +#endif + +// 2015-05-07bRagexe, 2015-05-07bRagexeRE, 2015-05-07cRagexe +#if PACKETVER == 20150507 + packetKeys(0x55B54373,0x58967821,0x67F41832); +#endif + +// 2015-05-13aRagexe, 2015-05-13aRagexeRE +#if PACKETVER == 20150513 + packetKeys(0x62C86D09,0x75944F17,0x112C133D); +#endif + +// 2015-05-20aRagexe, 2015-05-20aRagexeRE +#if PACKETVER == 20150520 + packetKeys(0x17430238,0x44DE585F,0x56A40616); +#endif + +// 2015-05-27aRagexe, 2015-05-27aRagexeRE +#if PACKETVER == 20150527 + packetKeys(0x35AE7BAE,0x3BAE3BAE,0x3BAE3BAE); +#endif + +// 2015-06-03aRagexe, 2015-06-03bRagexeRE +#if PACKETVER == 20150603 + packetKeys(0x1DDD245D,0x309446E0,0x58E53F1F); +#endif + +// 2015-06-10aRagexe, 2015-06-10aRagexeRE +#if PACKETVER == 20150610 + packetKeys(0x2FC406D3,0x7B3E32F5,0x02B80B47); +#endif + +// 2015-06-17aRagexe, 2015-06-17aRagexeRE +#if PACKETVER == 20150617 + packetKeys(0x250F7E09,0x25416076,0x029A780E); +#endif + +// 2015-06-18aRagexe, 2015-06-18aRagexeRE +#if PACKETVER == 20150618 + packetKeys(0x250F7E09,0x25416076,0x029A780E); +#endif + +// 2015-06-24aRagexe, 2015-06-24aRagexeRE +#if PACKETVER == 20150624 + packetKeys(0x440B0E24,0x1BEA7A4C,0x2C646784); +#endif + +// 2015-07-01bRagexeRE +#if PACKETVER == 20150701 + packetKeys(0x4DD55F9B,0x70C67B03,0x78C60DB6); +#endif + +// 2015-07-02aRagexe +#if PACKETVER == 20150702 + packetKeys(0x4DD55F9B,0x70C67B03,0x78C60DB6); +#endif + +// 2015-07-08bRagexeRE, 2015-07-08cRagexe, 2015-07-08cRagexeRE, 2015-07-08dRagexeRE +#if PACKETVER == 20150708 + packetKeys(0x451C5E19,0x5661750B,0x2F4644AC); +#endif + +// 2015-07-15aRagexe, 2015-07-15aRagexeRE +#if PACKETVER == 20150715 + packetKeys(0x1F805483,0x67745585,0x7FCE189C); +#endif + +// 2015-07-22bRagexeRE +#if PACKETVER == 20150722 + packetKeys(0x41FA53D4,0x2CF044E2,0x663A3F1D); +#endif + +// 2015-07-29aRagexe, 2015-07-29aRagexeRE +#if PACKETVER == 20150729 + packetKeys(0x08EE40A9,0x206F3D7F,0x0AE37339); +#endif + +// 2015-08-05aRagexe, 2015-08-05dRagexeRE +#if PACKETVER == 20150805 + packetKeys(0x1C3F243F,0x243F243F,0x243F243F); +#endif + +// 2015-08-12aRagexe, 2015-08-12aRagexeRE +#if PACKETVER == 20150812 + packetKeys(0x0B6F64A8,0x5BCC47EC,0x00EC08EC); +#endif + +// 2015-08-19aRagexe, 2015-08-19aRagexeRE, 2015-08-19bRagexeRE +#if PACKETVER == 20150819 + packetKeys(0x1A2400E0,0x736E5686,0x10F315D5); +#endif + +// 2015-08-26aRagexe, 2015-08-26aRagexeRE, 2015-08-26bRagexe, 2015-08-26bRagexeRE +#if PACKETVER == 20150826 + packetKeys(0x77883C56,0x1829359F,0x0DE635B6); +#endif + +// 2015-09-02aRagexe, 2015-09-02aRagexeRE +#if PACKETVER == 20150902 + packetKeys(0x4EDB18C1,0x6B9355BA,0x38AA6239); +#endif + +// 2015-09-09aRagexe, 2015-09-09aRagexeRE +#if PACKETVER == 20150909 + packetKeys(0x19AB2BF0,0x04754299,0x48770736); +#endif + +// 2015-09-16aRagexe, 2015-09-16aRagexeRE, 2015-09-16cRagexe, 2015-09-16cRagexeRE +#if PACKETVER == 20150916 + packetKeys(0x17F83A19,0x116944F4,0x1CC541E9); +#endif + +// 2015-09-23bRagexe, 2015-09-23bRagexeRE, 2015-09-23cRagexe, 2015-09-23eRagexe, 2015-09-23eRagexeRE, 2015-09-23fRagexe, 2015-09-23fRagexeRE +#if PACKETVER == 20150923 + packetKeys(0x765742B9,0x22D61C2F,0x7DA94FB2); +#endif + +// 2015-10-01aRagexe, 2015-10-01bRagexeRE +#if PACKETVER == 20151001 + packetKeys(0x5CFF4561,0x32514AD1,0x06D126D1); +#endif + +// 2015-10-07aRagexe, 2015-10-07aRagexeRE +#if PACKETVER == 20151007 + packetKeys(0x3C6447A8,0x032170D7,0x6490476C); +#endif + +// 2015-10-14bRagexe, 2015-10-14bRagexeRE +#if PACKETVER == 20151014 + packetKeys(0x402728A8,0x5D0E309F,0x240018FD); +#endif + +// 2015-10-21aRagexe +#if PACKETVER == 20151021 + packetKeys(0x0311104D,0x46C326D6,0x00E82720); +#endif + +// 2015-10-22aRagexe, 2015-10-22aRagexeRE +#if PACKETVER == 20151022 + packetKeys(0x0311104D,0x46C326D6,0x00E82720); +#endif + +// 2015-10-28cRagexe, 2015-10-28cRagexeRE, 2015-10-28dRagexe, 2015-10-28dRagexeRE +#if PACKETVER == 20151028 + packetKeys(0x45B945B9,0x45B945B9,0x45B945B9); +#endif + +// 2015-10-29aRagexe, 2015-10-29aRagexeRE +#if PACKETVER == 20151029 + packetKeys(0x45B945B9,0x45B945B9,0x45B945B9); +#endif + +// 2015-11-04aRagexe, 2015-11-04aRagexeRE +#if PACKETVER == 20151104 + packetKeys(0x4C17382A,0x7ED174C9,0x29961E4F); +#endif + +// 2015-11-11aRagexe, 2015-11-11aRagexeRE, 2015-11-11bRagexe +#if PACKETVER == 20151111 + packetKeys(0x46097C77,0x5F193871,0x29140A21); +#endif + +// 2015-11-18aRagexe, 2015-11-18aRagexeRE +#if PACKETVER == 20151118 + packetKeys(0x734C3241,0x6E846F34,0x731C06D6); +#endif + +// 2015-11-25bRagexe, 2015-11-25bRagexeRE, 2015-11-25cRagexeRE, 2015-11-25dRagexe, 2015-11-25dRagexeRE +#if PACKETVER == 20151125 + packetKeys(0x237446C0,0x5EFB343A,0x0EDF06C5); +#endif + +// 2015-12-02aRagexe, 2015-12-02bRagexeRE +#if PACKETVER == 20151202 + packetKeys(0x4EDE52DE,0x52DE52DE,0x52DE52DE); +#endif + +// 2015-12-09aRagexe, 2015-12-09aRagexeRE +#if PACKETVER == 20151209 + packetKeys(0x652C5898,0x7A351FB3,0x67EA2886); +#endif + +// 2015-12-16aRagexe, 2015-12-16aRagexeRE +#if PACKETVER == 20151216 + packetKeys(0x25DD643D,0x61AC39DE,0x77A8206D); +#endif + +// 2015-12-23bRagexe, 2015-12-23bRagexeRE +#if PACKETVER == 20151223 + packetKeys(0x347D68D0,0x2C705320,0x7B4A199D); +#endif + +// 2015-12-30aRagexe +#if PACKETVER == 20151230 + packetKeys(0x54C51241,0x33883499,0x3CDA35F0); +#endif + +// 2016-01-06aRagexe, 2016-01-06aRagexeRE +#if PACKETVER == 20160106 + packetKeys(0x40520265,0x33FE26FC,0x7136294F); +#endif + +// 2016-01-13aRagexe, 2016-01-13aRagexeRE, 2016-01-13bRagexe, 2016-01-13bRagexeRE, 2016-01-13cRagexeRE +#if PACKETVER == 20160113 + packetKeys(0x18005C4B,0x19A94A72,0x73F678EC); +#endif + +// 2016-01-20aRagexe, 2016-01-20aRagexeRE +#if PACKETVER == 20160120 + packetKeys(0x51495149,0x51495149,0x51495149); +#endif + +// 2016-01-27aRagexeRE, 2016-01-27bRagexeRE, 2016-01-27cRagexe, 2016-01-27dRagexe +#if PACKETVER == 20160127 + packetKeys(0x6B1E7146,0x612C47E6,0x274E56EE); +#endif + +// 2016-02-03aRagexe, 2016-02-03aRagexeRE +#if PACKETVER == 20160203 + packetKeys(0x3E1411AF,0x6C744497,0x7CFA1BDE); +#endif + +// 2016-02-11aRagexe, 2016-02-11aRagexeRE +#if PACKETVER == 20160211 + packetKeys(0x613813EA,0x05251DAB,0x1FD35E33); +#endif + +// 2016-02-17aRagexe, 2016-02-17aRagexeRE, 2016-02-17bRagexeRE, 2016-02-17cRagexeRE +#if PACKETVER == 20160217 + packetKeys(0x25895A8E,0x09421C19,0x763A2D7A); +#endif + +// 2016-02-24aRagexe, 2016-02-24aRagexeRE, 2016-02-24bRagexeRE +#if PACKETVER == 20160224 + packetKeys(0x7088019A,0x13471F02,0x42356A7D); +#endif + +// 2016-03-02bRagexe, 2016-03-02bRagexeRE +#if PACKETVER == 20160302 + packetKeys(0x7B4441B9,0x5BBC63AF,0x45DA0E71); +#endif + +// 2016-03-09aRagexeRE, 2016-03-09cRagexe +#if PACKETVER == 20160309 + packetKeys(0x21587520,0x353A7706,0x1B722B25); +#endif + +// 2016-03-16aRagexe, 2016-03-16aRagexeRE +#if PACKETVER == 20160316 + packetKeys(0x62363E36,0x3E363E36,0x3E363E36); +#endif + +// 2016-03-18aRagexe +#if PACKETVER == 20160318 + packetKeys(0x62363E36,0x3E363E36,0x3E363E36); +#endif + +// 2016-03-23aRagexe, 2016-03-23aRagexeRE, 2016-03-23bRagexe +#if PACKETVER == 20160323 + packetKeys(0x73E35A83,0x62142FA8,0x12BA36BD); +#endif + +// 2016-03-30aRagexe, 2016-03-30aRagexeRE, 2016-03-30bRagexe +#if PACKETVER == 20160330 + packetKeys(0x02050940,0x545336FF,0x7E7D4902); +#endif + +// 2016-04-06aRagexe, 2016-04-06aRagexeRE, 2016-04-06bRagexe +#if PACKETVER == 20160406 + packetKeys(0x568611EA,0x32457D8D,0x2B020477); +#endif + +// 2016-04-14aRagexe, 2016-04-14aRagexeRE, 2016-04-14bRagexe, 2016-04-14bRagexeRE, 2016-04-14cRagexe +#if PACKETVER == 20160414 + packetKeys(0x31BD479A,0x40C61398,0x397C1A80); +#endif + +// 2016-04-20aRagexeRE, 2016-04-20cRagexe +#if PACKETVER == 20160420 + packetKeys(0x67D2163A,0x3068215B,0x4835474D); +#endif + +// 2016-04-27aRagexeRE +#if PACKETVER == 20160427 + packetKeys(0x12DC378E,0x4E3E7EBE,0x0ABE2ABE); +#endif + +// 2016-05-04aRagexe, 2016-05-04aRagexeRE +#if PACKETVER == 20160504 + packetKeys(0x09E0544C,0x0231251D,0x2F4E195F); +#endif + +// 2016-05-11aRagexe, 2016-05-11aRagexeRE, 2016-05-11bRagexeRE +#if PACKETVER == 20160511 + packetKeys(0x3C666FE2,0x27E84E3E,0x53E11BA5); +#endif + +// 2016-05-18aRagexe, 2016-05-18aRagexeRE +#if PACKETVER == 20160518 + packetKeys(0x57DB7CA1,0x1FEA1629,0x26DD244D); +#endif + +// 2016-05-25aRagexe, 2016-05-25aRagexeRE +#if PACKETVER == 20160525 + packetKeys(0x485C45B6,0x47DC6192,0x76B34A36); +#endif + +// 2016-05-26aRagexe +#if PACKETVER == 20160526 + packetKeys(0x485C45B6,0x47DC6192,0x76B34A36); +#endif + +// 2016-06-01aRagexe, 2016-06-01aRagexeRE +#if PACKETVER == 20160601 + packetKeys(0x3DAD32C4,0x59F001BE,0x73F65E56); +#endif + +// 2016-06-08aRagexe, 2016-06-08aRagexeRE, 2016-06-08bRagexe, 2016-06-08bRagexeRE +#if PACKETVER == 20160608 + packetKeys(0x11D74609,0x77C43E8A,0x44290F53); +#endif + +// 2016-06-09aRagexe +#if PACKETVER == 20160609 + packetKeys(0x11D74609,0x77C43E8A,0x44290F53); +#endif + +// 2016-06-15aRagexe, 2016-06-15aRagexeRE +#if PACKETVER == 20160615 + packetKeys(0x062C5C26,0x6CF47E82,0x4DD53480); +#endif + +// 2016-06-22aRagexe, 2016-06-22aRagexeRE +#if PACKETVER == 20160622 + packetKeys(0x426548AB,0x5C0F5DD4,0x03022710); +#endif + +// 2016-06-29aRagexe, 2016-06-29aRagexeRE +#if PACKETVER == 20160629 + packetKeys(0x0DF31CCC,0x54281606,0x5C4C6855); +#endif + +// 2016-06-30aRagexe, 2016-06-30aRagexeRE +#if PACKETVER == 20160630 + packetKeys(0x0DF31CCC,0x54281606,0x5C4C6855); +#endif + +// 2016-07-06bRagexe, 2016-07-06cRagexeRE +#if PACKETVER == 20160706 + packetKeys(0x33A766D0,0x743F04F8,0x0FA0276C); +#endif + +// 2016-07-13aRagexe, 2016-07-13aRagexeRE, 2016-07-13bRagexeRE, 2016-07-13cRagexe, 2016-07-13dRagexe +#if PACKETVER == 20160713 + packetKeys(0x714F2495,0x7DDC6F32,0x3FD8533D); +#endif + +// 2016-07-20aRagexe, 2016-07-20aRagexeRE, 2016-07-20bRagexe, 2016-07-20bRagexeRE +#if PACKETVER == 20160720 + packetKeys(0x4F8A19C0,0x2D8E085C,0x37BB67D6); +#endif + +// 2016-07-27aRagexe, 2016-07-27aRagexeRE, 2016-07-27bRagexe, 2016-07-27bRagexeRE +#if PACKETVER == 20160727 + packetKeys(0x3C6952AB,0x26E4077F,0x37E25DF7); +#endif + +// 2016-08-03bRagexe, 2016-08-03bRagexeRE +#if PACKETVER == 20160803 + packetKeys(0x67F438C2,0x512A4EB7,0x2D353182); +#endif + +// 2016-08-10aRagexe, 2016-08-10aRagexeRE +#if PACKETVER == 20160810 + packetKeys(0x2F252886,0x242234A2,0x48BC5032); +#endif + +// 2016-08-17aRagexe +#if PACKETVER == 20160817 + packetKeys(0x675E6900,0x3F8E1D16,0x58D650E5); +#endif + +// 2016-08-31aRagexeRE, 2016-08-31bRagexeRE +#if PACKETVER == 20160831 + packetKeys(0x564E13B0,0x7F680549,0x382D273B); +#endif + +// 2016-09-07aRagexe, 2016-09-07aRagexeRE +#if PACKETVER == 20160907 + packetKeys(0x32E5237D,0x57BD4DBD,0x5DBD5DBD); +#endif + +// 2016-09-13aRagexe, 2016-09-13aRagexeRE +#if PACKETVER == 20160913 + packetKeys(0x7C79748F,0x1AA03B1D,0x6EAC4747); +#endif + +// 2016-09-21bRagexeRE +#if PACKETVER == 20160921 + packetKeys(0x11CD15CD,0x15CD15CD,0x15CD15CD); +#endif + +// 2016-09-28cRagexeRE, 2016-09-28dRagexeRE +#if PACKETVER == 20160928 + packetKeys(0x2F8C67F5,0x22D42C38,0x57513774); +#endif + +// 2016-10-05aRagexeRE +#if PACKETVER == 20161005 + packetKeys(0x5BAE21F8,0x021E2FFC,0x3BEB7C31); +#endif + +// 2016-10-12aRagexeRE +#if PACKETVER == 20161012 + packetKeys(0x5E2311F2,0x14FD012C,0x76EB64F6); +#endif + +// 2016-10-19aRagexeRE +#if PACKETVER == 20161019 + packetKeys(0x34882F11,0x7C870E70,0x7E61350D); +#endif + +// 2016-10-26bRagexeRE, 2016-10-26cRagexeRE +#if PACKETVER == 20161026 + packetKeys(0x2CB86AE6,0x7D12660E,0x1B004DEB); +#endif + +// 2016-11-02aRagexe, 2016-11-02aRagexeRE +#if PACKETVER == 20161102 + packetKeys(0x76725C17,0x72FE4EC1,0x07A91BFD); +#endif + +// 2016-11-03aRagexeRE +#if PACKETVER == 20161103 + packetKeys(0x76725C17,0x72FE4EC1,0x07A91BFD); +#endif + +// 2016-11-09aRagexe, 2016-11-09bRagexeRE, 2016-11-09cRagexeRE, 2016-11-09dRagexeRE +#if PACKETVER == 20161109 + packetKeys(0x0A5277C0,0x2DB17506,0x0E8F26DA); +#endif + +// 2016-11-16aRagexe, 2016-11-16bRagexeRE, 2016-11-16cRagexeRE +#if PACKETVER == 20161116 + packetKeys(0x780C5C3F,0x15E92272,0x2BA770C5); +#endif + +// 2016-11-23aRagexe, 2016-11-23aRagexeRE +#if PACKETVER == 20161123 + packetKeys(0x66FF559F,0x00D3535B,0x236246F7); +#endif + +// 2016-11-30aRagexeRE, 2016-11-30bRagexeRE +#if PACKETVER == 20161130 + packetKeys(0x2ED80296,0x0D837373,0x20266F9A); +#endif + +// 2016-12-07cRagexeRE, 2016-12-07dRagexeRE, 2016-12-07eRagexeRE +#if PACKETVER == 20161207 + packetKeys(0x52D267AA,0x4FE42156,0x1292153E); +#endif + +// 2016-12-14bRagexeRE, 2016-12-14cRagexe, 2016-12-14cRagexeRE +#if PACKETVER == 20161214 + packetKeys(0x4DDE217B,0x07863AE0,0x5B591656); +#endif + +// 2016-12-21aRagexeRE, 2016-12-21bRagexeRE, 2016-12-21cRagexeRE, 2016-12-21dRagexeRE +#if PACKETVER == 20161221 + packetKeys(0x69CB4F56,0x793C165E,0x673A2354); +#endif + +// 2016-12-28aRagexe, 2016-12-28aRagexeRE +#if PACKETVER == 20161228 + packetKeys(0x09366971,0x005672F1,0x6F3712AE); +#endif + +// 2017-01-04bRagexeRE +#if PACKETVER == 20170104 + packetKeys(0x44416BC3,0x6C8D1817,0x072D75D5); +#endif + +// 2017-01-11aRagexeRE +#if PACKETVER == 20170111 + packetKeys(0x19B637F9,0x0E9C378A,0x41673186); +#endif + +// 2017-01-18aRagexe, 2017-01-18aRagexeRE +#if PACKETVER == 20170118 + packetKeys(0x456B36EB,0x15EB34B0,0x18C42E43); +#endif + +// 2017-01-25aRagexe, 2017-01-25aRagexeRE +#if PACKETVER == 20170125 + packetKeys(0x066E04FE,0x3004224A,0x04FF0458); +#endif + +// 2017-02-01aRagexe, 2017-02-01aRagexeRE +#if PACKETVER == 20170201 + packetKeys(0x2011228E,0x00453005,0x628E7F0A); +#endif + +// 2017-02-08aRagexeRE, 2017-02-08bRagexeRE +#if PACKETVER == 20170208 + packetKeys(0x6A764E5F,0x0609570D,0x28AE07FA); +#endif + +// 2017-02-15aRagexeRE +#if PACKETVER == 20170215 + packetKeys(0x50C01315,0x51012A42,0x679E16C3); +#endif + +// 2017-02-22aRagexe, 2017-02-22aRagexeRE +#if PACKETVER == 20170222 + packetKeys(0x5A242F2F,0x6C556187,0x73C022CB); +#endif + +// 2017-02-28aRagexe, 2017-02-28aRagexeRE, 2017-02-28bRagexe +#if PACKETVER == 20170228 + packetKeys(0x771D4F2B,0x20EF1F4C,0x0D5135C8); +#endif + +// 2017-03-08bRagexeRE +#if PACKETVER == 20170308 + packetKeys(0x653470A9,0x6B316A71,0x5C712C71); +#endif + +// 2017-03-15cRagexe, 2017-03-15cRagexeRE +#if PACKETVER == 20170315 + packetKeys(0x399A0856,0x56642A94,0x7F77157D); +#endif + +// 2017-03-22aRagexeRE, 2017-03-22bRagexeRE +#if PACKETVER == 20170322 + packetKeys(0x2050167B,0x01731233,0x40337033); +#endif + +// 2017-03-29cRagexe, 2017-03-29cRagexeRE, 2017-03-29dRagexeRE +#if PACKETVER == 20170329 + packetKeys(0x18B31A80,0x1B0B1D56,0x16857D6A); +#endif + +// 2017-04-05bRagexe, 2017-04-05bRagexeRE, 2017-04-05cRagexe, 2017-04-05cRagexeRE +#if PACKETVER == 20170405 + packetKeys(0x1FDE7DAC,0x2F9F5B63,0x3F2062AF); +#endif + +// 2017-04-12aRagexe, 2017-04-12aRagexeRE +#if PACKETVER == 20170412 + packetKeys(0x39223393,0x5C847779,0x10217985); +#endif + +// 2017-04-19bRagexeRE +#if PACKETVER == 20170419 + packetKeys(0x1F8F4B3F,0x2E481F03,0x39ED4178); +#endif + +// 2017-04-26dRagexeRE +#if PACKETVER == 20170426 + packetKeys(0x167642A7,0x1DEC3D26,0x6D046D4C); +#endif + +// 2017-05-02dRagexeRE +#if PACKETVER == 20170502 + packetKeys(0x05224194,0x466D4204,0x31F02EE0); +#endif + +// 2017-05-17aRagexeRE, 2017-05-17bRagexeRE +#if PACKETVER == 20170517 + packetKeys(0x2CC4749A,0x1FA954DC,0x72276857); +#endif + +// 2017-05-24aRagexeRE +#if PACKETVER == 20170524 + packetKeys(0x0B4E03A6,0x2B93427C,0x583D4477); +#endif + +// 2017-05-31aRagexeRE +#if PACKETVER == 20170531 + packetKeys(0x03FA5A97,0x20B802D5,0x339F1977); +#endif + +// 2017-06-07bRagexeRE +#if PACKETVER == 20170607 + packetKeys(0x50564ACD,0x79CA4E15,0x405F4894); +#endif + +// 2017-06-14bRagexeRE +#if PACKETVER == 20170614 + packetKeys(0x5ED10A48,0x667F4301,0x2E5D761F); +#endif + +// 2017-06-21aRagexeRE +#if PACKETVER == 20170621 + packetKeys(0x155F34EC,0x2D943FA9,0x3D9170EB); +#endif + +// 2017-06-28bRagexeRE +#if PACKETVER == 20170628 + packetKeys(0x04691C86,0x43C210E2,0x2FE277E2); +#endif + +// 2017-07-05aRagexeRE +#if PACKETVER == 20170705 + packetKeys(0x7EB000AE,0x02FB1DBC,0x5CB131E6); +#endif + +// 2017-07-12bRagexeRE +#if PACKETVER == 20170712 + packetKeys(0x2C3C202C,0x3F2C2F2C,0x2F2C2F2C); +#endif + +// 2017-07-19aRagexeRE +#if PACKETVER == 20170719 + packetKeys(0x46465C88,0x10116F66,0x200866F9); +#endif + +// 2017-07-26cRagexeRE +#if PACKETVER == 20170726 + packetKeys(0x102F23DB,0x7E767751,0x3BC172EF); +#endif + +// 2017-08-01aRagexeRE +#if PACKETVER == 20170801 + packetKeys(0x26B52A7F,0x5377619D,0x4F580AC4); +#endif + +// 2017-08-16cRagexeRE, 2017-08-16dRagexeRE +#if PACKETVER == 20170816 + packetKeys(0x78914673,0x3F8B7634,0x55B814BC); +#endif + +// 2017-08-23aRagexeRE +#if PACKETVER == 20170823 + packetKeys(0x22677205,0x393D1002,0x58DC6BB4); +#endif + +// 2017-08-30aRagexeRE, 2017-08-30bRagexeRE +#if PACKETVER == 20170830 + packetKeys(0x1D49592B,0x00970C17,0x1E640103); +#endif + +// 2017-09-06cRagexeRE +#if PACKETVER == 20170906 + packetKeys(0x7DEF7677,0x351F36E6,0x52303485); +#endif + +// 2017-09-13bRagexeRE +#if PACKETVER == 20170913 + packetKeys(0x7A645935,0x1DA05062,0x5A7A4C43); +#endif + +// 2017-09-20bRagexeRE +#if PACKETVER == 20170920 + packetKeys(0x53024DA5,0x04EC212D,0x0BF87CD4); +#endif + +#if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3) + packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3); +#endif + +#endif /* MAP_PACKETS_KEYS_H */ diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 796ea577c..207c345da 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -307,6 +307,27 @@ enum packet_headers { #else // PACKETVER < 20141022 questListType = 0x2b1, ///< ZC_ALL_QUEST_LIST #endif // PACKETVER >= 20141022 + /* Rodex */ + rodexicon = 0x09E7, + rodexread = 0x09EB, + rodexwriteresult = 0x09ED, + rodexnextpage = 0x09F0, + rodexgetzeny = 0x09F2, + rodexgetitem = 0x09F4, + rodexdelete = 0x09F6, + rodexadditem = 0x0A05, + rodexremoveitem = 0x0A07, + rodexopenwrite = 0x0A12, +#if PACKETVER < 20160600 + rodexmailList = 0x09F0, +#else // PACKETVER >= 20160600 + rodexmailList = 0x0A7D, +#endif +#if PACKETVER < 20160316 + rodexcheckplayer = 0x0A14, +#else // PACKETVER >= 20160316 + rodexcheckplayer = 0x0A51, +#endif }; #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute @@ -611,7 +632,7 @@ struct packet_unit_walking { #if PACKETVER >= 20091103 int16 PacketLength; #endif -#if PACKETVER > 20071106 +#if PACKETVER >= 20071106 uint8 objecttype; #endif #if PACKETVER >= 20131223 @@ -1247,6 +1268,197 @@ struct packet_whisper_message { char message[]; } __attribute__((packed)); +/* RoDEX */ +struct PACKET_CZ_ADD_ITEM_TO_MAIL { + int16 PacketType; + int16 index; + int16 count; +} __attribute__((packed)); + +struct PACKET_ZC_ADD_ITEM_TO_MAIL { + int16 PacketType; + int8 result; + int16 index; + int16 count; + uint16 ITID; + int8 type; + int8 IsIdentified; + int8 IsDamaged; + int8 refiningLevel; + struct EQUIPSLOTINFO slot; + struct ItemOptions optionData[MAX_ITEM_OPTIONS]; + int16 weight; + int8 unknow[5]; +} __attribute__((packed)); + +struct mail_item { + int16 count; + uint16 ITID; + int8 IsIdentified; + int8 IsDamaged; + int8 refiningLevel; + struct EQUIPSLOTINFO slot; + int8 unknow1[4]; + int8 type; + int8 unknown[4]; + struct ItemOptions optionData[MAX_ITEM_OPTIONS]; +} __attribute__((packed)); + +struct PACKET_CZ_REQ_OPEN_WRITE_MAIL { + int16 PacketType; + char receiveName[NAME_LENGTH]; +} __attribute__((packed)); + +struct PACKET_ZC_ACK_OPEN_WRITE_MAIL { + int16 PacketType; + char receiveName[NAME_LENGTH]; + int8 result; +} __attribute__((packed)); + +struct PACKET_CZ_REQ_REMOVE_ITEM_MAIL { + int16 PacketType; + int16 index; + uint16 cnt; +} __attribute__((packed)); + +struct PACKET_ZC_ACK_REMOVE_ITEM_MAIL { + int16 PacketType; + int8 result; + int16 index; + uint16 cnt; + int16 weight; +} __attribute__((packed)); + +struct PACKET_CZ_SEND_MAIL { + int16 PacketType; + int16 PacketLength; + char receiveName[24]; + char senderName[24]; + int64 zeny; + int16 Titlelength; + int16 TextcontentsLength; +#if PACKETVER > 20160600 + int32 receiver_char_id; +#endif // PACKETVER > 20160600 + char string[]; +} __attribute__((packed)); + +struct PACKET_ZC_WRITE_MAIL_RESULT { + int16 PacketType; + int8 result; +} __attribute__((packed)); + +struct PACKET_CZ_CHECKNAME { + int16 PacketType; + char Name[24]; +} __attribute__((packed)); + +struct PACKET_ZC_CHECKNAME { + int16 PacketType; + int32 CharId; + int16 Class; + int16 BaseLevel; +#if PACKETVER >= 20160316 + char Name[24]; +#endif +} __attribute__((packed)); + +struct PACKET_ZC_NOTIFY_UNREADMAIL { + int16 PacketType; + char result; +} __attribute__((packed)); + +struct maillistinfo { + int64 MailID; + int8 Isread; + uint8 type; + char SenderName[24]; + int32 regDateTime; + int32 expireDateTime; + int16 Titlelength; + char title[]; +} __attribute__((packed)); + +struct PACKET_ZC_MAIL_LIST { + int16 PacketType; + int16 PacketLength; + int8 opentype; + int8 cnt; + int8 IsEnd; +} __attribute__((packed)); + +struct PACKET_CZ_REQ_NEXT_MAIL_LIST { + int16 PacketType; + int8 opentype; + int64 Lower_MailID; +} __attribute__((packed)); + +struct PACKET_CZ_REQ_OPEN_MAIL { + int16 PacketType; + int8 opentype; + int64 Upper_MailID; +} __attribute__((packed)); + +struct PACKET_CZ_REQ_READ_MAIL { + int16 PacketType; + int8 opentype; + int64 MailID; +} __attribute__((packed)); + +struct PACKET_ZC_READ_MAIL { + int16 PacketType; + int16 PacketLength; + int8 opentype; + int64 MailID; + int16 TextcontentsLength; + int64 zeny; + int8 ItemCnt; +} __attribute__((packed)); + +struct PACKET_CZ_REQ_DELETE_MAIL { + int16 PacketType; + int8 opentype; + int64 MailID; +} __attribute__((packed)); + +struct PACKET_ZC_ACK_DELETE_MAIL { + int16 PacketType; + int8 opentype; + int64 MailID; +} __attribute__((packed)); + +struct PACKET_CZ_REQ_REFRESH_MAIL_LIST { + int16 PacketType; + int8 opentype; + int64 Upper_MailID; +} __attribute__((packed)); + +struct PACKET_CZ_REQ_ZENY_FROM_MAIL { + int16 PacketType; + int64 MailID; + int8 opentype; +} __attribute__((packed)); + +struct PACKET_ZC_ACK_ZENY_FROM_MAIL { + int16 PacketType; + int64 MailID; + int8 opentype; + int8 result; +} __attribute__((packed)); + +struct PACKET_CZ_REQ_ITEM_FROM_MAIL { + int16 PacketType; + int64 MailID; + int8 opentype; +} __attribute__((packed)); + +struct PACKET_ZC_ACK_ITEM_FROM_MAIL { + int16 PacketType; + int64 MailID; + int8 opentype; + int8 result; +} __attribute__((packed)); + #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #pragma pack(pop) #endif // not NetBSD < 6 / Solaris diff --git a/src/map/pc.c b/src/map/pc.c index a925b523c..a4a32545b 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -765,9 +765,9 @@ int pc_equippoint(struct map_session_data *sd,int n) return 0; //Not equippable by players. ep = sd->inventory_data[n]->equip; - if (sd->inventory_data[n]->look == W_DAGGER - || sd->inventory_data[n]->look == W_1HSWORD - || sd->inventory_data[n]->look == W_1HAXE + if (sd->inventory_data[n]->subtype == W_DAGGER + || sd->inventory_data[n]->subtype == W_1HSWORD + || sd->inventory_data[n]->subtype == W_1HAXE ) { if (pc->checkskill(sd,AS_LEFT) > 0 || (sd->job & MAPID_UPPERMASK) == MAPID_ASSASSIN @@ -794,9 +794,9 @@ int pc_item_equippoint(struct map_session_data *sd, struct item_data* id) return 0; //Not equippable by players. ep = id->equip; - if (id->look == W_DAGGER || - id->look == W_1HSWORD || - id->look == W_1HAXE) { + if (id->subtype == W_DAGGER || + id->subtype == W_1HSWORD || + id->subtype == W_1HAXE) { if (pc->checkskill(sd, AS_LEFT) > 0 || (sd->job & MAPID_UPPERMASK) == MAPID_ASSASSIN || (sd->job & MAPID_UPPERMASK) == MAPID_KAGEROUOBORO) { @@ -829,40 +829,40 @@ int pc_calcweapontype(struct map_session_data *sd) // single-hand if(sd->weapontype2 == W_FIST) { - sd->status.weapon = sd->weapontype1; + sd->weapontype = sd->weapontype1; return 1; } if(sd->weapontype1 == W_FIST) { - sd->status.weapon = sd->weapontype2; + sd->weapontype = sd->weapontype2; return 1; } // dual-wield - sd->status.weapon = 0; + sd->weapontype = W_FIST; switch (sd->weapontype1){ case W_DAGGER: switch (sd->weapontype2) { - case W_DAGGER: sd->status.weapon = W_DOUBLE_DD; break; - case W_1HSWORD: sd->status.weapon = W_DOUBLE_DS; break; - case W_1HAXE: sd->status.weapon = W_DOUBLE_DA; break; + case W_DAGGER: sd->weapontype = W_DOUBLE_DD; break; + case W_1HSWORD: sd->weapontype = W_DOUBLE_DS; break; + case W_1HAXE: sd->weapontype = W_DOUBLE_DA; break; } break; case W_1HSWORD: switch (sd->weapontype2) { - case W_DAGGER: sd->status.weapon = W_DOUBLE_DS; break; - case W_1HSWORD: sd->status.weapon = W_DOUBLE_SS; break; - case W_1HAXE: sd->status.weapon = W_DOUBLE_SA; break; + case W_DAGGER: sd->weapontype = W_DOUBLE_DS; break; + case W_1HSWORD: sd->weapontype = W_DOUBLE_SS; break; + case W_1HAXE: sd->weapontype = W_DOUBLE_SA; break; } break; case W_1HAXE: switch (sd->weapontype2) { - case W_DAGGER: sd->status.weapon = W_DOUBLE_DA; break; - case W_1HSWORD: sd->status.weapon = W_DOUBLE_SA; break; - case W_1HAXE: sd->status.weapon = W_DOUBLE_AA; break; + case W_DAGGER: sd->weapontype = W_DOUBLE_DA; break; + case W_1HSWORD: sd->weapontype = W_DOUBLE_SA; break; + case W_1HAXE: sd->weapontype = W_DOUBLE_AA; break; } } // unknown, default to right hand type - if (!sd->status.weapon) - sd->status.weapon = sd->weapontype1; + if (sd->weapontype == W_FIST) + sd->weapontype = sd->weapontype1; return 2; } @@ -884,20 +884,30 @@ int pc_setequipindex(struct map_session_data *sd) if(sd->status.inventory[i].equip & pc->equip_pos[j]) sd->equip_index[j] = i; - if(sd->status.inventory[i].equip & EQP_HAND_R) - { - if(sd->inventory_data[i]) - sd->weapontype1 = sd->inventory_data[i]->look; - else - sd->weapontype1 = 0; + if (sd->status.inventory[i].equip & EQP_HAND_R) { + if (sd->inventory_data[i]) { + sd->weapontype1 = sd->inventory_data[i]->subtype; + sd->status.look.weapon = sd->inventory_data[i]->view_sprite; + } else { + sd->weapontype1 = W_FIST; + sd->status.look.weapon = 0; + } } - if( sd->status.inventory[i].equip & EQP_HAND_L ) - { - if( sd->inventory_data[i] && sd->inventory_data[i]->type == IT_WEAPON ) - sd->weapontype2 = sd->inventory_data[i]->look; - else - sd->weapontype2 = 0; + if (sd->status.inventory[i].equip & EQP_HAND_L) { + if (sd->inventory_data[i] != NULL) { + if (sd->inventory_data[i]->type == IT_WEAPON) + sd->weapontype2 = sd->inventory_data[i]->subtype; + else + sd->weapontype2 = W_FIST; + if (sd->inventory_data[i]->type == IT_ARMOR) + sd->has_shield = true; + else + sd->has_shield = false; + } else { + sd->weapontype2 = W_FIST; + sd->has_shield = false; + } } } } @@ -985,7 +995,7 @@ bool pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2_sd bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd) { int class, joblevel; - unsigned int jobexp; + uint64 jobexp; if( !pc->can_Adopt(p1_sd, p2_sd, b_sd) ) return false; @@ -1088,13 +1098,13 @@ int pc_isequip(struct map_session_data *sd,int n) return 1; //Can equip all helms if (sd->status.base_level > 96 && item->equip & EQP_ARMS && item->type == IT_WEAPON) - switch(item->look) { //In weapons, the look determines type of weapon. - case W_DAGGER: //Level 4 Knives are equippable.. this means all knives, I'd guess? - case W_1HSWORD: //All 1H swords - case W_1HAXE: //All 1H Axes - case W_MACE: //All 1H Maces - case W_STAFF: //All 1H Staves - return 1; + switch (item->subtype) { //In weapons, the look determines type of weapon. + case W_DAGGER: //Level 4 Knives are equippable.. this means all knives, I'd guess? + case W_1HSWORD: //All 1H swords + case W_1HAXE: //All 1H Axes + case W_MACE: //All 1H Maces + case W_STAFF: //All 1H Staves + return 1; } } } @@ -1165,6 +1175,8 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim } memcpy(&sd->status, st, sizeof(*st)); + memset(&sd->rodex, 0x0, sizeof(sd->rodex)); + VECTOR_INIT(sd->rodex.messages); if (st->sex != sd->status.sex) { clif->authfail_fd(sd->fd, 0); @@ -1517,6 +1529,7 @@ int pc_reg_received(struct map_session_data *sd) intif->Mail_requestinbox(sd->status.char_id, 0); // MAIL SYSTEM - Request Mail Inbox intif->request_questlog(sd); + intif->rodex_checkhasnew(sd); if (sd->state.connect_new == 0 && sd->fd) { //Character already loaded map! Gotta trigger LoadEndAck manually. sd->state.connect_new = 1; @@ -2485,7 +2498,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val) { } switch (sd->state.lr_flag) { case 2: - switch (sd->status.weapon) { + switch (sd->weapontype) { case W_BOW: case W_REVOLVER: case W_RIFLE: @@ -2552,7 +2565,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val) { case SP_ATTACKRANGE: switch (sd->state.lr_flag) { case 2: - switch (sd->status.weapon) { + switch (sd->weapontype) { case W_BOW: case W_REVOLVER: case W_RIFLE: @@ -5019,7 +5032,7 @@ int pc_isUseitem(struct map_session_data *sd,int n) break; } // Upper third classes - if ((item->class_upper & ITEMUPPER_THURDUPPER) != 0) { + if ((item->class_upper & ITEMUPPER_THIRDUPPER) != 0) { if ((sd->job & JOBL_THIRD) != 0 && (sd->job & JOBL_UPPER) != 0) break; } @@ -5939,11 +5952,11 @@ int pc_checkallowskill(struct map_session_data *sd) status_change_end(&sd->bl, scw_list[i], INVALID_TIMER); } - if(sd->sc.data[SC_STRUP] && sd->status.weapon) + if(sd->sc.data[SC_STRUP] && sd->weapontype != W_FIST) // Spurt requires bare hands (feet, in fact xD) status_change_end(&sd->bl, SC_STRUP, INVALID_TIMER); - if(sd->status.shield <= 0) { // Skills requiring a shield + if (!sd->has_shield) { // Skills requiring a shield for (i = 0; i < ARRAYLENGTH(scs_list); i++) if(sd->sc.data[scs_list[i]]) status_change_end(&sd->bl, scs_list[i], INVALID_TIMER); @@ -7947,7 +7960,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { if ((sd->job & MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && !sd->state.snovice_dead_flag) { unsigned int next = pc->nextbaseexp(sd); if( next == 0 ) next = pc->thisbaseexp(sd); - if( get_percentage(sd->status.base_exp,next) >= 99 ) { + if (get_percentage64(sd->status.base_exp, next) >= 99) { sd->state.snovice_dead_flag = 1; pc->setstand(sd); status_percent_heal(&sd->bl, 100, 100); @@ -8132,9 +8145,9 @@ void pc_revive(struct map_session_data *sd,unsigned int hp, unsigned int sp) { /*========================================== * script reading pc status registry *------------------------------------------*/ -int pc_readparam(const struct map_session_data *sd, int type) +int64 pc_readparam(const struct map_session_data *sd, int type) { - int val = 0; + int64 val = 0; nullpo_ret(sd); @@ -8285,7 +8298,7 @@ int pc_readparam(const struct map_session_data *sd, int type) /*========================================== * script set pc status registry *------------------------------------------*/ -int pc_setparam(struct map_session_data *sd,int type,int val) +int pc_setparam(struct map_session_data *sd, int type, int64 val) { int delta; nullpo_ret(sd); @@ -8300,7 +8313,7 @@ int pc_setparam(struct map_session_data *sd,int type,int val) stat += pc->gets_status_point(sd->status.base_level + i); sd->status.status_point += stat; } - sd->status.base_level = val; + sd->status.base_level = (int32)val; sd->status.base_exp = 0; // clif->updatestatus(sd, SP_BASELEVEL); // Gets updated at the bottom clif->updatestatus(sd, SP_NEXTBASEEXP); @@ -8319,7 +8332,7 @@ int pc_setparam(struct map_session_data *sd,int type,int val) sd->status.skill_point += val - sd->status.job_level; clif->updatestatus(sd, SP_SKILLPOINT); } - sd->status.job_level = val; + sd->status.job_level = (int32)val; sd->status.job_exp = 0; // clif->updatestatus(sd, SP_JOBLEVEL); // Gets updated at the bottom clif->updatestatus(sd, SP_NEXTJOBEXP); @@ -8327,21 +8340,21 @@ int pc_setparam(struct map_session_data *sd,int type,int val) status_calc_pc(sd, SCO_FORCE); break; case SP_SKILLPOINT: - sd->status.skill_point = val; + sd->status.skill_point = (int32)val; break; case SP_STATUSPOINT: - sd->status.status_point = val; + sd->status.status_point = (int32)val; break; case SP_ZENY: if( val < 0 ) return 0;// can't set negative zeny - logs->zeny(sd, LOG_TYPE_SCRIPT, sd, -(sd->status.zeny - cap_value(val, 0, MAX_ZENY))); - sd->status.zeny = cap_value(val, 0, MAX_ZENY); + logs->zeny(sd, LOG_TYPE_SCRIPT, sd, -(sd->status.zeny - cap_value((int32)val, 0, MAX_ZENY))); + sd->status.zeny = cap_value((int32)val, 0, MAX_ZENY); break; case SP_BANKVAULT: val = cap_value(val, 0, MAX_BANK_ZENY); - delta = (val - sd->status.bank_vault); - sd->status.bank_vault = val; + delta = ((int32)val - sd->status.bank_vault); + sd->status.bank_vault = (int32)val; if (map->save_settings & 256) { chrif->save(sd, 0); // send to char server } @@ -8367,16 +8380,16 @@ int pc_setparam(struct map_session_data *sd,int type,int val) sd->status.sex = val ? SEX_MALE : SEX_FEMALE; break; case SP_WEIGHT: - sd->weight = val; + sd->weight = (int32)val; break; case SP_MAXWEIGHT: - sd->max_weight = val; + sd->max_weight = (int32)val; break; case SP_HP: - sd->battle_status.hp = cap_value(val, 1, (int)sd->battle_status.max_hp); + sd->battle_status.hp = cap_value((int32)val, 1, (int)sd->battle_status.max_hp); break; case SP_MAXHP: - sd->battle_status.max_hp = cap_value(val, 1, battle_config.max_hp); + sd->battle_status.max_hp = cap_value((int32)val, 1, battle_config.max_hp); if( sd->battle_status.max_hp < sd->battle_status.hp ) { @@ -8385,10 +8398,10 @@ int pc_setparam(struct map_session_data *sd,int type,int val) } break; case SP_SP: - sd->battle_status.sp = cap_value(val, 0, (int)sd->battle_status.max_sp); + sd->battle_status.sp = cap_value((int32)val, 0, (int)sd->battle_status.max_sp); break; case SP_MAXSP: - sd->battle_status.max_sp = cap_value(val, 1, battle_config.max_sp); + sd->battle_status.max_sp = cap_value((int32)val, 1, battle_config.max_sp); if( sd->battle_status.max_sp < sd->battle_status.sp ) { @@ -8427,28 +8440,28 @@ int pc_setparam(struct map_session_data *sd,int type,int val) } return 1; // status_change_start/status_change_end already sends packets warning the client case SP_FAME: - sd->status.fame = val; + sd->status.fame = (int32)val; break; case SP_KILLERRID: - sd->killerrid = val; + sd->killerrid = (int32)val; return 1; case SP_KILLEDRID: - sd->killedrid = val; + sd->killedrid = (int32)val; return 1; case SP_SLOTCHANGE: - sd->status.slotchange = val; + sd->status.slotchange = (int32)val; return 1; case SP_CHARRENAME: - sd->status.rename = val; + sd->status.rename = (int32)val; return 1; case SP_MOD_EXP: - sd->status.mod_exp = val; + sd->status.mod_exp = (int32)val; return 1; case SP_MOD_DROP: - sd->status.mod_drop = val; + sd->status.mod_drop = (int32)val; return 1; case SP_MOD_DEATH: - sd->status.mod_death = val; + sd->status.mod_death = (int32)val; return 1; default: ShowError("pc_setparam: Attempted to set unknown parameter '%d'.\n", type); @@ -8822,10 +8835,10 @@ int pc_equiplookall(struct map_session_data *sd) clif->changelook(&sd->bl,LOOK_WEAPON,0); clif->changelook(&sd->bl,LOOK_SHOES,0); - clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom); - clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top); - clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid); - clif->changelook(&sd->bl,LOOK_ROBE, sd->status.robe); + clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom); + clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top); + clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid); + clif->changelook(&sd->bl, LOOK_ROBE, sd->status.look.robe); return 0; } @@ -8841,7 +8854,7 @@ int pc_changelook(struct map_session_data *sd,int type,int val) case LOOK_BASE: status->set_viewdata(&sd->bl, val); clif->changelook(&sd->bl, LOOK_BASE, sd->vd.class); - clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon); + clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon); if (sd->vd.cloth_color) clif->changelook(&sd->bl,LOOK_CLOTHES_COLOR,sd->vd.cloth_color); if (sd->vd.body_style) @@ -8860,16 +8873,16 @@ int pc_changelook(struct map_session_data *sd,int type,int val) } break; case LOOK_WEAPON: - sd->status.weapon=val; + sd->status.look.weapon = val; break; case LOOK_HEAD_BOTTOM: - sd->status.head_bottom=val; + sd->status.look.head_bottom = val; break; case LOOK_HEAD_TOP: - sd->status.head_top=val; + sd->status.look.head_top = val; break; case LOOK_HEAD_MID: - sd->status.head_mid=val; + sd->status.look.head_mid = val; break; case LOOK_HAIR_COLOR: //Use the battle_config limits! [Skotlex] val = cap_value(val, MIN_HAIR_COLOR, MAX_HAIR_COLOR); @@ -8887,12 +8900,12 @@ int pc_changelook(struct map_session_data *sd,int type,int val) sd->status.clothes_color=val; break; case LOOK_SHIELD: - sd->status.shield=val; + sd->status.look.shield = val; break; case LOOK_SHOES: break; case LOOK_ROBE: - sd->status.robe = val; + sd->status.look.robe = val; break; case LOOK_BODY2: val = cap_value(val, MIN_BODY_STYLE, MAX_BODY_STYLE); @@ -9754,83 +9767,91 @@ void pc_equipitem_pos(struct map_session_data *sd, struct item_data *id, int n, nullpo_retv(sd); if ((!map_no_view(sd->bl.m,EQP_SHADOW_WEAPON) && pos & EQP_SHADOW_WEAPON) || (pos & EQP_HAND_R)) { - if(id) - sd->weapontype1 = id->look; - else - sd->weapontype1 = 0; + if (id != NULL) { + sd->weapontype1 = id->subtype; + sd->status.look.weapon = id->view_sprite; + } else { + sd->weapontype1 = W_FIST; + sd->status.look.weapon = 0; + } pc->calcweapontype(sd); - clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon); + clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon); } if ((!map_no_view(sd->bl.m,EQP_SHADOW_SHIELD) && pos & EQP_SHADOW_SHIELD) || (pos & EQP_HAND_L)) { - if (id) { - if(id->type == IT_WEAPON) { - sd->status.shield = 0; - sd->weapontype2 = id->look; - } else if(id->type == IT_ARMOR) { - sd->status.shield = id->look; - sd->weapontype2 = 0; + if (id != NULL) { + if (id->type == IT_WEAPON) { + sd->has_shield = false; + sd->status.look.shield = 0; + sd->weapontype2 = id->subtype; + } else if (id->type == IT_ARMOR) { + sd->has_shield = true; + sd->status.look.shield = id->view_sprite; + sd->weapontype2 = W_FIST; } - } else - sd->status.shield = sd->weapontype2 = 0; + } else { + sd->has_shield = false; + sd->status.look.shield = 0; + sd->weapontype2 = W_FIST; + } pc->calcweapontype(sd); - clif->changelook(&sd->bl,LOOK_SHIELD,sd->status.shield); + clif->changelook(&sd->bl, LOOK_SHIELD, sd->status.look.shield); } //Added check to prevent sending the same look on multiple slots -> //causes client to redraw item on top of itself. (suggested by Lupus) if (!map_no_view(sd->bl.m,EQP_HEAD_LOW) && pos & EQP_HEAD_LOW && pc->checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1) { if (id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID))) - sd->status.head_bottom = id->look; + sd->status.look.head_bottom = id->view_sprite; else - sd->status.head_bottom = 0; - clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom); + sd->status.look.head_bottom = 0; + clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom); } if (!map_no_view(sd->bl.m,EQP_HEAD_TOP) && pos & EQP_HEAD_TOP && pc->checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1) { if (id) - sd->status.head_top = id->look; + sd->status.look.head_top = id->view_sprite; else - sd->status.head_top = 0; - clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top); + sd->status.look.head_top = 0; + clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top); } if (!map_no_view(sd->bl.m,EQP_HEAD_MID) && pos & EQP_HEAD_MID && pc->checkequip(sd,EQP_COSTUME_HEAD_MID) == -1) { if (id && !(pos&EQP_HEAD_TOP)) - sd->status.head_mid = id->look; + sd->status.look.head_mid = id->view_sprite; else - sd->status.head_mid = 0; - clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid); + sd->status.look.head_mid = 0; + clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid); } if (!map_no_view(sd->bl.m,EQP_COSTUME_HEAD_TOP) && pos & EQP_COSTUME_HEAD_TOP) { if (id){ - sd->status.head_top = id->look; + sd->status.look.head_top = id->view_sprite; } else - sd->status.head_top = 0; - clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top); + sd->status.look.head_top = 0; + clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top); } if (!map_no_view(sd->bl.m,EQP_COSTUME_HEAD_MID) && pos & EQP_COSTUME_HEAD_MID) { if(id && !(pos&EQP_HEAD_TOP)){ - sd->status.head_mid = id->look; + sd->status.look.head_mid = id->view_sprite; } else - sd->status.head_mid = 0; - clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid); + sd->status.look.head_mid = 0; + clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid); } if (!map_no_view(sd->bl.m,EQP_COSTUME_HEAD_LOW) && pos & EQP_COSTUME_HEAD_LOW) { if (id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID))){ - sd->status.head_bottom = id->look; + sd->status.look.head_bottom = id->view_sprite; } else - sd->status.head_bottom = 0; - clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom); + sd->status.look.head_bottom = 0; + clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom); } if (!map_no_view(sd->bl.m,EQP_SHOES) && pos & EQP_SHOES) clif->changelook(&sd->bl,LOOK_SHOES,0); if (!map_no_view(sd->bl.m,EQP_GARMENT) && pos&EQP_GARMENT && pc->checkequip(sd,EQP_COSTUME_GARMENT) == -1) { - sd->status.robe = id ? id->look : 0; - clif->changelook(&sd->bl, LOOK_ROBE, sd->status.robe); + sd->status.look.robe = id ? id->view_sprite : 0; + clif->changelook(&sd->bl, LOOK_ROBE, sd->status.look.robe); } if (!map_no_view(sd->bl.m,EQP_COSTUME_GARMENT) && pos & EQP_COSTUME_GARMENT) { - sd->status.robe = id ? id->look : 0; - clif->changelook(&sd->bl,LOOK_ROBE,sd->status.robe); + sd->status.look.robe = id ? id->view_sprite : 0; + clif->changelook(&sd->bl, LOOK_ROBE, sd->status.look.robe); } } @@ -9984,57 +10005,59 @@ void pc_unequipitem_pos(struct map_session_data *sd, int n, int pos) { nullpo_retv(sd); if (pos & EQP_HAND_R) { - sd->weapontype1 = 0; - sd->status.weapon = sd->weapontype2; + sd->weapontype1 = W_FIST; pc->calcweapontype(sd); - clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon); + sd->status.look.weapon = 0; + clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon); if (!battle_config.dancing_weaponswitch_fix) status_change_end(&sd->bl, SC_DANCING, INVALID_TIMER); // Unequipping => stop dancing. } if (pos & EQP_HAND_L) { - sd->status.shield = sd->weapontype2 = 0; + sd->has_shield = false; + sd->status.look.shield = 0; + sd->weapontype2 = W_FIST; pc->calcweapontype(sd); - clif->changelook(&sd->bl,LOOK_SHIELD,sd->status.shield); + clif->changelook(&sd->bl, LOOK_SHIELD, sd->status.look.shield); } if (pos & EQP_HEAD_LOW && pc->checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1) { - sd->status.head_bottom = 0; - clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom); + sd->status.look.head_bottom = 0; + clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom); } if (pos & EQP_HEAD_TOP && pc->checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1) { - sd->status.head_top = 0; - clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top); + sd->status.look.head_top = 0; + clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top); } if (pos & EQP_HEAD_MID && pc->checkequip(sd,EQP_COSTUME_HEAD_MID) == -1) { - sd->status.head_mid = 0; - clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid); + sd->status.look.head_mid = 0; + clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid); } if (pos & EQP_COSTUME_HEAD_TOP) { - sd->status.head_top = ( pc->checkequip(sd,EQP_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_TOP)]->look : 0; - clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top); + sd->status.look.head_top = ( pc->checkequip(sd,EQP_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_TOP)]->view_sprite : 0; + clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top); } if (pos & EQP_COSTUME_HEAD_MID) { - sd->status.head_mid = ( pc->checkequip(sd,EQP_HEAD_MID) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_MID)]->look : 0; - clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid); + sd->status.look.head_mid = ( pc->checkequip(sd,EQP_HEAD_MID) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_MID)]->view_sprite : 0; + clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid); } if (pos & EQP_COSTUME_HEAD_LOW) { - sd->status.head_bottom = ( pc->checkequip(sd,EQP_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_LOW)]->look : 0; - clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom); + sd->status.look.head_bottom = ( pc->checkequip(sd,EQP_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_LOW)]->view_sprite : 0; + clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom); } if (pos & EQP_SHOES) clif->changelook(&sd->bl,LOOK_SHOES,0); if (pos & EQP_GARMENT && pc->checkequip(sd,EQP_COSTUME_GARMENT) == -1) { - sd->status.robe = 0; + sd->status.look.robe = 0; clif->changelook(&sd->bl, LOOK_ROBE, 0); } if (pos & EQP_COSTUME_GARMENT) { - sd->status.robe = ( pc->checkequip(sd,EQP_GARMENT) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_GARMENT)]->look : 0; - clif->changelook(&sd->bl,LOOK_ROBE,sd->status.robe); + sd->status.look.robe = ( pc->checkequip(sd,EQP_GARMENT) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_GARMENT)]->view_sprite : 0; + clif->changelook(&sd->bl, LOOK_ROBE, sd->status.look.robe); } } @@ -10088,7 +10111,7 @@ int pc_unequipitem(struct map_session_data *sd,int n,int flag) clif->unequipitemack(sd, n, pos, UIA_SUCCESS); if ((pos & EQP_ARMS) && - sd->weapontype1 == 0 && sd->weapontype2 == 0 && (sd->sc.data[SC_TK_SEVENWIND] == 0 || sd->sc.data[SC_ASPERSIO])) //Check for seven wind (but not level seven!) + sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST && (sd->sc.data[SC_TK_SEVENWIND] == NULL || sd->sc.data[SC_ASPERSIO] != NULL)) //Check for seven wind (but not level seven!) skill->enchant_elemental_end(&sd->bl, -1); if (pos & EQP_ARMOR) { diff --git a/src/map/pc.h b/src/map/pc.h index 04fd98b24..46aafa5e5 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -28,6 +28,7 @@ #include "map/log.h" // struct e_log_pick_type #include "map/map.h" // RC_MAX, ELE_MAX #include "map/pc_groups.h" // GroupSettings +#include "map/rodex.h" #include "map/script.h" // struct reg_db #include "map/searchstore.h" // struct s_search_store_info #include "map/status.h" // enum sc_type, OPTION_* @@ -307,7 +308,10 @@ struct map_session_data { short nameid; int64 tick; } item_delay[MAX_ITEMDELAYS]; // [Paradox924X] - short weapontype1,weapontype2; + bool has_shield; ///< Whether the character is wearing a shield. + int16 weapontype; ///< Weapon type considering both hands (@see enum weapon_type). + int16 weapontype1; ///< Weapon type in the right/primary hand (@see enum weapon_type). + int16 weapontype2; ///< Weapon type in the left/secondary hand (@see enum weapon_type). short disguise; // [Valaris] struct weapon_data right_weapon, left_weapon; @@ -499,6 +503,14 @@ END_ZEROED_BLOCK; bool changed; // if true, should sync with charserver on next mailbox request } mail; + // RoDEX + struct { + struct rodex_message tmp; + struct rodex_maillist messages; + int total; + bool new_mail; + } rodex; + // Quest log system int num_quests; ///< Number of entries in quest_log int avail_quests; ///< Number of Q_ACTIVE and Q_INACTIVE entries in quest log (index of the first Q_COMPLETE entry) @@ -676,8 +688,13 @@ END_ZEROED_BLOCK; #define pc_stop_attack(sd) (unit->stop_attack(&(sd)->bl)) //Weapon check considering dual wielding. -#define pc_check_weapontype(sd, type) ((type)&((sd)->status.weapon < MAX_SINGLE_WEAPON_TYPE? \ - 1<<(sd)->status.weapon:(1<<(sd)->weapontype1)|(1<<(sd)->weapontype2)|(1<<(sd)->status.weapon))) +#define pc_check_weapontype(sd, type) ( \ + (type) & ( \ + (sd)->weapontype < MAX_SINGLE_WEAPON_TYPE ? \ + 1 << (sd)->weapontype : \ + (1 << (sd)->weapontype1) | (1 << (sd)->weapontype2) \ + ) \ + ) // clientside display macros (values to the left/right of the "+") #ifdef RENEWAL @@ -977,8 +994,8 @@ END_ZEROED_BLOCK; /* End */ int (*changelook) (struct map_session_data *sd,int type,int val); int (*equiplookall) (struct map_session_data *sd); - int (*readparam) (const struct map_session_data *sd, int type); - int (*setparam) (struct map_session_data *sd,int type,int val); + int64 (*readparam) (const struct map_session_data *sd, int type); + int (*setparam) (struct map_session_data *sd, int type, int64 val); int (*readreg) (struct map_session_data *sd, int64 reg); void (*setreg) (struct map_session_data *sd, int64 reg,int val); char * (*readregstr) (struct map_session_data *sd, int64 reg); diff --git a/src/map/rodex.c b/src/map/rodex.c new file mode 100644 index 000000000..63d7242db --- /dev/null +++ b/src/map/rodex.c @@ -0,0 +1,642 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2017 Hercules Dev Team + * + * Hercules is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#define HERCULES_CORE + +#include "rodex.h" + +#include "map/battle.h" +#include "map/date.h" +#include "map/intif.h" +#include "map/itemdb.h" +#include "map/pc.h" + +#include "common/nullpo.h" +#include "common/sql.h" +#include "common/memmgr.h" + + +// NOTE : These values are hardcoded into the client +// Cost of each Attached Item +#define ATTACHITEM_COST 2500 +// Percent of Attached Zeny that will be paid as Tax +#define ATTACHZENY_TAX 2 +// Maximun number of messages that can be sent in one day +#define DAILY_MAX_MAILS 100 + +struct rodex_interface rodex_s; +struct rodex_interface *rodex; + +/// Checks if RoDEX System is enabled in the server +/// Returns true if it's enabled, false otherwise +bool rodex_isenabled(void) +{ + if (battle_config.feature_rodex == 1) + return true; + + return false; +} + +/// Checks and refreshes the user daily number of Stamps +/// @param sd : The player who's being checked +void rodex_refresh_stamps(struct map_session_data *sd) +{ + int today = date_get_date(); + nullpo_retv(sd); + + // Note : Weirdly, iRO starts this with maximum messages of the day and decrements + // but our clients starts this at 0 and increments + if (sd->sc.data[SC_DAILYSENDMAILCNT] == NULL) { + sc_start2(NULL, &sd->bl, SC_DAILYSENDMAILCNT, 100, today, 0, INFINITE_DURATION); + } else { + int sc_date = sd->sc.data[SC_DAILYSENDMAILCNT]->val1; + if (sc_date != today) { + sc_start2(NULL, &sd->bl, SC_DAILYSENDMAILCNT, 100, today, 0, INFINITE_DURATION); + } + } +} + +/// Attaches an item to a message being written +/// @param sd : The player who's writting +/// @param idx : the inventory idx of the item +/// @param amount : Amount of the item to be attached +void rodex_add_item(struct map_session_data *sd, int16 idx, int16 amount) +{ + int i; + bool is_stack = false; + + nullpo_retv(sd); + + if (idx < 0 || idx >= MAX_INVENTORY) { + clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_FATAL_ERROR); + return; + } + + if (amount < 0 || amount > sd->status.inventory[idx].amount) { + clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_FATAL_ERROR); + return; + } + + if (!pc_can_give_items(sd) || sd->status.inventory[idx].expire_time || + !itemdb_canmail(&sd->status.inventory[idx], pc_get_group_level(sd)) || + (sd->status.inventory[idx].bound && !pc_can_give_bound_items(sd))) { + clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_NOT_TRADEABLE); + return; + } + + if (itemdb->isstackable(sd->status.inventory[idx].nameid) == 1) { + for (i = 0; i < RODEX_MAX_ITEM; ++i) { + if (sd->rodex.tmp.items[i].idx == idx) { + if (sd->status.inventory[idx].nameid == sd->rodex.tmp.items[i].item.nameid && + sd->status.inventory[idx].unique_id == sd->rodex.tmp.items[i].item.unique_id) { + is_stack = true; + break; + } + } + } + + if (i == RODEX_MAX_ITEM && sd->rodex.tmp.items_count < RODEX_MAX_ITEM) { + ARR_FIND(0, RODEX_MAX_ITEM, i, sd->rodex.tmp.items[i].idx == 0); + } + } else if (sd->rodex.tmp.items_count < RODEX_MAX_ITEM) { + ARR_FIND(0, RODEX_MAX_ITEM, i, sd->rodex.tmp.items[i].idx == 0); + } else { + i = RODEX_MAX_ITEM; + } + + if (i == RODEX_MAX_ITEM) { + clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_NO_SPACE); + return; + } + + if (sd->rodex.tmp.items[i].item.amount + amount > sd->status.inventory[idx].amount) { + clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_FATAL_ERROR); + return; + } + + if (sd->rodex.tmp.weight + sd->inventory_data[idx]->weight * amount > RODEX_WEIGHT_LIMIT) { + clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_FATAL_ERROR); + return; + } + + sd->rodex.tmp.items[i].idx = idx; + sd->rodex.tmp.weight += sd->inventory_data[idx]->weight * amount; + if (is_stack == false) { + sd->rodex.tmp.items[i].item = sd->status.inventory[idx]; + sd->rodex.tmp.items[i].item.amount = amount; + sd->rodex.tmp.items_count++; + } else { + sd->rodex.tmp.items[i].item.amount += amount; + } + sd->rodex.tmp.type |= MAIL_TYPE_ITEM; + + clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_SUCCESS); +} + +/// Removes an item attached to a message being writen +/// @param sd : The player who's writting the message +/// @param idx : The index of the item +/// @param amount : How much to remove +void rodex_remove_item(struct map_session_data *sd, int16 idx, int16 amount) +{ + int i; + struct item *it; + struct item_data *itd; + + nullpo_retv(sd); + Assert_retv(idx >= 0 && idx < MAX_INVENTORY); + + for (i = 0; i < RODEX_MAX_ITEM; ++i) { + if (sd->rodex.tmp.items[i].idx == idx) + break; + } + + if (i == RODEX_MAX_ITEM) { + clif->rodex_remove_item_result(sd, idx, -1); + return; + } + + it = &sd->rodex.tmp.items[i].item; + + if (amount <= 0 || amount > it->amount) { + clif->rodex_remove_item_result(sd, idx, -1); + return; + } + + itd = itemdb->search(it->nameid); + + if (amount == it->amount) { + sd->rodex.tmp.weight -= itd->weight * amount; + sd->rodex.tmp.items_count--; + if (sd->rodex.tmp.items_count < 1) { + sd->rodex.tmp.type &= ~MAIL_TYPE_ITEM; + } + memset(&sd->rodex.tmp.items[i], 0x0, sizeof(sd->rodex.tmp.items[0])); + clif->rodex_remove_item_result(sd, idx, 0); + return; + } + + it->amount -= amount; + sd->rodex.tmp.weight -= itd->weight * amount; + + clif->rodex_remove_item_result(sd, idx, it->amount); +} + +/// Request if character with given name exists and returns information about him +/// @param sd : The player who's requesting +/// @param name : The name of the character to check +/// @param base_level : Reference to return the character base level, if he exists +/// @param char_id : Reference to return the character id, if he exists +/// @param class : Reference to return the character class id, if he exists +void rodex_check_player(struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class) +{ + intif->rodex_checkname(sd, name); +} + +/// Sends a Mail to an character +/// @param sd : The player who's sending +/// @param receiver_name : The name of the character who's receiving the message +/// @param body : Mail message +/// @param title : Mail Title +/// @param zeny : Amount of zeny attached +/// Returns result code: +/// RODEX_SEND_MAIL_SUCCESS = 0, +/// RODEX_SEND_MAIL_FATAL_ERROR = 1, +/// RODEX_SEND_MAIL_COUNT_ERROR = 2, +/// RODEX_SEND_MAIL_ITEM_ERROR = 3, +/// RODEX_SEND_MAIL_RECEIVER_ERROR = 4 +int rodex_send_mail(struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny) +{ + int i; + int64 total_zeny; + + nullpo_retr(RODEX_SEND_MAIL_FATAL_ERROR, sd); + nullpo_retr(RODEX_SEND_MAIL_FATAL_ERROR, receiver_name); + nullpo_retr(RODEX_SEND_MAIL_FATAL_ERROR, body); + nullpo_retr(RODEX_SEND_MAIL_FATAL_ERROR, title); + + if (zeny < 0) { + rodex->clean(sd, 1); + return RODEX_SEND_MAIL_FATAL_ERROR; + } + + total_zeny = zeny + sd->rodex.tmp.items_count * ATTACHITEM_COST + (2 * zeny)/100; + + if (strcmp(receiver_name, sd->rodex.tmp.receiver_name) != 0) { + rodex->clean(sd, 1); + return RODEX_SEND_MAIL_RECEIVER_ERROR; + } + + if (total_zeny > sd->status.zeny || total_zeny < 0) { + rodex->clean(sd, 1); + return RODEX_SEND_MAIL_FATAL_ERROR; + } + + rodex_refresh_stamps(sd); + + if (sd->sc.data[SC_DAILYSENDMAILCNT] != NULL) { + if (sd->sc.data[SC_DAILYSENDMAILCNT]->val2 >= DAILY_MAX_MAILS) { + rodex->clean(sd, 1); + return RODEX_SEND_MAIL_COUNT_ERROR; + } + + sc_start2(NULL, &sd->bl, SC_DAILYSENDMAILCNT, 100, sd->sc.data[SC_DAILYSENDMAILCNT]->val1, sd->sc.data[SC_DAILYSENDMAILCNT]->val2 + 1, INFINITE_DURATION); + } else { + sc_start2(NULL, &sd->bl, SC_DAILYSENDMAILCNT, 100, date_get_date(), 1, INFINITE_DURATION); + } + + for (i = 0; i < RODEX_MAX_ITEM; i++) { + int16 idx = sd->rodex.tmp.items[i].idx; + int j; + struct item *tmpItem = &sd->rodex.tmp.items[i].item; + struct item *invItem = &sd->status.inventory[idx]; + + if (tmpItem->nameid == 0) + continue; + + if (tmpItem->nameid != invItem->nameid || + tmpItem->unique_id != invItem->unique_id || + tmpItem->refine != invItem->refine || + tmpItem->attribute != invItem->attribute || + tmpItem->expire_time != invItem->expire_time || + tmpItem->bound != invItem->bound || + tmpItem->amount > invItem->amount || + tmpItem->amount < 1) { + rodex->clean(sd, 1); + return RODEX_SEND_MAIL_ITEM_ERROR; + } + for (j = 0; j < MAX_SLOTS; j++) { + if (tmpItem->card[j] != invItem->card[j]) { + rodex->clean(sd, 1); + return RODEX_SEND_MAIL_ITEM_ERROR; + } + } + for (j = 0; j < MAX_ITEM_OPTIONS; j++) { + if (tmpItem->option[j].index != invItem->option[j].index || + tmpItem->option[j].value != invItem->option[j].value || + tmpItem->option[j].param != invItem->option[j].param) { + rodex->clean(sd, 1); + return RODEX_SEND_MAIL_ITEM_ERROR; + } + } + } + + if (total_zeny > 0 && pc->payzeny(sd, (int)total_zeny, LOG_TYPE_MAIL, NULL) != 0) { + rodex->clean(sd, 1); + return RODEX_SEND_MAIL_FATAL_ERROR; + } + + for (i = 0; i < RODEX_MAX_ITEM; i++) { + int16 idx = sd->rodex.tmp.items[i].idx; + + if (sd->rodex.tmp.items[i].item.nameid == 0) { + continue; + } + + if (pc->delitem(sd, idx, sd->rodex.tmp.items[i].item.amount, 0, DELITEM_NORMAL, LOG_TYPE_MAIL) != 0) { + rodex->clean(sd, 1); + return RODEX_SEND_MAIL_ITEM_ERROR; + } + } + + sd->rodex.tmp.zeny = zeny; + sd->rodex.tmp.is_read = false; + sd->rodex.tmp.is_deleted = false; + sd->rodex.tmp.send_date = (int)time(NULL); + sd->rodex.tmp.expire_date = (int)time(NULL) + RODEX_EXPIRE; + if (strlen(sd->rodex.tmp.body) > 0) + sd->rodex.tmp.type |= MAIL_TYPE_TEXT; + if (sd->rodex.tmp.zeny > 0) + sd->rodex.tmp.type |= MAIL_TYPE_ZENY; + sd->rodex.tmp.sender_id = sd->status.char_id; + safestrncpy(sd->rodex.tmp.sender_name, sd->status.name, NAME_LENGTH); + safestrncpy(sd->rodex.tmp.title, title, RODEX_TITLE_LENGTH); + safestrncpy(sd->rodex.tmp.body, body, RODEX_BODY_LENGTH); + + intif->rodex_sendmail(&sd->rodex.tmp); + return RODEX_SEND_MAIL_SUCCESS; // this will not inform client of the success yet. (see rodex_send_mail_result) +} + +/// The result of a message send, called by char-server +/// @param ssd : Sender's sd +/// @param rsd : Receiver's sd +/// @param result : Message sent (true) or failed (false) +void rodex_send_mail_result(struct map_session_data *ssd, struct map_session_data *rsd, bool result) +{ + if (ssd != NULL) { + rodex->clean(ssd, 1); + if (result == false) { + clif->rodex_send_mail_result(ssd->fd, ssd, RODEX_SEND_MAIL_FATAL_ERROR); + return; + } + + clif->rodex_send_mail_result(ssd->fd, ssd, RODEX_SEND_MAIL_SUCCESS); + } + + if (rsd != NULL) { + clif->rodex_icon(rsd->fd, true); + clif_disp_onlyself(rsd, "You've got a new mail!"); + } + return; +} + +/// Retrieves one message from character +/// @param sd : Character +/// @param mail_id : Mail ID that's being retrieved +/// Returns the message +struct rodex_message *rodex_get_mail(struct map_session_data *sd, int64 mail_id) +{ + int i; + struct rodex_message *msg; + + nullpo_retr(NULL, sd); + + ARR_FIND(0, VECTOR_LENGTH(sd->rodex.messages), i, VECTOR_INDEX(sd->rodex.messages, i).id == mail_id && VECTOR_INDEX(sd->rodex.messages, i).is_deleted != true); + if (i == VECTOR_LENGTH(sd->rodex.messages)) + return NULL; + + msg = &VECTOR_INDEX(sd->rodex.messages, i); + + return msg; +} + +/// Request to read a mail by its ID +/// @param sd : Who's reading +/// @param mail_id : Mail ID to be read +void rodex_read_mail(struct map_session_data *sd, int64 mail_id) +{ + struct rodex_message *msg; + + nullpo_retv(sd); + + msg = rodex->get_mail(sd, mail_id); + nullpo_retv(msg); + + if (msg->is_read == false) { + intif->rodex_updatemail(msg->id, 0); + msg->is_read = true; + } + + clif->rodex_read_mail(sd, msg->opentype, msg); +} + +/// Deletes a mail +/// @param sd : Who's deleting +/// @param mail_id : Mail ID to be deleted +void rodex_delete_mail(struct map_session_data *sd, int64 mail_id) +{ + struct rodex_message *msg; + + nullpo_retv(sd); + + msg = rodex->get_mail(sd, mail_id); + nullpo_retv(msg); + + msg->is_deleted = true; + intif->rodex_updatemail(msg->id, 3); + + clif->rodex_delete_mail(sd, msg->opentype, msg->id); +} + +/// Gets attached zeny +/// @param sd : Who's getting +/// @param mail_id : Mail ID that we're getting zeny from +void rodex_get_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id) +{ + struct rodex_message *msg; + + nullpo_retv(sd); + + msg = rodex->get_mail(sd, mail_id); + + if (msg == NULL) { + clif->rodex_request_zeny(sd, opentype, mail_id, RODEX_GET_ZENY_FATAL_ERROR); + return; + } + + if ((int64)sd->status.zeny + msg->zeny > MAX_ZENY) { + clif->rodex_request_zeny(sd, opentype, mail_id, RODEX_GET_ZENY_LIMIT_ERROR); + return; + } + + if (pc->getzeny(sd, (int)msg->zeny, LOG_TYPE_MAIL, NULL) != 0) { + clif->rodex_request_zeny(sd, opentype, mail_id, RODEX_GET_ZENY_FATAL_ERROR); + return; + } + + msg->zeny = 0; + intif->rodex_updatemail(mail_id, 1); + + clif->rodex_request_zeny(sd, opentype, mail_id, RODEX_GET_ZENY_SUCCESS); +} + +/// Gets attached item +/// @param sd : Who's getting +/// @param mail_id : Mail ID that we're getting items from +void rodex_get_items(struct map_session_data *sd, int8 opentype, int64 mail_id) +{ + struct rodex_message *msg; + int weight = 0; + int empty_slots = 0, required_slots; + int i; + + nullpo_retv(sd); + + msg = rodex->get_mail(sd, mail_id); + + if (msg == NULL) { + clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEM_FATAL_ERROR); + return; + } + + if (msg->items_count < 1) { + clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEM_FATAL_ERROR); + return; + } + + for (i = 0; i < RODEX_MAX_ITEM; ++i) { + if (msg->items[i].item.nameid != 0) { + weight += itemdb->search(msg->items[i].item.nameid)->weight * msg->items[i].item.amount; + } + } + + if ((sd->weight + weight > sd->max_weight)) { + clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEM_FULL_ERROR); + return; + } + + required_slots = msg->items_count; + for (i = 0; i < MAX_INVENTORY; ++i) { + if (sd->status.inventory[i].nameid == 0) { + empty_slots++; + } else if (itemdb->isstackable(sd->status.inventory[i].nameid) == 1) { + int j; + ARR_FIND(0, msg->items_count, j, sd->status.inventory[i].nameid == msg->items[j].item.nameid); + if (j < msg->items_count) { + struct item_data *idata = itemdb->search(sd->status.inventory[i].nameid); + + if ((idata->stack.inventory && sd->status.inventory[i].amount + msg->items[j].item.amount > idata->stack.amount) || + sd->status.inventory[i].amount + msg->items[j].item.amount > MAX_AMOUNT) { + clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEM_FULL_ERROR); + return; + } + + required_slots--; + } + } + } + + if (empty_slots < required_slots) { + clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEM_FULL_ERROR); + return; + } + + for (i = 0; i < RODEX_MAX_ITEM; ++i) { + struct item *it = &msg->items[i].item; + + if (it->nameid == 0) { + continue; + } + + if (pc->additem(sd, it, it->amount, LOG_TYPE_MAIL) != 0) { + clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEM_FULL_ERROR); + intif->rodex_updatemail(mail_id, 2); + return; + } else { + memset(it, 0x0, sizeof(*it)); + } + } + + intif->rodex_updatemail(mail_id, 2); + + clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEMS_SUCCESS); +} + +/// Cleans user's RoDEX related data +/// - should be called everytime we're going to stop using rodex in this character +/// @param sd : Target to clean +/// @param flag : +/// 0 - clear everything +/// 1 - clear tmp only +void rodex_clean(struct map_session_data *sd, int8 flag) +{ + nullpo_retv(sd); + + if (flag == 0) + VECTOR_CLEAR(sd->rodex.messages); + + memset(&sd->rodex.tmp, 0x0, sizeof(sd->rodex.tmp)); +} + +/// User request to open rodex, load mails from char-server +/// @param sd : Who's requesting +/// @param open_type : Box Type (see RODEX_OPENTYPE) +void rodex_open(struct map_session_data *sd, int8 open_type) +{ + nullpo_retv(sd); + if (open_type == RODEX_OPENTYPE_ACCOUNT && battle_config.feature_rodex_use_accountmail == false) + open_type = RODEX_OPENTYPE_MAIL; + + intif->rodex_requestinbox(sd->status.char_id, sd->status.account_id, 0, open_type, 0); +} + +/// User request to read next page of mails +/// @param sd : Who's requesting +/// @param open_type : Box Type (see RODEX_OPENTYPE) +/// @param last_mail_id : The last mail from the current page +void rodex_next_page(struct map_session_data *sd, int8 open_type, int64 last_mail_id) +{ + int64 msg_count, page_start = 0; + nullpo_retv(sd); + + if (open_type == RODEX_OPENTYPE_ACCOUNT && battle_config.feature_rodex_use_accountmail == false) { + // Should not happen + open_type = RODEX_OPENTYPE_MAIL; + rodex->open(sd, open_type); + return; + } + + msg_count = VECTOR_LENGTH(sd->rodex.messages); + + if (last_mail_id > 0) { + // Find where the page starts + ARR_FIND(0, msg_count, page_start, VECTOR_INDEX(sd->rodex.messages, page_start).id == last_mail_id); + if (page_start > 0 && page_start < msg_count) { + --page_start; // Valid page, get first item of next page + } else { + page_start = msg_count - 1; // Should not happen, invalid lower_id given + } + clif->rodex_send_maillist(sd->fd, sd, open_type, page_start); + } +} + +/// User's request to refresh his mail box +/// @param sd : Who's requesting +/// @param open_type : Box Type (See RODEX_OPENTYPE) +/// @param first_mail_id : The first mail id known by client, currently unused +void rodex_refresh(struct map_session_data *sd, int8 open_type, int64 first_mail_id) +{ + nullpo_retv(sd); + if (open_type == RODEX_OPENTYPE_ACCOUNT && battle_config.feature_rodex_use_accountmail == false) + open_type = RODEX_OPENTYPE_MAIL; + + // Some clients sends the first mail id it currently has and expects to receive + // a list of newer mails, other clients sends first mail id as 0 and expects + // to receive the first page (as if opening the box) + if (first_mail_id > 0) { + intif->rodex_requestinbox(sd->status.char_id, sd->status.account_id, 1, open_type, first_mail_id); + } else { + intif->rodex_requestinbox(sd->status.char_id, sd->status.account_id, 0, open_type, first_mail_id); + } +} + +void do_init_rodex(bool minimal) +{ + if (minimal) + return; +} + +void do_final_rodex(void) +{ + +} + +void rodex_defaults(void) +{ + rodex = &rodex_s; + + rodex->init = do_init_rodex; + rodex->final = do_final_rodex; + + rodex->open = rodex_open; + rodex->next_page = rodex_next_page; + rodex->refresh = rodex_refresh; + rodex->isenabled = rodex_isenabled; + rodex->add_item = rodex_add_item; + rodex->remove_item = rodex_remove_item; + rodex->check_player = rodex_check_player; + rodex->send_mail = rodex_send_mail; + rodex->send_mail_result = rodex_send_mail_result; + rodex->get_mail = rodex_get_mail; + rodex->read_mail = rodex_read_mail; + rodex->delete_mail = rodex_delete_mail; + rodex->get_zeny = rodex_get_zeny; + rodex->get_items = rodex_get_items; + rodex->clean = rodex_clean; +} diff --git a/src/map/rodex.h b/src/map/rodex.h new file mode 100644 index 000000000..18ecd91d6 --- /dev/null +++ b/src/map/rodex.h @@ -0,0 +1,85 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2017 Hercules Dev Team + * + * Hercules is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef MAP_RODEX_H +#define MAP_RODEX_H + +#include "common/mmo.h" +#include "common/hercules.h" + +#define RODEX_WEIGHT_LIMIT (2000 * 10) + +struct rodex_message; + +enum rodex_add_item { + RODEX_ADD_ITEM_SUCCESS = 0, + RODEX_ADD_ITEM_WEIGHT_ERROR = 1, + RODEX_ADD_ITEM_FATAL_ERROR = 2, + RODEX_ADD_ITEM_NO_SPACE = 3, + RODEX_ADD_ITEM_NOT_TRADEABLE = 4, +}; + +enum rodex_send_mail { + RODEX_SEND_MAIL_SUCCESS = 0, + RODEX_SEND_MAIL_FATAL_ERROR = 1, + RODEX_SEND_MAIL_COUNT_ERROR = 2, + RODEX_SEND_MAIL_ITEM_ERROR = 3, + RODEX_SEND_MAIL_RECEIVER_ERROR = 4 +}; + +enum rodex_get_zeny { + RODEX_GET_ZENY_SUCCESS = 0, + RODEX_GET_ZENY_FATAL_ERROR = 1, + RODEX_GET_ZENY_LIMIT_ERROR = 2 +}; + +enum rodex_get_items { + RODEX_GET_ITEMS_SUCCESS = 0, + RODEX_GET_ITEM_FATAL_ERROR = 1, + RODEX_GET_ITEM_FULL_ERROR = 2, +}; + +struct rodex_interface { + void (*init) (bool minimal); + void (*final) (void); + + bool (*isenabled) (void); + void (*open) (struct map_session_data *sd, int8 open_type); + void (*next_page) (struct map_session_data *sd, int8 open_type, int64 last_mail_id); + void (*refresh) (struct map_session_data *sd, int8 open_type, int64 first_mail_id); + void (*add_item) (struct map_session_data *sd, int16 idx, int16 amount); + void (*remove_item) (struct map_session_data *sd, int16 idx, int16 amount); + void (*check_player) (struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class); + int (*send_mail) (struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny); + void (*send_mail_result) (struct map_session_data *ssd, struct map_session_data *rsd, bool result); + struct rodex_message *(*get_mail) (struct map_session_data *sd, int64 mail_id); + void (*read_mail) (struct map_session_data *sd, int64 mail_id); + void (*get_zeny) (struct map_session_data *sd, int8 opentype, int64 mail_id); + void (*get_items) (struct map_session_data *sd, int8 opentype, int64 mail_id); + void (*delete_mail) (struct map_session_data *sd, int64 mail_id); + void (*clean) (struct map_session_data *sd, int8 flag); +}; + +#ifdef HERCULES_CORE +void rodex_defaults(void); +#endif + +HPShared struct rodex_interface *rodex; + +#endif diff --git a/src/map/script.c b/src/map/script.c index 31af59891..e2f53088c 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -9967,14 +9967,22 @@ BUILDIN(setgroupid) { /// Returns the group ID of the player. /// -/// getgroupid() -> <int> -BUILDIN(getgroupid) -{ - struct map_session_data *sd = script->rid2sd(st); - if (sd == NULL) +/// getgroupid({<account id>}) -> <int> +BUILDIN(getgroupid) { + struct map_session_data *sd = NULL; + + if (script_hasdata(st, 2)) { + sd = map->id2sd(script_getnum(st, 2)); + } else { + sd = script->rid2sd(st); + } + + if (sd == NULL) { + script_pushint(st, -1); return true; // no player attached, report source - script_pushint(st, pc_get_group_id(sd)); + } + script_pushint(st, pc_get_group_id(sd)); return true; } @@ -12771,6 +12779,76 @@ BUILDIN(setmapflagnosave) { return true; } +enum mapinfo_info { + MAPINFO_NAME, + MAPINFO_ID, + MAPINFO_SIZE_X, + MAPINFO_SIZE_Y, + MAPINFO_ZONE +}; + +BUILDIN(getmapinfo) +{ + enum mapinfo_info mode = script_getnum(st, 2); + int16 m; + + if (script_hasdata(st, 3)) { + if (script_isstringtype(st, 3)) { + const char *str = script_getstr(st, 3); + m = map->mapname2mapid(str); + } else { + m = script_getnum(st, 3); + } + } else { + struct block_list *bl = NULL; + + if (st->oid) { + bl = map->id2bl(st->oid); + } else if (st->rid) { + bl = map->id2bl(st->rid); + } + + if (bl == NULL) { + ShowError("script:getmapinfo: map not supplied and NPC/PC not attached!\n"); + script_pushint(st, -3); + return false; + } + + m = bl->m; + } + + if (m < 0) { + // here we don't throw an error, so the command can be used + // to detect whether or not a map exists + script_pushint(st, -1); + return true; + } + + switch (mode) { + case MAPINFO_NAME: + script_pushconststr(st, map->list[m].name); + break; + case MAPINFO_ID: + script_pushint(st, m); + break; + case MAPINFO_SIZE_X: + script_pushint(st, map->list[m].xs); + break; + case MAPINFO_SIZE_Y: + script_pushint(st, map->list[m].ys); + break; + case MAPINFO_ZONE: + script_pushstrcopy(st, map->list[m].zone->name); + break; + default: + ShowError("script:getmapinfo: unknown option in second argument (%u).\n", mode); + script_pushint(st, -2); + return false; + } + + return true; +} + BUILDIN(getmapflag) { int16 m,i; @@ -13982,43 +14060,70 @@ BUILDIN(getitemslots) return true; } -// TODO: add matk here if needed/once we get rid of RENEWAL +// TODO: add matk here if needed /*========================================== * Returns some values of an item [Lupus] * Price, Weight, etc... - * getiteminfo(itemID,n), where n - * 0 value_buy; - * 1 value_sell; - * 2 type; - * 3 maxchance = Max drop chance of this item e.g. 1 = 0.01% , etc.. - * if = 0, then monsters don't drop it at all (rare or a quest item) - * if = -1, then this item is sold in NPC shops only - * 4 sex; - * 5 equip; - * 6 weight; - * 7 atk; - * 8 def; - * 9 range; - * 10 slot; - * 11 look; - * 12 elv; - * 13 wlv; - * 14 view id *------------------------------------------*/ BUILDIN(getiteminfo) { - int item_id,n; - struct item_data *i_data; + int item_id = script_getnum(st, 2); + int n = script_getnum(st, 3); + struct item_data *it = itemdb->exists(item_id); - item_id = script_getnum(st,2); - n = script_getnum(st,3); - i_data = itemdb->exists(item_id); + if (it == NULL) { + script_pushint(st, -1); + return true; + } - if (i_data && n>=0 && n<=14) { - int *item_arr = (int*)&i_data->value_buy; - script_pushint(st,item_arr[n]); - } else { + switch (n) { + case 0: + script_pushint(st, it->value_buy); + break; + case 1: + script_pushint(st, it->value_sell); + break; + case 2: + script_pushint(st, it->type); + break; + case 3: + script_pushint(st, it->maxchance); + break; + case 4: + script_pushint(st, it->sex); + break; + case 5: + script_pushint(st, it->equip); + break; + case 6: + script_pushint(st, it->weight); + break; + case 7: + script_pushint(st, it->atk); + break; + case 8: + script_pushint(st, it->def); + break; + case 9: + script_pushint(st, it->range); + break; + case 10: + script_pushint(st, it->slot); + break; + case 11: + script_pushint(st, it->subtype); + break; + case 12: + script_pushint(st, it->elv); + break; + case 13: + script_pushint(st, it->wlv); + break; + case 14: + script_pushint(st, it->view_id); + break; + default: script_pushint(st,-1); } return true; @@ -14211,43 +14316,71 @@ BUILDIN(setequipoption) /*========================================== * Set some values of an item [Lupus] * Price, Weight, etc... - * setiteminfo(itemID,n,Value), where n - * 0 value_buy; - * 1 value_sell; - * 2 type; - * 3 maxchance = Max drop chance of this item e.g. 1 = 0.01% , etc.. - * if = 0, then monsters don't drop it at all (rare or a quest item) - * if = -1, then this item is sold in NPC shops only - * 4 sex; - * 5 equip; - * 6 weight; - * 7 atk; - * 8 def; - * 9 range; - * 10 slot; - * 11 look; - * 12 elv; - * 13 wlv; - * 14 view id - * Returns Value or -1 if the wrong field's been set *------------------------------------------*/ BUILDIN(setiteminfo) { - int item_id,n,value; - struct item_data *i_data; + // TODO: Validate data in a similar way as during database load + int item_id = script_getnum(st, 2); + int n = script_getnum(st, 3); + int value = script_getnum(st,4); + struct item_data *it = itemdb->exists(item_id); - item_id = script_getnum(st,2); - n = script_getnum(st,3); - value = script_getnum(st,4); - i_data = itemdb->exists(item_id); + if (it == NULL) { + script_pushint(st, -1); + return true; + } - if (i_data && n>=0 && n<=14) { - int *item_arr = (int*)&i_data->value_buy; - item_arr[n] = value; - script_pushint(st,value); - } else { + switch (n) { + case 0: + it->value_buy = value; + break; + case 1: + it->value_sell = value; + break; + case 2: + it->type = value; + break; + case 3: + it->maxchance = value; + break; + case 4: + it->sex = value; + break; + case 5: + it->equip = value; + break; + case 6: + it->weight = value; + break; + case 7: + it->atk = value; + break; + case 8: + it->def = value; + break; + case 9: + it->range = value; + break; + case 10: + it->slot = value; + break; + case 11: + it->subtype = value; + break; + case 12: + it->elv = value; + break; + case 13: + it->wlv = value; + break; + case 14: + it->view_id = value; + break; + default: script_pushint(st,-1); + return true; } + script_pushint(st,value); return true; } @@ -15464,15 +15597,15 @@ BUILDIN(getlook) type=script_getnum(st,2); switch(type) { case LOOK_HAIR: val = sd->status.hair; break; //1 - case LOOK_WEAPON: val = sd->status.weapon; break; //2 - case LOOK_HEAD_BOTTOM: val = sd->status.head_bottom; break; //3 - case LOOK_HEAD_TOP: val = sd->status.head_top; break; //4 - case LOOK_HEAD_MID: val = sd->status.head_mid; break; //5 + case LOOK_WEAPON: val = sd->status.look.weapon; break; //2 + case LOOK_HEAD_BOTTOM: val = sd->status.look.head_bottom; break; //3 + case LOOK_HEAD_TOP: val = sd->status.look.head_top; break; //4 + case LOOK_HEAD_MID: val = sd->status.look.head_mid; break; //5 case LOOK_HAIR_COLOR: val = sd->status.hair_color; break; //6 case LOOK_CLOTHES_COLOR: val = sd->status.clothes_color; break; //7 - case LOOK_SHIELD: val = sd->status.shield; break; //8 + case LOOK_SHIELD: val = sd->status.look.shield; break; //8 case LOOK_SHOES: break; //9 - case LOOK_ROBE: val = sd->status.robe; break; //12 + case LOOK_ROBE: val = sd->status.look.robe; break; //12 case LOOK_BODY2: val=sd->status.body; break; //13 } @@ -15722,19 +15855,37 @@ BUILDIN(getmapxy) return true; } +enum logmes_type { + LOGMES_NPC, + LOGMES_ATCOMMAND +}; + /*========================================== - * Allows player to write NPC logs (i.e. Bank NPC, etc) [Lupus] + * Allows player to write logs (i.e. Bank NPC, etc) [Lupus] *------------------------------------------*/ -BUILDIN(logmes) -{ - const char *str; +BUILDIN(logmes) { + const char *str = script_getstr(st, 2); struct map_session_data *sd = script->rid2sd(st); + enum logmes_type type = LOGMES_NPC; + nullpo_retr(sd, false); - if (sd == NULL) - return true; + if (script_hasdata(st, 3)) { + type = script_getnum(st, 3); + } + + switch (type) { + case LOGMES_ATCOMMAND: + logs->atcommand(sd, str); + break; + case LOGMES_NPC: + logs->npc(sd, str); + break; + default: + ShowError("script:logmes: Unknown log type!\n"); + st->state = END; + return false; + } - str = script_getstr(st,2); - logs->npc(sd,str); return true; } @@ -23321,6 +23472,50 @@ BUILDIN(activatepset); BUILDIN(deactivatepset); BUILDIN(deletepset); +enum dressroom_mode { + DRESSROOM_CLOSE = 0, + DRESSROOM_OPEN = 1 +}; + +/** + * dressroom({<enum dressroom_mode>}); + */ +BUILDIN(dressroom) +{ +#if PACKETVER >= 20150513 + struct map_session_data *sd = script->rid2sd(st); + enum dressroom_mode mode = DRESSROOM_OPEN; + + if (sd == NULL) { + return false; + } + + if (script_hasdata(st, 2)) { + mode = script_getnum(st, 2); + } + + switch (mode) { + case DRESSROOM_OPEN: + clif->dressroom_open(sd, 1); + break; + case DRESSROOM_CLOSE: + clif->dressroom_open(sd, 0); + break; + default: + ShowWarning("script:dressroom: unknown mode (%i).\n", mode); + script_pushint(st, 0); + return false; + } + + script_pushint(st, 1); + return true; +#else + ShowError("The dressing room works only with packet version >= 20150513"); + script_pushint(st, 0); + return false; +#endif +} + BUILDIN(pcre_match) { const char *input = script_getstr(st, 2); @@ -23372,6 +23567,181 @@ BUILDIN(navigateto) #endif } +bool rodex_sendmail_sub(struct script_state* st, struct rodex_message *msg) +{ + const char *sender_name, *title, *body; + + if (!strcmp(script->getfuncname(st), "rodex_sendmail_acc2")) + msg->receiver_accountid = script_getnum(st, 2); + else + msg->receiver_id = script_getnum(st, 2); + + sender_name = script_getstr(st, 3); + if (strlen(sender_name) >= NAME_LENGTH) { + ShowError("script:rodex_sendmail: Sender name must not be bigger than %d!\n", NAME_LENGTH - 1); + return false; + } + safestrncpy(msg->sender_name, sender_name, NAME_LENGTH); + + title = script_getstr(st, 4); + if (strlen(title) >= RODEX_TITLE_LENGTH) { + ShowError("script:rodex_sendmail: Mail Title must not be bigger than %d!\n", RODEX_TITLE_LENGTH - 1); + return false; + } + safestrncpy(msg->title, title, RODEX_TITLE_LENGTH); + + body = script_getstr(st, 5); + if (strlen(body) >= MAIL_BODY_LENGTH) { + ShowError("script:rodex_sendmail: Mail Message must not be bigger than %d!\n", RODEX_BODY_LENGTH - 1); + return false; + } + safestrncpy(msg->body, body, MAIL_BODY_LENGTH); + + if (script_hasdata(st, 6)) { + msg->zeny = script_getnum(st, 6); + if (msg->zeny < 0 || msg->zeny > MAX_ZENY) { + ShowError("script:rodex_sendmail: Invalid Zeny value %"PRId64"!\n", msg->zeny); + return false; + } + } + + return true; +} + +BUILDIN(rodex_sendmail) +{ + struct rodex_message msg = { 0 }; + int item_count = 0, i = 0, param = 7; + + // Common parameters - sender/message/zeny + if (rodex_sendmail_sub(st, &msg) == false) + return false; + + // Item list + while (i < RODEX_MAX_ITEM && script_hasdata(st, param)) { + struct item_data *idata; + + if (!script_hasdata(st, param + 1)) { + ShowError("script:rodex_sendmail: Missing Item %d amount!\n", (i + 1)); + return false; + } + + ++item_count; + if (data_isstring(script_getdata(st, param)) == false) { + int itemid = script_getnum(st, param); + + if (itemdb->exists(itemid) == false) { + ShowError("script:rodex_sendmail: Unknown item ID %d.\n", itemid); + return false; + } + + idata = itemdb->search(itemid); + } + else { + ShowError("script:rodex_sendmail: Item %d must be passed as Number.\n", (i + 1)); + return false; + } + + msg.items[i].item.nameid = idata->nameid; + msg.items[i].item.amount = script_getnum(st, (param + 1)); + msg.items[i].item.identify = 1; + + ++i; + param += 2; + } + msg.items_count = item_count; + + msg.type = MAIL_TYPE_NPC; + if (msg.zeny > 0) + msg.type |= MAIL_TYPE_ZENY; + if (msg.items_count > 0) + msg.type |= MAIL_TYPE_ITEM; + msg.send_date = (int)time(NULL); + msg.expire_date = (int)time(NULL) + RODEX_EXPIRE; + + intif->rodex_sendmail(&msg); + + return true; +} + +BUILDIN(rodex_sendmail2) +{ + struct rodex_message msg = { 0 }; + int item_count = 0, i = 0, param = 7; + + // Common parameters - sender/message/zeny + if (rodex_sendmail_sub(st, &msg) == false) + return false; + + // Item list + while (i < RODEX_MAX_ITEM && script_hasdata(st, param)) { + struct item_data *idata; + int j; + + // Tests + if (!script_hasdata(st, param + 1)) { + ShowError("script:rodex_sendmail: Missing Item %d amount!\n", (i + 1)); + return false; + } + if (!script_hasdata(st, param + 2)) { + ShowError("script:rodex_sendmail: Missing Item %d refine!\n", (i + 1)); + return false; + } + if (!script_hasdata(st, param + 3)) { + ShowError("script:rodex_sendmail: Missing Item %d attribute!\n", (i + 1)); + return false; + } + for (j = 0; j < MAX_SLOTS; ++j) { + if (!script_hasdata(st, param + 4 + j)) { + ShowError("script:rodex_sendmail: Missing Item %d card %d!\n", (i + 1), j); + return false; + } + } + + // Set data to message + ++item_count; + if (data_isstring(script_getdata(st, param)) == false) { + int itemid = script_getnum(st, param); + + if (itemdb->exists(itemid) == false) { + ShowError("script:rodex_sendmail: Unknown item ID %d.\n", itemid); + return false; + } + + idata = itemdb->search(itemid); + } else { + ShowError("script:rodex_sendmail: Item %d must be passed as Number.\n", (i + 1)); + return false; + } + + msg.items[i].item.nameid = idata->nameid; + msg.items[i].item.amount = script_getnum(st, (param + 1)); + msg.items[i].item.refine = script_getnum(st, (param + 2)); + msg.items[i].item.attribute = script_getnum(st, (param + 3)); + msg.items[i].item.identify = 1; + + for (j = 0; j < MAX_SLOTS; ++j) { + msg.items[i].item.card[j] = script_getnum(st, param + 4 + j); + } + + ++i; + param += 4 + MAX_SLOTS; + } + msg.items_count = item_count; + + msg.type = MAIL_TYPE_NPC; + if (msg.zeny > 0) + msg.type |= MAIL_TYPE_ZENY; + if (msg.items_count > 0) + msg.type |= MAIL_TYPE_ITEM; + msg.send_date = (int)time(NULL); + msg.expire_date = (int)time(NULL) + RODEX_EXPIRE; + + intif->rodex_sendmail(&msg); + + return true; +} + /** * Adds a built-in script function. * @@ -23631,7 +24001,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(basicskillcheck,""), BUILDIN_DEF(getgmlevel,""), BUILDIN_DEF(setgroupid, "i?"), - BUILDIN_DEF(getgroupid,""), + BUILDIN_DEF(getgroupid,"?"), BUILDIN_DEF(end,""), BUILDIN_DEF(checkoption,"i?"), BUILDIN_DEF(setoption,"i??"), @@ -23712,6 +24082,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(isloggedin,"i?"), BUILDIN_DEF(setmapflagnosave,"ssii"), BUILDIN_DEF(getmapflag,"si"), + BUILDIN_DEF(getmapinfo,"i?"), BUILDIN_DEF(setmapflag,"si?"), BUILDIN_DEF(removemapflag,"si"), BUILDIN_DEF(pvpon,"s"), @@ -23788,7 +24159,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(checkoption2,"i?"), BUILDIN_DEF(guildgetexp,"i"), BUILDIN_DEF(guildchangegm,"is"), - BUILDIN_DEF(logmes,"s"), //this command actls as MES but rints info into LOG file either SQL/TXT [Lupus] + BUILDIN_DEF(logmes,"s?"), //this command actls as MES but rints info into LOG file either SQL/TXT [Lupus] BUILDIN_DEF(summon,"si??"), // summons a slave monster [Celest] BUILDIN_DEF(isnight,""), // check whether it is night time [Celest] BUILDIN_DEF(isequipped,"i*"), // check whether another item/card has been equipped [Celest] @@ -23801,6 +24172,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(activatepset,"i"), // Activate a pattern set [MouseJstr] BUILDIN_DEF(deactivatepset,"i"), // Deactive a pattern set [MouseJstr] BUILDIN_DEF(deletepset,"i"), // Delete a pattern set [MouseJstr] + BUILDIN_DEF(dressroom,"?"), BUILDIN_DEF(pcre_match,"ss"), BUILDIN_DEF(dispbottom,"s?"), //added from jA [Lupus] BUILDIN_DEF(getusersname,""), @@ -24003,7 +24375,7 @@ void script_parse_builtin(void) { **/ BUILDIN_DEF(bindatcmd, "ss???"), BUILDIN_DEF(unbindatcmd, "s"), - BUILDIN_DEF(useatcmd, "s"), + BUILDIN_DEF_DEPRECATED(useatcmd, "s"), BUILDIN_DEF(has_permission, "v?"), BUILDIN_DEF(can_use_command, "s?"), BUILDIN_DEF(add_group_command, "siii"), @@ -24071,6 +24443,12 @@ void script_parse_builtin(void) { BUILDIN_DEF(showscript, "s?"), BUILDIN_DEF(mergeitem,""), BUILDIN_DEF(getcalendartime, "ii??"), + + // -- RoDEX + BUILDIN_DEF(rodex_sendmail, "isss???????????"), + BUILDIN_DEF2(rodex_sendmail, "rodex_sendmail_acc", "isss???????????"), + BUILDIN_DEF(rodex_sendmail2, "isss?????????????????????????????????????????"), + BUILDIN_DEF2(rodex_sendmail2, "rodex_sendmail_acc2", "isss?????????????????????????????????????????"), BUILDIN_DEF(_,"s"), BUILDIN_DEF2(_, "_$", "s"), }; @@ -24223,6 +24601,15 @@ void script_hardcoded_constants(void) script->set_constant("EQP_SHADOW_SHOES", EQP_SHADOW_SHOES, false, false); script->set_constant("EQP_SHADOW_ACC_R", EQP_SHADOW_ACC_R, false, false); script->set_constant("EQP_SHADOW_ACC_L", EQP_SHADOW_ACC_L, false, false); + // Synonyms and combined values + script->set_constant("EQP_WEAPON", EQP_WEAPON, false, false); + script->set_constant("EQP_SHIELD", EQP_SHIELD, false, false); + script->set_constant("EQP_ARMS", EQP_ARMS, false, false); + script->set_constant("EQP_HELM", EQP_HELM, false, false); + script->set_constant("EQP_ACC", EQP_ACC, false, false); + script->set_constant("EQP_COSTUME", EQP_COSTUME, false, false); + script->set_constant("EQP_SHADOW_ACC", EQP_SHADOW_ACC, false, false); + script->set_constant("EQP_SHADOW_ARMS", EQP_SHADOW_ARMS, false, false); script->constdb_comment("Item Option Types"); script->set_constant("IT_OPT_INDEX", IT_OPT_INDEX, false, false); @@ -24299,6 +24686,68 @@ void script_hardcoded_constants(void) script->set_constant("DATATYPE_VAR", DATATYPE_VAR, false, false); script->set_constant("DATATYPE_LABEL", DATATYPE_LABEL, false, false); + script->constdb_comment("Logmes types"); + script->set_constant("LOGMES_NPC", LOGMES_NPC, false, false); + script->set_constant("LOGMES_ATCOMMAND", LOGMES_ATCOMMAND, false, false); + + script->constdb_comment("Item Subtypes (Weapon types)"); + script->set_constant("W_FIST", W_FIST, false, false); + script->set_constant("W_DAGGER", W_DAGGER, false, false); + script->set_constant("W_1HSWORD", W_1HSWORD, false, false); + script->set_constant("W_2HSWORD", W_2HSWORD, false, false); + script->set_constant("W_1HSPEAR", W_1HSPEAR, false, false); + script->set_constant("W_2HSPEAR", W_2HSPEAR, false, false); + script->set_constant("W_1HAXE", W_1HAXE, false, false); + script->set_constant("W_2HAXE", W_2HAXE, false, false); + script->set_constant("W_MACE", W_MACE, false, false); + script->set_constant("W_2HMACE", W_2HMACE, false, false); + script->set_constant("W_STAFF", W_STAFF, false, false); + script->set_constant("W_BOW", W_BOW, false, false); + script->set_constant("W_KNUCKLE", W_KNUCKLE, false, false); + script->set_constant("W_MUSICAL", W_MUSICAL, false, false); + script->set_constant("W_WHIP", W_WHIP, false, false); + script->set_constant("W_BOOK", W_BOOK, false, false); + script->set_constant("W_KATAR", W_KATAR, false, false); + script->set_constant("W_REVOLVER", W_REVOLVER, false, false); + script->set_constant("W_RIFLE", W_RIFLE, false, false); + script->set_constant("W_GATLING", W_GATLING, false, false); + script->set_constant("W_SHOTGUN", W_SHOTGUN, false, false); + script->set_constant("W_GRENADE", W_GRENADE, false, false); + script->set_constant("W_HUUMA", W_HUUMA, false, false); + script->set_constant("W_2HSTAFF", W_2HSTAFF, false, false); + + script->constdb_comment("Item Subtypes (Ammunition types)"); + script->set_constant("A_ARROW", A_ARROW, false, false); + script->set_constant("A_DAGGER", A_DAGGER, false, false); + script->set_constant("A_BULLET", A_BULLET, false, false); + script->set_constant("A_SHELL", A_SHELL, false, false); + script->set_constant("A_GRENADE", A_GRENADE, false, false); + script->set_constant("A_SHURIKEN", A_SHURIKEN, false, false); + script->set_constant("A_KUNAI", A_KUNAI, false, false); + script->set_constant("A_CANNONBALL", A_CANNONBALL, false, false); + script->set_constant("A_THROWWEAPON", A_THROWWEAPON, false, false); + + script->constdb_comment("Item Upper Masks"); + script->set_constant("ITEMUPPER_NONE", ITEMUPPER_NONE, false, false); + script->set_constant("ITEMUPPER_NORMAL", ITEMUPPER_NORMAL, false, false); + script->set_constant("ITEMUPPER_UPPER", ITEMUPPER_UPPER, false, false); + script->set_constant("ITEMUPPER_BABY", ITEMUPPER_BABY, false, false); + script->set_constant("ITEMUPPER_THIRD", ITEMUPPER_THIRD, false, false); + script->set_constant("ITEMUPPER_THIRDUPPER", ITEMUPPER_THIRDUPPER, false, false); + script->set_constant("ITEMUPPER_THIRDBABY", ITEMUPPER_THIRDBABY, false, false); + script->set_constant("ITEMUPPER_ALL", ITEMUPPER_ALL, false, false); + + script->constdb_comment("dressroom modes"); + script->set_constant("DRESSROOM_OPEN", DRESSROOM_OPEN, false, false); + script->set_constant("DRESSROOM_CLOSE", DRESSROOM_CLOSE, false, false); + + script->constdb_comment("getmapinfo options"); + script->set_constant("MAPINFO_NAME", MAPINFO_NAME, false, false); + script->set_constant("MAPINFO_ID", MAPINFO_ID, false, false); + script->set_constant("MAPINFO_SIZE_X", MAPINFO_SIZE_X, false, false); + script->set_constant("MAPINFO_SIZE_Y", MAPINFO_SIZE_Y, false, false); + script->set_constant("MAPINFO_ZONE", MAPINFO_ZONE, false, false); + script->constdb_comment("Renewal"); #ifdef RENEWAL script->set_constant("RENEWAL", 1, false, false); diff --git a/src/map/skill.c b/src/map/skill.c index e187b7e8b..a84955377 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -476,9 +476,9 @@ int can_copy (struct map_session_data *sd, uint16 skill_id, struct block_list* b return 0; // Couldn't preserve 3rd Class/Summoner skills except only when using Reproduce skill. [Jobbie] - if (!(sd->sc.data[SC__REPRODUCE]) && - ((skill_id >= RK_ENCHANTBLADE && skill_id <= LG_OVERBRAND_PLUSATK) || - (skill_id >= RL_GLITTERING_GREED && skill_id <= OB_AKAITSUKI) || + if (!(sd->sc.data[SC__REPRODUCE]) && + ((skill_id >= RK_ENCHANTBLADE && skill_id <= LG_OVERBRAND_PLUSATK) || + (skill_id >= RL_GLITTERING_GREED && skill_id <= OB_AKAITSUKI) || (skill_id >= GC_DARKCROW && skill_id <= SU_FRESHSHRIMP))) return 0; // Reproduce will only copy skills according on the list. [Jobbie] @@ -806,7 +806,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 break; // If a normal attack is a skill, it's splash damage. [Inkfish] if(sd) { // Automatic trigger of Blitz Beat - if (pc_isfalcon(sd) && sd->status.weapon == W_BOW && (temp=pc->checkskill(sd,HT_BLITZBEAT))>0 && + if (pc_isfalcon(sd) && sd->weapontype == W_BOW && (temp=pc->checkskill(sd,HT_BLITZBEAT))>0 && rnd()%1000 <= sstatus->luk*3 ) { rate = sd->status.job_level / 10 + 1; skill->castend_damage_id(src,bl,HT_BLITZBEAT,(temp<rate)?temp:rate,tick,SD_LEVEL); @@ -815,7 +815,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 if( pc_iswug(sd) && (temp=pc->checkskill(sd,RA_WUGSTRIKE)) > 0 && rnd()%1000 <= sstatus->luk*3 ) skill->castend_damage_id(src,bl,RA_WUGSTRIKE,temp,tick,0); // Gank - if(dstmd && sd->status.weapon != W_BOW && + if(dstmd && sd->weapontype != W_BOW && (temp=pc->checkskill(sd,RG_SNATCHER)) > 0 && (temp*15 + 55) + pc->checkskill(sd,TF_STEAL)*10 > rnd()%1000) { if(pc->steal_item(sd,bl,pc->checkskill(sd,TF_STEAL))) @@ -2012,7 +2012,7 @@ int skill_break_equip (struct block_list *bl, unsigned short where, int rate, in if (sd->bonus.unbreakable) rate -= rate*sd->bonus.unbreakable/100; if (where&EQP_WEAPON) { - switch (sd->status.weapon) { + switch (sd->weapontype) { case W_FIST: //Bare fists should not break :P case W_1HAXE: case W_2HAXE: @@ -5917,7 +5917,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin case SA_LIGHTNINGLOADER: case SA_SEISMICWEAPON: if (dstsd) { - if(dstsd->status.weapon == W_FIST || + if (dstsd->weapontype == W_FIST || (dstsd->sc.count && !dstsd->sc.data[type] && ( //Allow re-enchanting to lengthen time. [Skotlex] dstsd->sc.data[SC_PROPERTYFIRE] || @@ -13391,7 +13391,7 @@ int skill_isammotype (struct map_session_data *sd, int skill_id) nullpo_ret(sd); return ( battle_config.arrow_decrement==2 && - (sd->status.weapon == W_BOW || (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE)) && + (sd->weapontype == W_BOW || (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE)) && skill_id != HT_PHANTASMIC && skill->get_type(skill_id) == BF_WEAPON && !(skill->get_nk(skill_id)&NK_NO_DAMAGE) && @@ -13833,8 +13833,8 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id case PR_REDEMPTIO: { int exp; - if( ((exp = pc->nextbaseexp(sd)) > 0 && get_percentage(sd->status.base_exp, exp) < 1) || - ((exp = pc->nextjobexp(sd)) > 0 && get_percentage(sd->status.job_exp, exp) < 1)) { + if( ((exp = pc->nextbaseexp(sd)) > 0 && get_percentage64(sd->status.base_exp, exp) < 1) || + ((exp = pc->nextjobexp(sd)) > 0 && get_percentage64(sd->status.job_exp, exp) < 1)) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); //Not enough exp. return 0; } @@ -14245,7 +14245,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id } break; case ST_SHIELD: - if(sd->status.shield <= 0) { + if (!sd->has_shield) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 0; } @@ -14555,7 +14555,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id, clif->messagecolor_self(sd->fd, COLOR_RED, e_msg); return 0; } - if (!(require.ammo&1<<sd->inventory_data[i]->look)) { //Ammo type check. Send the "wrong weapon type" message + if (!(require.ammo&1<<sd->inventory_data[i]->subtype)) { //Ammo type check. Send the "wrong weapon type" message //which is the closest we have to wrong ammo type. [Skotlex] clif->arrow_fail(sd,0); //Haplo suggested we just send the equip-arrows message instead. [Skotlex] //clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0); @@ -19530,7 +19530,7 @@ void skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_db * } } } - + /** * Validates "SkillInfo" when reading skill_db.conf * @param conf struct, pointer to skill configuration @@ -20442,7 +20442,7 @@ void skill_validate_additional_fields(struct config_setting_t *conf, struct s_sk bool skill_validate_skilldb(struct s_skill_db *sk, const char *source) { int idx; - + nullpo_retr(false, sk); idx = skill->get_index(sk->nameid); if (idx == 0) { @@ -20460,10 +20460,10 @@ bool skill_validate_skilldb(struct s_skill_db *sk, const char *source) strdb_iput(skill->name2id_db, skill->dbs->db[idx].name, skill->dbs->db[idx].nameid); /* Set Name to Id script constants */ script->set_constant2(skill->dbs->db[idx].name, (int)skill->dbs->db[idx].nameid, false, false); - + return true; } - + /** * Reads skill_db.conf from relative filepath and processes [ Smokexyz/Hercules ] * entries into the skill database. @@ -20477,11 +20477,11 @@ bool skill_read_skilldb(const char *filename) char filepath[256]; int count=0, index=0; bool duplicate[MAX_SKILL] = {0}; - + nullpo_retr(false, filename); sprintf(filepath,"db/%s",filename); - + if (!libconfig->load_file(&skilldb, filepath)) { return false; // Libconfig error report. } @@ -20503,9 +20503,9 @@ bool skill_read_skilldb(const char *filename) ShowError("skill_read_skilldb: Skill Id not specified for entry %d in '%s', skipping...\n", index, filepath ); continue; } - + tmp_db.nameid = skill_id; - + if((idx = skill->get_index(skill_id)) == 0) { ShowError("skill_read_skilldb: Skill Id %d is out of range, or within a reserved range (for guild, homunculus, mercenary or elemental skills). skipping...\n", idx); continue; @@ -20515,7 +20515,7 @@ bool skill_read_skilldb(const char *filename) ShowWarning("skill_read_skilldb: Duplicate Skill Id %d in entry %d in '%s', skipping...\n", skill_id, index, filepath); continue; } - + /* Skill Name Constant */ if (!libconfig->setting_lookup_mutable_string(conf, "Name", tmp_db.name, sizeof(tmp_db.name))) { ShowError("skill_read_skilldb: Name not specified for skill Id %d in '%s', skipping...\n", skill_id, filepath); @@ -20705,12 +20705,12 @@ bool skill_read_skilldb(const char *filename) /* Additional Fields for Plugins */ skill->validate_additional_fields(conf, &tmp_db); - + // Validate the skill entry, add it to the duplicate array and increment count on success. if ((duplicate[idx] = skill->validate_skilldb(&tmp_db, filepath))) count++; } - + libconfig->destroy(&skilldb); ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filepath); @@ -20742,7 +20742,7 @@ void skill_readdb(bool minimal) safestrncpy(skill->dbs->db[0].desc, "Unknown Skill", sizeof(skill->dbs->db[0].desc)); itemdb->name_constants(); // refresh ItemDB constants before loading of skills - + #ifdef ENABLE_CASE_CHECK script->parser_current_file = DBPATH"skill_db.conf"; #endif // ENABLE_CASE_CHECK @@ -20753,7 +20753,7 @@ void skill_readdb(bool minimal) if (minimal) return; - + skill->init_unit_layout(); sv->readdb(map->db_path, "produce_db.txt", ',', 4, 4+2*MAX_PRODUCE_RESOURCE, MAX_SKILL_PRODUCE_DB, skill->parse_row_producedb); sv->readdb(map->db_path, "create_arrow_db.txt", ',', 1+2, 1+2*MAX_ARROW_RESOURCE, MAX_SKILL_ARROW_DB, skill->parse_row_createarrowdb); diff --git a/src/map/status.c b/src/map/status.c index 166b33e6f..e0893aa36 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1019,6 +1019,9 @@ void initChangeTables(void) // Summoner status->dbs->IconChangeTable[SC_SPRITEMABLE] = SI_SPRITEMABLE; + // RoDEX + status->dbs->IconChangeTable[SC_DAILYSENDMAILCNT] = SI_DAILYSENDMAILCNT; + // Other SC which are not necessarily associated to skills. status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION1] |= SCB_ASPD; status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION2] |= SCB_ASPD; @@ -2648,31 +2651,31 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) } } } - + /* parse item options [Smokexyz] */ for (i = 0; i < EQI_MAX; i++) { status->current_equip_item_index = index = sd->equip_index[i]; status->current_equip_option_index = -1; - + if (i == EQI_HAND_R && sd->equip_index[EQI_HAND_L] == index) continue; else if (i == EQI_HEAD_MID && sd->equip_index[EQI_HEAD_LOW] == index) continue; else if (i == EQI_HEAD_TOP && (sd->equip_index[EQI_HEAD_MID] == index || sd->equip_index[EQI_HEAD_LOW] == index)) continue; - + if (index >= 0 && sd->inventory_data[index]) { int j = 0; for (j = 0; j < MAX_ITEM_OPTIONS; j++) { int16 option_index = sd->status.inventory[index].option[j].index; struct item_option *ito = NULL; - + if (option_index == 0 || (ito = itemdb->option_exists(option_index)) == NULL || ito->script == NULL) continue; - + status->current_equip_option_index = j; script->run(ito->script, 0, sd->bl.id, 0); - + if (calculating == 0) //Abort, script->run his function. [Skotlex] return 1; } @@ -2710,9 +2713,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) sd->left_weapon.atkmods[1] = status->dbs->atkmods[1][sd->weapontype2]; sd->left_weapon.atkmods[2] = status->dbs->atkmods[2][sd->weapontype2]; - if ((pc_isridingpeco(sd) || pc_isridingdragon(sd)) - && (sd->status.weapon==W_1HSPEAR || sd->status.weapon==W_2HSPEAR) - ) { + if ((pc_isridingpeco(sd) || pc_isridingdragon(sd)) && (sd->weapontype == W_1HSPEAR || sd->weapontype == W_2HSPEAR)) { //When Riding with spear, damage modifier to mid-class becomes //same as versus large size. sd->right_weapon.atkmods[1] = sd->right_weapon.atkmods[2]; @@ -2776,8 +2777,8 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) // Base batk value is set on status->calc_misc // weapon-type bonus (FIXME: Why is the weapon_atk bonus applied to base attack?) - if (sd->status.weapon < MAX_SINGLE_WEAPON_TYPE && sd->weapon_atk[sd->status.weapon]) - bstatus->batk += sd->weapon_atk[sd->status.weapon]; + if (sd->weapontype < MAX_SINGLE_WEAPON_TYPE && sd->weapon_atk[sd->weapontype]) + bstatus->batk += sd->weapon_atk[sd->weapontype]; // Absolute modifiers from passive skills #ifndef RENEWAL if((skill_lv=pc->checkskill(sd,BS_HILTBINDING))>0) // it doesn't work in RE. @@ -2925,10 +2926,10 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) #ifndef RENEWAL bstatus->hit += skill_lv; #endif - if(sd->status.weapon == W_BOW) + if (sd->weapontype == W_BOW) bstatus->rhw.range += skill_lv; } - if(sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE) { + if (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE) { if((skill_lv=pc->checkskill(sd,GS_SINGLEACTION))>0) bstatus->hit += 2*skill_lv; if((skill_lv=pc->checkskill(sd,GS_SNAKEEYE))>0) { @@ -2936,9 +2937,9 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) bstatus->rhw.range += skill_lv; } } - if( (sd->status.weapon == W_1HAXE || sd->status.weapon == W_2HAXE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0 ) + if ((sd->weapontype == W_1HAXE || sd->weapontype == W_2HAXE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0) bstatus->hit += 3*skill_lv; - if((sd->status.weapon == W_MACE || sd->status.weapon == W_2HMACE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0) + if ((sd->weapontype == W_MACE || sd->weapontype == W_2HMACE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0) bstatus->hit += 2*skill_lv; if (pc->checkskill(sd, SU_POWEROFLIFE) > 0) bstatus->hit += 20; @@ -2998,12 +2999,11 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) // Relative modifiers from passive skills #ifndef RENEWAL_ASPD - if((skill_lv=pc->checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK) + if (sd->weapontype == W_BOOK && (skill_lv=pc->checkskill(sd,SA_ADVANCEDBOOK)) > 0) bstatus->aspd_rate -= 5*skill_lv; if((skill_lv = pc->checkskill(sd,SG_DEVIL)) > 0 && !pc->nextjobexp(sd)) bstatus->aspd_rate -= 30*skill_lv; - if((skill_lv=pc->checkskill(sd,GS_SINGLEACTION))>0 && - (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE)) + if (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE && (skill_lv=pc->checkskill(sd,GS_SINGLEACTION)) > 0) bstatus->aspd_rate -= ((skill_lv+1)/2) * 10; if (pc_isridingpeco(sd)) bstatus->aspd_rate += 500-100*pc->checkskill(sd,KN_CAVALIERMASTERY); @@ -3893,7 +3893,7 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) } else { st->cri = status->calc_critical(bl, sc, bst->cri + 3*(st->luk - bst->luk), true); } - if (battle_config.show_katar_crit_bonus && bl->type == BL_PC && BL_UCAST(BL_PC, bl)->status.weapon == W_KATAR) { + if (battle_config.show_katar_crit_bonus && bl->type == BL_PC && BL_UCAST(BL_PC, bl)->weapontype == W_KATAR) { st->cri *= 2; } } @@ -4324,11 +4324,11 @@ int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st) nullpo_ret(st); amotion = status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype1]; - if ( sd->status.weapon > MAX_SINGLE_WEAPON_TYPE) + if (sd->weapontype > MAX_SINGLE_WEAPON_TYPE) amotion += status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype2] / 4; - if ( sd->status.shield ) + if (sd->has_shield) amotion += status->dbs->aspd_base[pc->class2idx(sd->status.class)][MAX_SINGLE_WEAPON_TYPE]; - switch ( sd->status.weapon ) { + switch (sd->weapontype) { case W_BOW: case W_MUSICAL: case W_WHIP: @@ -4343,15 +4343,15 @@ int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st) temp = st->dex * st->dex / 5.0f + st->agi * st->agi * 0.5f; } temp = (float)(sqrt(temp) * 0.25f) + 0xc4; - if ( (skill_lv = pc->checkskill(sd, SA_ADVANCEDBOOK)) > 0 && sd->status.weapon == W_BOOK ) + if (sd->weapontype == W_BOOK && (skill_lv = pc->checkskill(sd, SA_ADVANCEDBOOK)) > 0) val += (skill_lv - 1) / 2 + 1; if ( (skill_lv = pc->checkskill(sd, GS_SINGLEACTION)) > 0 ) val += ((skill_lv + 1) / 2); amotion = ((int)(temp + ((float)(status->calc_aspd(&sd->bl, &sd->sc, 1) + val) * st->agi / 200)) - min(amotion, 200)); #else // base weapon delay - amotion = (sd->status.weapon < MAX_SINGLE_WEAPON_TYPE) - ? (status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->status.weapon]) // single weapon + amotion = (sd->weapontype < MAX_SINGLE_WEAPON_TYPE) + ? (status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype]) // single weapon : (status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype1] + status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype2]) * 7 / 10; // dual-wield // percentual delay reduction from stats @@ -4378,7 +4378,7 @@ unsigned short status_base_atk(const struct block_list *bl, const struct status_ return 0; if (bl->type == BL_PC) { - switch (BL_UCCAST(BL_PC, bl)->status.weapon) { + switch (BL_UCCAST(BL_PC, bl)->weapontype) { case W_BOW: case W_MUSICAL: case W_WHIP: @@ -5939,7 +5939,7 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl if (bl->type != BL_PC) { bonus = sc->data[SC_ASSNCROS]->val2; } else { - switch (BL_UCCAST(BL_PC, bl)->status.weapon) { + switch (BL_UCCAST(BL_PC, bl)->weapontype) { case W_BOW: case W_REVOLVER: case W_RIFLE: @@ -6100,7 +6100,7 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int if (bl->type != BL_PC) { max = sc->data[SC_ASSNCROS]->val2; } else { - switch (BL_UCCAST(BL_PC, bl)->status.weapon) { + switch (BL_UCCAST(BL_PC, bl)->weapontype) { case W_BOW: case W_REVOLVER: case W_RIFLE: @@ -6864,13 +6864,13 @@ void status_set_viewdata(struct block_list *bl, int class_) } sd->vd.class = class_; clif->get_weapon_view(sd, &sd->vd.weapon, &sd->vd.shield); - sd->vd.head_top = sd->status.head_top; - sd->vd.head_mid = sd->status.head_mid; - sd->vd.head_bottom = sd->status.head_bottom; + sd->vd.head_top = sd->status.look.head_top; + sd->vd.head_mid = sd->status.look.head_mid; + sd->vd.head_bottom = sd->status.look.head_bottom; sd->vd.hair_style = cap_value(sd->status.hair,0,battle_config.max_hair_style); sd->vd.hair_color = cap_value(sd->status.hair_color,0,battle_config.max_hair_color); sd->vd.cloth_color = cap_value(sd->status.clothes_color,0,battle_config.max_cloth_color); - sd->vd.robe = sd->status.robe; + sd->vd.robe = sd->status.look.robe; sd->vd.body_style = sd->status.body; sd->vd.sex = sd->status.sex; @@ -8246,6 +8246,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t case SC_TURNKICK_READY: case SC_DODGE_READY: case SC_PUSH_CART: + case SC_DAILYSENDMAILCNT: tick = INFINITE_DURATION; break; @@ -9865,6 +9866,9 @@ int status_get_val_flag(enum sc_type type) case SC_OVERLAPEXPUP: val_flag |= 1; break; + case SC_DAILYSENDMAILCNT: + val_flag |= 1 | 2; + break; } return val_flag; } @@ -10740,7 +10744,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const } if (begin_spurt && sce->val1 >= 7 && DIFF_TICK(timer->gettick(), starttick) <= 1000 - && (!sd || (sd->weapontype1 == 0 && sd->weapontype2 == 0)) + && (!sd || (sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST)) ) sc_start(bl, bl,SC_STRUP,100,sce->val1,skill->get_time2(status->sc2skill(type), sce->val1)); } @@ -13325,7 +13329,7 @@ int status_readdb_refine_libconfig_sub(struct config_setting_t *r, const char *n int bonus[MAX_REFINE], rnd_bonus[MAX_REFINE]; int chance[REFINE_CHANCE_TYPE_MAX][MAX_REFINE]; int i, j; - + memset(&duplicate, 0, sizeof(duplicate)); memset(&bonus, 0, sizeof(bonus)); memset(&rnd_bonus, 0, sizeof(rnd_bonus)); diff --git a/src/map/status.h b/src/map/status.h index 3c0a87175..eb3cf491b 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -842,6 +842,9 @@ typedef enum sc_type { SC_FRESHSHRIMP, SC_DRESS_UP, + + // Rodex + SC_DAILYSENDMAILCNT, #ifndef SC_MAX SC_MAX, //Automatically updated max, used in for's to check we are within bounds. #endif @@ -1691,7 +1694,7 @@ enum si_type { //SI_SHOW_NPCHPBAR = 821, SI_FLOWERSMOKE = 822, SI_FSTONE = 823, - //SI_DAILYSENDMAILCNT = 824, + SI_DAILYSENDMAILCNT = 824, //SI_QSCARABA = 825, SI_LJOSALFAR = 826, //SI_PAD_READER_KNIGHT = 827, diff --git a/src/map/storage.c b/src/map/storage.c index 01e7c7c27..716abd623 100644 --- a/src/map/storage.c +++ b/src/map/storage.c @@ -201,7 +201,7 @@ int storage_additem(struct map_session_data* sd, struct item* item_data, int amo clif->storageitemadded(sd, it, i, amount); sd->storage.save = true; // set a save flag. - + return 0; } } @@ -249,7 +249,7 @@ int storage_delitem(struct map_session_data* sd, int n, int amount) Assert_retr(1, n >= 0 && n < VECTOR_LENGTH(sd->storage.item)); it = &VECTOR_INDEX(sd->storage.item, n); - + Assert_retr(1, amount <= it->amount); Assert_retr(1, it->nameid > 0); diff --git a/src/plugins/HPMHooking.c b/src/plugins/HPMHooking.c index 0b98ea99f..6d6184402 100644 --- a/src/plugins/HPMHooking.c +++ b/src/plugins/HPMHooking.c @@ -26,6 +26,8 @@ #include "common/mmo.h" #include "common/socket.h" +PRAGMA_GCC5(GCC diagnostic push) +PRAGMA_GCC5(GCC diagnostic ignored "-Wdiscarded-qualifiers") #if defined (HPMHOOKING_LOGIN) #define HPM_SERVER_TYPE SERVER_TYPE_LOGIN #define HPM_CORE_INCLUDE "HPMHooking/HPMHooking_login.HPMHooksCore.inc" @@ -52,6 +54,7 @@ #include "char/int_party.h" #include "char/int_pet.h" #include "char/int_quest.h" +#include "char/int_rodex.h" #include "char/int_storage.h" #include "char/inter.h" #include "char/loginif.h" @@ -91,6 +94,7 @@ #include "map/pc.h" #include "map/pet.h" #include "map/quest.h" +#include "map/rodex.h" #include "map/script.h" #include "map/skill.h" #include "map/status.h" @@ -107,6 +111,7 @@ #define HPM_SOURCES_INCLUDE "HPMHooking/HPMHooking.sources.inc" #error HPMHooking plugin needs to be compiled for a specific server type. Please make sure your Makefiles are up to date. #endif +PRAGMA_GCC5(GCC diagnostic pop) #include "common/conf.h" #include "common/console.h" #include "common/db.h" @@ -210,7 +215,10 @@ HPExport bool HPM_Plugin_AddHook(enum HPluginHookType type, const char *target, return false; } +PRAGMA_GCC5(GCC diagnostic push) +PRAGMA_GCC5(GCC diagnostic ignored "-Wdiscarded-qualifiers") #include HPM_HOOKS_INCLUDE +PRAGMA_GCC5(GCC diagnostic pop) void HPM_HP_final(void) { int i, len = HPMHooks.data.total * 2; diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc index 25e40ec0c..cbd11e1b8 100644 --- a/src/plugins/HPMHooking/HPMHooking.Defs.inc +++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc @@ -2240,6 +2240,58 @@ typedef void (*HPMHOOK_pre_clif_pSelectCart) (int *fd, struct map_session_data * typedef void (*HPMHOOK_post_clif_pSelectCart) (int fd, struct map_session_data *sd); typedef const char* (*HPMHOOK_pre_clif_get_bl_name) (const struct block_list **bl); typedef const char* (*HPMHOOK_post_clif_get_bl_name) (const char* retVal___, const struct block_list *bl); +typedef void (*HPMHOOK_pre_clif_pRodexOpenWriteMail) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexOpenWriteMail) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_rodex_open_write_mail) (int *fd, const char **receiver_name, int8 *result); +typedef void (*HPMHOOK_post_clif_rodex_open_write_mail) (int fd, const char *receiver_name, int8 result); +typedef void (*HPMHOOK_pre_clif_pRodexAddItem) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexAddItem) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_rodex_add_item_result) (struct map_session_data **sd, int16 *idx, int16 *amount, int8 *result); +typedef void (*HPMHOOK_post_clif_rodex_add_item_result) (struct map_session_data *sd, int16 idx, int16 amount, int8 result); +typedef void (*HPMHOOK_pre_clif_pRodexRemoveItem) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexRemoveItem) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_rodex_remove_item_result) (struct map_session_data **sd, int16 *idx, int16 *amount); +typedef void (*HPMHOOK_post_clif_rodex_remove_item_result) (struct map_session_data *sd, int16 idx, int16 amount); +typedef void (*HPMHOOK_pre_clif_pRodexSendMail) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexSendMail) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_rodex_send_mail_result) (int *fd, struct map_session_data **sd, int8 *result); +typedef void (*HPMHOOK_post_clif_rodex_send_mail_result) (int fd, struct map_session_data *sd, int8 result); +typedef void (*HPMHOOK_pre_clif_rodex_send_maillist) (int *fd, struct map_session_data **sd, int8 *open_type, int64 *page_start); +typedef void (*HPMHOOK_post_clif_rodex_send_maillist) (int fd, struct map_session_data *sd, int8 open_type, int64 page_start); +typedef void (*HPMHOOK_pre_clif_rodex_send_refresh) (int *fd, struct map_session_data **sd, int8 *open_type, int *count); +typedef void (*HPMHOOK_post_clif_rodex_send_refresh) (int fd, struct map_session_data *sd, int8 open_type, int count); +typedef void (*HPMHOOK_pre_clif_pRodexReadMail) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexReadMail) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_rodex_read_mail) (struct map_session_data **sd, int8 *opentype, struct rodex_message **msg); +typedef void (*HPMHOOK_post_clif_rodex_read_mail) (struct map_session_data *sd, int8 opentype, struct rodex_message *msg); +typedef void (*HPMHOOK_pre_clif_pRodexNextMaillist) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexNextMaillist) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_pRodexCloseMailbox) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexCloseMailbox) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_pRodexCancelWriteMail) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexCancelWriteMail) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_pRodexOpenMailbox) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexOpenMailbox) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_pRodexCheckName) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexCheckName) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_rodex_checkname_result) (struct map_session_data **sd, int *char_id, short *class_, int *base_level, const char **name); +typedef void (*HPMHOOK_post_clif_rodex_checkname_result) (struct map_session_data *sd, int char_id, short class_, int base_level, const char *name); +typedef void (*HPMHOOK_pre_clif_pRodexDeleteMail) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexDeleteMail) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_rodex_delete_mail) (struct map_session_data **sd, int8 *opentype, int64 *mail_id); +typedef void (*HPMHOOK_post_clif_rodex_delete_mail) (struct map_session_data *sd, int8 opentype, int64 mail_id); +typedef void (*HPMHOOK_pre_clif_pRodexRefreshMaillist) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexRefreshMaillist) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_pRodexRequestZeny) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexRequestZeny) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_rodex_request_zeny) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, int8 *result); +typedef void (*HPMHOOK_post_clif_rodex_request_zeny) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result); +typedef void (*HPMHOOK_pre_clif_pRodexRequestItems) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexRequestItems) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_rodex_request_items) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, int8 *result); +typedef void (*HPMHOOK_post_clif_rodex_request_items) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result); +typedef void (*HPMHOOK_pre_clif_rodex_icon) (int *fd, bool *show); +typedef void (*HPMHOOK_post_clif_rodex_icon) (int fd, bool show); #endif // MAP_CLIF_H #ifdef COMMON_CORE_H /* cmdline */ typedef void (*HPMHOOK_pre_cmdline_init) (void); @@ -2965,6 +3017,22 @@ typedef int (*HPMHOOK_post_inter_pet_parse_frommap) (int retVal___, int fd); typedef int (*HPMHOOK_pre_inter_quest_parse_frommap) (int *fd); typedef int (*HPMHOOK_post_inter_quest_parse_frommap) (int retVal___, int fd); #endif // CHAR_INT_QUEST_H +#ifdef CHAR_INT_RODEX_H /* inter_rodex */ +typedef int (*HPMHOOK_pre_inter_rodex_sql_init) (void); +typedef int (*HPMHOOK_post_inter_rodex_sql_init) (int retVal___); +typedef void (*HPMHOOK_pre_inter_rodex_sql_final) (void); +typedef void (*HPMHOOK_post_inter_rodex_sql_final) (void); +typedef int (*HPMHOOK_pre_inter_rodex_parse_frommap) (int *fd); +typedef int (*HPMHOOK_post_inter_rodex_parse_frommap) (int retVal___, int fd); +typedef int (*HPMHOOK_pre_inter_rodex_fromsql) (int *char_id, int *account_id, int8 *opentype, int64 *mail_id, struct rodex_maillist **mails); +typedef int (*HPMHOOK_post_inter_rodex_fromsql) (int retVal___, int char_id, int account_id, int8 opentype, int64 mail_id, struct rodex_maillist *mails); +typedef bool (*HPMHOOK_pre_inter_rodex_hasnew) (int *char_id, int *account_id); +typedef bool (*HPMHOOK_post_inter_rodex_hasnew) (bool retVal___, int char_id, int account_id); +typedef bool (*HPMHOOK_pre_inter_rodex_checkname) (const char **name, int **target_char_id, short **target_class, int **target_level); +typedef bool (*HPMHOOK_post_inter_rodex_checkname) (bool retVal___, const char *name, int *target_char_id, short *target_class, int *target_level); +typedef int64 (*HPMHOOK_pre_inter_rodex_savemessage) (struct rodex_message **msg); +typedef int64 (*HPMHOOK_post_inter_rodex_savemessage) (int64 retVal___, struct rodex_message *msg); +#endif // CHAR_INT_RODEX_H #ifdef CHAR_INT_STORAGE_H /* inter_storage */ typedef int (*HPMHOOK_pre_inter_storage_tosql) (int *account_id, const struct storage_data **p); typedef int (*HPMHOOK_post_inter_storage_tosql) (int retVal___, int account_id, const struct storage_data *p); @@ -3124,6 +3192,16 @@ typedef int (*HPMHOOK_pre_intif_elemental_delete) (int *ele_id); typedef int (*HPMHOOK_post_intif_elemental_delete) (int retVal___, int ele_id); typedef int (*HPMHOOK_pre_intif_elemental_save) (struct s_elemental **ele); typedef int (*HPMHOOK_post_intif_elemental_save) (int retVal___, struct s_elemental *ele); +typedef int (*HPMHOOK_pre_intif_rodex_requestinbox) (int *char_id, int *account_id, int8 *flag, int8 *opentype, int64 *mail_id); +typedef int (*HPMHOOK_post_intif_rodex_requestinbox) (int retVal___, int char_id, int account_id, int8 flag, int8 opentype, int64 mail_id); +typedef int (*HPMHOOK_pre_intif_rodex_checkhasnew) (struct map_session_data **sd); +typedef int (*HPMHOOK_post_intif_rodex_checkhasnew) (int retVal___, struct map_session_data *sd); +typedef int (*HPMHOOK_pre_intif_rodex_updatemail) (int64 *mail_id, int8 *flag); +typedef int (*HPMHOOK_post_intif_rodex_updatemail) (int retVal___, int64 mail_id, int8 flag); +typedef int (*HPMHOOK_pre_intif_rodex_sendmail) (struct rodex_message **msg); +typedef int (*HPMHOOK_post_intif_rodex_sendmail) (int retVal___, struct rodex_message *msg); +typedef int (*HPMHOOK_pre_intif_rodex_checkname) (struct map_session_data **sd, const char **name); +typedef int (*HPMHOOK_post_intif_rodex_checkname) (int retVal___, struct map_session_data *sd, const char *name); typedef void (*HPMHOOK_pre_intif_request_accinfo) (int *u_fd, int *aid, int *group_lv, char **query); typedef void (*HPMHOOK_post_intif_request_accinfo) (int u_fd, int aid, int group_lv, char *query); typedef int (*HPMHOOK_pre_intif_CheckForCharServer) (void); @@ -3256,6 +3334,14 @@ typedef void (*HPMHOOK_pre_intif_pSaveHomunculusOk) (int *fd); typedef void (*HPMHOOK_post_intif_pSaveHomunculusOk) (int fd); typedef void (*HPMHOOK_pre_intif_pDeleteHomunculusOk) (int *fd); typedef void (*HPMHOOK_post_intif_pDeleteHomunculusOk) (int fd); +typedef void (*HPMHOOK_pre_intif_pRequestRodexOpenInbox) (int *fd); +typedef void (*HPMHOOK_post_intif_pRequestRodexOpenInbox) (int fd); +typedef void (*HPMHOOK_pre_intif_pRodexHasNew) (int *fd); +typedef void (*HPMHOOK_post_intif_pRodexHasNew) (int fd); +typedef void (*HPMHOOK_pre_intif_pRodexSendMail) (int *fd); +typedef void (*HPMHOOK_post_intif_pRodexSendMail) (int fd); +typedef void (*HPMHOOK_pre_intif_pRodexCheckName) (int *fd); +typedef void (*HPMHOOK_post_intif_pRodexCheckName) (int fd); #endif // MAP_INTIF_H #ifdef MAP_IRC_BOT_H /* ircbot */ typedef void (*HPMHOOK_pre_ircbot_init) (bool *minimal); @@ -3424,6 +3510,8 @@ typedef bool (*HPMHOOK_pre_itemdb_is_item_usable) (struct item_data **item); typedef bool (*HPMHOOK_post_itemdb_is_item_usable) (bool retVal___, struct item_data *item); typedef bool (*HPMHOOK_pre_itemdb_lookup_const) (const struct config_setting_t **it, const char **name, int **value); typedef bool (*HPMHOOK_post_itemdb_lookup_const) (bool retVal___, const struct config_setting_t *it, const char *name, int *value); +typedef bool (*HPMHOOK_pre_itemdb_lookup_const_mask) (const struct config_setting_t **it, const char **name, int **value); +typedef bool (*HPMHOOK_post_itemdb_lookup_const_mask) (bool retVal___, const struct config_setting_t *it, const char *name, int *value); #endif // MAP_ITEMDB_H #ifdef LOGIN_LCLIF_H /* lclif */ typedef void (*HPMHOOK_pre_lclif_init) (void); @@ -4370,6 +4458,24 @@ typedef void (*HPMHOOK_pre_mapif_send_quests) (int *fd, int *char_id, struct que typedef void (*HPMHOOK_post_mapif_send_quests) (int fd, int char_id, struct quest *tmp_questlog, int num_quests); typedef int (*HPMHOOK_pre_mapif_parse_quest_load) (int *fd); typedef int (*HPMHOOK_post_mapif_parse_quest_load) (int retVal___, int fd); +typedef int (*HPMHOOK_pre_mapif_parse_rodex_requestinbox) (int *fd); +typedef int (*HPMHOOK_post_mapif_parse_rodex_requestinbox) (int retVal___, int fd); +typedef void (*HPMHOOK_pre_mapif_rodex_sendinbox) (int *fd, int *char_id, int8 *opentype, int8 *flag, int *count, struct rodex_maillist **mails); +typedef void (*HPMHOOK_post_mapif_rodex_sendinbox) (int fd, int char_id, int8 opentype, int8 flag, int count, struct rodex_maillist *mails); +typedef int (*HPMHOOK_pre_mapif_parse_rodex_checkhasnew) (int *fd); +typedef int (*HPMHOOK_post_mapif_parse_rodex_checkhasnew) (int retVal___, int fd); +typedef void (*HPMHOOK_pre_mapif_rodex_sendhasnew) (int *fd, int *char_id, bool *has_new); +typedef void (*HPMHOOK_post_mapif_rodex_sendhasnew) (int fd, int char_id, bool has_new); +typedef int (*HPMHOOK_pre_mapif_parse_rodex_updatemail) (int *fd); +typedef int (*HPMHOOK_post_mapif_parse_rodex_updatemail) (int retVal___, int fd); +typedef int (*HPMHOOK_pre_mapif_parse_rodex_send) (int *fd); +typedef int (*HPMHOOK_post_mapif_parse_rodex_send) (int retVal___, int fd); +typedef void (*HPMHOOK_pre_mapif_rodex_send) (int *fd, int *sender_id, int *receiver_id, int *receiver_accountid, bool *result); +typedef void (*HPMHOOK_post_mapif_rodex_send) (int fd, int sender_id, int receiver_id, int receiver_accountid, bool result); +typedef int (*HPMHOOK_pre_mapif_parse_rodex_checkname) (int *fd); +typedef int (*HPMHOOK_post_mapif_parse_rodex_checkname) (int retVal___, int fd); +typedef void (*HPMHOOK_pre_mapif_rodex_checkname) (int *fd, int *reqchar_id, int *target_char_id, short *target_class, int *target_level, char **name); +typedef void (*HPMHOOK_post_mapif_rodex_checkname) (int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name); typedef int (*HPMHOOK_pre_mapif_load_guild_storage) (int *fd, int *account_id, int *guild_id, char *flag); typedef int (*HPMHOOK_post_mapif_load_guild_storage) (int retVal___, int fd, int account_id, int guild_id, char flag); typedef int (*HPMHOOK_pre_mapif_save_guild_storage_ack) (int *fd, int *account_id, int *guild_id, int *fail); @@ -5396,10 +5502,10 @@ typedef int (*HPMHOOK_pre_pc_changelook) (struct map_session_data **sd, int *typ typedef int (*HPMHOOK_post_pc_changelook) (int retVal___, struct map_session_data *sd, int type, int val); typedef int (*HPMHOOK_pre_pc_equiplookall) (struct map_session_data **sd); typedef int (*HPMHOOK_post_pc_equiplookall) (int retVal___, struct map_session_data *sd); -typedef int (*HPMHOOK_pre_pc_readparam) (const struct map_session_data **sd, int *type); -typedef int (*HPMHOOK_post_pc_readparam) (int retVal___, const struct map_session_data *sd, int type); -typedef int (*HPMHOOK_pre_pc_setparam) (struct map_session_data **sd, int *type, int *val); -typedef int (*HPMHOOK_post_pc_setparam) (int retVal___, struct map_session_data *sd, int type, int val); +typedef int64 (*HPMHOOK_pre_pc_readparam) (const struct map_session_data **sd, int *type); +typedef int64 (*HPMHOOK_post_pc_readparam) (int64 retVal___, const struct map_session_data *sd, int type); +typedef int (*HPMHOOK_pre_pc_setparam) (struct map_session_data **sd, int *type, int64 *val); +typedef int (*HPMHOOK_post_pc_setparam) (int retVal___, struct map_session_data *sd, int type, int64 val); typedef int (*HPMHOOK_pre_pc_readreg) (struct map_session_data **sd, int64 *reg); typedef int (*HPMHOOK_post_pc_readreg) (int retVal___, struct map_session_data *sd, int64 reg); typedef void (*HPMHOOK_pre_pc_setreg) (struct map_session_data **sd, int64 *reg, int *val); @@ -5779,6 +5885,42 @@ typedef double (*HPMHOOK_post_rnd_uniform) (double retVal___); typedef double (*HPMHOOK_pre_rnd_uniform53) (void); typedef double (*HPMHOOK_post_rnd_uniform53) (double retVal___); #endif // COMMON_RANDOM_H +#ifdef MAP_RODEX_H /* rodex */ +typedef void (*HPMHOOK_pre_rodex_init) (bool *minimal); +typedef void (*HPMHOOK_post_rodex_init) (bool minimal); +typedef void (*HPMHOOK_pre_rodex_final) (void); +typedef void (*HPMHOOK_post_rodex_final) (void); +typedef bool (*HPMHOOK_pre_rodex_isenabled) (void); +typedef bool (*HPMHOOK_post_rodex_isenabled) (bool retVal___); +typedef void (*HPMHOOK_pre_rodex_open) (struct map_session_data **sd, int8 *open_type); +typedef void (*HPMHOOK_post_rodex_open) (struct map_session_data *sd, int8 open_type); +typedef void (*HPMHOOK_pre_rodex_next_page) (struct map_session_data **sd, int8 *open_type, int64 *last_mail_id); +typedef void (*HPMHOOK_post_rodex_next_page) (struct map_session_data *sd, int8 open_type, int64 last_mail_id); +typedef void (*HPMHOOK_pre_rodex_refresh) (struct map_session_data **sd, int8 *open_type, int64 *first_mail_id); +typedef void (*HPMHOOK_post_rodex_refresh) (struct map_session_data *sd, int8 open_type, int64 first_mail_id); +typedef void (*HPMHOOK_pre_rodex_add_item) (struct map_session_data **sd, int16 *idx, int16 *amount); +typedef void (*HPMHOOK_post_rodex_add_item) (struct map_session_data *sd, int16 idx, int16 amount); +typedef void (*HPMHOOK_pre_rodex_remove_item) (struct map_session_data **sd, int16 *idx, int16 *amount); +typedef void (*HPMHOOK_post_rodex_remove_item) (struct map_session_data *sd, int16 idx, int16 amount); +typedef void (*HPMHOOK_pre_rodex_check_player) (struct map_session_data **sd, const char **name, int **base_level, int **char_id, short **class); +typedef void (*HPMHOOK_post_rodex_check_player) (struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class); +typedef int (*HPMHOOK_pre_rodex_send_mail) (struct map_session_data **sd, const char **receiver_name, const char **body, const char **title, int64 *zeny); +typedef int (*HPMHOOK_post_rodex_send_mail) (int retVal___, struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny); +typedef void (*HPMHOOK_pre_rodex_send_mail_result) (struct map_session_data **ssd, struct map_session_data **rsd, bool *result); +typedef void (*HPMHOOK_post_rodex_send_mail_result) (struct map_session_data *ssd, struct map_session_data *rsd, bool result); +typedef struct rodex_message* (*HPMHOOK_pre_rodex_get_mail) (struct map_session_data **sd, int64 *mail_id); +typedef struct rodex_message* (*HPMHOOK_post_rodex_get_mail) (struct rodex_message* retVal___, struct map_session_data *sd, int64 mail_id); +typedef void (*HPMHOOK_pre_rodex_read_mail) (struct map_session_data **sd, int64 *mail_id); +typedef void (*HPMHOOK_post_rodex_read_mail) (struct map_session_data *sd, int64 mail_id); +typedef void (*HPMHOOK_pre_rodex_get_zeny) (struct map_session_data **sd, int8 *opentype, int64 *mail_id); +typedef void (*HPMHOOK_post_rodex_get_zeny) (struct map_session_data *sd, int8 opentype, int64 mail_id); +typedef void (*HPMHOOK_pre_rodex_get_items) (struct map_session_data **sd, int8 *opentype, int64 *mail_id); +typedef void (*HPMHOOK_post_rodex_get_items) (struct map_session_data *sd, int8 opentype, int64 mail_id); +typedef void (*HPMHOOK_pre_rodex_delete_mail) (struct map_session_data **sd, int64 *mail_id); +typedef void (*HPMHOOK_post_rodex_delete_mail) (struct map_session_data *sd, int64 mail_id); +typedef void (*HPMHOOK_pre_rodex_clean) (struct map_session_data **sd, int8 *flag); +typedef void (*HPMHOOK_post_rodex_clean) (struct map_session_data *sd, int8 flag); +#endif // MAP_RODEX_H #ifdef MAP_SCRIPT_H /* script */ typedef void (*HPMHOOK_pre_script_init) (bool *minimal); typedef void (*HPMHOOK_post_script_init) (bool minimal); diff --git a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc index 46c79c47a..3eeb7fd91 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc @@ -626,6 +626,20 @@ struct { struct HPMHookPoint *HP_inter_pet_parse_frommap_post; struct HPMHookPoint *HP_inter_quest_parse_frommap_pre; struct HPMHookPoint *HP_inter_quest_parse_frommap_post; + struct HPMHookPoint *HP_inter_rodex_sql_init_pre; + struct HPMHookPoint *HP_inter_rodex_sql_init_post; + struct HPMHookPoint *HP_inter_rodex_sql_final_pre; + struct HPMHookPoint *HP_inter_rodex_sql_final_post; + struct HPMHookPoint *HP_inter_rodex_parse_frommap_pre; + struct HPMHookPoint *HP_inter_rodex_parse_frommap_post; + struct HPMHookPoint *HP_inter_rodex_fromsql_pre; + struct HPMHookPoint *HP_inter_rodex_fromsql_post; + struct HPMHookPoint *HP_inter_rodex_hasnew_pre; + struct HPMHookPoint *HP_inter_rodex_hasnew_post; + struct HPMHookPoint *HP_inter_rodex_checkname_pre; + struct HPMHookPoint *HP_inter_rodex_checkname_post; + struct HPMHookPoint *HP_inter_rodex_savemessage_pre; + struct HPMHookPoint *HP_inter_rodex_savemessage_post; struct HPMHookPoint *HP_inter_storage_tosql_pre; struct HPMHookPoint *HP_inter_storage_tosql_post; struct HPMHookPoint *HP_inter_storage_fromsql_pre; @@ -1098,6 +1112,24 @@ struct { struct HPMHookPoint *HP_mapif_send_quests_post; struct HPMHookPoint *HP_mapif_parse_quest_load_pre; struct HPMHookPoint *HP_mapif_parse_quest_load_post; + struct HPMHookPoint *HP_mapif_parse_rodex_requestinbox_pre; + struct HPMHookPoint *HP_mapif_parse_rodex_requestinbox_post; + struct HPMHookPoint *HP_mapif_rodex_sendinbox_pre; + struct HPMHookPoint *HP_mapif_rodex_sendinbox_post; + struct HPMHookPoint *HP_mapif_parse_rodex_checkhasnew_pre; + struct HPMHookPoint *HP_mapif_parse_rodex_checkhasnew_post; + struct HPMHookPoint *HP_mapif_rodex_sendhasnew_pre; + struct HPMHookPoint *HP_mapif_rodex_sendhasnew_post; + struct HPMHookPoint *HP_mapif_parse_rodex_updatemail_pre; + struct HPMHookPoint *HP_mapif_parse_rodex_updatemail_post; + struct HPMHookPoint *HP_mapif_parse_rodex_send_pre; + struct HPMHookPoint *HP_mapif_parse_rodex_send_post; + struct HPMHookPoint *HP_mapif_rodex_send_pre; + struct HPMHookPoint *HP_mapif_rodex_send_post; + struct HPMHookPoint *HP_mapif_parse_rodex_checkname_pre; + struct HPMHookPoint *HP_mapif_parse_rodex_checkname_post; + struct HPMHookPoint *HP_mapif_rodex_checkname_pre; + struct HPMHookPoint *HP_mapif_rodex_checkname_post; struct HPMHookPoint *HP_mapif_load_guild_storage_pre; struct HPMHookPoint *HP_mapif_load_guild_storage_post; struct HPMHookPoint *HP_mapif_save_guild_storage_ack_pre; @@ -2113,6 +2145,20 @@ struct { int HP_inter_pet_parse_frommap_post; int HP_inter_quest_parse_frommap_pre; int HP_inter_quest_parse_frommap_post; + int HP_inter_rodex_sql_init_pre; + int HP_inter_rodex_sql_init_post; + int HP_inter_rodex_sql_final_pre; + int HP_inter_rodex_sql_final_post; + int HP_inter_rodex_parse_frommap_pre; + int HP_inter_rodex_parse_frommap_post; + int HP_inter_rodex_fromsql_pre; + int HP_inter_rodex_fromsql_post; + int HP_inter_rodex_hasnew_pre; + int HP_inter_rodex_hasnew_post; + int HP_inter_rodex_checkname_pre; + int HP_inter_rodex_checkname_post; + int HP_inter_rodex_savemessage_pre; + int HP_inter_rodex_savemessage_post; int HP_inter_storage_tosql_pre; int HP_inter_storage_tosql_post; int HP_inter_storage_fromsql_pre; @@ -2585,6 +2631,24 @@ struct { int HP_mapif_send_quests_post; int HP_mapif_parse_quest_load_pre; int HP_mapif_parse_quest_load_post; + int HP_mapif_parse_rodex_requestinbox_pre; + int HP_mapif_parse_rodex_requestinbox_post; + int HP_mapif_rodex_sendinbox_pre; + int HP_mapif_rodex_sendinbox_post; + int HP_mapif_parse_rodex_checkhasnew_pre; + int HP_mapif_parse_rodex_checkhasnew_post; + int HP_mapif_rodex_sendhasnew_pre; + int HP_mapif_rodex_sendhasnew_post; + int HP_mapif_parse_rodex_updatemail_pre; + int HP_mapif_parse_rodex_updatemail_post; + int HP_mapif_parse_rodex_send_pre; + int HP_mapif_parse_rodex_send_post; + int HP_mapif_rodex_send_pre; + int HP_mapif_rodex_send_post; + int HP_mapif_parse_rodex_checkname_pre; + int HP_mapif_parse_rodex_checkname_post; + int HP_mapif_rodex_checkname_pre; + int HP_mapif_rodex_checkname_post; int HP_mapif_load_guild_storage_pre; int HP_mapif_load_guild_storage_post; int HP_mapif_save_guild_storage_ack_pre; @@ -3018,6 +3082,7 @@ struct { struct inter_party_interface inter_party; struct inter_pet_interface inter_pet; struct inter_quest_interface inter_quest; + struct inter_rodex_interface inter_rodex; struct inter_storage_interface inter_storage; struct libconfig_interface libconfig; struct loginif_interface loginif; diff --git a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc index 29f6d668c..bbd484fe1 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc @@ -344,6 +344,14 @@ struct HookingPointData HookingPoints[] = { { HP_POP(inter_pet->parse_frommap, HP_inter_pet_parse_frommap) }, /* inter_quest_interface */ { HP_POP(inter_quest->parse_frommap, HP_inter_quest_parse_frommap) }, +/* inter_rodex_interface */ + { HP_POP(inter_rodex->sql_init, HP_inter_rodex_sql_init) }, + { HP_POP(inter_rodex->sql_final, HP_inter_rodex_sql_final) }, + { HP_POP(inter_rodex->parse_frommap, HP_inter_rodex_parse_frommap) }, + { HP_POP(inter_rodex->fromsql, HP_inter_rodex_fromsql) }, + { HP_POP(inter_rodex->hasnew, HP_inter_rodex_hasnew) }, + { HP_POP(inter_rodex->checkname, HP_inter_rodex_checkname) }, + { HP_POP(inter_rodex->savemessage, HP_inter_rodex_savemessage) }, /* inter_storage_interface */ { HP_POP(inter_storage->tosql, HP_inter_storage_tosql) }, { HP_POP(inter_storage->fromsql, HP_inter_storage_fromsql) }, @@ -584,6 +592,15 @@ struct HookingPointData HookingPoints[] = { { HP_POP(mapif->parse_quest_save, HP_mapif_parse_quest_save) }, { HP_POP(mapif->send_quests, HP_mapif_send_quests) }, { HP_POP(mapif->parse_quest_load, HP_mapif_parse_quest_load) }, + { HP_POP(mapif->parse_rodex_requestinbox, HP_mapif_parse_rodex_requestinbox) }, + { HP_POP(mapif->rodex_sendinbox, HP_mapif_rodex_sendinbox) }, + { HP_POP(mapif->parse_rodex_checkhasnew, HP_mapif_parse_rodex_checkhasnew) }, + { HP_POP(mapif->rodex_sendhasnew, HP_mapif_rodex_sendhasnew) }, + { HP_POP(mapif->parse_rodex_updatemail, HP_mapif_parse_rodex_updatemail) }, + { HP_POP(mapif->parse_rodex_send, HP_mapif_parse_rodex_send) }, + { HP_POP(mapif->rodex_send, HP_mapif_rodex_send) }, + { HP_POP(mapif->parse_rodex_checkname, HP_mapif_parse_rodex_checkname) }, + { HP_POP(mapif->rodex_checkname, HP_mapif_rodex_checkname) }, { HP_POP(mapif->load_guild_storage, HP_mapif_load_guild_storage) }, { HP_POP(mapif->save_guild_storage_ack, HP_mapif_save_guild_storage_ack) }, { HP_POP(mapif->parse_LoadGuildStorage, HP_mapif_parse_LoadGuildStorage) }, diff --git a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc index a2a9fa8e2..a372f83b3 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc @@ -8058,6 +8058,195 @@ int HP_inter_quest_parse_frommap(int fd) { } return retVal___; } +/* inter_rodex_interface */ +int HP_inter_rodex_sql_init(void) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_inter_rodex_sql_init_pre > 0) { + int (*preHookFunc) (void); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_sql_init_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_inter_rodex_sql_init_pre[hIndex].func; + retVal___ = preHookFunc(); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.inter_rodex.sql_init(); + } + if (HPMHooks.count.HP_inter_rodex_sql_init_post > 0) { + int (*postHookFunc) (int retVal___); + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_sql_init_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_inter_rodex_sql_init_post[hIndex].func; + retVal___ = postHookFunc(retVal___); + } + } + return retVal___; +} +void HP_inter_rodex_sql_final(void) { + int hIndex = 0; + if (HPMHooks.count.HP_inter_rodex_sql_final_pre > 0) { + void (*preHookFunc) (void); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_sql_final_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_inter_rodex_sql_final_pre[hIndex].func; + preHookFunc(); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.inter_rodex.sql_final(); + } + if (HPMHooks.count.HP_inter_rodex_sql_final_post > 0) { + void (*postHookFunc) (void); + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_sql_final_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_inter_rodex_sql_final_post[hIndex].func; + postHookFunc(); + } + } + return; +} +int HP_inter_rodex_parse_frommap(int fd) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_inter_rodex_parse_frommap_pre > 0) { + int (*preHookFunc) (int *fd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_parse_frommap_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_inter_rodex_parse_frommap_pre[hIndex].func; + retVal___ = preHookFunc(&fd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.inter_rodex.parse_frommap(fd); + } + if (HPMHooks.count.HP_inter_rodex_parse_frommap_post > 0) { + int (*postHookFunc) (int retVal___, int fd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_parse_frommap_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_inter_rodex_parse_frommap_post[hIndex].func; + retVal___ = postHookFunc(retVal___, fd); + } + } + return retVal___; +} +int HP_inter_rodex_fromsql(int char_id, int account_id, int8 opentype, int64 mail_id, struct rodex_maillist *mails) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_inter_rodex_fromsql_pre > 0) { + int (*preHookFunc) (int *char_id, int *account_id, int8 *opentype, int64 *mail_id, struct rodex_maillist **mails); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_fromsql_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_inter_rodex_fromsql_pre[hIndex].func; + retVal___ = preHookFunc(&char_id, &account_id, &opentype, &mail_id, &mails); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.inter_rodex.fromsql(char_id, account_id, opentype, mail_id, mails); + } + if (HPMHooks.count.HP_inter_rodex_fromsql_post > 0) { + int (*postHookFunc) (int retVal___, int char_id, int account_id, int8 opentype, int64 mail_id, struct rodex_maillist *mails); + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_fromsql_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_inter_rodex_fromsql_post[hIndex].func; + retVal___ = postHookFunc(retVal___, char_id, account_id, opentype, mail_id, mails); + } + } + return retVal___; +} +bool HP_inter_rodex_hasnew(int char_id, int account_id) { + int hIndex = 0; + bool retVal___ = false; + if (HPMHooks.count.HP_inter_rodex_hasnew_pre > 0) { + bool (*preHookFunc) (int *char_id, int *account_id); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_hasnew_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_inter_rodex_hasnew_pre[hIndex].func; + retVal___ = preHookFunc(&char_id, &account_id); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.inter_rodex.hasnew(char_id, account_id); + } + if (HPMHooks.count.HP_inter_rodex_hasnew_post > 0) { + bool (*postHookFunc) (bool retVal___, int char_id, int account_id); + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_hasnew_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_inter_rodex_hasnew_post[hIndex].func; + retVal___ = postHookFunc(retVal___, char_id, account_id); + } + } + return retVal___; +} +bool HP_inter_rodex_checkname(const char *name, int *target_char_id, short *target_class, int *target_level) { + int hIndex = 0; + bool retVal___ = false; + if (HPMHooks.count.HP_inter_rodex_checkname_pre > 0) { + bool (*preHookFunc) (const char **name, int **target_char_id, short **target_class, int **target_level); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_checkname_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_inter_rodex_checkname_pre[hIndex].func; + retVal___ = preHookFunc(&name, &target_char_id, &target_class, &target_level); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.inter_rodex.checkname(name, target_char_id, target_class, target_level); + } + if (HPMHooks.count.HP_inter_rodex_checkname_post > 0) { + bool (*postHookFunc) (bool retVal___, const char *name, int *target_char_id, short *target_class, int *target_level); + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_checkname_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_inter_rodex_checkname_post[hIndex].func; + retVal___ = postHookFunc(retVal___, name, target_char_id, target_class, target_level); + } + } + return retVal___; +} +int64 HP_inter_rodex_savemessage(struct rodex_message *msg) { + int hIndex = 0; + int64 retVal___ = 0; + if (HPMHooks.count.HP_inter_rodex_savemessage_pre > 0) { + int64 (*preHookFunc) (struct rodex_message **msg); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_savemessage_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_inter_rodex_savemessage_pre[hIndex].func; + retVal___ = preHookFunc(&msg); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.inter_rodex.savemessage(msg); + } + if (HPMHooks.count.HP_inter_rodex_savemessage_post > 0) { + int64 (*postHookFunc) (int64 retVal___, struct rodex_message *msg); + for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_savemessage_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_inter_rodex_savemessage_post[hIndex].func; + retVal___ = postHookFunc(retVal___, msg); + } + } + return retVal___; +} /* inter_storage_interface */ int HP_inter_storage_tosql(int account_id, const struct storage_data *p) { int hIndex = 0; @@ -14349,6 +14538,245 @@ int HP_mapif_parse_quest_load(int fd) { } return retVal___; } +int HP_mapif_parse_rodex_requestinbox(int fd) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_mapif_parse_rodex_requestinbox_pre > 0) { + int (*preHookFunc) (int *fd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_requestinbox_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_requestinbox_pre[hIndex].func; + retVal___ = preHookFunc(&fd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.mapif.parse_rodex_requestinbox(fd); + } + if (HPMHooks.count.HP_mapif_parse_rodex_requestinbox_post > 0) { + int (*postHookFunc) (int retVal___, int fd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_requestinbox_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_requestinbox_post[hIndex].func; + retVal___ = postHookFunc(retVal___, fd); + } + } + return retVal___; +} +void HP_mapif_rodex_sendinbox(int fd, int char_id, int8 opentype, int8 flag, int count, struct rodex_maillist *mails) { + int hIndex = 0; + if (HPMHooks.count.HP_mapif_rodex_sendinbox_pre > 0) { + void (*preHookFunc) (int *fd, int *char_id, int8 *opentype, int8 *flag, int *count, struct rodex_maillist **mails); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_sendinbox_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_mapif_rodex_sendinbox_pre[hIndex].func; + preHookFunc(&fd, &char_id, &opentype, &flag, &count, &mails); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.mapif.rodex_sendinbox(fd, char_id, opentype, flag, count, mails); + } + if (HPMHooks.count.HP_mapif_rodex_sendinbox_post > 0) { + void (*postHookFunc) (int fd, int char_id, int8 opentype, int8 flag, int count, struct rodex_maillist *mails); + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_sendinbox_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_mapif_rodex_sendinbox_post[hIndex].func; + postHookFunc(fd, char_id, opentype, flag, count, mails); + } + } + return; +} +int HP_mapif_parse_rodex_checkhasnew(int fd) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_mapif_parse_rodex_checkhasnew_pre > 0) { + int (*preHookFunc) (int *fd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_checkhasnew_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_checkhasnew_pre[hIndex].func; + retVal___ = preHookFunc(&fd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.mapif.parse_rodex_checkhasnew(fd); + } + if (HPMHooks.count.HP_mapif_parse_rodex_checkhasnew_post > 0) { + int (*postHookFunc) (int retVal___, int fd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_checkhasnew_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_checkhasnew_post[hIndex].func; + retVal___ = postHookFunc(retVal___, fd); + } + } + return retVal___; +} +void HP_mapif_rodex_sendhasnew(int fd, int char_id, bool has_new) { + int hIndex = 0; + if (HPMHooks.count.HP_mapif_rodex_sendhasnew_pre > 0) { + void (*preHookFunc) (int *fd, int *char_id, bool *has_new); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_sendhasnew_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_mapif_rodex_sendhasnew_pre[hIndex].func; + preHookFunc(&fd, &char_id, &has_new); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.mapif.rodex_sendhasnew(fd, char_id, has_new); + } + if (HPMHooks.count.HP_mapif_rodex_sendhasnew_post > 0) { + void (*postHookFunc) (int fd, int char_id, bool has_new); + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_sendhasnew_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_mapif_rodex_sendhasnew_post[hIndex].func; + postHookFunc(fd, char_id, has_new); + } + } + return; +} +int HP_mapif_parse_rodex_updatemail(int fd) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_mapif_parse_rodex_updatemail_pre > 0) { + int (*preHookFunc) (int *fd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_updatemail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_updatemail_pre[hIndex].func; + retVal___ = preHookFunc(&fd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.mapif.parse_rodex_updatemail(fd); + } + if (HPMHooks.count.HP_mapif_parse_rodex_updatemail_post > 0) { + int (*postHookFunc) (int retVal___, int fd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_updatemail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_updatemail_post[hIndex].func; + retVal___ = postHookFunc(retVal___, fd); + } + } + return retVal___; +} +int HP_mapif_parse_rodex_send(int fd) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_mapif_parse_rodex_send_pre > 0) { + int (*preHookFunc) (int *fd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_send_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_send_pre[hIndex].func; + retVal___ = preHookFunc(&fd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.mapif.parse_rodex_send(fd); + } + if (HPMHooks.count.HP_mapif_parse_rodex_send_post > 0) { + int (*postHookFunc) (int retVal___, int fd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_send_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_send_post[hIndex].func; + retVal___ = postHookFunc(retVal___, fd); + } + } + return retVal___; +} +void HP_mapif_rodex_send(int fd, int sender_id, int receiver_id, int receiver_accountid, bool result) { + int hIndex = 0; + if (HPMHooks.count.HP_mapif_rodex_send_pre > 0) { + void (*preHookFunc) (int *fd, int *sender_id, int *receiver_id, int *receiver_accountid, bool *result); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_send_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_mapif_rodex_send_pre[hIndex].func; + preHookFunc(&fd, &sender_id, &receiver_id, &receiver_accountid, &result); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.mapif.rodex_send(fd, sender_id, receiver_id, receiver_accountid, result); + } + if (HPMHooks.count.HP_mapif_rodex_send_post > 0) { + void (*postHookFunc) (int fd, int sender_id, int receiver_id, int receiver_accountid, bool result); + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_send_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_mapif_rodex_send_post[hIndex].func; + postHookFunc(fd, sender_id, receiver_id, receiver_accountid, result); + } + } + return; +} +int HP_mapif_parse_rodex_checkname(int fd) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_mapif_parse_rodex_checkname_pre > 0) { + int (*preHookFunc) (int *fd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_checkname_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_checkname_pre[hIndex].func; + retVal___ = preHookFunc(&fd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.mapif.parse_rodex_checkname(fd); + } + if (HPMHooks.count.HP_mapif_parse_rodex_checkname_post > 0) { + int (*postHookFunc) (int retVal___, int fd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_checkname_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_checkname_post[hIndex].func; + retVal___ = postHookFunc(retVal___, fd); + } + } + return retVal___; +} +void HP_mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name) { + int hIndex = 0; + if (HPMHooks.count.HP_mapif_rodex_checkname_pre > 0) { + void (*preHookFunc) (int *fd, int *reqchar_id, int *target_char_id, short *target_class, int *target_level, char **name); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_checkname_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_mapif_rodex_checkname_pre[hIndex].func; + preHookFunc(&fd, &reqchar_id, &target_char_id, &target_class, &target_level, &name); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.mapif.rodex_checkname(fd, reqchar_id, target_char_id, target_class, target_level, name); + } + if (HPMHooks.count.HP_mapif_rodex_checkname_post > 0) { + void (*postHookFunc) (int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name); + for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_checkname_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_mapif_rodex_checkname_post[hIndex].func; + postHookFunc(fd, reqchar_id, target_char_id, target_class, target_level, name); + } + } + return; +} int HP_mapif_load_guild_storage(int fd, int account_id, int guild_id, char flag) { int hIndex = 0; int retVal___ = 0; diff --git a/src/plugins/HPMHooking/HPMHooking_char.sources.inc b/src/plugins/HPMHooking/HPMHooking_char.sources.inc index a7b1cff4e..b5e9afc08 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.sources.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.sources.inc @@ -43,6 +43,7 @@ HPMHooks.source.inter_mercenary = *inter_mercenary; HPMHooks.source.inter_party = *inter_party; HPMHooks.source.inter_pet = *inter_pet; HPMHooks.source.inter_quest = *inter_quest; +HPMHooks.source.inter_rodex = *inter_rodex; HPMHooks.source.inter_storage = *inter_storage; HPMHooks.source.libconfig = *libconfig; HPMHooks.source.loginif = *loginif; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc index 794d8e650..e2494067c 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc @@ -1876,6 +1876,58 @@ struct { struct HPMHookPoint *HP_clif_pSelectCart_post; struct HPMHookPoint *HP_clif_get_bl_name_pre; struct HPMHookPoint *HP_clif_get_bl_name_post; + struct HPMHookPoint *HP_clif_pRodexOpenWriteMail_pre; + struct HPMHookPoint *HP_clif_pRodexOpenWriteMail_post; + struct HPMHookPoint *HP_clif_rodex_open_write_mail_pre; + struct HPMHookPoint *HP_clif_rodex_open_write_mail_post; + struct HPMHookPoint *HP_clif_pRodexAddItem_pre; + struct HPMHookPoint *HP_clif_pRodexAddItem_post; + struct HPMHookPoint *HP_clif_rodex_add_item_result_pre; + struct HPMHookPoint *HP_clif_rodex_add_item_result_post; + struct HPMHookPoint *HP_clif_pRodexRemoveItem_pre; + struct HPMHookPoint *HP_clif_pRodexRemoveItem_post; + struct HPMHookPoint *HP_clif_rodex_remove_item_result_pre; + struct HPMHookPoint *HP_clif_rodex_remove_item_result_post; + struct HPMHookPoint *HP_clif_pRodexSendMail_pre; + struct HPMHookPoint *HP_clif_pRodexSendMail_post; + struct HPMHookPoint *HP_clif_rodex_send_mail_result_pre; + struct HPMHookPoint *HP_clif_rodex_send_mail_result_post; + struct HPMHookPoint *HP_clif_rodex_send_maillist_pre; + struct HPMHookPoint *HP_clif_rodex_send_maillist_post; + struct HPMHookPoint *HP_clif_rodex_send_refresh_pre; + struct HPMHookPoint *HP_clif_rodex_send_refresh_post; + struct HPMHookPoint *HP_clif_pRodexReadMail_pre; + struct HPMHookPoint *HP_clif_pRodexReadMail_post; + struct HPMHookPoint *HP_clif_rodex_read_mail_pre; + struct HPMHookPoint *HP_clif_rodex_read_mail_post; + struct HPMHookPoint *HP_clif_pRodexNextMaillist_pre; + struct HPMHookPoint *HP_clif_pRodexNextMaillist_post; + struct HPMHookPoint *HP_clif_pRodexCloseMailbox_pre; + struct HPMHookPoint *HP_clif_pRodexCloseMailbox_post; + struct HPMHookPoint *HP_clif_pRodexCancelWriteMail_pre; + struct HPMHookPoint *HP_clif_pRodexCancelWriteMail_post; + struct HPMHookPoint *HP_clif_pRodexOpenMailbox_pre; + struct HPMHookPoint *HP_clif_pRodexOpenMailbox_post; + struct HPMHookPoint *HP_clif_pRodexCheckName_pre; + struct HPMHookPoint *HP_clif_pRodexCheckName_post; + struct HPMHookPoint *HP_clif_rodex_checkname_result_pre; + struct HPMHookPoint *HP_clif_rodex_checkname_result_post; + struct HPMHookPoint *HP_clif_pRodexDeleteMail_pre; + struct HPMHookPoint *HP_clif_pRodexDeleteMail_post; + struct HPMHookPoint *HP_clif_rodex_delete_mail_pre; + struct HPMHookPoint *HP_clif_rodex_delete_mail_post; + struct HPMHookPoint *HP_clif_pRodexRefreshMaillist_pre; + struct HPMHookPoint *HP_clif_pRodexRefreshMaillist_post; + struct HPMHookPoint *HP_clif_pRodexRequestZeny_pre; + struct HPMHookPoint *HP_clif_pRodexRequestZeny_post; + struct HPMHookPoint *HP_clif_rodex_request_zeny_pre; + struct HPMHookPoint *HP_clif_rodex_request_zeny_post; + struct HPMHookPoint *HP_clif_pRodexRequestItems_pre; + struct HPMHookPoint *HP_clif_pRodexRequestItems_post; + struct HPMHookPoint *HP_clif_rodex_request_items_pre; + struct HPMHookPoint *HP_clif_rodex_request_items_post; + struct HPMHookPoint *HP_clif_rodex_icon_pre; + struct HPMHookPoint *HP_clif_rodex_icon_post; struct HPMHookPoint *HP_cmdline_init_pre; struct HPMHookPoint *HP_cmdline_init_post; struct HPMHookPoint *HP_cmdline_final_pre; @@ -2508,6 +2560,16 @@ struct { struct HPMHookPoint *HP_intif_elemental_delete_post; struct HPMHookPoint *HP_intif_elemental_save_pre; struct HPMHookPoint *HP_intif_elemental_save_post; + struct HPMHookPoint *HP_intif_rodex_requestinbox_pre; + struct HPMHookPoint *HP_intif_rodex_requestinbox_post; + struct HPMHookPoint *HP_intif_rodex_checkhasnew_pre; + struct HPMHookPoint *HP_intif_rodex_checkhasnew_post; + struct HPMHookPoint *HP_intif_rodex_updatemail_pre; + struct HPMHookPoint *HP_intif_rodex_updatemail_post; + struct HPMHookPoint *HP_intif_rodex_sendmail_pre; + struct HPMHookPoint *HP_intif_rodex_sendmail_post; + struct HPMHookPoint *HP_intif_rodex_checkname_pre; + struct HPMHookPoint *HP_intif_rodex_checkname_post; struct HPMHookPoint *HP_intif_request_accinfo_pre; struct HPMHookPoint *HP_intif_request_accinfo_post; struct HPMHookPoint *HP_intif_CheckForCharServer_pre; @@ -2640,6 +2702,14 @@ struct { struct HPMHookPoint *HP_intif_pSaveHomunculusOk_post; struct HPMHookPoint *HP_intif_pDeleteHomunculusOk_pre; struct HPMHookPoint *HP_intif_pDeleteHomunculusOk_post; + struct HPMHookPoint *HP_intif_pRequestRodexOpenInbox_pre; + struct HPMHookPoint *HP_intif_pRequestRodexOpenInbox_post; + struct HPMHookPoint *HP_intif_pRodexHasNew_pre; + struct HPMHookPoint *HP_intif_pRodexHasNew_post; + struct HPMHookPoint *HP_intif_pRodexSendMail_pre; + struct HPMHookPoint *HP_intif_pRodexSendMail_post; + struct HPMHookPoint *HP_intif_pRodexCheckName_pre; + struct HPMHookPoint *HP_intif_pRodexCheckName_post; struct HPMHookPoint *HP_ircbot_init_pre; struct HPMHookPoint *HP_ircbot_init_post; struct HPMHookPoint *HP_ircbot_final_pre; @@ -2804,6 +2874,8 @@ struct { struct HPMHookPoint *HP_itemdb_is_item_usable_post; struct HPMHookPoint *HP_itemdb_lookup_const_pre; struct HPMHookPoint *HP_itemdb_lookup_const_post; + struct HPMHookPoint *HP_itemdb_lookup_const_mask_pre; + struct HPMHookPoint *HP_itemdb_lookup_const_mask_post; struct HPMHookPoint *HP_libconfig_read_pre; struct HPMHookPoint *HP_libconfig_read_post; struct HPMHookPoint *HP_libconfig_write_pre; @@ -4566,6 +4638,40 @@ struct { struct HPMHookPoint *HP_rnd_uniform_post; struct HPMHookPoint *HP_rnd_uniform53_pre; struct HPMHookPoint *HP_rnd_uniform53_post; + struct HPMHookPoint *HP_rodex_init_pre; + struct HPMHookPoint *HP_rodex_init_post; + struct HPMHookPoint *HP_rodex_final_pre; + struct HPMHookPoint *HP_rodex_final_post; + struct HPMHookPoint *HP_rodex_isenabled_pre; + struct HPMHookPoint *HP_rodex_isenabled_post; + struct HPMHookPoint *HP_rodex_open_pre; + struct HPMHookPoint *HP_rodex_open_post; + struct HPMHookPoint *HP_rodex_next_page_pre; + struct HPMHookPoint *HP_rodex_next_page_post; + struct HPMHookPoint *HP_rodex_refresh_pre; + struct HPMHookPoint *HP_rodex_refresh_post; + struct HPMHookPoint *HP_rodex_add_item_pre; + struct HPMHookPoint *HP_rodex_add_item_post; + struct HPMHookPoint *HP_rodex_remove_item_pre; + struct HPMHookPoint *HP_rodex_remove_item_post; + struct HPMHookPoint *HP_rodex_check_player_pre; + struct HPMHookPoint *HP_rodex_check_player_post; + struct HPMHookPoint *HP_rodex_send_mail_pre; + struct HPMHookPoint *HP_rodex_send_mail_post; + struct HPMHookPoint *HP_rodex_send_mail_result_pre; + struct HPMHookPoint *HP_rodex_send_mail_result_post; + struct HPMHookPoint *HP_rodex_get_mail_pre; + struct HPMHookPoint *HP_rodex_get_mail_post; + struct HPMHookPoint *HP_rodex_read_mail_pre; + struct HPMHookPoint *HP_rodex_read_mail_post; + struct HPMHookPoint *HP_rodex_get_zeny_pre; + struct HPMHookPoint *HP_rodex_get_zeny_post; + struct HPMHookPoint *HP_rodex_get_items_pre; + struct HPMHookPoint *HP_rodex_get_items_post; + struct HPMHookPoint *HP_rodex_delete_mail_pre; + struct HPMHookPoint *HP_rodex_delete_mail_post; + struct HPMHookPoint *HP_rodex_clean_pre; + struct HPMHookPoint *HP_rodex_clean_post; struct HPMHookPoint *HP_script_init_pre; struct HPMHookPoint *HP_script_init_post; struct HPMHookPoint *HP_script_final_pre; @@ -7967,6 +8073,58 @@ struct { int HP_clif_pSelectCart_post; int HP_clif_get_bl_name_pre; int HP_clif_get_bl_name_post; + int HP_clif_pRodexOpenWriteMail_pre; + int HP_clif_pRodexOpenWriteMail_post; + int HP_clif_rodex_open_write_mail_pre; + int HP_clif_rodex_open_write_mail_post; + int HP_clif_pRodexAddItem_pre; + int HP_clif_pRodexAddItem_post; + int HP_clif_rodex_add_item_result_pre; + int HP_clif_rodex_add_item_result_post; + int HP_clif_pRodexRemoveItem_pre; + int HP_clif_pRodexRemoveItem_post; + int HP_clif_rodex_remove_item_result_pre; + int HP_clif_rodex_remove_item_result_post; + int HP_clif_pRodexSendMail_pre; + int HP_clif_pRodexSendMail_post; + int HP_clif_rodex_send_mail_result_pre; + int HP_clif_rodex_send_mail_result_post; + int HP_clif_rodex_send_maillist_pre; + int HP_clif_rodex_send_maillist_post; + int HP_clif_rodex_send_refresh_pre; + int HP_clif_rodex_send_refresh_post; + int HP_clif_pRodexReadMail_pre; + int HP_clif_pRodexReadMail_post; + int HP_clif_rodex_read_mail_pre; + int HP_clif_rodex_read_mail_post; + int HP_clif_pRodexNextMaillist_pre; + int HP_clif_pRodexNextMaillist_post; + int HP_clif_pRodexCloseMailbox_pre; + int HP_clif_pRodexCloseMailbox_post; + int HP_clif_pRodexCancelWriteMail_pre; + int HP_clif_pRodexCancelWriteMail_post; + int HP_clif_pRodexOpenMailbox_pre; + int HP_clif_pRodexOpenMailbox_post; + int HP_clif_pRodexCheckName_pre; + int HP_clif_pRodexCheckName_post; + int HP_clif_rodex_checkname_result_pre; + int HP_clif_rodex_checkname_result_post; + int HP_clif_pRodexDeleteMail_pre; + int HP_clif_pRodexDeleteMail_post; + int HP_clif_rodex_delete_mail_pre; + int HP_clif_rodex_delete_mail_post; + int HP_clif_pRodexRefreshMaillist_pre; + int HP_clif_pRodexRefreshMaillist_post; + int HP_clif_pRodexRequestZeny_pre; + int HP_clif_pRodexRequestZeny_post; + int HP_clif_rodex_request_zeny_pre; + int HP_clif_rodex_request_zeny_post; + int HP_clif_pRodexRequestItems_pre; + int HP_clif_pRodexRequestItems_post; + int HP_clif_rodex_request_items_pre; + int HP_clif_rodex_request_items_post; + int HP_clif_rodex_icon_pre; + int HP_clif_rodex_icon_post; int HP_cmdline_init_pre; int HP_cmdline_init_post; int HP_cmdline_final_pre; @@ -8599,6 +8757,16 @@ struct { int HP_intif_elemental_delete_post; int HP_intif_elemental_save_pre; int HP_intif_elemental_save_post; + int HP_intif_rodex_requestinbox_pre; + int HP_intif_rodex_requestinbox_post; + int HP_intif_rodex_checkhasnew_pre; + int HP_intif_rodex_checkhasnew_post; + int HP_intif_rodex_updatemail_pre; + int HP_intif_rodex_updatemail_post; + int HP_intif_rodex_sendmail_pre; + int HP_intif_rodex_sendmail_post; + int HP_intif_rodex_checkname_pre; + int HP_intif_rodex_checkname_post; int HP_intif_request_accinfo_pre; int HP_intif_request_accinfo_post; int HP_intif_CheckForCharServer_pre; @@ -8731,6 +8899,14 @@ struct { int HP_intif_pSaveHomunculusOk_post; int HP_intif_pDeleteHomunculusOk_pre; int HP_intif_pDeleteHomunculusOk_post; + int HP_intif_pRequestRodexOpenInbox_pre; + int HP_intif_pRequestRodexOpenInbox_post; + int HP_intif_pRodexHasNew_pre; + int HP_intif_pRodexHasNew_post; + int HP_intif_pRodexSendMail_pre; + int HP_intif_pRodexSendMail_post; + int HP_intif_pRodexCheckName_pre; + int HP_intif_pRodexCheckName_post; int HP_ircbot_init_pre; int HP_ircbot_init_post; int HP_ircbot_final_pre; @@ -8895,6 +9071,8 @@ struct { int HP_itemdb_is_item_usable_post; int HP_itemdb_lookup_const_pre; int HP_itemdb_lookup_const_post; + int HP_itemdb_lookup_const_mask_pre; + int HP_itemdb_lookup_const_mask_post; int HP_libconfig_read_pre; int HP_libconfig_read_post; int HP_libconfig_write_pre; @@ -10657,6 +10835,40 @@ struct { int HP_rnd_uniform_post; int HP_rnd_uniform53_pre; int HP_rnd_uniform53_post; + int HP_rodex_init_pre; + int HP_rodex_init_post; + int HP_rodex_final_pre; + int HP_rodex_final_post; + int HP_rodex_isenabled_pre; + int HP_rodex_isenabled_post; + int HP_rodex_open_pre; + int HP_rodex_open_post; + int HP_rodex_next_page_pre; + int HP_rodex_next_page_post; + int HP_rodex_refresh_pre; + int HP_rodex_refresh_post; + int HP_rodex_add_item_pre; + int HP_rodex_add_item_post; + int HP_rodex_remove_item_pre; + int HP_rodex_remove_item_post; + int HP_rodex_check_player_pre; + int HP_rodex_check_player_post; + int HP_rodex_send_mail_pre; + int HP_rodex_send_mail_post; + int HP_rodex_send_mail_result_pre; + int HP_rodex_send_mail_result_post; + int HP_rodex_get_mail_pre; + int HP_rodex_get_mail_post; + int HP_rodex_read_mail_pre; + int HP_rodex_read_mail_post; + int HP_rodex_get_zeny_pre; + int HP_rodex_get_zeny_post; + int HP_rodex_get_items_pre; + int HP_rodex_get_items_post; + int HP_rodex_delete_mail_pre; + int HP_rodex_delete_mail_post; + int HP_rodex_clean_pre; + int HP_rodex_clean_post; int HP_script_init_pre; int HP_script_init_post; int HP_script_final_pre; @@ -12254,6 +12466,7 @@ struct { struct pet_interface pet; struct quest_interface quest; struct rnd_interface rnd; + struct rodex_interface rodex; struct script_interface script; struct searchstore_interface searchstore; struct showmsg_interface showmsg; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc index 618765f47..b094fa841 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc @@ -960,6 +960,32 @@ struct HookingPointData HookingPoints[] = { { HP_POP(clif->selectcart, HP_clif_selectcart) }, { HP_POP(clif->pSelectCart, HP_clif_pSelectCart) }, { HP_POP(clif->get_bl_name, HP_clif_get_bl_name) }, + { HP_POP(clif->pRodexOpenWriteMail, HP_clif_pRodexOpenWriteMail) }, + { HP_POP(clif->rodex_open_write_mail, HP_clif_rodex_open_write_mail) }, + { HP_POP(clif->pRodexAddItem, HP_clif_pRodexAddItem) }, + { HP_POP(clif->rodex_add_item_result, HP_clif_rodex_add_item_result) }, + { HP_POP(clif->pRodexRemoveItem, HP_clif_pRodexRemoveItem) }, + { HP_POP(clif->rodex_remove_item_result, HP_clif_rodex_remove_item_result) }, + { HP_POP(clif->pRodexSendMail, HP_clif_pRodexSendMail) }, + { HP_POP(clif->rodex_send_mail_result, HP_clif_rodex_send_mail_result) }, + { HP_POP(clif->rodex_send_maillist, HP_clif_rodex_send_maillist) }, + { HP_POP(clif->rodex_send_refresh, HP_clif_rodex_send_refresh) }, + { HP_POP(clif->pRodexReadMail, HP_clif_pRodexReadMail) }, + { HP_POP(clif->rodex_read_mail, HP_clif_rodex_read_mail) }, + { HP_POP(clif->pRodexNextMaillist, HP_clif_pRodexNextMaillist) }, + { HP_POP(clif->pRodexCloseMailbox, HP_clif_pRodexCloseMailbox) }, + { HP_POP(clif->pRodexCancelWriteMail, HP_clif_pRodexCancelWriteMail) }, + { HP_POP(clif->pRodexOpenMailbox, HP_clif_pRodexOpenMailbox) }, + { HP_POP(clif->pRodexCheckName, HP_clif_pRodexCheckName) }, + { HP_POP(clif->rodex_checkname_result, HP_clif_rodex_checkname_result) }, + { HP_POP(clif->pRodexDeleteMail, HP_clif_pRodexDeleteMail) }, + { HP_POP(clif->rodex_delete_mail, HP_clif_rodex_delete_mail) }, + { HP_POP(clif->pRodexRefreshMaillist, HP_clif_pRodexRefreshMaillist) }, + { HP_POP(clif->pRodexRequestZeny, HP_clif_pRodexRequestZeny) }, + { HP_POP(clif->rodex_request_zeny, HP_clif_rodex_request_zeny) }, + { HP_POP(clif->pRodexRequestItems, HP_clif_pRodexRequestItems) }, + { HP_POP(clif->rodex_request_items, HP_clif_rodex_request_items) }, + { HP_POP(clif->rodex_icon, HP_clif_rodex_icon) }, /* cmdline_interface */ { HP_POP(cmdline->init, HP_cmdline_init) }, { HP_POP(cmdline->final, HP_cmdline_final) }, @@ -1289,6 +1315,11 @@ struct HookingPointData HookingPoints[] = { { HP_POP(intif->elemental_request, HP_intif_elemental_request) }, { HP_POP(intif->elemental_delete, HP_intif_elemental_delete) }, { HP_POP(intif->elemental_save, HP_intif_elemental_save) }, + { HP_POP(intif->rodex_requestinbox, HP_intif_rodex_requestinbox) }, + { HP_POP(intif->rodex_checkhasnew, HP_intif_rodex_checkhasnew) }, + { HP_POP(intif->rodex_updatemail, HP_intif_rodex_updatemail) }, + { HP_POP(intif->rodex_sendmail, HP_intif_rodex_sendmail) }, + { HP_POP(intif->rodex_checkname, HP_intif_rodex_checkname) }, { HP_POP(intif->request_accinfo, HP_intif_request_accinfo) }, { HP_POP(intif->CheckForCharServer, HP_intif_CheckForCharServer) }, { HP_POP(intif->pWisMessage, HP_intif_pWisMessage) }, @@ -1355,6 +1386,10 @@ struct HookingPointData HookingPoints[] = { { HP_POP(intif->pRecvHomunculusData, HP_intif_pRecvHomunculusData) }, { HP_POP(intif->pSaveHomunculusOk, HP_intif_pSaveHomunculusOk) }, { HP_POP(intif->pDeleteHomunculusOk, HP_intif_pDeleteHomunculusOk) }, + { HP_POP(intif->pRequestRodexOpenInbox, HP_intif_pRequestRodexOpenInbox) }, + { HP_POP(intif->pRodexHasNew, HP_intif_pRodexHasNew) }, + { HP_POP(intif->pRodexSendMail, HP_intif_pRodexSendMail) }, + { HP_POP(intif->pRodexCheckName, HP_intif_pRodexCheckName) }, /* irc_bot_interface */ { HP_POP(ircbot->init, HP_ircbot_init) }, { HP_POP(ircbot->final, HP_ircbot_final) }, @@ -1439,6 +1474,7 @@ struct HookingPointData HookingPoints[] = { { HP_POP(itemdb->id2combo, HP_itemdb_id2combo) }, { HP_POP(itemdb->is_item_usable, HP_itemdb_is_item_usable) }, { HP_POP(itemdb->lookup_const, HP_itemdb_lookup_const) }, + { HP_POP(itemdb->lookup_const_mask, HP_itemdb_lookup_const_mask) }, /* libconfig_interface */ { HP_POP(libconfig->read, HP_libconfig_read) }, { HP_POP(libconfig->write, HP_libconfig_write) }, @@ -2342,6 +2378,24 @@ struct HookingPointData HookingPoints[] = { { HP_POP(rnd->value, HP_rnd_value) }, { HP_POP(rnd->uniform, HP_rnd_uniform) }, { HP_POP(rnd->uniform53, HP_rnd_uniform53) }, +/* rodex_interface */ + { HP_POP(rodex->init, HP_rodex_init) }, + { HP_POP(rodex->final, HP_rodex_final) }, + { HP_POP(rodex->isenabled, HP_rodex_isenabled) }, + { HP_POP(rodex->open, HP_rodex_open) }, + { HP_POP(rodex->next_page, HP_rodex_next_page) }, + { HP_POP(rodex->refresh, HP_rodex_refresh) }, + { HP_POP(rodex->add_item, HP_rodex_add_item) }, + { HP_POP(rodex->remove_item, HP_rodex_remove_item) }, + { HP_POP(rodex->check_player, HP_rodex_check_player) }, + { HP_POP(rodex->send_mail, HP_rodex_send_mail) }, + { HP_POP(rodex->send_mail_result, HP_rodex_send_mail_result) }, + { HP_POP(rodex->get_mail, HP_rodex_get_mail) }, + { HP_POP(rodex->read_mail, HP_rodex_read_mail) }, + { HP_POP(rodex->get_zeny, HP_rodex_get_zeny) }, + { HP_POP(rodex->get_items, HP_rodex_get_items) }, + { HP_POP(rodex->delete_mail, HP_rodex_delete_mail) }, + { HP_POP(rodex->clean, HP_rodex_clean) }, /* script_interface */ { HP_POP(script->init, HP_script_init) }, { HP_POP(script->final, HP_script_final) }, diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index ef3bb4b90..786536aea 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -24411,6 +24411,682 @@ const char* HP_clif_get_bl_name(const struct block_list *bl) { } return retVal___; } +void HP_clif_pRodexOpenWriteMail(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexOpenWriteMail_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexOpenWriteMail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexOpenWriteMail_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexOpenWriteMail(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexOpenWriteMail_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexOpenWriteMail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexOpenWriteMail_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_rodex_open_write_mail(int fd, const char *receiver_name, int8 result) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_rodex_open_write_mail_pre > 0) { + void (*preHookFunc) (int *fd, const char **receiver_name, int8 *result); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_open_write_mail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_rodex_open_write_mail_pre[hIndex].func; + preHookFunc(&fd, &receiver_name, &result); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.rodex_open_write_mail(fd, receiver_name, result); + } + if (HPMHooks.count.HP_clif_rodex_open_write_mail_post > 0) { + void (*postHookFunc) (int fd, const char *receiver_name, int8 result); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_open_write_mail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_rodex_open_write_mail_post[hIndex].func; + postHookFunc(fd, receiver_name, result); + } + } + return; +} +void HP_clif_pRodexAddItem(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexAddItem_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexAddItem_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexAddItem_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexAddItem(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexAddItem_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexAddItem_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexAddItem_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16 amount, int8 result) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_rodex_add_item_result_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int16 *idx, int16 *amount, int8 *result); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_add_item_result_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_rodex_add_item_result_pre[hIndex].func; + preHookFunc(&sd, &idx, &amount, &result); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.rodex_add_item_result(sd, idx, amount, result); + } + if (HPMHooks.count.HP_clif_rodex_add_item_result_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int16 idx, int16 amount, int8 result); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_add_item_result_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_rodex_add_item_result_post[hIndex].func; + postHookFunc(sd, idx, amount, result); + } + } + return; +} +void HP_clif_pRodexRemoveItem(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexRemoveItem_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRemoveItem_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexRemoveItem_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexRemoveItem(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexRemoveItem_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRemoveItem_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexRemoveItem_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_rodex_remove_item_result(struct map_session_data *sd, int16 idx, int16 amount) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_rodex_remove_item_result_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int16 *idx, int16 *amount); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_remove_item_result_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_rodex_remove_item_result_pre[hIndex].func; + preHookFunc(&sd, &idx, &amount); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.rodex_remove_item_result(sd, idx, amount); + } + if (HPMHooks.count.HP_clif_rodex_remove_item_result_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int16 idx, int16 amount); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_remove_item_result_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_rodex_remove_item_result_post[hIndex].func; + postHookFunc(sd, idx, amount); + } + } + return; +} +void HP_clif_pRodexSendMail(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexSendMail_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexSendMail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexSendMail_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexSendMail(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexSendMail_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexSendMail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexSendMail_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_rodex_send_mail_result(int fd, struct map_session_data *sd, int8 result) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_rodex_send_mail_result_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd, int8 *result); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_mail_result_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_rodex_send_mail_result_pre[hIndex].func; + preHookFunc(&fd, &sd, &result); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.rodex_send_mail_result(fd, sd, result); + } + if (HPMHooks.count.HP_clif_rodex_send_mail_result_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd, int8 result); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_mail_result_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_rodex_send_mail_result_post[hIndex].func; + postHookFunc(fd, sd, result); + } + } + return; +} +void HP_clif_rodex_send_maillist(int fd, struct map_session_data *sd, int8 open_type, int64 page_start) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_rodex_send_maillist_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd, int8 *open_type, int64 *page_start); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_maillist_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_rodex_send_maillist_pre[hIndex].func; + preHookFunc(&fd, &sd, &open_type, &page_start); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.rodex_send_maillist(fd, sd, open_type, page_start); + } + if (HPMHooks.count.HP_clif_rodex_send_maillist_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd, int8 open_type, int64 page_start); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_maillist_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_rodex_send_maillist_post[hIndex].func; + postHookFunc(fd, sd, open_type, page_start); + } + } + return; +} +void HP_clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_type, int count) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_rodex_send_refresh_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd, int8 *open_type, int *count); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_refresh_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_rodex_send_refresh_pre[hIndex].func; + preHookFunc(&fd, &sd, &open_type, &count); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.rodex_send_refresh(fd, sd, open_type, count); + } + if (HPMHooks.count.HP_clif_rodex_send_refresh_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd, int8 open_type, int count); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_refresh_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_rodex_send_refresh_post[hIndex].func; + postHookFunc(fd, sd, open_type, count); + } + } + return; +} +void HP_clif_pRodexReadMail(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexReadMail_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexReadMail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexReadMail_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexReadMail(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexReadMail_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexReadMail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexReadMail_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, struct rodex_message *msg) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_rodex_read_mail_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, struct rodex_message **msg); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_read_mail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_rodex_read_mail_pre[hIndex].func; + preHookFunc(&sd, &opentype, &msg); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.rodex_read_mail(sd, opentype, msg); + } + if (HPMHooks.count.HP_clif_rodex_read_mail_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int8 opentype, struct rodex_message *msg); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_read_mail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_rodex_read_mail_post[hIndex].func; + postHookFunc(sd, opentype, msg); + } + } + return; +} +void HP_clif_pRodexNextMaillist(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexNextMaillist_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexNextMaillist_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexNextMaillist_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexNextMaillist(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexNextMaillist_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexNextMaillist_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexNextMaillist_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_pRodexCloseMailbox(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexCloseMailbox_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCloseMailbox_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexCloseMailbox_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexCloseMailbox(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexCloseMailbox_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCloseMailbox_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexCloseMailbox_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_pRodexCancelWriteMail(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexCancelWriteMail_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCancelWriteMail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexCancelWriteMail_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexCancelWriteMail(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexCancelWriteMail_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCancelWriteMail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexCancelWriteMail_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_pRodexOpenMailbox(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexOpenMailbox_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexOpenMailbox_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexOpenMailbox_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexOpenMailbox(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexOpenMailbox_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexOpenMailbox_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexOpenMailbox_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_pRodexCheckName(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexCheckName_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCheckName_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexCheckName_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexCheckName(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexCheckName_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCheckName_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexCheckName_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_rodex_checkname_result(struct map_session_data *sd, int char_id, short class_, int base_level, const char *name) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_rodex_checkname_result_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int *char_id, short *class_, int *base_level, const char **name); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_checkname_result_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_rodex_checkname_result_pre[hIndex].func; + preHookFunc(&sd, &char_id, &class_, &base_level, &name); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.rodex_checkname_result(sd, char_id, class_, base_level, name); + } + if (HPMHooks.count.HP_clif_rodex_checkname_result_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int char_id, short class_, int base_level, const char *name); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_checkname_result_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_rodex_checkname_result_post[hIndex].func; + postHookFunc(sd, char_id, class_, base_level, name); + } + } + return; +} +void HP_clif_pRodexDeleteMail(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexDeleteMail_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexDeleteMail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexDeleteMail_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexDeleteMail(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexDeleteMail_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexDeleteMail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexDeleteMail_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_rodex_delete_mail(struct map_session_data *sd, int8 opentype, int64 mail_id) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_rodex_delete_mail_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_delete_mail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_rodex_delete_mail_pre[hIndex].func; + preHookFunc(&sd, &opentype, &mail_id); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.rodex_delete_mail(sd, opentype, mail_id); + } + if (HPMHooks.count.HP_clif_rodex_delete_mail_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_delete_mail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_rodex_delete_mail_post[hIndex].func; + postHookFunc(sd, opentype, mail_id); + } + } + return; +} +void HP_clif_pRodexRefreshMaillist(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexRefreshMaillist_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRefreshMaillist_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexRefreshMaillist_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexRefreshMaillist(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexRefreshMaillist_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRefreshMaillist_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexRefreshMaillist_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_pRodexRequestZeny(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexRequestZeny_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRequestZeny_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexRequestZeny_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexRequestZeny(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexRequestZeny_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRequestZeny_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexRequestZeny_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_rodex_request_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_rodex_request_zeny_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, int8 *result); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_request_zeny_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_rodex_request_zeny_pre[hIndex].func; + preHookFunc(&sd, &opentype, &mail_id, &result); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.rodex_request_zeny(sd, opentype, mail_id, result); + } + if (HPMHooks.count.HP_clif_rodex_request_zeny_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_request_zeny_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_rodex_request_zeny_post[hIndex].func; + postHookFunc(sd, opentype, mail_id, result); + } + } + return; +} +void HP_clif_pRodexRequestItems(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexRequestItems_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRequestItems_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexRequestItems_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexRequestItems(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexRequestItems_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRequestItems_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexRequestItems_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_rodex_request_items(struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_rodex_request_items_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, int8 *result); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_request_items_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_rodex_request_items_pre[hIndex].func; + preHookFunc(&sd, &opentype, &mail_id, &result); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.rodex_request_items(sd, opentype, mail_id, result); + } + if (HPMHooks.count.HP_clif_rodex_request_items_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_request_items_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_rodex_request_items_post[hIndex].func; + postHookFunc(sd, opentype, mail_id, result); + } + } + return; +} +void HP_clif_rodex_icon(int fd, bool show) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_rodex_icon_pre > 0) { + void (*preHookFunc) (int *fd, bool *show); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_icon_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_rodex_icon_pre[hIndex].func; + preHookFunc(&fd, &show); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.rodex_icon(fd, show); + } + if (HPMHooks.count.HP_clif_rodex_icon_post > 0) { + void (*postHookFunc) (int fd, bool show); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_icon_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_rodex_icon_post[hIndex].func; + postHookFunc(fd, show); + } + } + return; +} /* cmdline_interface */ void HP_cmdline_init(void) { int hIndex = 0; @@ -32965,6 +33641,141 @@ int HP_intif_elemental_save(struct s_elemental *ele) { } return retVal___; } +int HP_intif_rodex_requestinbox(int char_id, int account_id, int8 flag, int8 opentype, int64 mail_id) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_intif_rodex_requestinbox_pre > 0) { + int (*preHookFunc) (int *char_id, int *account_id, int8 *flag, int8 *opentype, int64 *mail_id); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_requestinbox_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_intif_rodex_requestinbox_pre[hIndex].func; + retVal___ = preHookFunc(&char_id, &account_id, &flag, &opentype, &mail_id); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.intif.rodex_requestinbox(char_id, account_id, flag, opentype, mail_id); + } + if (HPMHooks.count.HP_intif_rodex_requestinbox_post > 0) { + int (*postHookFunc) (int retVal___, int char_id, int account_id, int8 flag, int8 opentype, int64 mail_id); + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_requestinbox_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_intif_rodex_requestinbox_post[hIndex].func; + retVal___ = postHookFunc(retVal___, char_id, account_id, flag, opentype, mail_id); + } + } + return retVal___; +} +int HP_intif_rodex_checkhasnew(struct map_session_data *sd) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_intif_rodex_checkhasnew_pre > 0) { + int (*preHookFunc) (struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_checkhasnew_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_intif_rodex_checkhasnew_pre[hIndex].func; + retVal___ = preHookFunc(&sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.intif.rodex_checkhasnew(sd); + } + if (HPMHooks.count.HP_intif_rodex_checkhasnew_post > 0) { + int (*postHookFunc) (int retVal___, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_checkhasnew_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_intif_rodex_checkhasnew_post[hIndex].func; + retVal___ = postHookFunc(retVal___, sd); + } + } + return retVal___; +} +int HP_intif_rodex_updatemail(int64 mail_id, int8 flag) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_intif_rodex_updatemail_pre > 0) { + int (*preHookFunc) (int64 *mail_id, int8 *flag); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_updatemail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_intif_rodex_updatemail_pre[hIndex].func; + retVal___ = preHookFunc(&mail_id, &flag); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.intif.rodex_updatemail(mail_id, flag); + } + if (HPMHooks.count.HP_intif_rodex_updatemail_post > 0) { + int (*postHookFunc) (int retVal___, int64 mail_id, int8 flag); + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_updatemail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_intif_rodex_updatemail_post[hIndex].func; + retVal___ = postHookFunc(retVal___, mail_id, flag); + } + } + return retVal___; +} +int HP_intif_rodex_sendmail(struct rodex_message *msg) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_intif_rodex_sendmail_pre > 0) { + int (*preHookFunc) (struct rodex_message **msg); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_sendmail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_intif_rodex_sendmail_pre[hIndex].func; + retVal___ = preHookFunc(&msg); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.intif.rodex_sendmail(msg); + } + if (HPMHooks.count.HP_intif_rodex_sendmail_post > 0) { + int (*postHookFunc) (int retVal___, struct rodex_message *msg); + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_sendmail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_intif_rodex_sendmail_post[hIndex].func; + retVal___ = postHookFunc(retVal___, msg); + } + } + return retVal___; +} +int HP_intif_rodex_checkname(struct map_session_data *sd, const char *name) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_intif_rodex_checkname_pre > 0) { + int (*preHookFunc) (struct map_session_data **sd, const char **name); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_checkname_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_intif_rodex_checkname_pre[hIndex].func; + retVal___ = preHookFunc(&sd, &name); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.intif.rodex_checkname(sd, name); + } + if (HPMHooks.count.HP_intif_rodex_checkname_post > 0) { + int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *name); + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_checkname_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_intif_rodex_checkname_post[hIndex].func; + retVal___ = postHookFunc(retVal___, sd, name); + } + } + return retVal___; +} void HP_intif_request_accinfo(int u_fd, int aid, int group_lv, char *query) { int hIndex = 0; if (HPMHooks.count.HP_intif_request_accinfo_pre > 0) { @@ -34689,6 +35500,110 @@ void HP_intif_pDeleteHomunculusOk(int fd) { } return; } +void HP_intif_pRequestRodexOpenInbox(int fd) { + int hIndex = 0; + if (HPMHooks.count.HP_intif_pRequestRodexOpenInbox_pre > 0) { + void (*preHookFunc) (int *fd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRequestRodexOpenInbox_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_intif_pRequestRodexOpenInbox_pre[hIndex].func; + preHookFunc(&fd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.intif.pRequestRodexOpenInbox(fd); + } + if (HPMHooks.count.HP_intif_pRequestRodexOpenInbox_post > 0) { + void (*postHookFunc) (int fd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRequestRodexOpenInbox_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_intif_pRequestRodexOpenInbox_post[hIndex].func; + postHookFunc(fd); + } + } + return; +} +void HP_intif_pRodexHasNew(int fd) { + int hIndex = 0; + if (HPMHooks.count.HP_intif_pRodexHasNew_pre > 0) { + void (*preHookFunc) (int *fd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRodexHasNew_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_intif_pRodexHasNew_pre[hIndex].func; + preHookFunc(&fd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.intif.pRodexHasNew(fd); + } + if (HPMHooks.count.HP_intif_pRodexHasNew_post > 0) { + void (*postHookFunc) (int fd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRodexHasNew_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_intif_pRodexHasNew_post[hIndex].func; + postHookFunc(fd); + } + } + return; +} +void HP_intif_pRodexSendMail(int fd) { + int hIndex = 0; + if (HPMHooks.count.HP_intif_pRodexSendMail_pre > 0) { + void (*preHookFunc) (int *fd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRodexSendMail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_intif_pRodexSendMail_pre[hIndex].func; + preHookFunc(&fd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.intif.pRodexSendMail(fd); + } + if (HPMHooks.count.HP_intif_pRodexSendMail_post > 0) { + void (*postHookFunc) (int fd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRodexSendMail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_intif_pRodexSendMail_post[hIndex].func; + postHookFunc(fd); + } + } + return; +} +void HP_intif_pRodexCheckName(int fd) { + int hIndex = 0; + if (HPMHooks.count.HP_intif_pRodexCheckName_pre > 0) { + void (*preHookFunc) (int *fd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRodexCheckName_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_intif_pRodexCheckName_pre[hIndex].func; + preHookFunc(&fd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.intif.pRodexCheckName(fd); + } + if (HPMHooks.count.HP_intif_pRodexCheckName_post > 0) { + void (*postHookFunc) (int fd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRodexCheckName_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_intif_pRodexCheckName_post[hIndex].func; + postHookFunc(fd); + } + } + return; +} /* irc_bot_interface */ void HP_ircbot_init(bool minimal) { int hIndex = 0; @@ -36896,6 +37811,33 @@ bool HP_itemdb_lookup_const(const struct config_setting_t *it, const char *name, } return retVal___; } +bool HP_itemdb_lookup_const_mask(const struct config_setting_t *it, const char *name, int *value) { + int hIndex = 0; + bool retVal___ = false; + if (HPMHooks.count.HP_itemdb_lookup_const_mask_pre > 0) { + bool (*preHookFunc) (const struct config_setting_t **it, const char **name, int **value); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_lookup_const_mask_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_itemdb_lookup_const_mask_pre[hIndex].func; + retVal___ = preHookFunc(&it, &name, &value); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.itemdb.lookup_const_mask(it, name, value); + } + if (HPMHooks.count.HP_itemdb_lookup_const_mask_post > 0) { + bool (*postHookFunc) (bool retVal___, const struct config_setting_t *it, const char *name, int *value); + for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_lookup_const_mask_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_itemdb_lookup_const_mask_post[hIndex].func; + retVal___ = postHookFunc(retVal___, it, name, value); + } + } + return retVal___; +} /* libconfig_interface */ int HP_libconfig_read(struct config_t *config, FILE *stream) { int hIndex = 0; @@ -56112,11 +57054,11 @@ int HP_pc_equiplookall(struct map_session_data *sd) { } return retVal___; } -int HP_pc_readparam(const struct map_session_data *sd, int type) { +int64 HP_pc_readparam(const struct map_session_data *sd, int type) { int hIndex = 0; - int retVal___ = 0; + int64 retVal___ = 0; if (HPMHooks.count.HP_pc_readparam_pre > 0) { - int (*preHookFunc) (const struct map_session_data **sd, int *type); + int64 (*preHookFunc) (const struct map_session_data **sd, int *type); *HPMforce_return = false; for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readparam_pre; hIndex++) { preHookFunc = HPMHooks.list.HP_pc_readparam_pre[hIndex].func; @@ -56131,7 +57073,7 @@ int HP_pc_readparam(const struct map_session_data *sd, int type) { retVal___ = HPMHooks.source.pc.readparam(sd, type); } if (HPMHooks.count.HP_pc_readparam_post > 0) { - int (*postHookFunc) (int retVal___, const struct map_session_data *sd, int type); + int64 (*postHookFunc) (int64 retVal___, const struct map_session_data *sd, int type); for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readparam_post; hIndex++) { postHookFunc = HPMHooks.list.HP_pc_readparam_post[hIndex].func; retVal___ = postHookFunc(retVal___, sd, type); @@ -56139,11 +57081,11 @@ int HP_pc_readparam(const struct map_session_data *sd, int type) { } return retVal___; } -int HP_pc_setparam(struct map_session_data *sd, int type, int val) { +int HP_pc_setparam(struct map_session_data *sd, int type, int64 val) { int hIndex = 0; int retVal___ = 0; if (HPMHooks.count.HP_pc_setparam_pre > 0) { - int (*preHookFunc) (struct map_session_data **sd, int *type, int *val); + int (*preHookFunc) (struct map_session_data **sd, int *type, int64 *val); *HPMforce_return = false; for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setparam_pre; hIndex++) { preHookFunc = HPMHooks.list.HP_pc_setparam_pre[hIndex].func; @@ -56158,7 +57100,7 @@ int HP_pc_setparam(struct map_session_data *sd, int type, int val) { retVal___ = HPMHooks.source.pc.setparam(sd, type, val); } if (HPMHooks.count.HP_pc_setparam_post > 0) { - int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int val); + int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int64 val); for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setparam_post; hIndex++) { postHookFunc = HPMHooks.list.HP_pc_setparam_post[hIndex].func; retVal___ = postHookFunc(retVal___, sd, type, val); @@ -60871,6 +61813,452 @@ double HP_rnd_uniform53(void) { } return retVal___; } +/* rodex_interface */ +void HP_rodex_init(bool minimal) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_init_pre > 0) { + void (*preHookFunc) (bool *minimal); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_init_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_init_pre[hIndex].func; + preHookFunc(&minimal); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.init(minimal); + } + if (HPMHooks.count.HP_rodex_init_post > 0) { + void (*postHookFunc) (bool minimal); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_init_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_init_post[hIndex].func; + postHookFunc(minimal); + } + } + return; +} +void HP_rodex_final(void) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_final_pre > 0) { + void (*preHookFunc) (void); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_final_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_final_pre[hIndex].func; + preHookFunc(); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.final(); + } + if (HPMHooks.count.HP_rodex_final_post > 0) { + void (*postHookFunc) (void); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_final_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_final_post[hIndex].func; + postHookFunc(); + } + } + return; +} +bool HP_rodex_isenabled(void) { + int hIndex = 0; + bool retVal___ = false; + if (HPMHooks.count.HP_rodex_isenabled_pre > 0) { + bool (*preHookFunc) (void); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_isenabled_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_isenabled_pre[hIndex].func; + retVal___ = preHookFunc(); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.rodex.isenabled(); + } + if (HPMHooks.count.HP_rodex_isenabled_post > 0) { + bool (*postHookFunc) (bool retVal___); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_isenabled_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_isenabled_post[hIndex].func; + retVal___ = postHookFunc(retVal___); + } + } + return retVal___; +} +void HP_rodex_open(struct map_session_data *sd, int8 open_type) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_open_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int8 *open_type); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_open_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_open_pre[hIndex].func; + preHookFunc(&sd, &open_type); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.open(sd, open_type); + } + if (HPMHooks.count.HP_rodex_open_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int8 open_type); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_open_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_open_post[hIndex].func; + postHookFunc(sd, open_type); + } + } + return; +} +void HP_rodex_next_page(struct map_session_data *sd, int8 open_type, int64 last_mail_id) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_next_page_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int8 *open_type, int64 *last_mail_id); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_next_page_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_next_page_pre[hIndex].func; + preHookFunc(&sd, &open_type, &last_mail_id); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.next_page(sd, open_type, last_mail_id); + } + if (HPMHooks.count.HP_rodex_next_page_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int8 open_type, int64 last_mail_id); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_next_page_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_next_page_post[hIndex].func; + postHookFunc(sd, open_type, last_mail_id); + } + } + return; +} +void HP_rodex_refresh(struct map_session_data *sd, int8 open_type, int64 first_mail_id) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_refresh_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int8 *open_type, int64 *first_mail_id); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_refresh_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_refresh_pre[hIndex].func; + preHookFunc(&sd, &open_type, &first_mail_id); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.refresh(sd, open_type, first_mail_id); + } + if (HPMHooks.count.HP_rodex_refresh_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int8 open_type, int64 first_mail_id); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_refresh_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_refresh_post[hIndex].func; + postHookFunc(sd, open_type, first_mail_id); + } + } + return; +} +void HP_rodex_add_item(struct map_session_data *sd, int16 idx, int16 amount) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_add_item_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int16 *idx, int16 *amount); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_add_item_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_add_item_pre[hIndex].func; + preHookFunc(&sd, &idx, &amount); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.add_item(sd, idx, amount); + } + if (HPMHooks.count.HP_rodex_add_item_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int16 idx, int16 amount); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_add_item_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_add_item_post[hIndex].func; + postHookFunc(sd, idx, amount); + } + } + return; +} +void HP_rodex_remove_item(struct map_session_data *sd, int16 idx, int16 amount) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_remove_item_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int16 *idx, int16 *amount); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_remove_item_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_remove_item_pre[hIndex].func; + preHookFunc(&sd, &idx, &amount); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.remove_item(sd, idx, amount); + } + if (HPMHooks.count.HP_rodex_remove_item_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int16 idx, int16 amount); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_remove_item_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_remove_item_post[hIndex].func; + postHookFunc(sd, idx, amount); + } + } + return; +} +void HP_rodex_check_player(struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_check_player_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, const char **name, int **base_level, int **char_id, short **class); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_check_player_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_check_player_pre[hIndex].func; + preHookFunc(&sd, &name, &base_level, &char_id, &class); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.check_player(sd, name, base_level, char_id, class); + } + if (HPMHooks.count.HP_rodex_check_player_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_check_player_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_check_player_post[hIndex].func; + postHookFunc(sd, name, base_level, char_id, class); + } + } + return; +} +int HP_rodex_send_mail(struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny) { + int hIndex = 0; + int retVal___ = 0; + if (HPMHooks.count.HP_rodex_send_mail_pre > 0) { + int (*preHookFunc) (struct map_session_data **sd, const char **receiver_name, const char **body, const char **title, int64 *zeny); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_send_mail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_send_mail_pre[hIndex].func; + retVal___ = preHookFunc(&sd, &receiver_name, &body, &title, &zeny); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.rodex.send_mail(sd, receiver_name, body, title, zeny); + } + if (HPMHooks.count.HP_rodex_send_mail_post > 0) { + int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_send_mail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_send_mail_post[hIndex].func; + retVal___ = postHookFunc(retVal___, sd, receiver_name, body, title, zeny); + } + } + return retVal___; +} +void HP_rodex_send_mail_result(struct map_session_data *ssd, struct map_session_data *rsd, bool result) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_send_mail_result_pre > 0) { + void (*preHookFunc) (struct map_session_data **ssd, struct map_session_data **rsd, bool *result); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_send_mail_result_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_send_mail_result_pre[hIndex].func; + preHookFunc(&ssd, &rsd, &result); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.send_mail_result(ssd, rsd, result); + } + if (HPMHooks.count.HP_rodex_send_mail_result_post > 0) { + void (*postHookFunc) (struct map_session_data *ssd, struct map_session_data *rsd, bool result); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_send_mail_result_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_send_mail_result_post[hIndex].func; + postHookFunc(ssd, rsd, result); + } + } + return; +} +struct rodex_message* HP_rodex_get_mail(struct map_session_data *sd, int64 mail_id) { + int hIndex = 0; + struct rodex_message* retVal___ = NULL; + if (HPMHooks.count.HP_rodex_get_mail_pre > 0) { + struct rodex_message* (*preHookFunc) (struct map_session_data **sd, int64 *mail_id); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_get_mail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_get_mail_pre[hIndex].func; + retVal___ = preHookFunc(&sd, &mail_id); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.rodex.get_mail(sd, mail_id); + } + if (HPMHooks.count.HP_rodex_get_mail_post > 0) { + struct rodex_message* (*postHookFunc) (struct rodex_message* retVal___, struct map_session_data *sd, int64 mail_id); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_get_mail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_get_mail_post[hIndex].func; + retVal___ = postHookFunc(retVal___, sd, mail_id); + } + } + return retVal___; +} +void HP_rodex_read_mail(struct map_session_data *sd, int64 mail_id) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_read_mail_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int64 *mail_id); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_read_mail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_read_mail_pre[hIndex].func; + preHookFunc(&sd, &mail_id); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.read_mail(sd, mail_id); + } + if (HPMHooks.count.HP_rodex_read_mail_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int64 mail_id); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_read_mail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_read_mail_post[hIndex].func; + postHookFunc(sd, mail_id); + } + } + return; +} +void HP_rodex_get_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_get_zeny_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_get_zeny_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_get_zeny_pre[hIndex].func; + preHookFunc(&sd, &opentype, &mail_id); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.get_zeny(sd, opentype, mail_id); + } + if (HPMHooks.count.HP_rodex_get_zeny_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_get_zeny_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_get_zeny_post[hIndex].func; + postHookFunc(sd, opentype, mail_id); + } + } + return; +} +void HP_rodex_get_items(struct map_session_data *sd, int8 opentype, int64 mail_id) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_get_items_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_get_items_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_get_items_pre[hIndex].func; + preHookFunc(&sd, &opentype, &mail_id); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.get_items(sd, opentype, mail_id); + } + if (HPMHooks.count.HP_rodex_get_items_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_get_items_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_get_items_post[hIndex].func; + postHookFunc(sd, opentype, mail_id); + } + } + return; +} +void HP_rodex_delete_mail(struct map_session_data *sd, int64 mail_id) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_delete_mail_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int64 *mail_id); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_delete_mail_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_delete_mail_pre[hIndex].func; + preHookFunc(&sd, &mail_id); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.delete_mail(sd, mail_id); + } + if (HPMHooks.count.HP_rodex_delete_mail_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int64 mail_id); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_delete_mail_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_delete_mail_post[hIndex].func; + postHookFunc(sd, mail_id); + } + } + return; +} +void HP_rodex_clean(struct map_session_data *sd, int8 flag) { + int hIndex = 0; + if (HPMHooks.count.HP_rodex_clean_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int8 *flag); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_clean_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_rodex_clean_pre[hIndex].func; + preHookFunc(&sd, &flag); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.rodex.clean(sd, flag); + } + if (HPMHooks.count.HP_rodex_clean_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int8 flag); + for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_clean_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_rodex_clean_post[hIndex].func; + postHookFunc(sd, flag); + } + } + return; +} /* script_interface */ void HP_script_init(bool minimal) { int hIndex = 0; diff --git a/src/plugins/HPMHooking/HPMHooking_map.sources.inc b/src/plugins/HPMHooking/HPMHooking_map.sources.inc index f00ffa7a9..ada63e53d 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.sources.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.sources.inc @@ -71,6 +71,7 @@ HPMHooks.source.libpcre = *libpcre; HPMHooks.source.pet = *pet; HPMHooks.source.quest = *quest; HPMHooks.source.rnd = *rnd; +HPMHooks.source.rodex = *rodex; HPMHooks.source.script = *script; HPMHooks.source.searchstore = *searchstore; HPMHooks.source.showmsg = *showmsg; diff --git a/src/plugins/db2sql.c b/src/plugins/db2sql.c index 33a62757a..38e5ead5d 100644 --- a/src/plugins/db2sql.c +++ b/src/plugins/db2sql.c @@ -255,6 +255,9 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source) // type StrBuf->Printf(&buf, "'%d',", it->flag.delay_consume ? IT_DELAYCONSUME : it->type); + // subtype + StrBuf->Printf(&buf, "'%d',", it->subtype); + // price_buy StrBuf->Printf(&buf, "'%d',", it->value_buy); @@ -294,10 +297,11 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source) StrBuf->Printf(&buf, "'%"PRIu64"',", ui64); // equip_upper - if (libconfig->setting_lookup_int(entry, "Upper", &i32) && i32 >= 0) + if (itemdb->lookup_const_mask(entry, "Upper", &i32) && i32 >= 0) ui32 = (uint32)i32; else ui32 = ITEMUPPER_ALL; + StrBuf->Printf(&buf, "'%u',", ui32); // equip_genders @@ -320,12 +324,12 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source) // refineable StrBuf->Printf(&buf, "'%d',", it->flag.no_refine?0:1); - + // disable_options StrBuf->Printf(&buf, "'%d',", it->flag.no_options?1:0); - // view - StrBuf->Printf(&buf, "'%d',", it->look); + // view_sprite + StrBuf->Printf(&buf, "'%d',", it->view_sprite); // bindonequip StrBuf->Printf(&buf, "'%d',", it->flag.bindonequip?1:0); @@ -449,6 +453,7 @@ void itemdb2sql_tableheader(void) " `name_english` varchar(50) NOT NULL DEFAULT '',\n" " `name_japanese` varchar(50) NOT NULL DEFAULT '',\n" " `type` tinyint(2) UNSIGNED NOT NULL DEFAULT '0',\n" + " `subtype` tinyint(2) UNSIGNED DEFAULT NULL,\n" " `price_buy` mediumint(10) DEFAULT NULL,\n" " `price_sell` mediumint(10) DEFAULT NULL,\n" " `weight` smallint(5) UNSIGNED DEFAULT NULL,\n" @@ -466,7 +471,7 @@ void itemdb2sql_tableheader(void) " `equip_level_max` smallint(5) UNSIGNED DEFAULT NULL,\n" " `refineable` tinyint(1) UNSIGNED DEFAULT NULL,\n" " `disable_options` tinyint(1) UNSIGNED DEFAULT NULL,\n" - " `view` smallint(3) UNSIGNED DEFAULT NULL,\n" + " `view_sprite` smallint(3) UNSIGNED DEFAULT NULL,\n" " `bindonequip` tinyint(1) UNSIGNED DEFAULT NULL,\n" " `forceserial` tinyint(1) UNSIGNED DEFAULT NULL,\n" " `buyingstore` tinyint(1) UNSIGNED DEFAULT NULL,\n" |