summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/packet_db.txt2
-rw-r--r--src/map/clif.c149
-rw-r--r--src/map/clif.h6
3 files changed, 156 insertions, 1 deletions
diff --git a/db/packet_db.txt b/db/packet_db.txt
index f59c86013..9da4dc4e3 100644
--- a/db/packet_db.txt
+++ b/db/packet_db.txt
@@ -735,7 +735,7 @@ packet_ver: 16
0x022f,5
0x0231,26,changehomunculusname,0
0x023a,4
-0x023b,24,storagepassword,0
+0x023b,36,storagepassword,2:4:20
0x023c,6
//2005-06-22aSakexe
diff --git a/src/map/clif.c b/src/map/clif.c
index 2676499fe..ecd4819da 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -658,6 +658,24 @@ void clif_authok(struct map_session_data *sd)
WFIFOSET(fd,packet_len(cmd));
}
+
+/// Notifies the client, that it's connection attempt was refused (ZC_REFUSE_ENTER).
+/// 0074 <error code>.B
+/// error code:
+/// 0 = client type mismatch
+/// 1 = ID mismatch
+/// 2 = mobile - out of available time
+/// 3 = mobile - already logged in
+/// 4 = mobile - waiting state
+void clif_authrefuse(int fd, uint8 error_code)
+{
+ WFIFOHEAD(fd,packet_len(0x74));
+ WFIFOW(fd,0) = 0x74;
+ WFIFOB(fd,2) = error_code;
+ WFIFOSET(fd,packet_len(0x74));
+}
+
+
/*==========================================
* Authentication failed/disconnect client.
*------------------------------------------
@@ -3644,6 +3662,21 @@ void clif_tradecompleted(struct map_session_data* sd, int fail)
WFIFOSET(fd,packet_len(0xf0));
}
+
+/// Resets the trade window on the send side (ZC_EXCHANGEITEM_UNDO).
+/// 00f1
+/// NOTE: Unknown purpose. Items are not removed until the window is
+/// refreshed (ex. by putting another item in there).
+void clif_tradeundo(struct map_session_data* sd)
+{
+ int fd = sd->fd;
+
+ WFIFOHEAD(fd,packet_len(0xf1));
+ WFIFOW(fd,0) = 0xf1;
+ WFIFOSET(fd,packet_len(0xf1));
+}
+
+
/*==========================================
* Server tells client it's quantity of items in storage changed
*------------------------------------------*/
@@ -6588,6 +6621,22 @@ void clif_mvp_exp(struct map_session_data *sd, unsigned int exp)
WFIFOSET(fd,packet_len(0x10b));
}
+
+/// Dropped MVP item reward message (ZC_THROW_MVPITEM).
+/// 010d
+///
+/// "You are the MVP, but cannot obtain the reward because
+/// you are overweight."
+void clif_mvp_noitem(struct map_session_data* sd)
+{
+ int fd = sd->fd;
+
+ WFIFOHEAD(fd,packet_len(0x10d));
+ WFIFOW(fd,0) = 0x10d;
+ WFIFOSET(fd,packet_len(0x10d));
+}
+
+
/*==========================================
* Guild creation result
* R 0167 <flag>.B
@@ -7606,6 +7655,32 @@ void clif_specialeffect_single(struct block_list* bl, int type, int fd)
WFIFOSET(fd,10);
}
+
+/// Notifies clients of an special/visual effect that accepts an value (ZC_NOTIFY_EFFECT3).
+/// 0284 <id>.L <effect id>.L <num data>.L
+/// effect id:
+/// @see doc/effect_list.txt
+/// num data:
+/// effect-dependent value
+void clif_specialeffect_value(struct block_list* bl, int effect_id, int num, send_target target)
+{
+ uint8 buf[14];
+
+ WBUFW(buf,0) = 0x284;
+ WBUFL(buf,2) = bl->id;
+ WBUFL(buf,6) = effect_id;
+ WBUFL(buf,10) = num;
+
+ clif_send(buf, packet_len(0x284), bl, target);
+
+ if( disguised(bl) )
+ {
+ WBUFL(buf,2) = -bl->id;
+ clif_send(buf, packet_len(0x284), bl, SELF);
+ }
+}
+
+
/******************************************************
* W.<packet> W.<LENGTH> L.<ID> L.<COLOR> S.<TEXT>
* Mob/NPC Color Talk [SnakeDrak]
@@ -8190,6 +8265,38 @@ void clif_msg(struct map_session_data* sd, unsigned short id)
WFIFOSET(fd, packet_len(0x291));
}
+
+/// Display msgstringtable.txt string and fill in a valid for %d format (ZC_MSG_VALUE).
+/// 0x7e2 <message>.W <value>.L
+void clif_msg_value(struct map_session_data* sd, unsigned short id, int value)
+{
+ int fd = sd->fd;
+
+ WFIFOHEAD(fd, packet_len(0x7e2));
+ WFIFOW(fd,0) = 0x7e2;
+ WFIFOW(fd,2) = id;
+ WFIFOL(fd,4) = value;
+ WFIFOSET(fd, packet_len(0x7e2));
+}
+
+
+/// Displays msgstringtable.txt string, prefixed with a skill name. (ZC_MSG_SKILL).
+/// 07e6 <skill id>.W <msg id>.L
+///
+/// NOTE: Message has following format and is printed in color 0xCDCDFF (purple):
+/// "[SkillName] Message"
+void clif_msg_skill(struct map_session_data* sd, unsigned short skill_id, int msg_id)
+{
+ int fd = sd->fd;
+
+ WFIFOHEAD(fd, packet_len(0x7e6));
+ WFIFOW(fd,0) = 0x7e6;
+ WFIFOW(fd,2) = skill_id;
+ WFIFOL(fd,4) = msg_id;
+ WFIFOSET(fd, packet_len(0x7e6));
+}
+
+
/// View player equip request denied
void clif_viewequip_fail(struct map_session_data* sd)
{
@@ -10586,6 +10693,26 @@ void clif_parse_CloseKafra(int fd, struct map_session_data *sd)
storage_guild_storageclose(sd);
}
+
+/// Displays kafra storage password dialog (ZC_REQ_STORE_PASSWORD).
+/// 023a <info>.W
+/// info:
+/// 0 = password has not been set yet
+/// 1 = storage is password-protected
+/// 8 = too many wrong passwords
+/// ? = ignored
+/// NOTE: This packet is only available on certain non-kRO clients.
+void clif_storagepassword(struct map_session_data* sd, short info)
+{
+ int fd = sd->fd;
+
+ WFIFOHEAD(fd,packet_len(0x23a));
+ WFIFOW(fd,0) = 0x23a;
+ WFIFOW(fd,2) = info;
+ WFIFOSET(fd,packet_len(0x23a));
+}
+
+
/*==========================================
* Kafra storage protection password system
*------------------------------------------*/
@@ -10595,6 +10722,28 @@ void clif_parse_StoragePassword(int fd, struct map_session_data *sd)
}
+/// Result of kafra storage password validation (ZC_RESULT_STORE_PASSWORD).
+/// 023c <result>.W <error count>.W
+/// result:
+/// 4 = password change success
+/// 5 = password change failure
+/// 6 = password check success
+/// 7 = password check failure
+/// 8 = too many wrong passwords
+/// ? = ignored
+/// NOTE: This packet is only available on certain non-kRO clients.
+void clif_storagepassword_result(struct map_session_data* sd, short result, short error_count)
+{
+ int fd = sd->fd;
+
+ WFIFOHEAD(fd,packet_len(0x23c));
+ WFIFOW(fd,0) = 0x23c;
+ WFIFOW(fd,2) = result;
+ WFIFOW(fd,4) = error_count;
+ WFIFOSET(fd,packet_len(0x23c));
+}
+
+
/*==========================================
* Party creation request
* S 00f9 <party name>.24S
diff --git a/src/map/clif.h b/src/map/clif.h
index 4162905be..efe85cefc 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -309,6 +309,7 @@ uint32 clif_refresh_ip(void);
uint16 clif_getport(void);
void clif_authok(struct map_session_data *sd);
+void clif_authrefuse(int fd, uint8 error_code);
void clif_authfail_fd(int fd, int type);
void clif_charselectok(int id, uint8 ok);
void clif_dropflooritem(struct flooritem_data* fitem);
@@ -394,6 +395,7 @@ void clif_tradeitemok(struct map_session_data* sd, int index, int fail);
void clif_tradedeal_lock(struct map_session_data* sd, int fail);
void clif_tradecancelled(struct map_session_data* sd);
void clif_tradecompleted(struct map_session_data* sd, int fail);
+void clif_tradeundo(struct map_session_data* sd);
// storage
void clif_storagelist(struct map_session_data* sd, struct item* items, int items_length);
@@ -475,6 +477,7 @@ void clif_item_skill(struct map_session_data *sd,int skillid,int skilllv);
void clif_mvp_effect(struct map_session_data *sd);
void clif_mvp_item(struct map_session_data *sd,int nameid);
void clif_mvp_exp(struct map_session_data *sd, unsigned int exp);
+void clif_mvp_noitem(struct map_session_data* sd);
void clif_changed_dir(struct block_list *bl, enum send_target target);
// vending
@@ -589,6 +592,7 @@ void clif_specialeffect(struct block_list* bl, int type, enum send_target target
void clif_specialeffect_single(struct block_list* bl, int type, int fd);
void clif_messagecolor(struct block_list* bl, unsigned long color, const char* msg); // Mob/Npc color talk [SnakeDrak]
void clif_message(struct block_list* bl, const char* msg); // messages (from mobs/npcs) [Valaris]
+void clif_specialeffect_value(struct block_list* bl, int effect_id, int num, send_target target);
void clif_GM_kickack(struct map_session_data *sd, int id);
void clif_GM_kick(struct map_session_data *sd,struct map_session_data *tsd);
@@ -621,6 +625,8 @@ void clif_viewequip_fail(struct map_session_data* sd);
void clif_equipcheckbox(struct map_session_data* sd);
void clif_msg(struct map_session_data* sd, unsigned short id);
+void clif_msg_value(struct map_session_data* sd, unsigned short id, int value);
+void clif_msg_skill(struct map_session_data* sd, unsigned short skill_id, int msg_id);
//quest system [Kevin] [Inkfish]
void clif_quest_send_list(struct map_session_data * sd);