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();
|
room->CheckPartObjects();
|
||||||
#endif
|
#endif
|
||||||
if (!dead && !room->IsGameOver() && !real_dead) {
|
if (!dead && !room->IsGameOver() && !real_dead) {
|
||||||
cs::SMRollMsg roll_msg;
|
|
||||||
lethal_weapon = weapon_id;
|
lethal_weapon = weapon_id;
|
||||||
Entity* hum = room->GetEntityByUniId(killer_id);
|
Entity* hum = room->GetEntityByUniId(killer_id);
|
||||||
if (hum && hum->IsEntityType(ET_Player)) {
|
if (hum && hum->IsEntityType(ET_Player)) {
|
||||||
|
Creature* killer = (Creature*)hum;
|
||||||
if (killer_id == GetEntityUniId()) {
|
if (killer_id == GetEntityUniId()) {
|
||||||
std::string msg = a8::Format(TEXT("battle_server_dead_specate", "%s 自杀").c_str(),
|
std::string msg = a8::Format(TEXT("battle_server_dead_specate", "%s 自杀").c_str(),
|
||||||
{
|
{
|
||||||
killer_name,
|
killer_name,
|
||||||
});
|
});
|
||||||
SendRollMsg(roll_msg);
|
SendRollMsg(msg, killer->GetEntityUniId(), killer->team_id);
|
||||||
} else {
|
} else {
|
||||||
((Human*)hum)->stats.kills++;
|
((Human*)hum)->stats.kills++;
|
||||||
((Human*)hum)->stats.last_kill_frameno = room->GetFrameNo();
|
((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,
|
killer_name,
|
||||||
name
|
name
|
||||||
});
|
});
|
||||||
SendRollMsg(roll_msg);
|
SendRollMsg(msg, killer->GetEntityUniId(), killer->team_id);
|
||||||
} else {
|
} else {
|
||||||
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(weapon_id);
|
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(weapon_id);
|
||||||
if (equip_meta) {
|
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(),
|
equip_meta->i->name(),
|
||||||
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
|
name
|
||||||
});
|
});
|
||||||
SendRollMsg(roll_msg);
|
SendRollMsg(msg, 0, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case VW_Spectate:
|
case VW_Spectate:
|
||||||
@ -786,7 +786,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
|||||||
{
|
{
|
||||||
name
|
name
|
||||||
});
|
});
|
||||||
SendRollMsg(roll_msg);
|
SendRollMsg(msg, 0, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case VW_SelfDetonate:
|
case VW_SelfDetonate:
|
||||||
@ -795,7 +795,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
|||||||
{
|
{
|
||||||
name
|
name
|
||||||
});
|
});
|
||||||
SendRollMsg(roll_msg);
|
SendRollMsg(msg, 0, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case VW_Mine:
|
case VW_Mine:
|
||||||
@ -804,7 +804,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
|||||||
{
|
{
|
||||||
name
|
name
|
||||||
});
|
});
|
||||||
SendRollMsg(roll_msg);
|
SendRollMsg(msg, 0, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1503,35 +1503,46 @@ void Human::SendDebugMsg(const std::string& debug_msg)
|
|||||||
SendNotifyMsg(notify_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
|
room->xtimer.AddDeadLineTimerAndAttach
|
||||||
(
|
(
|
||||||
0,
|
0,
|
||||||
a8::XParams()
|
a8::XParams()
|
||||||
.SetSender(this)
|
.SetSender(this)
|
||||||
.SetParam1(msg_copy),
|
.SetParam1(killer_id)
|
||||||
|
.SetParam2(killer_team_id)
|
||||||
|
.SetParam3(msg),
|
||||||
[] (const a8::XParams& param)
|
[] (const a8::XParams& param)
|
||||||
{
|
{
|
||||||
Human* target = (Human*)param.sender.GetUserData();
|
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
|
target->room->TouchPlayerList
|
||||||
(a8::XParams(),
|
(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) {
|
cs::SMRollMsg msg;
|
||||||
hum->SendNotifyMsg(*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;
|
return true;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
&xtimer_attacher.timer_list_,
|
&xtimer_attacher.timer_list_,
|
||||||
[] (const a8::XParams& param)
|
[] (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 SendGameOver();
|
||||||
void FollowTarget(Human* target);
|
void FollowTarget(Human* target);
|
||||||
virtual void SendDebugMsg(const std::string& debug_msg) override;
|
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 UpdateAction();
|
||||||
void SendUIUpdate();
|
void SendUIUpdate();
|
||||||
void SendWxVoip();
|
void SendWxVoip();
|
||||||
|
@ -233,6 +233,10 @@ public:
|
|||||||
METAMGR_READ(level0room_robot_autodie_time, 10);
|
METAMGR_READ(level0room_robot_autodie_time, 10);
|
||||||
METAMGR_READ(level0room_robot_autodie_distance, 500);
|
METAMGR_READ(level0room_robot_autodie_distance, 500);
|
||||||
METAMGR_READ(water_move_coefficient, 0.75);
|
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, "");
|
METAMGR_READ_STR(level0room_spec_things, "");
|
||||||
std::vector<std::string> tmpstrings;
|
std::vector<std::string> tmpstrings;
|
||||||
|
@ -146,6 +146,12 @@ class MetaMgr : public a8::Singleton<MetaMgr>
|
|||||||
int refresh_robot_max_time = 0;
|
int refresh_robot_max_time = 0;
|
||||||
#endif
|
#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;
|
int other_fill_interval = 0;
|
||||||
float android_attack_range = 0;
|
float android_attack_range = 0;
|
||||||
float android_pursuit_range = 0;
|
float android_pursuit_range = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user