1
This commit is contained in:
parent
4297a64681
commit
72314bbad6
@ -1888,6 +1888,18 @@ void Human::ProcSkillPhase(MetaData::SkillPhase* phase)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
auto missile_trace_func =
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* sender = (Human*)param.sender.GetUserData();
|
||||||
|
MetaData::Equip* bullet_meta = MetaMgr::Instance()->GetEquip(param.param1);
|
||||||
|
if (sender && bullet_meta) {
|
||||||
|
Human* target = sender->room->GetHumanByUniId(param.param2);
|
||||||
|
if (target && !target->dead) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
switch (phase->func_id) {
|
switch (phase->func_id) {
|
||||||
case Skill_Jump:
|
case Skill_Jump:
|
||||||
@ -1920,6 +1932,15 @@ void Human::ProcSkillPhase(MetaData::SkillPhase* phase)
|
|||||||
MetaData::Equip* bullet_meta = MetaMgr::Instance()->GetEquip(phase->param1.GetInt());
|
MetaData::Equip* bullet_meta = MetaMgr::Instance()->GetEquip(phase->param1.GetInt());
|
||||||
if (bullet_meta) {
|
if (bullet_meta) {
|
||||||
DirectShot(bullet_meta);
|
DirectShot(bullet_meta);
|
||||||
|
if (bullet_meta->i->equip_subtype() == BulletType_Missile) {
|
||||||
|
room->xtimer.AddRepeatTimerAndAttach(bullet_meta->i->time() * SERVER_FRAME_RATE,
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(this)
|
||||||
|
.SetParam1(phase->param1.GetInt())
|
||||||
|
.SetParam2(skill_target_id),
|
||||||
|
missile_trace_func,
|
||||||
|
&xtimer_attacher.timer_list_);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -139,6 +139,12 @@ Player* Room::GetPlayerByUniId(int uniid)
|
|||||||
return entity->entity_type == ET_Player && entity->entity_subtype == EST_Player ? (Player*)entity : nullptr;
|
return entity->entity_type == ET_Player && entity->entity_subtype == EST_Player ? (Player*)entity : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Human* Room::GetHumanByUniId(int uniid)
|
||||||
|
{
|
||||||
|
Entity* entity = GetEntityByUniId(uniid);
|
||||||
|
return entity->entity_type == ET_Player ? (Human*)entity : nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
Entity* Room::GetEntityByUniId(int uniid)
|
Entity* Room::GetEntityByUniId(int uniid)
|
||||||
{
|
{
|
||||||
auto itr = uniid_hash_.find(uniid);
|
auto itr = uniid_hash_.find(uniid);
|
||||||
|
@ -53,6 +53,7 @@ public:
|
|||||||
int AliveCount();
|
int AliveCount();
|
||||||
Player* GetPlayerByAccountId(const std::string& accountid);
|
Player* GetPlayerByAccountId(const std::string& accountid);
|
||||||
Player* GetPlayerByUniId(int uniid);
|
Player* GetPlayerByUniId(int uniid);
|
||||||
|
Human* GetHumanByUniId(int uniid);
|
||||||
Entity* GetEntityByUniId(int uniid);
|
Entity* GetEntityByUniId(int uniid);
|
||||||
|
|
||||||
void AddPlayer(Player* hum);
|
void AddPlayer(Player* hum);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user