From 2ab1f4b90469712b25960e3dd0f19a1b37ae866b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 6 Mar 2023 14:37:30 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/batch_add.cc | 4 ++-- server/gameserver/lispenv.cc | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/server/gameserver/buff/batch_add.cc b/server/gameserver/buff/batch_add.cc index 0e119200..f7ed199c 100644 --- a/server/gameserver/buff/batch_add.cc +++ b/server/gameserver/buff/batch_add.cc @@ -26,7 +26,7 @@ void BatchAddBuff::Activate() if (rnd < std::get<1>(items[0])){ const mt::Buff* buff_meta = mt::Buff::GetById(std::get<0>(items[0])); if (buff_meta) { - owner->AddBuff(caster_.Get(), buff_meta, nullptr); + owner->AddBuff(caster_.Get(), buff_meta, skill_meta); } } } else { @@ -36,7 +36,7 @@ void BatchAddBuff::Activate() if (rnd <= std::get<1>(item)) { const mt::Buff* buff_meta = mt::Buff::GetById(std::get<0>(item)); if (buff_meta) { - owner->AddBuff(caster_.Get(), buff_meta, nullptr); + owner->AddBuff(caster_.Get(), buff_meta, skill_meta); } break; } diff --git a/server/gameserver/lispenv.cc b/server/gameserver/lispenv.cc index 819278a5..e42c855d 100644 --- a/server/gameserver/lispenv.cc +++ b/server/gameserver/lispenv.cc @@ -30,7 +30,7 @@ public: }); RegisterCProc ( - "myself.get_hero_atk", + "!myself.get_hero_atk", [this] (const a8::lisp::List& params) -> std::shared_ptr { double result = context_.buff->owner->GetBattleContext()->GetHeroTotalAtk(); @@ -38,7 +38,7 @@ public: }); RegisterCProc ( - "caster.get_hero_atk", + "!caster.get_hero_atk", [this] (const a8::lisp::List& params) -> std::shared_ptr { double result = 0.0f; @@ -78,6 +78,7 @@ public: abort(); } Transform(nullptr, expr); + a8::XPrintf("script:%s ast:%s\n", {script, expr->ToXObject().ToJsonStr()}); return expr; } @@ -89,10 +90,13 @@ public: auto&& symbol = std::any_cast(node->value); int idx = mt::SkillNumber::GetAttrIdxByName(symbol.name); if (idx < 0) { - auto cproc = Find(symbol.name); + auto cproc = Find("!" + symbol.name); if (!cproc) { abort(); } + if (!cproc->IsType(a8::lisp::ValueType::kCProc)) { + abort(); + } func_call_exprs->push_back(cproc); } else { {