From 1a444e3861985b53ac3abf0d95d94471d5eb261f Mon Sep 17 00:00:00 2001 From: mekolat Date: Sun, 31 May 2015 16:39:53 -0400 Subject: send pvp channel and rank to client --- src/map/clif.cpp | 15 +++++++++++++++ src/map/clif.hpp | 1 + src/map/map.hpp | 1 + src/map/pc.cpp | 5 +++++ 4 files changed, 22 insertions(+) (limited to 'src/map') diff --git a/src/map/clif.cpp b/src/map/clif.cpp index 248f74a..fbca96a 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -930,6 +930,8 @@ int clif_spawnpc(dumb_ptr sd) clif_send(buf, sd, SendWho::AREA_WOS); + clif_pvpstatus(sd); + if (sd->bl_m->flag.get(MapFlag::SNOW)) clif_specialeffect(sd, 162, 1); if (sd->bl_m->flag.get(MapFlag::FOG)) @@ -2048,6 +2050,19 @@ int clif_misceffect(dumb_ptr bl, int type) return 0; } +void clif_pvpstatus(dumb_ptr sd) +{ + nullpo_retv(sd); + + Packet_Fixed<0x019a> fixed_19a; + fixed_19a.block_id = sd->bl_id; + fixed_19a.rank = sd->state.pvp_rank; + fixed_19a.channel = sd->state.pvpchannel; + Buffer buf = create_fpacket<0x019a, 14>(fixed_19a); + + clif_send(buf, sd, SendWho::AREA); +} + /*========================================== * 表示オプション変更 *------------------------------------------ diff --git a/src/map/clif.hpp b/src/map/clif.hpp index 3cc308c..63d3d6a 100644 --- a/src/map/clif.hpp +++ b/src/map/clif.hpp @@ -92,6 +92,7 @@ int clif_statusupack(dumb_ptr, SP, int, int); // self int clif_equipitemack(dumb_ptr, IOff0, EPOS, int); // self int clif_unequipitemack(dumb_ptr, IOff0, EPOS, int); // self int clif_misceffect(dumb_ptr, int); // area +void clif_pvpstatus(dumb_ptr); // area int clif_changeoption(dumb_ptr); // area int clif_useitemack(dumb_ptr, IOff0, int, int); // self diff --git a/src/map/map.hpp b/src/map/map.hpp index aac646b..2b638d4 100644 --- a/src/map/map.hpp +++ b/src/map/map.hpp @@ -143,6 +143,7 @@ struct map_session_data : block_list, SessionData unsigned shroud_disappears_on_talk:1; unsigned seen_motd:1; unsigned pvpchannel; + unsigned pvp_rank; } state; struct { diff --git a/src/map/pc.cpp b/src/map/pc.cpp index d2b2f44..ebe8bca 100644 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -3313,6 +3313,11 @@ int pc_damage(dumb_ptr src, dumb_ptr sd, }; npc_event_doall_l(stringish("OnPCKilledEvent"_s), sd->bl_id, arg); npc_event_doall_l(stringish("OnPCKillEvent"_s), src->bl_id, arg); + + sd->state.pvp_rank = 0; + src->is_player()->state.pvp_rank++; + clif_pvpstatus(sd); + clif_pvpstatus(src->is_player()); } npc_event_doall_l(stringish("OnPCDieEvent"_s), sd->bl_id, nullptr); -- cgit v1.2.3-60-g2f50