QQ登录

只需一步,快速开始

查看: 2118|回复: 0

[系统函数] DelSkill 删除当前玩家的某个技能

[复制链接]

[系统函数] DelSkill 删除当前玩家的某个技能

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:153
  • 打卡月天数:2
  • 打卡总奖励:152
  • 最近打卡:2025-04-03 08:28:12
Waylee

主题

0

回帖

1万

积分

仙帝

积分
18932
Waylee 2020-10-21 17:24 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

更新人员:雪舞
更新时间:2024-12-4


***付费内容***
IDA伪代码(085):

 复制代码 隐藏代码
// 定义 LuaFnTbl 类中的 LuaFnDelSkill 函数,使用 __cdecl 调用约定 int __cdecl LuaFnTbl::LuaFnDelSkill(lua_State *L) {     // 声明局部变量     int i; // 用于循环计数,存储在 EBX 寄存器中     unsigned int v2; // 存储从 Lua 获取的对象 ID,存储在 ESI 寄存器中     Scene_3 *Scene; // 指向 Scene_3 对象的指针,存储在 EBX 寄存器中     Obj_Human *v4; // 指向 Obj_Human 对象的指针,存储在 EBX 寄存器中     int v6; // 用于存储函数调用的返回值,存储在 ESI 寄存器中     const CHAR *v7; // 指向错误描述的指针,位于栈的偏移位置 [ebp-46Ch]     const CHAR *v8; // 指向错误信息的指针,位于栈的偏移位置 [ebp-468h]     SceneManager_1 *const v9; // 指向 SceneManager_1 对象的常量指针,位于 [ebp-464h]     int skillId; // 存储从 Lua 获取的技能 ID,位于栈的偏移位置 [ebp-448h]     SKILL_LOG_PARAM SkillLogParam; // 技能日志参数,位于栈的偏移位置 [ebp-438h],按引用传递     char s[1048]; // 用于存储错误日志信息的缓冲区,位于栈的偏移位置 [ebp-418h],按引用传递     // 检查 Lua 函数的前三个参数是否为数字     for (i = 1; i <= 3; ++i)     {         if (L)         {             // 如果 Lua 状态指针有效,检查第 i 个参数是否为数字             if (lua_isnumber((lua_State_0 *)L, i) == 1)                 continue; // 如果是数字,继续循环             // 如果第 i 个参数不是数字,格式化错误信息             snprintf(s, 0x200u, "ERROR: [%s]Param %d is illegal!", "LuaFnDelSkill", i);         }         else         {             // 如果 Lua 状态指针为空,格式化错误信息             snprintf(s, 0x200u, "ERROR: [%s] Lua_State==NULL!", "LuaFnDelSkill");         }         // 记录错误日志         CacheLog(3, s);     }     // 从 Lua 栈中获取第一个参数并转换为数字(但未使用)     lua_tonumber((lua_State_0 *)L, 1);     // 从 Lua 栈中获取第二个参数并转换为数字,存储在 v2 中(对象 ID)     v2 = (int)lua_tonumber((lua_State_0 *)L, 2);     // 从 Lua 栈中获取第三个参数并转换为数字,存储在 skillId 中(技能 ID)     skillId = (int)lua_tonumber((lua_State_0 *)L, 3);     // 从 Lua 栈中获取第四个参数并转换为数字,存储在 skillLevel 中(技能等级)     // 注意:此处代码中未获取第四个参数,可能是代码不完整或有误     // 通过 SceneManager 获取当前场景对象,传入 v9 和全局场景管理器指针     Scene = SceneManager::GetScene(v9, g_pSceneManager);     if (!Scene)     {         // 如果未找到场景,设置错误描述和指针         v8 = "Scene ID ErrorLuaFnDelSkill";         v7 = "pScene";     LABEL_17:         // 断言失败,输出错误信息并终止程序         __assertex__("./Script/LuaFnTbl_Attr.h", 0x330u, "int LuaFnTbl::LuaFnDelSkill(lua_State*)", v7, v8);     }     // 检查当前线程 ID 是否与场景的线程 ID 一致     if (ThreadValueManager::GetCurrentThreadID() != Scene->m_ThreadID)         __assertex__(             "./Script/LuaFnTbl_Attr.h",             0x330u,             "int LuaFnTbl::LuaFnDelSkill(lua_State*)",             "ThreadValueManager::GetCurrentThreadID()==pScene->m_ThreadID",             "ThreadValueManager::GetCurrentThreadID()==pScene->m_ThreadIDLuaFnDelSkill");     // 检查 v2 是否在有效范围内,并获取对应的 Obj_Human 对象     if (v2 > 0x752F || (v4 = (Obj_Human *)Scene->m_pObjManager->m_pObj[v2]) == 0)     {         // 如果 v2 无效,设置错误描述和指针         v8 = "selfId ErrorLuaFnDelSkill";         v7 = "pObj";         goto LABEL_17;     }     // 调用 Obj_Human 对象的第三个虚函数,检查其状态     if ((*((int (__cdecl **)(Obj_Human *))v4->_vptr_Obj + 2))(v4) == 1)     {         // 如果 Obj_Human 对象可以进行逻辑处理,进一步检查         if (!Obj_Human::IsCanLogic(v4))             __assertex__(                 "./Script/LuaFnTbl_Attr.h",                 0x330u,                 "int LuaFnTbl::LuaFnDelSkill(lua_State*)",                 "pHuman->IsCanLogic()",                 "IsCanLogic() test return falseLuaFnDelSkill");         // 调用 Obj_Human 对象的第 67 个虚函数(假设为 DelSkill),传入 skillId 和 -1         v6 = (*((int (__cdecl **)(Obj_Human *, _DWORD, int))v4->_vptr_Obj + 67))(v4, (__int16)skillId, -1);         // 将返回值 v6 转换为 double 并推送到 Lua 栈中         lua_pushnumber((lua_State_0 *)L, (double)v6);         if (v6)         {             // 如果删除技能成功,记录技能日志             SkillLogParam.OPType = SKILL_OP_TYPE::SKILL_OP_UNKNOW; // 初始化操作类型为未知             SkillLogParam.SceneID = -1; // 初始化场景 ID             SkillLogParam.XPos = 0.0; // 初始化 X 位置             SkillLogParam.ZPos = 0.0; // 初始化 Z 位置             SkillLogParam.SkillID = -1; // 初始化技能 ID             SkillLogParam.Level = -1; // 初始化技能等级             SkillLogParam.Count = 0; // 初始化技能计数             SkillLogParam.CharGUID = Obj_Human::GetGUID(v4); // 获取角色 GUID             SkillLogParam.SceneID = v4->m_pScene->m_SceneID; // 获取当前场景 ID             SkillLogParam.XPos = v4->m_Pos.m_fX; // 获取角色 X 位置             SkillLogParam.ZPos = v4->m_Pos.m_fZ; // 获取角色 Z 位置             SkillLogParam.OPType = SKILL_OP_TYPE::SKILL_OP_SCRIPT_STUDY; // 设置操作类型为脚本学习             SkillLogParam.Count = Obj_Human::Skill_GetSkillList(v4)->m_Count; // 获取技能列表中的技能数量             SkillLogParam.SkillID = skillId; // 设置技能 ID             SkillLogParam.Level = -1; // 设置技能等级为 -1(表示删除)             SaveSkillLog(&SkillLogParam); // 保存技能日志         }     }     else     {         // 如果 Obj_Human 对象的状态不符合要求,推送 -1 到 Lua 栈中         lua_pushnumber((lua_State_0 *)L, -1.0);     }     return 1; // 返回 1,表示向 Lua 返回了一个值 }
付费看帖
剩余 27% 内容需要支付 2.00 金币 后可完整阅读
支持付费阅读,激励作者创作更好的作品。
您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-4-3 14:41 , Processed in 0.109518 second(s), 8 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837
雪舞知识库 WAYLEE.NET QQ:784055837