This commit is contained in:
aozhiwei 2022-10-18 21:45:17 +08:00
parent fe2924f943
commit 64485476af
4 changed files with 26 additions and 8 deletions

View File

@ -419,12 +419,12 @@ void Bullet::MapServiceUpdate()
Check(distance);
}
} while(!later_removed_ && move_length >= 0.0001f);
#ifdef DEBUG1
#ifdef DEBUG
{
if (sender.Get()->IsPlayer()) {
if ((room->GetFrameNo() - create_frameno_) % 2 == 0) {
float distance = (GetPos() - born_pos).Norm();
a8::XPrintf("bullet_id:%d frame_no:%d speed:%f range:%f fly_distance:%f born_pos:%f,%f pos:%f,%f\n",
a8::XPrintf("bullet_id:%d frame_no:%d speed:%f range:%f fly_distance:%f born_pos:%f,%f pos:%f,%f src_fly_distance:%f\n",
{
gun_meta->i->id(),
(room->GetFrameNo() - create_frameno_) / 2,
@ -434,7 +434,8 @@ void Bullet::MapServiceUpdate()
born_pos.x,
born_pos.y,
GetPos().x,
GetPos().y
GetPos().y,
fly_distance
});
}
}
@ -609,6 +610,7 @@ void Bullet::Check(float distance)
}
float bullet_range = gun_meta->i->range();
if (!objects.empty() || (!IsBomb() && distance > bullet_range) || eat ||
(gun_meta->i->id() == 30918 && distance >= fly_distance) ||
(IsBomb() && meta->i->_inventory_slot() != IS_RPG && distance >= fly_distance)
) {
if (IsBomb()) {

View File

@ -38,6 +38,7 @@
#include "httpproxy.h"
#include "skillhelper.h"
#include "shot.h"
#include "battledatacontext.h"
const int kReviveTimeAdd = 12;
const int kSkinNum = 4;
@ -248,7 +249,7 @@ void PlayerStats::SetHeroWeaponLv(int hero_id, int weapon_lv)
MustBeHero(hero_id).weapon_lv = std::max(MustBeHero(hero_id).weapon_lv, weapon_lv);
}
void PlayerStats::ParseReward(a8::XObject& xobj)
void PlayerStats::ParseReward(Human* hum, a8::XObject& xobj)
{
if (!xobj.IsObject()) {
AdjustRewardData();
@ -265,6 +266,10 @@ void PlayerStats::ParseReward(a8::XObject& xobj)
if (hero_xobj && hero_xobj->IsObject()) {
over_reward.hero.obtain_gold = hero_xobj->At("obtain_ceg")->AsXValue().GetString();
over_reward.hero.gold_limit = hero_xobj->At("ceg_uplimit")->AsXValue().GetString();
if (hum->GetBattleContext()->hero_dto &&
hum->GetBattleContext()->hero_dto->IsObject()) {
over_reward.hero.id = hum->GetBattleContext()->hero_dto->At("hero_id")->AsXValue();
}
}
}
{
@ -272,6 +277,10 @@ void PlayerStats::ParseReward(a8::XObject& xobj)
if (weapon_xobj && weapon_xobj->IsObject()) {
over_reward.weapon1.obtain_gold = weapon_xobj->At("obtain_ceg")->AsXValue().GetString();
over_reward.weapon1.gold_limit = weapon_xobj->At("ceg_uplimit")->AsXValue().GetString();
if (hum->GetBattleContext()->weapon_dto1 &&
hum->GetBattleContext()->weapon_dto1->IsObject()) {
over_reward.hero.id = hum->GetBattleContext()->weapon_dto1->At("gun_id")->AsXValue();
}
}
}
{
@ -279,6 +288,10 @@ void PlayerStats::ParseReward(a8::XObject& xobj)
if (weapon_xobj && weapon_xobj->IsObject()) {
over_reward.weapon2.obtain_gold = weapon_xobj->At("obtain_ceg")->AsXValue().GetString();
over_reward.weapon2.gold_limit = weapon_xobj->At("ceg_uplimit")->AsXValue().GetString();
if (hum->GetBattleContext()->weapon_dto2 &&
hum->GetBattleContext()->weapon_dto2->IsObject()) {
over_reward.hero.id = hum->GetBattleContext()->weapon_dto2->At("gun_id")->AsXValue();
}
}
}
{
@ -2409,7 +2422,7 @@ void Human::SendBattleReport()
}
hum->sending_battlereport_ = false;
hum->already_report_battle_ = true;
hum->stats.ParseReward(data);
hum->stats.ParseReward(hum, data);
hum->SendGameOver();
};
auto on_error =

View File

@ -41,6 +41,7 @@ struct HeroStats
struct OverRewardItem
{
std::string uniid;
int id = 0;
std::string obtain_gold;
std::string gold_limit;
};
@ -123,7 +124,7 @@ struct PlayerStats
HeroStats& MustBeHero(int hero_id);
void SetHeroSkillLv(int hero_id, int skill_lv);
void SetHeroWeaponLv(int hero_id, int weapon_lv);
void ParseReward(a8::XObject& xobj);
void ParseReward(Human* hum, a8::XObject& xobj);
void AdjustRewardData();
void Statement(Human* hum);
};

View File

@ -560,12 +560,14 @@ void Skill::ProcCMXD()
Entity* e = std::any_cast<Entity*>(params.at(1));
if (sender.Get() && e->IsCreature(sender.Get()->room)) {
Creature* c = (Creature*)e;
a8::Vec2 target_pos = sender.Get()->GetPos() +
sender.Get()->GetAttackDir() * SkillHelper::GetCmxdRange(this_skill_meta) / 2;
bool ret = Check2dRotationRectangle
(c->GetPos().x,
c->GetPos().y,
20,
sender.Get()->GetPos().x,
sender.Get()->GetPos().y,
target_pos.x,
target_pos.y,
shield_buff_meta->param4,
SkillHelper::GetCmxdRange(this_skill_meta),
sender.Get()->GetAttackDirRotate() * 180.0f