1
This commit is contained in:
parent
5f99ee1aa4
commit
b5f72b9c29
@ -734,16 +734,16 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
||||
room->CheckPartObjects();
|
||||
#endif
|
||||
if (!dead && !room->IsGameOver() && !real_dead) {
|
||||
cs::SMRollMsg roll_msg;
|
||||
lethal_weapon = weapon_id;
|
||||
Entity* hum = room->GetEntityByUniId(killer_id);
|
||||
if (hum && hum->IsEntityType(ET_Player)) {
|
||||
Creature* killer = (Creature*)hum;
|
||||
if (killer_id == GetEntityUniId()) {
|
||||
std::string msg = a8::Format(TEXT("battle_server_dead_specate", "%s 自杀").c_str(),
|
||||
{
|
||||
killer_name,
|
||||
});
|
||||
SendRollMsg(roll_msg);
|
||||
SendRollMsg(msg, killer->GetEntityUniId(), killer->team_id);
|
||||
} else {
|
||||
((Human*)hum)->stats.kills++;
|
||||
((Human*)hum)->stats.last_kill_frameno = room->GetFrameNo();
|
||||
@ -755,7 +755,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
||||
killer_name,
|
||||
name
|
||||
});
|
||||
SendRollMsg(roll_msg);
|
||||
SendRollMsg(msg, killer->GetEntityUniId(), killer->team_id);
|
||||
} else {
|
||||
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(weapon_id);
|
||||
if (equip_meta) {
|
||||
@ -765,7 +765,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
||||
equip_meta->i->name(),
|
||||
name
|
||||
});
|
||||
SendRollMsg(roll_msg);
|
||||
SendRollMsg(msg, killer->GetEntityUniId(), killer->team_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -777,7 +777,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
||||
{
|
||||
name
|
||||
});
|
||||
SendRollMsg(roll_msg);
|
||||
SendRollMsg(msg, 0, 0);
|
||||
}
|
||||
break;
|
||||
case VW_Spectate:
|
||||
@ -786,7 +786,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
||||
{
|
||||
name
|
||||
});
|
||||
SendRollMsg(roll_msg);
|
||||
SendRollMsg(msg, 0, 0);
|
||||
}
|
||||
break;
|
||||
case VW_SelfDetonate:
|
||||
@ -795,7 +795,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
||||
{
|
||||
name
|
||||
});
|
||||
SendRollMsg(roll_msg);
|
||||
SendRollMsg(msg, 0, 0);
|
||||
}
|
||||
break;
|
||||
case VW_Mine:
|
||||
@ -804,7 +804,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
||||
{
|
||||
name
|
||||
});
|
||||
SendRollMsg(roll_msg);
|
||||
SendRollMsg(msg, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1503,35 +1503,46 @@ void Human::SendDebugMsg(const std::string& debug_msg)
|
||||
SendNotifyMsg(notify_msg);
|
||||
}
|
||||
|
||||
void Human::SendRollMsg(const cs::SMRollMsg& msg)
|
||||
void Human::SendRollMsg(const std::string& msg, int killer_id, bool killer_team_id)
|
||||
{
|
||||
cs::SMRollMsg* msg_copy = new cs::SMRollMsg;
|
||||
*msg_copy = msg;
|
||||
room->xtimer.AddDeadLineTimerAndAttach
|
||||
(
|
||||
0,
|
||||
a8::XParams()
|
||||
.SetSender(this)
|
||||
.SetParam1(msg_copy),
|
||||
.SetParam1(killer_id)
|
||||
.SetParam2(killer_team_id)
|
||||
.SetParam3(msg),
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
Human* target = (Human*)param.sender.GetUserData();
|
||||
cs::SMRollMsg* msg = (cs::SMRollMsg*)param.param1.GetUserData();
|
||||
int killer_id = param.param1;
|
||||
int killer_team_id = param.param2;
|
||||
std::string text = param.param3.GetString();
|
||||
target->room->TouchPlayerList
|
||||
(a8::XParams(),
|
||||
[target, msg] (Human* hum, a8::XParams& param) -> bool
|
||||
[target, killer_id, killer_team_id, text] (Human* hum, a8::XParams& param) -> bool
|
||||
{
|
||||
if (target != hum) {
|
||||
hum->SendNotifyMsg(*msg);
|
||||
cs::SMRollMsg msg;
|
||||
auto element = msg.add_elements();
|
||||
element->set_element_type(1);
|
||||
element->mutable_union_obj_1()->set_text(text);
|
||||
if (killer_id == hum->GetEntityUniId()){
|
||||
element->mutable_union_obj_1()->set_color(MetaMgr::Instance()->self_kill_color);
|
||||
} else if (killer_team_id == hum->team_id) {
|
||||
element->mutable_union_obj_1()->set_color(MetaMgr::Instance()->teammate_kill_color);
|
||||
} else if (target == hum) {
|
||||
element->mutable_union_obj_1()->set_color(MetaMgr::Instance()->self_bekill_color);
|
||||
} else if (target->team_id == hum->team_id) {
|
||||
element->mutable_union_obj_1()->set_color(MetaMgr::Instance()->teammate_bekill_color);
|
||||
}
|
||||
hum->SendNotifyMsg(msg);
|
||||
return true;
|
||||
});
|
||||
},
|
||||
&xtimer_attacher.timer_list_,
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
cs::SMRollMsg* msg = (cs::SMRollMsg*)param.param1.GetUserData();
|
||||
delete msg;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -199,7 +199,7 @@ class Human : public Creature
|
||||
void SendGameOver();
|
||||
void FollowTarget(Human* target);
|
||||
virtual void SendDebugMsg(const std::string& debug_msg) override;
|
||||
void SendRollMsg(const cs::SMRollMsg& msg);
|
||||
void SendRollMsg(const std::string& msg, int killer_id, bool killer_team_id);
|
||||
void UpdateAction();
|
||||
void SendUIUpdate();
|
||||
void SendWxVoip();
|
||||
|
@ -233,6 +233,10 @@ public:
|
||||
METAMGR_READ(level0room_robot_autodie_time, 10);
|
||||
METAMGR_READ(level0room_robot_autodie_distance, 500);
|
||||
METAMGR_READ(water_move_coefficient, 0.75);
|
||||
METAMGR_READ(teammate_kill_color, 0xFFFF00);
|
||||
METAMGR_READ(teammate_bekill_color, 0x00FF00);
|
||||
METAMGR_READ(self_kill_color, 0xFFFF00);
|
||||
METAMGR_READ(self_bekill_color, 0x00FF00);
|
||||
{
|
||||
METAMGR_READ_STR(level0room_spec_things, "");
|
||||
std::vector<std::string> tmpstrings;
|
||||
|
@ -146,6 +146,12 @@ class MetaMgr : public a8::Singleton<MetaMgr>
|
||||
int refresh_robot_max_time = 0;
|
||||
#endif
|
||||
|
||||
int teammate_kill_color = 0xFFFF00;
|
||||
int teammate_bekill_color = 0xFF0000;
|
||||
|
||||
int self_kill_color = 0xFFFF00;
|
||||
int self_bekill_color = 0xFF0000;
|
||||
|
||||
int other_fill_interval = 0;
|
||||
float android_attack_range = 0;
|
||||
float android_pursuit_range = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user