From fa51c1bb7eacc84be8605e55ea19f63a441c3ce5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 6 Mar 2023 11:40:34 +0800 Subject: [PATCH] 1 --- server/gameserver/app.cc | 4 ++-- server/gameserver/buff/sprint.cc | 3 ++- server/gameserver/lispenv.cc | 18 +++++++++++------- server/gameserver/mt/Buff.cc | 8 ++++---- third_party/a8 | 2 +- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/server/gameserver/app.cc b/server/gameserver/app.cc index 4fc0fd20..4763fdb9 100644 --- a/server/gameserver/app.cc +++ b/server/gameserver/app.cc @@ -172,8 +172,8 @@ bool App::Init(int argc, char* argv[]) #endif SkillHelper::Init(); JsonDataMgr::Instance()->Init(); - mt::MetaMgr::Instance()->Init(); LispEnv::Instance()->Init(); + mt::MetaMgr::Instance()->Init(); SelfChecker::Init(); EntityFactory::Instance()->Init(); uuid.SetMachineId((node_id - 1) * MAX_NODE_ID + instance_id); @@ -231,8 +231,8 @@ void App::UnInit() KillMgr::Instance()->UnInit(); EntityFactory::Instance()->UnInit(); SelfChecker::UnInit(); - LispEnv::Instance()->UnInit(); mt::MetaMgr::Instance()->UnInit(); + LispEnv::Instance()->UnInit(); JsonDataMgr::Instance()->UnInit(); f8::BtMgr::Instance()->UnInit(); f8::HttpClientPool::Instance()->UnInit(); diff --git a/server/gameserver/buff/sprint.cc b/server/gameserver/buff/sprint.cc index eeb27dab..8de34a5f 100644 --- a/server/gameserver/buff/sprint.cc +++ b/server/gameserver/buff/sprint.cc @@ -9,6 +9,7 @@ #include "human.h" #include "ability.h" #include "collision.h" +#include "lispenv.h" #include "mt/Buff.h" #include "mt/Skill.h" @@ -19,7 +20,7 @@ void SprintBuff::Activate() if (meta->_int_buff_param5) { owner->IncDisableMoveDirTimes(); } - move_distance_limit_ = skill_meta->_number_meta->_float_range; + move_distance_limit_ = meta->GetBuffParam2(owner, skill_meta); SprintMove(); CoCollisionCheck(); } diff --git a/server/gameserver/lispenv.cc b/server/gameserver/lispenv.cc index f45b95bd..6095b068 100644 --- a/server/gameserver/lispenv.cc +++ b/server/gameserver/lispenv.cc @@ -20,8 +20,6 @@ public: if (params->size() != 1) { abort(); } - result = context_.skill_meta->_number_meta->_float_speed; - result =123; return std::make_shared(a8::lisp::Atom(result)); }); } @@ -57,11 +55,11 @@ public: if (!expr->IsType(a8::lisp::ValueType::kList)) { abort(); } - Transform(expr); + Transform(nullptr, expr); return expr; } - void Transform(std::shared_ptr node) + void Transform(std::shared_ptr parent_node, std::shared_ptr node) { if (node->IsType(a8::lisp::ValueType::kSymbol)) { auto&& symbol = std::any_cast(node->value); @@ -82,12 +80,18 @@ public: func_call_exprs->push_back (std::make_shared(a8::lisp::Atom(idx))); } - node->Assign(func_call_exprs); - + if (parent_node && + parent_node->IsType(a8::lisp::ValueType::kList) && + std::any_cast(parent_node->value)->size() == 1 + ) { + parent_node->Assign(func_call_exprs); + } else { + node->Assign(func_call_exprs); + } } else if (node->IsType(a8::lisp::ValueType::kList)) { auto list = std::any_cast(node->value); for (auto child_node : *list) { - Transform(child_node); + Transform(node, child_node); } } } diff --git a/server/gameserver/mt/Buff.cc b/server/gameserver/mt/Buff.cc index 5556b23b..7ca161a9 100644 --- a/server/gameserver/mt/Buff.cc +++ b/server/gameserver/mt/Buff.cc @@ -117,16 +117,16 @@ namespace mt _buff_param1_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param1()); } if (a8::lisp::Expr::MaybeExpr(buff_param2())) { - _buff_param1_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param2()); + _buff_param2_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param2()); } if (a8::lisp::Expr::MaybeExpr(buff_param3())) { - _buff_param1_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param3()); + _buff_param3_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param3()); } if (a8::lisp::Expr::MaybeExpr(buff_param4())) { - _buff_param1_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param4()); + _buff_param4_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param4()); } if (a8::lisp::Expr::MaybeExpr(buff_param5())) { - _buff_param1_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param5()); + _buff_param5_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param5()); } } { diff --git a/third_party/a8 b/third_party/a8 index 7bd14674..abee0bed 160000 --- a/third_party/a8 +++ b/third_party/a8 @@ -1 +1 @@ -Subproject commit 7bd146740195fbf3d0268fd873708f4ec2f56ab6 +Subproject commit abee0bed17773019250dc4ed042fa8fd8763cf23