summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/HPMDataCheck.h9
-rw-r--r--src/map/clif.c186
-rw-r--r--src/map/clif.h10
-rw-r--r--src/map/guild.c8
-rw-r--r--src/map/messages_main.h2
-rw-r--r--src/map/messages_re.h2
-rw-r--r--src/map/messages_zero.h12
-rw-r--r--src/map/packets.h55
-rw-r--r--src/map/packets_keys_main.h7
-rw-r--r--src/map/packets_keys_zero.h7
-rw-r--r--src/map/packets_shuffle_main.h7
-rw-r--r--src/map/packets_shuffle_re.h7
-rw-r--r--src/map/packets_shuffle_zero.h7
-rw-r--r--src/map/packets_struct.h102
-rw-r--r--src/map/script.c40
-rw-r--r--src/map/storage.c6
-rw-r--r--src/plugins/HPMHooking/HPMHooking.Defs.inc18
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc20
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc5
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.Hooks.inc154
20 files changed, 567 insertions, 97 deletions
diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h
index 28c6e3b1d..31bce72b2 100644
--- a/src/common/HPMDataCheck.h
+++ b/src/common/HPMDataCheck.h
@@ -626,6 +626,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "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_STYLE_CHANGE", sizeof(struct PACKET_CZ_REQ_STYLE_CHANGE), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_STYLE_CHANGE2", sizeof(struct PACKET_CZ_REQ_STYLE_CHANGE2), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_TRADE_BUYING_STORE", sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_TRADE_BUYING_STORE_sub", sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_ZENY_FROM_MAIL", sizeof(struct PACKET_CZ_REQ_ZENY_FROM_MAIL), SERVER_TYPE_MAP },
@@ -634,11 +635,16 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_CZ_SEARCH_STORE_INFO_item", sizeof(struct PACKET_CZ_SEARCH_STORE_INFO_item), SERVER_TYPE_MAP },
{ "PACKET_CZ_SEND_MAIL", sizeof(struct PACKET_CZ_SEND_MAIL), SERVER_TYPE_MAP },
{ "PACKET_CZ_SSILIST_ITEM_CLICK", sizeof(struct PACKET_CZ_SSILIST_ITEM_CLICK), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_BAN_GUILD1", sizeof(struct PACKET_ZC_ACK_BAN_GUILD1), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_BAN_GUILD2", sizeof(struct PACKET_ZC_ACK_BAN_GUILD2), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_BAN_GUILD3", sizeof(struct PACKET_ZC_ACK_BAN_GUILD3), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_CLAN_LEAVE", sizeof(struct PACKET_ZC_ACK_CLAN_LEAVE), 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_ITEMLIST_BUYING_STORE", sizeof(struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub", sizeof(struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_LEAVE_GUILD1", sizeof(struct PACKET_ZC_ACK_LEAVE_GUILD1), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_LEAVE_GUILD2", sizeof(struct PACKET_ZC_ACK_LEAVE_GUILD2), 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_REQMAKINGITEM", sizeof(struct PACKET_ZC_ACK_REQMAKINGITEM), SERVER_TYPE_MAP },
@@ -660,9 +666,12 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_ZC_FEED_MER", sizeof(struct PACKET_ZC_FEED_MER), SERVER_TYPE_MAP },
{ "PACKET_ZC_FEED_PET", sizeof(struct PACKET_ZC_FEED_PET), SERVER_TYPE_MAP },
{ "PACKET_ZC_FORMATSTRING_MSG", sizeof(struct PACKET_ZC_FORMATSTRING_MSG), SERVER_TYPE_MAP },
+ { "PACKET_ZC_FORMATSTRING_MSG_COLOR", sizeof(struct PACKET_ZC_FORMATSTRING_MSG_COLOR), SERVER_TYPE_MAP },
{ "PACKET_ZC_GROUP_ISALIVE", sizeof(struct PACKET_ZC_GROUP_ISALIVE), SERVER_TYPE_MAP },
{ "PACKET_ZC_GROUP_LIST", sizeof(struct PACKET_ZC_GROUP_LIST), SERVER_TYPE_MAP },
{ "PACKET_ZC_GROUP_LIST_SUB", sizeof(struct PACKET_ZC_GROUP_LIST_SUB), SERVER_TYPE_MAP },
+ { "PACKET_ZC_GUILD_POSITION", sizeof(struct PACKET_ZC_GUILD_POSITION), SERVER_TYPE_MAP },
+ { "PACKET_ZC_INVENTORY_MOVE_FAILED", sizeof(struct PACKET_ZC_INVENTORY_MOVE_FAILED), SERVER_TYPE_MAP },
{ "PACKET_ZC_ITEM_ENTRY", sizeof(struct PACKET_ZC_ITEM_ENTRY), SERVER_TYPE_MAP },
{ "PACKET_ZC_ITEM_PICKUP_PARTY", sizeof(struct PACKET_ZC_ITEM_PICKUP_PARTY), SERVER_TYPE_MAP },
{ "PACKET_ZC_MAIL_LIST", sizeof(struct PACKET_ZC_MAIL_LIST), SERVER_TYPE_MAP },
diff --git a/src/map/clif.c b/src/map/clif.c
index 4e8e84f41..fd8a3c783 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -2633,6 +2633,22 @@ static void clif_dropitem(struct map_session_data *sd, int n, int amount)
WFIFOSET(fd,packet_len(0xaf));
}
+static void clif_item_movefailed(struct map_session_data *sd, int n)
+{
+#if PACKETVER_MAIN_NUM >= 20161214 || PACKETVER_RE_NUM >= 20161130 || defined(PACKETVER_ZERO)
+ int fd = sd->fd;
+ const int len = sizeof(struct PACKET_ZC_INVENTORY_MOVE_FAILED);
+ WFIFOHEAD(fd, len);
+ struct PACKET_ZC_INVENTORY_MOVE_FAILED *p = WFIFOP(fd, 0);
+ p->packetType = 0xaa7;
+ p->index = n;
+ p->unknown = 1;
+ WFIFOSET(fd, len);
+#else
+ clif->dropitem(sd, n, 0);
+#endif
+}
+
/// Notifies the client, that an inventory item was deleted (ZC_DELETE_ITEM_FROM_BODY).
/// 07fa <delete type>.W <index>.W <amount>.W
/// delete type: @see enum delitem_reason
@@ -6180,6 +6196,7 @@ static void clif_wis_message(int fd, const char *nick, const char *mes, int mes_
/// 1 = target character is not logged in
/// 2 = ignored by target
/// 3 = everyone ignored by target
+/// other = target character is not logged in
static void clif_wis_end(int fd, int flag)
{
struct map_session_data *sd = sockt->session_is_valid(fd) ? sockt->session[fd]->session_data : NULL;
@@ -6191,7 +6208,7 @@ static void clif_wis_end(int fd, int flag)
p.PacketType = wisendType;
p.result = (char)flag;
#if PACKETVER >= 20131223
- p.unknown = 0;
+ p.AID = sd->bl.id;
#endif
clif->send(&p, sizeof(p), &sd->bl, SELF);
@@ -7612,12 +7629,13 @@ static void clif_guild_created(struct map_session_data *sd, int flag)
/// mode: @see enum guild_permission
static void clif_guild_belonginfo(struct map_session_data *sd, struct guild *g)
{
- int ps,fd;
nullpo_retv(sd);
nullpo_retv(g);
- fd=sd->fd;
- ps=guild->getposition(g,sd);
+ int fd = sd->fd;
+ int ps = guild->getposition(g, sd);
+ Assert_retv(ps != -1);
+
WFIFOHEAD(fd,packet_len(0x16c));
WFIFOW(fd,0)=0x16c;
WFIFOL(fd,2)=g->guild_id;
@@ -8094,41 +8112,45 @@ static void clif_guild_inviteack(struct map_session_data *sd, int flag)
/// Notifies clients of a guild of a leaving member (ZC_ACK_LEAVE_GUILD).
/// 015a <char name>.24B <reason>.40B
-static void clif_guild_leave(struct map_session_data *sd, const char *name, const char *mes)
+static void clif_guild_leave(struct map_session_data *sd, const char *name, int char_id, const char *mes)
{
- unsigned char buf[128];
-
nullpo_retv(sd);
+ nullpo_retv(name);
+ nullpo_retv(mes);
- WBUFW(buf, 0)=0x15a;
- memcpy(WBUFP(buf, 2),name,NAME_LENGTH);
- memcpy(WBUFP(buf,26),mes,40);
- clif->send(buf,packet_len(0x15a),&sd->bl,GUILD_NOBG);
+ struct PACKET_ZC_ACK_LEAVE_GUILD p;
+ p.packetType = guildLeave;
+#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
+ p.GID = char_id;
+#else
+ safestrncpy(&p.name[0], name, NAME_LENGTH);
+#endif
+ safestrncpy(&p.reason[0], mes, 40);
+ clif->send(&p, sizeof(p), &sd->bl, GUILD_NOBG);
}
/// Notifies clients of a guild of an expelled member.
/// 015c <char name>.24B <reason>.40B <account name>.24B (ZC_ACK_BAN_GUILD)
/// 0839 <char name>.24B <reason>.40B (ZC_ACK_BAN_GUILD_SSO)
-static void clif_guild_expulsion(struct map_session_data *sd, const char *name, const char *mes, int account_id)
+static void clif_guild_expulsion(struct map_session_data *sd, const char *name, int char_id, const char *mes, int account_id)
{
- unsigned char buf[128];
-#if PACKETVER < 20100803
- const unsigned short cmd = 0x15c;
-#else
- const unsigned short cmd = 0x839;
-#endif
-
nullpo_retv(sd);
nullpo_retv(name);
nullpo_retv(mes);
- WBUFW(buf,0) = cmd;
- safestrncpy(WBUFP(buf,2), name, NAME_LENGTH);
- safestrncpy(WBUFP(buf,26), mes, 40);
+ struct PACKET_ZC_ACK_BAN_GUILD p;
+ p.packetType = guildExpulsion;
+#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
+ p.GID = char_id;
+#else
+ safestrncpy(&p.name[0], name, NAME_LENGTH);
+#endif
+ safestrncpy(&p.reason[0], mes, 40);
+
#if PACKETVER < 20100803
- memset(WBUFP(buf,66), 0, NAME_LENGTH); // account name (not used for security reasons)
+ memset(&p.account_name, 0, NAME_LENGTH); // account name (not used for security reasons)
#endif
- clif->send(buf, packet_len(cmd), &sd->bl, GUILD_NOBG);
+ clif->send(&p, sizeof(p), &sd->bl, GUILD_NOBG);
}
/// Guild expulsion list (ZC_BAN_LIST).
@@ -8310,6 +8332,49 @@ static void clif_guild_broken(struct map_session_data *sd, int flag)
WFIFOSET(fd,packet_len(0x15e));
}
+static void clif_guild_position_selected(struct map_session_data *sd)
+{
+#if PACKETVER >= 20180801
+ clif->guild_set_position(sd);
+#else
+ clif->charnameupdate(sd);
+#endif
+}
+
+static void clif_guild_set_position(struct map_session_data *sd)
+{
+ nullpo_retv(sd);
+
+ int len = sizeof(struct PACKET_ZC_GUILD_POSITION);
+ const char *name = NULL;
+ if (sd->status.guild_id > 0) {
+ struct guild *g = sd->guild;
+
+ nullpo_retv(g);
+
+ int i = 0;
+ int ps = -1;
+ ARR_FIND(0, g->max_member, i, g->member[i].account_id == sd->status.account_id && g->member[i].char_id == sd->status.char_id);
+ if (i < g->max_member)
+ ps = g->member[i].position;
+
+ if (ps >= 0 && ps < MAX_GUILDPOSITION) {
+ len += 24;
+ name = g->position[ps].name;
+ }
+ }
+
+ unsigned char buf[sizeof(struct PACKET_ZC_GUILD_POSITION) + NAME_LENGTH];
+ struct PACKET_ZC_GUILD_POSITION *p = WBUFP(buf, 0);
+ p->packetType = 0xafd;
+ p->packetLength = len;
+ p->AID = sd->bl.id;
+ if (name != NULL)
+ memcpy(&p->position, name, 24);
+
+ clif->send(buf, len, &sd->bl, AREA);
+}
+
/// Displays emotion on an object (ZC_EMOTION).
/// 00c0 <id>.L <type>.B
/// type:
@@ -9327,6 +9392,9 @@ static void clif_viewequip_ack(struct map_session_data *sd, struct map_session_d
#endif
viewequip_list.headpalette = tsd->vd.hair_color;
viewequip_list.bodypalette = tsd->vd.cloth_color;
+#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808
+ viewequip_list.body2 = tsd->vd.body_style;
+#endif
viewequip_list.sex = tsd->vd.sex;
clif->send(&viewequip_list, viewequip_list.PacketLength, &sd->bl, SELF);
@@ -9433,6 +9501,36 @@ static void clif_msgtable_str(struct map_session_data *sd, enum clif_messages ms
}
/**
+ * Displays a format string from msgstringtable.txt with a %s value and color (ZC_FORMATSTRING_MSG).
+ *
+ * @param sd The target character.
+ * @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
+ * @param value The value to fill %s.
+ * @param color The color to use
+ */
+static void clif_msgtable_str_color(struct map_session_data *sd, enum clif_messages msg_id, const char *value, uint32 color)
+{
+#if PACKETVER >= 20160330
+ nullpo_retv(sd);
+ nullpo_retv(value);
+
+ int message_len = (int)strlen(value) + 1;
+ const int len = sizeof(struct PACKET_ZC_FORMATSTRING_MSG_COLOR) + message_len + 1;
+ struct PACKET_ZC_FORMATSTRING_MSG_COLOR *p = (struct PACKET_ZC_FORMATSTRING_MSG_COLOR *)aMalloc(len);
+
+ p->PacketType = 0xa6f;
+ p->PacketLength = len;
+ p->messageId = msg_id;
+ p->color = color;
+ safestrncpy(p->messageString, value, message_len);
+ p->messageString[message_len] = 0;
+
+ clif->send(p, p->PacketLength, &sd->bl, SELF);
+ aFree(p);
+#endif
+}
+
+/**
* Displays a format string from msgstringtable.txt with a color (ZC_MSG_COLOR).
*
* @param sd The target character.
@@ -10990,7 +11088,7 @@ static void clif_parse_DropItem(int fd, struct map_session_data *sd)
}
//Because the client does not like being ignored.
- clif->dropitem(sd, item_index, 0);
+ clif->item_movefailed(sd, item_index);
}
static void clif_parse_UseItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
@@ -11485,7 +11583,7 @@ static void clif_parse_PutItemToCart(int fd, struct map_session_data *sd)
if (!pc_iscarton(sd))
return;
if ( (flag = pc->putitemtocart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4))) ) {
- clif->dropitem(sd, RFIFOW(fd,2)-2,0);
+ clif->item_movefailed(sd, RFIFOW(fd,2)-2);
clif->cart_additem_ack(sd,flag == 1?0x0:0x1);
}
}
@@ -20271,7 +20369,7 @@ static unsigned short clif_parse_cmd_optional(int fd, struct map_session_data *s
*/
static void clif_achievement_send_list(int fd, struct map_session_data *sd)
{
-#if PACKETVER >= 20141016
+#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO)
int i = 0, count = 0, curr_exp_tmp = 0;
struct packet_achievement_list p = { 0 };
@@ -20334,7 +20432,7 @@ static void clif_achievement_send_list(int fd, struct map_session_data *sd)
*/
static void clif_achievement_send_update(int fd, struct map_session_data *sd, const struct achievement_data *ad)
{
-#if PACKETVER >= 20141016
+#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO)
struct packet_achievement_update p = { 0 };
struct achievement *a = NULL;
int i = 0, points = 0, rank = 0, curr_rank_points = 0;
@@ -20388,7 +20486,6 @@ static void clif_achievement_send_update(int fd, struct map_session_data *sd, co
static void clif_parse_achievement_get_reward(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
static void clif_parse_achievement_get_reward(int fd, struct map_session_data *sd)
{
-#if PACKETVER >= 20141016
int ach_id = RFIFOL(fd, 2);
const struct achievement_data *ad = NULL;
struct achievement *ach = NULL;
@@ -20402,7 +20499,6 @@ static void clif_parse_achievement_get_reward(int fd, struct map_session_data *s
if (achievement->check_complete(sd, ad) && ach->completed_at && ach->rewarded_at == 0) {
achievement->get_rewards(sd, ad);
}
-#endif // PACKETVER >= 20141016
}
/**
@@ -20411,7 +20507,7 @@ static void clif_parse_achievement_get_reward(int fd, struct map_session_data *s
*/
static void clif_achievement_reward_ack(int fd, struct map_session_data *sd, const struct achievement_data *ad)
{
-#if PACKETVER >= 20141016
+#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO)
struct packet_achievement_reward_ack p = { 0 };
nullpo_retv(sd);
@@ -21548,13 +21644,32 @@ static void clif_parse_cz_req_style_change(int fd, struct map_session_data *sd)
clif->cz_req_style_change_sub(sd, LOOK_HEAD_MID, p->MidAccessory, true);
if (p->BottomAccessory > 0)
clif->cz_req_style_change_sub(sd, LOOK_HEAD_BOTTOM, p->BottomAccessory, true);
-#if PACKETVER_RE_NUM >= 20180718
+ clif->style_change_response(sd, STYLIST_SHOP_SUCCESS);
+ return;
+}
+
+static void clif_parse_cz_req_style_change2(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_cz_req_style_change2(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_STYLE_CHANGE2 *p = RP2PTR(fd);
+
+ if (p->HeadStyle > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HAIR, p->HeadStyle, false);
+ if (p->HeadPalette > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HAIR_COLOR, p->HeadPalette, false);
+ if (p->BodyPalette > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_CLOTHES_COLOR, p->BodyPalette, false);
+ if (p->TopAccessory > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HEAD_TOP, p->TopAccessory, true);
+ if (p->MidAccessory > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HEAD_MID, p->MidAccessory, true);
+ if (p->BottomAccessory > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HEAD_BOTTOM, p->BottomAccessory, true);
if (p->BodyStyle > 0) {
if (pc->has_second_costume(sd)) {
clif->cz_req_style_change_sub(sd, LOOK_BODY2, p->BodyStyle, false);
}
}
-#endif
clif->style_change_response(sd, STYLIST_SHOP_SUCCESS);
return;
}
@@ -21973,6 +22088,7 @@ void clif_defaults(void)
clif->dropitem = clif_dropitem;
clif->delitem = clif_delitem;
clif->takeitem = clif_takeitem;
+ clif->item_movefailed = clif_item_movefailed;
clif->item_equip = clif_item_equip;
clif->item_normal = clif_item_normal;
clif->arrowequip = clif_arrowequip;
@@ -22209,6 +22325,7 @@ void clif_defaults(void)
clif->msgtable = clif_msgtable;
clif->msgtable_num = clif_msgtable_num;
clif->msgtable_str = clif_msgtable_str;
+ clif->msgtable_str_color = clif_msgtable_str_color;
clif->msgtable_color = clif_msgtable_color;
clif->message = clif_displaymessage;
clif->messageln = clif_displaymessage2;
@@ -22297,6 +22414,8 @@ void clif_defaults(void)
clif->guild_positionnamelist = clif_guild_positionnamelist;
clif->guild_positioninfolist = clif_guild_positioninfolist;
clif->guild_expulsionlist = clif_guild_expulsionlist;
+ clif->guild_set_position = clif_guild_set_position;
+ clif->guild_position_selected = clif_guild_position_selected;
clif->validate_emblem = clif_validate_emblem;
/* battleground-specific */
clif->bg_hp = clif_bg_hp;
@@ -22775,6 +22894,7 @@ void clif_defaults(void)
clif->style_change_validate_requirements = clif_style_change_validate_requirements;
clif->stylist_send_rodexitem = clif_stylist_send_rodexitem;
clif->pReqStyleChange = clif_parse_cz_req_style_change;
+ clif->pReqStyleChange2 = clif_parse_cz_req_style_change2;
clif->cz_req_style_change_sub = clif_cz_req_style_change_sub;
clif->style_change_response = clif_style_change_response;
diff --git a/src/map/clif.h b/src/map/clif.h
index 3ed9b96ae..d20c30a24 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -716,6 +716,7 @@ struct clif_interface {
void (*dropitem) (struct map_session_data *sd,int n,int amount);
void (*delitem) (struct map_session_data *sd,int n,int amount, short reason);
void (*takeitem) (struct block_list* src, struct block_list* dst);
+ void (*item_movefailed) (struct map_session_data *sd, int n);
void (*item_equip) (short idx, struct EQUIPITEM_INFO *p, struct item *i, struct item_data *id, int eqp_pos);
void (*item_normal) (short idx, struct NORMALITEM_INFO *p, struct item *i, struct item_data *id);
void (*arrowequip) (struct map_session_data *sd,int val);
@@ -952,6 +953,7 @@ struct clif_interface {
void (*msgtable_num) (struct map_session_data *sd, enum clif_messages msg_id, int value);
void (*msgtable_skill) (struct map_session_data *sd, uint16 skill_id, enum clif_messages msg_id);
void (*msgtable_str) (struct map_session_data *sd, enum clif_messages, const char *value);
+ void (*msgtable_str_color) (struct map_session_data *sd, enum clif_messages, const char *value, uint32 color);
void (*msgtable_color) (struct map_session_data *sd, enum clif_messages, uint32 color);
void (*message) (const int fd, const char* mes);
void (*messageln) (const int fd, const char* mes);
@@ -1022,8 +1024,8 @@ struct clif_interface {
void (*guild_memberlogin_notice) (struct guild *g,int idx,int flag);
void (*guild_invite) (struct map_session_data *sd,struct guild *g);
void (*guild_inviteack) (struct map_session_data *sd,int flag);
- void (*guild_leave) (struct map_session_data *sd,const char *name,const char *mes);
- void (*guild_expulsion) (struct map_session_data* sd, const char* name, const char* mes, int account_id);
+ void (*guild_leave) (struct map_session_data *sd, const char *name, int char_id, const char *mes);
+ void (*guild_expulsion) (struct map_session_data* sd, const char* name, int char_id, const char* mes, int account_id);
void (*guild_positionchanged) (struct guild *g,int idx);
void (*guild_memberpositionchanged) (struct guild *g,int idx);
void (*guild_emblem) (struct map_session_data *sd,struct guild *g);
@@ -1041,6 +1043,9 @@ struct clif_interface {
void (*guild_positionnamelist) (struct map_session_data *sd);
void (*guild_positioninfolist) (struct map_session_data *sd);
void (*guild_expulsionlist) (struct map_session_data* sd);
+ void (*guild_set_position) (struct map_session_data *sd);
+ void (*guild_position_selected) (struct map_session_data *sd);
+
bool (*validate_emblem) (const uint8* emblem, unsigned long emblem_len);
/* battleground-specific */
void (*bg_hp) (struct map_session_data *sd);
@@ -1514,6 +1519,7 @@ struct clif_interface {
bool (*style_change_validate_requirements) (struct map_session_data *sd, int type, int16 idx);
void (*stylist_send_rodexitem) (struct map_session_data *sd, int itemid);
void (*pReqStyleChange) (int fd, struct map_session_data *sd);
+ void (*pReqStyleChange2) (int fd, struct map_session_data *sd);
void (*cz_req_style_change_sub) (struct map_session_data *sd, int type, int16 idx, bool isitem);
void (*style_change_response) (struct map_session_data *sd, enum stylist_shop flag);
void (*pPetEvolution) (int fd, struct map_session_data *sd);
diff --git a/src/map/guild.c b/src/map/guild.c
index 28954edf1..780d21326 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -925,9 +925,9 @@ static int guild_member_withdraw(int guild_id, int account_id, int char_id, int
#endif
if(!flag)
- clif->guild_leave(online_member_sd, name, mes);
+ clif->guild_leave(online_member_sd, name, char_id, mes);
else
- clif->guild_expulsion(online_member_sd, name, mes, account_id);
+ clif->guild_expulsion(online_member_sd, name, char_id, mes, account_id);
// remove member from guild
memset(&g->member[i],0,sizeof(struct guild_member));
@@ -1129,7 +1129,7 @@ static int guild_memberposition_changed(struct guild *g, int idx, int pos)
// Update char position in client [LuzZza]
if(g->member[idx].sd != NULL)
- clif->charnameupdate(g->member[idx].sd);
+ clif->guild_position_selected(g->member[idx].sd);
return 0;
}
@@ -1165,7 +1165,7 @@ static int guild_position_changed(int guild_id, int idx, const struct guild_posi
// Update char name in client [LuzZza]
for(i=0;i<g->max_member;i++)
if(g->member[i].position == idx && g->member[i].sd != NULL)
- clif->charnameupdate(g->member[i].sd);
+ clif->guild_position_selected(g->member[i].sd);
return 0;
}
diff --git a/src/map/messages_main.h b/src/map/messages_main.h
index 1d42ff2bb..dd000d2f1 100644
--- a/src/map/messages_main.h
+++ b/src/map/messages_main.h
@@ -23,7 +23,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20180718
+Latest version: 20180808
*/
enum clif_messages {
diff --git a/src/map/messages_re.h b/src/map/messages_re.h
index 899f0c708..bf2927d6b 100644
--- a/src/map/messages_re.h
+++ b/src/map/messages_re.h
@@ -23,7 +23,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20180718
+Latest version: 20180808
*/
enum clif_messages {
diff --git a/src/map/messages_zero.h b/src/map/messages_zero.h
index 19959dc70..05e3f1479 100644
--- a/src/map/messages_zero.h
+++ b/src/map/messages_zero.h
@@ -23,7 +23,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20180725
+Latest version: 20180822
*/
enum clif_messages {
@@ -17357,15 +17357,19 @@ DEATH : %.1f%% ( basic 100.0%% %s %.1f%%)
MSG_ID_DD1 = 0xdd1,
#endif
#if PACKETVER >= 20180725
-/*20180725 to latest
+/*20180725 to 20180801
'
+20180808 to latest
+영문이나 러시아어 단독으로만 사용이 가능합니다.
*/
MSG_ID_DD2 = 0xdd2,
-/*20180725 to latest
+/*20180725 to 20180801
;
+20180822 to latest
+you must have an AccessTicket to login
*/
MSG_ID_DD3 = 0xdd3,
-/*20180725 to latest
+/*20180725 to 20180801
--
*/
MSG_ID_DD4 = 0xdd4,
diff --git a/src/map/packets.h b/src/map/packets.h
index 6fb637185..1d1046e8a 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -1759,7 +1759,7 @@ packet(0x96e,-1,clif->ackmergeitems);
#if PACKETVER >= 20100413
//packet(0x081A,10);
packet(0x0820,11);
- //packet(0x0821,2);
+ packet(0x0821,2);
//packet(0x0822,9);
//packet(0x0823,-1);
#endif
@@ -3994,9 +3994,6 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0af2,40,clif->pDull/*,XXX*/);
packet(0x0af3,-1,clif->pDull/*,XXX*/);
// changed packet sizes
-#ifndef PACKETVER_RE
- packet(0x0821,102,clif->pDull/*,XXX*/); // AC_OTP_USER
-#endif
#endif
#ifdef PACKETVER_ZERO
@@ -4011,11 +4008,6 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
#endif // PACKETVER_ZERO
-#if PACKETVER >= 20180131
-// changed packet sizes
- packet(0x0821,102); // AC_OTP_USER
-#endif
-
#ifdef PACKETVER_ZERO
// 2018-02-07bRagexe_zero
#if PACKETVER >= 20180207
@@ -4091,14 +4083,6 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
#endif // PACKETVER_ZERO
-#ifdef PACKETVER_RE
-// 2018-04-04cRagexeRE
-#if PACKETVER >= 20180404
-// changed packet sizes
- packet(0x0821,102,clif->pDull/*,XXX*/); // AC_OTP_USER
-#endif
-#endif
-
#ifndef PACKETVER_ZERO
// 2018-04-18aRagexe, 2018-04-18bRagexeRE
#if PACKETVER >= 20180418
@@ -4121,7 +4105,7 @@ packet(0x96e,-1,clif->ackmergeitems);
// 2018-05-16cRagexe, 2018-05-16cRagexeRE
#if PACKETVER >= 20180516
// new packets
- packet(0x0afc,16,clif->pReqStyleChange);
+ packet(0x0afc,16,clif->pReqStyleChange2);
// changed packet sizes
#endif
#endif // PACKETVER_ZERO
@@ -4130,7 +4114,7 @@ packet(0x96e,-1,clif->ackmergeitems);
// 2018-05-23aRagexe_zero
#if PACKETVER >= 20180523
// new packets
- packet(0x0afc,16,clif->pReqStyleChange);
+ packet(0x0afc,16,clif->pReqStyleChange2);
// changed packet sizes
#endif
#endif // PACKETVER_ZERO
@@ -4138,7 +4122,7 @@ packet(0x96e,-1,clif->ackmergeitems);
// 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-05bRagexe_zero
#if PACKETVER >= 20180605
// new packets
- packet(0x0afd,155);
+ packet(0x0afd,-1);
packet(0x0afe,-1,clif->pDull/*,XXX*/);
packet(0x0aff,-1,clif->pDull/*,XXX*/);
// changed packet sizes
@@ -4255,4 +4239,35 @@ packet(0x96e,-1,clif->ackmergeitems);
// changed packet sizes
#endif
+#ifndef PACKETVER_ZERO
+// 2018-08-01cRagexe, 2018-08-01cRagexeRE
+#if PACKETVER >= 20180801
+// new packets
+ packet(0x0b03,-1);
+ packet(0x0b04,80,clif->pDull/*,XXX*/);
+// changed packet sizes
+#endif
+#endif // PACKETVER_ZERO
+
+// 2018-08-08_2aRagexe_zero
+#if PACKETVER_ZERO_NUM >= 20180808
+// new packets
+ packet(0x0b04,80,clif->pDull/*,XXX*/);
+// changed packet sizes
+#endif
+
+// 2018-08-22aRagexe_zero
+#if PACKETVER_ZERO_NUM >= 20180822
+// new packets
+ packet(0x0b05,59);
+ packet(0x0b06,53,clif->pDull/*,XXX*/);
+ packet(0x0b07,-1);
+ packet(0x0b08,26,clif->pDull/*,XXX*/);
+ packet(0x0b09,-1,clif->pDull/*,XXX*/);
+ packet(0x0b0a,-1,clif->pDull/*,XXX*/);
+ packet(0x0b0b,3,clif->pDull/*,XXX*/);
+ packet(0x0b0c,155,clif->pDull/*,XXX*/);
+// changed packet sizes
+#endif
+
#endif /* MAP_PACKETS_H */
diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h
index 43221f965..6e7f27166 100644
--- a/src/map/packets_keys_main.h
+++ b/src/map/packets_keys_main.h
@@ -874,7 +874,7 @@
packetKeys(0x6A596301,0x76866D0E,0x32294A45);
#endif
-// 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE
+// 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE
#if PACKETVER == 20131223 || \
PACKETVER == 20140508 || \
PACKETVER == 20140611 || \
@@ -896,7 +896,10 @@
PACKETVER == 20180621 || \
PACKETVER == 20180704 || \
PACKETVER == 20180711 || \
- PACKETVER >= 20180718
+ PACKETVER == 20180718 || \
+ PACKETVER == 20180801 || \
+ PACKETVER == 20180808 || \
+ PACKETVER >= 20180822
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h
index 4d1267fbb..42a6aaf37 100644
--- a/src/map/packets_keys_zero.h
+++ b/src/map/packets_keys_zero.h
@@ -29,7 +29,7 @@
/* This file is autogenerated, please do not commit manual changes */
-// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero
+// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero
#if PACKETVER == 20171018 || \
PACKETVER == 20171019 || \
PACKETVER == 20171023 || \
@@ -51,7 +51,10 @@
PACKETVER == 20180627 || \
PACKETVER == 20180703 || \
PACKETVER == 20180711 || \
- PACKETVER >= 20180725
+ PACKETVER == 20180725 || \
+ PACKETVER == 20180801 || \
+ PACKETVER == 20180808 || \
+ PACKETVER >= 20180822
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h
index 41b4cbba5..441415df2 100644
--- a/src/map/packets_shuffle_main.h
+++ b/src/map/packets_shuffle_main.h
@@ -3344,7 +3344,7 @@
packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
#endif
-// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe
+// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe, 2018-08-01cRagexe, 2018-08-08bRagexe, 2018-08-22cRagexe
#if PACKETVER == 20140611 || \
PACKETVER == 20150225 || \
PACKETVER == 20180315 || \
@@ -3362,7 +3362,10 @@
PACKETVER == 20180620 || \
PACKETVER == 20180621 || \
PACKETVER == 20180704 || \
- PACKETVER >= 20180718
+ PACKETVER == 20180718 || \
+ PACKETVER == 20180801 || \
+ PACKETVER == 20180808 || \
+ PACKETVER >= 20180822
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
diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h
index 2e4dedbce..ee268a8f5 100644
--- a/src/map/packets_shuffle_re.h
+++ b/src/map/packets_shuffle_re.h
@@ -9662,10 +9662,13 @@
packet(0x083c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
-// 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE
+// 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE
#if PACKETVER == 20180704 || \
PACKETVER == 20180711 || \
- PACKETVER >= 20180718
+ PACKETVER == 20180718 || \
+ PACKETVER == 20180801 || \
+ PACKETVER == 20180808 || \
+ PACKETVER >= 20180822
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
diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h
index 2d7757a08..479cf634a 100644
--- a/src/map/packets_shuffle_zero.h
+++ b/src/map/packets_shuffle_zero.h
@@ -36,7 +36,7 @@
/* This file is autogenerated, please do not commit manual changes */
-// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero
+// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero
#if PACKETVER == 20171018 || \
PACKETVER == 20171019 || \
PACKETVER == 20171023 || \
@@ -58,7 +58,10 @@
PACKETVER == 20180627 || \
PACKETVER == 20180703 || \
PACKETVER == 20180711 || \
- PACKETVER >= 20180725
+ PACKETVER == 20180725 || \
+ PACKETVER == 20180801 || \
+ PACKETVER == 20180808 || \
+ PACKETVER >= 20180822
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
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index e6d207fad..852a44cb8 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -279,10 +279,15 @@ enum packet_headers {
#else
unequipitemackType = 0xac,
#endif
-#if PACKETVER >= 20150226
+#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808
+ viewequipackType = 0xb03,
+#elif PACKETVER >= 20150226
viewequipackType = 0xa2d,
#elif PACKETVER >= 20120925
viewequipackType = 0x997,
+// [4144] not supported due other packets/structs not updated
+//#elif (PACKETVER_MAIN_NUM >= 20111207) || (PACKETVER_RE_NUM >= 20111122)
+// viewequipackType = 0x906,
#elif PACKETVER >= 20101124
viewequipackType = 0x859,
#else
@@ -416,6 +421,18 @@ enum packet_headers {
#else
skilWarpPointType = 0x11c,
#endif
+#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
+ guildExpulsion = 0xa82,
+#elif PACKETVER >= 20100803
+ guildExpulsion = 0x839,
+#else
+ guildExpulsion = 0x15c,
+#endif
+#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
+ guildLeave = 0xa83,
+#else
+ guildLeave = 0x15a,
+#endif
};
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
@@ -1221,6 +1238,9 @@ struct packet_viewequip_ack {
#endif
int16 headpalette;
int16 bodypalette;
+#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808
+ int16 body2;
+#endif
uint8 sex;
struct EQUIPITEM_INFO list[MAX_INVENTORY];
} __attribute__((packed));
@@ -1350,7 +1370,7 @@ struct packet_wis_end {
int16 PacketType;
int8 result;
#if PACKETVER >= 20131223
- uint32 unknown;/* maybe AID, not sure what for (works sending as 0) */
+ uint32 AID;
#endif
} __attribute__((packed));
@@ -1835,6 +1855,14 @@ struct PACKET_ZC_FORMATSTRING_MSG {
char MessageString[];
} __attribute__((packed));
+struct PACKET_ZC_FORMATSTRING_MSG_COLOR {
+ uint16 PacketType;
+ uint16 PacketLength;
+ uint16 messageId;
+ uint32 color;
+ char messageString[];
+} __attribute__((packed));
+
struct PACKET_ZC_MSG_COLOR {
uint16 PacketType;
uint16 MessageId;
@@ -1883,9 +1911,17 @@ struct PACKET_CZ_REQ_STYLE_CHANGE {
int16 TopAccessory;
int16 MidAccessory;
int16 BottomAccessory;
-#if PACKETVER_RE_NUM >= 20180718
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_STYLE_CHANGE2 {
+ int16 PacketType;
+ int16 HeadPalette;
+ int16 HeadStyle;
+ int16 BodyPalette;
+ int16 TopAccessory;
+ int16 MidAccessory;
+ int16 BottomAccessory;
int16 BodyStyle;
-#endif
} __attribute__((packed));
struct PACKET_ZC_STYLE_CHANGE_RES {
@@ -2690,6 +2726,64 @@ struct PACKET_ZC_GROUP_ISALIVE {
uint8 isDead;
} __attribute__((packed));
+struct PACKET_ZC_GUILD_POSITION {
+ int16 packetType;
+ int16 packetLength;
+ uint32 AID;
+ char position[];
+} __attribute__((packed));
+
+struct PACKET_ZC_INVENTORY_MOVE_FAILED {
+ int16 packetType;
+ int16 index;
+ int16 unknown;
+} __attribute__((packed));
+
+#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
+#define PACKET_ZC_ACK_BAN_GUILD PACKET_ZC_ACK_BAN_GUILD3
+#elif PACKETVER >= 20100803
+#define PACKET_ZC_ACK_BAN_GUILD PACKET_ZC_ACK_BAN_GUILD2
+#else
+#define PACKET_ZC_ACK_BAN_GUILD PACKET_ZC_ACK_BAN_GUILD1
+#endif
+
+struct PACKET_ZC_ACK_BAN_GUILD1 {
+ int16 packetType;
+ char name[NAME_LENGTH];
+ char reason[40];
+ char account_name[NAME_LENGTH];
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_BAN_GUILD2 {
+ int16 packetType;
+ char name[NAME_LENGTH];
+ char reason[40];
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_BAN_GUILD3 {
+ int16 packetType;
+ char reason[40];
+ uint32 GID;
+} __attribute__((packed));
+
+#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
+#define PACKET_ZC_ACK_LEAVE_GUILD PACKET_ZC_ACK_LEAVE_GUILD2
+#else
+#define PACKET_ZC_ACK_LEAVE_GUILD PACKET_ZC_ACK_LEAVE_GUILD1
+#endif
+
+struct PACKET_ZC_ACK_LEAVE_GUILD1 {
+ int16 packetType;
+ char name[NAME_LENGTH];
+ char reason[40];
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_LEAVE_GUILD2 {
+ int16 packetType;
+ uint32 GID;
+ char reason[40];
+} __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/script.c b/src/map/script.c
index cba844c1a..c40137c55 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -24689,6 +24689,44 @@ static BUILDIN(openstylist)
return true;
}
+static BUILDIN(msgtable)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+
+ const enum clif_messages msgId = script_getnum(st, 2);
+ if (script_hasdata(st, 3)) {
+ clif->msgtable_color(sd, msgId, script_getnum(st, 3));
+ } else {
+ clif->msgtable(sd, msgId);
+ }
+
+ return true;
+}
+
+static BUILDIN(msgtable2)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+
+ const enum clif_messages msgId = script_getnum(st, 2);
+ if (script_isstringtype(st, 3)) {
+ const char *value = script_getstr(st, 3);
+ if (script_hasdata(st, 4)) {
+ clif->msgtable_str_color(sd, msgId, value, script_getnum(st, 4));
+ } else {
+ clif->msgtable_str(sd, msgId, value);
+ }
+ } else {
+ const int value = script_getnum(st, 3);
+ clif->msgtable_num(sd, msgId, value);
+ }
+
+ return true;
+}
+
/**
* Adds a built-in script function.
*
@@ -25265,6 +25303,8 @@ static void script_parse_builtin(void)
BUILDIN_DEF(buyingstore,"i"),
BUILDIN_DEF(searchstores,"ii"),
BUILDIN_DEF(showdigit,"i?"),
+ BUILDIN_DEF(msgtable, "i?"),
+ BUILDIN_DEF(msgtable2, "iv?"),
// WoE SE
BUILDIN_DEF(agitstart2,""),
BUILDIN_DEF(agitend2,""),
diff --git a/src/map/storage.c b/src/map/storage.c
index 4123ddc7c..ba8dcee3a 100644
--- a/src/map/storage.c
+++ b/src/map/storage.c
@@ -297,7 +297,7 @@ static int storage_add_from_inventory(struct map_session_data *sd, int index, in
if (storage->additem(sd, &sd->status.inventory[index], amount) == 0)
pc->delitem(sd, index, amount, 0, DELITEM_TOSTORAGE, LOG_TYPE_STORAGE);
else
- clif->dropitem(sd, index, 0);
+ clif->item_movefailed(sd, index);
return 1;
}
@@ -398,7 +398,9 @@ static int storage_storagegettocart(struct map_session_data *sd, int index, int
if ((flag = pc->cart_additem(sd, it, amount, LOG_TYPE_STORAGE)) == 0)
storage->delitem(sd, index, amount);
else {
+ // probably this line is useless? it remove inventory lock but not storage [4144]
clif->dropitem(sd, index,0);
+
clif->cart_additem_ack(sd, flag == 1?0x0:0x1);
}
@@ -638,7 +640,7 @@ static int storage_guild_storageadd(struct map_session_data *sd, int index, int
if( gstorage->additem(sd,stor,&sd->status.inventory[index],amount) == 0 )
pc->delitem(sd, index, amount, 0, DELITEM_TOSTORAGE, LOG_TYPE_GSTORAGE);
else
- clif->dropitem(sd, index, 0);
+ clif->item_movefailed(sd, index);
return 1;
}
diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc
index 0c63a98b6..c5de44fa9 100644
--- a/src/plugins/HPMHooking/HPMHooking.Defs.inc
+++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc
@@ -1116,6 +1116,8 @@ typedef void (*HPMHOOK_pre_clif_delitem) (struct map_session_data **sd, int *n,
typedef void (*HPMHOOK_post_clif_delitem) (struct map_session_data *sd, int n, int amount, short reason);
typedef void (*HPMHOOK_pre_clif_takeitem) (struct block_list **src, struct block_list **dst);
typedef void (*HPMHOOK_post_clif_takeitem) (struct block_list *src, struct block_list *dst);
+typedef void (*HPMHOOK_pre_clif_item_movefailed) (struct map_session_data **sd, int *n);
+typedef void (*HPMHOOK_post_clif_item_movefailed) (struct map_session_data *sd, int n);
typedef void (*HPMHOOK_pre_clif_item_equip) (short *idx, struct EQUIPITEM_INFO **p, struct item **i, struct item_data **id, int *eqp_pos);
typedef void (*HPMHOOK_post_clif_item_equip) (short idx, struct EQUIPITEM_INFO *p, struct item *i, struct item_data *id, int eqp_pos);
typedef void (*HPMHOOK_pre_clif_item_normal) (short *idx, struct NORMALITEM_INFO **p, struct item **i, struct item_data **id);
@@ -1566,6 +1568,8 @@ typedef void (*HPMHOOK_pre_clif_msgtable_skill) (struct map_session_data **sd, u
typedef void (*HPMHOOK_post_clif_msgtable_skill) (struct map_session_data *sd, uint16 skill_id, enum clif_messages msg_id);
typedef void (*HPMHOOK_pre_clif_msgtable_str) (struct map_session_data **sd, enum clif_messages *p1, const char **value);
typedef void (*HPMHOOK_post_clif_msgtable_str) (struct map_session_data *sd, enum clif_messages p1, const char *value);
+typedef void (*HPMHOOK_pre_clif_msgtable_str_color) (struct map_session_data **sd, enum clif_messages *p1, const char **value, uint32 *color);
+typedef void (*HPMHOOK_post_clif_msgtable_str_color) (struct map_session_data *sd, enum clif_messages p1, const char *value, uint32 color);
typedef void (*HPMHOOK_pre_clif_msgtable_color) (struct map_session_data **sd, enum clif_messages *p1, uint32 *color);
typedef void (*HPMHOOK_post_clif_msgtable_color) (struct map_session_data *sd, enum clif_messages p1, uint32 color);
typedef void (*HPMHOOK_pre_clif_message) (const int *fd, const char **mes);
@@ -1690,10 +1694,10 @@ typedef void (*HPMHOOK_pre_clif_guild_invite) (struct map_session_data **sd, str
typedef void (*HPMHOOK_post_clif_guild_invite) (struct map_session_data *sd, struct guild *g);
typedef void (*HPMHOOK_pre_clif_guild_inviteack) (struct map_session_data **sd, int *flag);
typedef void (*HPMHOOK_post_clif_guild_inviteack) (struct map_session_data *sd, int flag);
-typedef void (*HPMHOOK_pre_clif_guild_leave) (struct map_session_data **sd, const char **name, const char **mes);
-typedef void (*HPMHOOK_post_clif_guild_leave) (struct map_session_data *sd, const char *name, const char *mes);
-typedef void (*HPMHOOK_pre_clif_guild_expulsion) (struct map_session_data **sd, const char **name, const char **mes, int *account_id);
-typedef void (*HPMHOOK_post_clif_guild_expulsion) (struct map_session_data *sd, const char *name, const char *mes, int account_id);
+typedef void (*HPMHOOK_pre_clif_guild_leave) (struct map_session_data **sd, const char **name, int *char_id, const char **mes);
+typedef void (*HPMHOOK_post_clif_guild_leave) (struct map_session_data *sd, const char *name, int char_id, const char *mes);
+typedef void (*HPMHOOK_pre_clif_guild_expulsion) (struct map_session_data **sd, const char **name, int *char_id, const char **mes, int *account_id);
+typedef void (*HPMHOOK_post_clif_guild_expulsion) (struct map_session_data *sd, const char *name, int char_id, const char *mes, int account_id);
typedef void (*HPMHOOK_pre_clif_guild_positionchanged) (struct guild **g, int *idx);
typedef void (*HPMHOOK_post_clif_guild_positionchanged) (struct guild *g, int idx);
typedef void (*HPMHOOK_pre_clif_guild_memberpositionchanged) (struct guild **g, int *idx);
@@ -1728,6 +1732,10 @@ typedef void (*HPMHOOK_pre_clif_guild_positioninfolist) (struct map_session_data
typedef void (*HPMHOOK_post_clif_guild_positioninfolist) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_guild_expulsionlist) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_guild_expulsionlist) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_guild_set_position) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_guild_set_position) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_guild_position_selected) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_guild_position_selected) (struct map_session_data *sd);
typedef bool (*HPMHOOK_pre_clif_validate_emblem) (const uint8 **emblem, unsigned long *emblem_len);
typedef bool (*HPMHOOK_post_clif_validate_emblem) (bool retVal___, const uint8 *emblem, unsigned long emblem_len);
typedef void (*HPMHOOK_pre_clif_bg_hp) (struct map_session_data **sd);
@@ -2580,6 +2588,8 @@ typedef void (*HPMHOOK_pre_clif_stylist_send_rodexitem) (struct map_session_data
typedef void (*HPMHOOK_post_clif_stylist_send_rodexitem) (struct map_session_data *sd, int itemid);
typedef void (*HPMHOOK_pre_clif_pReqStyleChange) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pReqStyleChange) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pReqStyleChange2) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pReqStyleChange2) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_cz_req_style_change_sub) (struct map_session_data **sd, int *type, int16 *idx, bool *isitem);
typedef void (*HPMHOOK_post_clif_cz_req_style_change_sub) (struct map_session_data *sd, int type, int16 idx, bool isitem);
typedef void (*HPMHOOK_pre_clif_style_change_response) (struct map_session_data **sd, enum stylist_shop *flag);
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
index c4394d7f4..d875ab6e2 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
@@ -708,6 +708,8 @@ struct {
struct HPMHookPoint *HP_clif_delitem_post;
struct HPMHookPoint *HP_clif_takeitem_pre;
struct HPMHookPoint *HP_clif_takeitem_post;
+ struct HPMHookPoint *HP_clif_item_movefailed_pre;
+ struct HPMHookPoint *HP_clif_item_movefailed_post;
struct HPMHookPoint *HP_clif_item_equip_pre;
struct HPMHookPoint *HP_clif_item_equip_post;
struct HPMHookPoint *HP_clif_item_normal_pre;
@@ -1158,6 +1160,8 @@ struct {
struct HPMHookPoint *HP_clif_msgtable_skill_post;
struct HPMHookPoint *HP_clif_msgtable_str_pre;
struct HPMHookPoint *HP_clif_msgtable_str_post;
+ struct HPMHookPoint *HP_clif_msgtable_str_color_pre;
+ struct HPMHookPoint *HP_clif_msgtable_str_color_post;
struct HPMHookPoint *HP_clif_msgtable_color_pre;
struct HPMHookPoint *HP_clif_msgtable_color_post;
struct HPMHookPoint *HP_clif_message_pre;
@@ -1320,6 +1324,10 @@ struct {
struct HPMHookPoint *HP_clif_guild_positioninfolist_post;
struct HPMHookPoint *HP_clif_guild_expulsionlist_pre;
struct HPMHookPoint *HP_clif_guild_expulsionlist_post;
+ struct HPMHookPoint *HP_clif_guild_set_position_pre;
+ struct HPMHookPoint *HP_clif_guild_set_position_post;
+ struct HPMHookPoint *HP_clif_guild_position_selected_pre;
+ struct HPMHookPoint *HP_clif_guild_position_selected_post;
struct HPMHookPoint *HP_clif_validate_emblem_pre;
struct HPMHookPoint *HP_clif_validate_emblem_post;
struct HPMHookPoint *HP_clif_bg_hp_pre;
@@ -2172,6 +2180,8 @@ struct {
struct HPMHookPoint *HP_clif_stylist_send_rodexitem_post;
struct HPMHookPoint *HP_clif_pReqStyleChange_pre;
struct HPMHookPoint *HP_clif_pReqStyleChange_post;
+ struct HPMHookPoint *HP_clif_pReqStyleChange2_pre;
+ struct HPMHookPoint *HP_clif_pReqStyleChange2_post;
struct HPMHookPoint *HP_clif_cz_req_style_change_sub_pre;
struct HPMHookPoint *HP_clif_cz_req_style_change_sub_post;
struct HPMHookPoint *HP_clif_style_change_response_pre;
@@ -7259,6 +7269,8 @@ struct {
int HP_clif_delitem_post;
int HP_clif_takeitem_pre;
int HP_clif_takeitem_post;
+ int HP_clif_item_movefailed_pre;
+ int HP_clif_item_movefailed_post;
int HP_clif_item_equip_pre;
int HP_clif_item_equip_post;
int HP_clif_item_normal_pre;
@@ -7709,6 +7721,8 @@ struct {
int HP_clif_msgtable_skill_post;
int HP_clif_msgtable_str_pre;
int HP_clif_msgtable_str_post;
+ int HP_clif_msgtable_str_color_pre;
+ int HP_clif_msgtable_str_color_post;
int HP_clif_msgtable_color_pre;
int HP_clif_msgtable_color_post;
int HP_clif_message_pre;
@@ -7871,6 +7885,10 @@ struct {
int HP_clif_guild_positioninfolist_post;
int HP_clif_guild_expulsionlist_pre;
int HP_clif_guild_expulsionlist_post;
+ int HP_clif_guild_set_position_pre;
+ int HP_clif_guild_set_position_post;
+ int HP_clif_guild_position_selected_pre;
+ int HP_clif_guild_position_selected_post;
int HP_clif_validate_emblem_pre;
int HP_clif_validate_emblem_post;
int HP_clif_bg_hp_pre;
@@ -8723,6 +8741,8 @@ struct {
int HP_clif_stylist_send_rodexitem_post;
int HP_clif_pReqStyleChange_pre;
int HP_clif_pReqStyleChange_post;
+ int HP_clif_pReqStyleChange2_pre;
+ int HP_clif_pReqStyleChange2_post;
int HP_clif_cz_req_style_change_sub_pre;
int HP_clif_cz_req_style_change_sub_post;
int HP_clif_style_change_response_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
index e5584cc43..0088847b1 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
@@ -378,6 +378,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->dropitem, HP_clif_dropitem) },
{ HP_POP(clif->delitem, HP_clif_delitem) },
{ HP_POP(clif->takeitem, HP_clif_takeitem) },
+ { HP_POP(clif->item_movefailed, HP_clif_item_movefailed) },
{ HP_POP(clif->item_equip, HP_clif_item_equip) },
{ HP_POP(clif->item_normal, HP_clif_item_normal) },
{ HP_POP(clif->arrowequip, HP_clif_arrowequip) },
@@ -603,6 +604,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->msgtable_num, HP_clif_msgtable_num) },
{ HP_POP(clif->msgtable_skill, HP_clif_msgtable_skill) },
{ HP_POP(clif->msgtable_str, HP_clif_msgtable_str) },
+ { HP_POP(clif->msgtable_str_color, HP_clif_msgtable_str_color) },
{ HP_POP(clif->msgtable_color, HP_clif_msgtable_color) },
{ HP_POP(clif->message, HP_clif_message) },
{ HP_POP(clif->messageln, HP_clif_messageln) },
@@ -684,6 +686,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->guild_positionnamelist, HP_clif_guild_positionnamelist) },
{ HP_POP(clif->guild_positioninfolist, HP_clif_guild_positioninfolist) },
{ HP_POP(clif->guild_expulsionlist, HP_clif_guild_expulsionlist) },
+ { HP_POP(clif->guild_set_position, HP_clif_guild_set_position) },
+ { HP_POP(clif->guild_position_selected, HP_clif_guild_position_selected) },
{ HP_POP(clif->validate_emblem, HP_clif_validate_emblem) },
{ HP_POP(clif->bg_hp, HP_clif_bg_hp) },
{ HP_POP(clif->bg_xy, HP_clif_bg_xy) },
@@ -1110,6 +1114,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->style_change_validate_requirements, HP_clif_style_change_validate_requirements) },
{ HP_POP(clif->stylist_send_rodexitem, HP_clif_stylist_send_rodexitem) },
{ HP_POP(clif->pReqStyleChange, HP_clif_pReqStyleChange) },
+ { HP_POP(clif->pReqStyleChange2, HP_clif_pReqStyleChange2) },
{ HP_POP(clif->cz_req_style_change_sub, HP_clif_cz_req_style_change_sub) },
{ HP_POP(clif->style_change_response, HP_clif_style_change_response) },
{ HP_POP(clif->pPetEvolution, HP_clif_pPetEvolution) },
diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
index f2ce1505c..3b21eb3e6 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
@@ -9213,6 +9213,32 @@ void HP_clif_takeitem(struct block_list *src, struct block_list *dst) {
}
return;
}
+void HP_clif_item_movefailed(struct map_session_data *sd, int n) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_item_movefailed_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *n);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_movefailed_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_item_movefailed_pre[hIndex].func;
+ preHookFunc(&sd, &n);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.item_movefailed(sd, n);
+ }
+ if (HPMHooks.count.HP_clif_item_movefailed_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int n);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_movefailed_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_item_movefailed_post[hIndex].func;
+ postHookFunc(sd, n);
+ }
+ }
+ return;
+}
void HP_clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *i, struct item_data *id, int eqp_pos) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_item_equip_pre > 0) {
@@ -15105,6 +15131,32 @@ void HP_clif_msgtable_str(struct map_session_data *sd, enum clif_messages p1, co
}
return;
}
+void HP_clif_msgtable_str_color(struct map_session_data *sd, enum clif_messages p1, const char *value, uint32 color) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_msgtable_str_color_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum clif_messages *p1, const char **value, uint32 *color);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_str_color_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_msgtable_str_color_pre[hIndex].func;
+ preHookFunc(&sd, &p1, &value, &color);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.msgtable_str_color(sd, p1, value, color);
+ }
+ if (HPMHooks.count.HP_clif_msgtable_str_color_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum clif_messages p1, const char *value, uint32 color);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_str_color_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_msgtable_str_color_post[hIndex].func;
+ postHookFunc(sd, p1, value, color);
+ }
+ }
+ return;
+}
void HP_clif_msgtable_color(struct map_session_data *sd, enum clif_messages p1, uint32 color) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_msgtable_color_pre > 0) {
@@ -16719,14 +16771,14 @@ void HP_clif_guild_inviteack(struct map_session_data *sd, int flag) {
}
return;
}
-void HP_clif_guild_leave(struct map_session_data *sd, const char *name, const char *mes) {
+void HP_clif_guild_leave(struct map_session_data *sd, const char *name, int char_id, const char *mes) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_guild_leave_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, const char **name, const char **mes);
+ void (*preHookFunc) (struct map_session_data **sd, const char **name, int *char_id, const char **mes);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_leave_pre[hIndex].func;
- preHookFunc(&sd, &name, &mes);
+ preHookFunc(&sd, &name, &char_id, &mes);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -16734,25 +16786,25 @@ void HP_clif_guild_leave(struct map_session_data *sd, const char *name, const ch
}
}
{
- HPMHooks.source.clif.guild_leave(sd, name, mes);
+ HPMHooks.source.clif.guild_leave(sd, name, char_id, mes);
}
if (HPMHooks.count.HP_clif_guild_leave_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, const char *name, const char *mes);
+ void (*postHookFunc) (struct map_session_data *sd, const char *name, int char_id, const char *mes);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_leave_post[hIndex].func;
- postHookFunc(sd, name, mes);
+ postHookFunc(sd, name, char_id, mes);
}
}
return;
}
-void HP_clif_guild_expulsion(struct map_session_data *sd, const char *name, const char *mes, int account_id) {
+void HP_clif_guild_expulsion(struct map_session_data *sd, const char *name, int char_id, const char *mes, int account_id) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_guild_expulsion_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, const char **name, const char **mes, int *account_id);
+ void (*preHookFunc) (struct map_session_data **sd, const char **name, int *char_id, const char **mes, int *account_id);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_expulsion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_expulsion_pre[hIndex].func;
- preHookFunc(&sd, &name, &mes, &account_id);
+ preHookFunc(&sd, &name, &char_id, &mes, &account_id);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -16760,13 +16812,13 @@ void HP_clif_guild_expulsion(struct map_session_data *sd, const char *name, cons
}
}
{
- HPMHooks.source.clif.guild_expulsion(sd, name, mes, account_id);
+ HPMHooks.source.clif.guild_expulsion(sd, name, char_id, mes, account_id);
}
if (HPMHooks.count.HP_clif_guild_expulsion_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, const char *name, const char *mes, int account_id);
+ void (*postHookFunc) (struct map_session_data *sd, const char *name, int char_id, const char *mes, int account_id);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_expulsion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_expulsion_post[hIndex].func;
- postHookFunc(sd, name, mes, account_id);
+ postHookFunc(sd, name, char_id, mes, account_id);
}
}
return;
@@ -17213,6 +17265,58 @@ void HP_clif_guild_expulsionlist(struct map_session_data *sd) {
}
return;
}
+void HP_clif_guild_set_position(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_guild_set_position_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_set_position_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_guild_set_position_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.guild_set_position(sd);
+ }
+ if (HPMHooks.count.HP_clif_guild_set_position_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_set_position_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_guild_set_position_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_clif_guild_position_selected(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_guild_position_selected_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_position_selected_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_guild_position_selected_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.guild_position_selected(sd);
+ }
+ if (HPMHooks.count.HP_clif_guild_position_selected_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_position_selected_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_guild_position_selected_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
bool HP_clif_validate_emblem(const uint8 *emblem, unsigned long emblem_len) {
int hIndex = 0;
bool retVal___ = false;
@@ -28314,6 +28418,32 @@ void HP_clif_pReqStyleChange(int fd, struct map_session_data *sd) {
}
return;
}
+void HP_clif_pReqStyleChange2(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pReqStyleChange2_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqStyleChange2_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pReqStyleChange2_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pReqStyleChange2(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pReqStyleChange2_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqStyleChange2_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pReqStyleChange2_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
void HP_clif_cz_req_style_change_sub(struct map_session_data *sd, int type, int16 idx, bool isitem) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_cz_req_style_change_sub_pre > 0) {