diff options
author | mekolat <mekolat@users.noreply.github.com> | 2015-05-31 16:39:53 -0400 |
---|---|---|
committer | mekolat <mekolat@users.noreply.github.com> | 2015-05-31 16:39:53 -0400 |
commit | 1a444e3861985b53ac3abf0d95d94471d5eb261f (patch) | |
tree | 3637ae743e9db2d82c9f4ed45d22edb6548ead46 /src | |
parent | 182e82a79c0455b6e6734b1cb6d83cfcd7f28d61 (diff) | |
download | tmwa-1a444e3861985b53ac3abf0d95d94471d5eb261f.tar.gz tmwa-1a444e3861985b53ac3abf0d95d94471d5eb261f.tar.bz2 tmwa-1a444e3861985b53ac3abf0d95d94471d5eb261f.tar.xz tmwa-1a444e3861985b53ac3abf0d95d94471d5eb261f.zip |
send pvp channel and rank to client
Diffstat (limited to 'src')
-rw-r--r-- | src/map/clif.cpp | 15 | ||||
-rw-r--r-- | src/map/clif.hpp | 1 | ||||
-rw-r--r-- | src/map/map.hpp | 1 | ||||
-rw-r--r-- | src/map/pc.cpp | 5 |
4 files changed, 22 insertions, 0 deletions
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<map_session_data> 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<block_list> bl, int type) return 0; } +void clif_pvpstatus(dumb_ptr<map_session_data> 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<map_session_data>, SP, int, int); // self int clif_equipitemack(dumb_ptr<map_session_data>, IOff0, EPOS, int); // self int clif_unequipitemack(dumb_ptr<map_session_data>, IOff0, EPOS, int); // self int clif_misceffect(dumb_ptr<block_list>, int); // area +void clif_pvpstatus(dumb_ptr<map_session_data>); // area int clif_changeoption(dumb_ptr<block_list>); // area int clif_useitemack(dumb_ptr<map_session_data>, 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<block_list> src, dumb_ptr<map_session_data> sd, }; npc_event_doall_l(stringish<ScriptLabel>("OnPCKilledEvent"_s), sd->bl_id, arg); npc_event_doall_l(stringish<ScriptLabel>("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<ScriptLabel>("OnPCDieEvent"_s), sd->bl_id, nullptr); |