找回密码
 register

QQ登录

只需一步,快速开始

查看: 62|回复: 0

[魔改引擎] LuaFnMtl_GetCostNum 同时返回多个物品的总拥有量 多种物品数量

[复制链接]

[魔改引擎] LuaFnMtl_GetCostNum 同时返回多个物品的总拥有量 多种物品数量

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:94
  • 打卡月天数:17
  • 打卡总奖励:94
  • 最近打卡:2025-01-18 01:28:20
Waylee

主题

0

回帖

1万

积分

仙帝

积分
11929
Waylee 2022-7-23 22:30 | 显示全部楼层 |阅读模式

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

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

×

***付费内容***

IDA伪代码(怀旧地址:8034735、经典地址:80392C2)

int __cdecl LuaFnMtl_GetCostNum(lua_State_0 *L)
{
  long double v1; // 用于存储从 Lua 栈中获取的第一个参数
  SceneManager *v2; // 存储场景管理器的指针
  char v4; // 辅助变量,可能用于初始化场景管理器
  int uItemIndex; // 用于存储从 Lua 栈获取的物品索引
  int i; // 循环计数器
  Obj_Human *pHuman; // 存储当前角色对象
  Scene *Scene; // 存储当前场景对象
  int v9; // 用于累计计算的物品数量
  int v10; // 用于存储角色 ID(从 Lua 栈中获取)

  // 从 Lua 栈中获取两个参数
  lua_tonumber(L, 1); // 获取第一个参数,但未保存(没有使用)
  v1 = lua_tonumber(L, 2); // 获取第二个参数,保存为 v1

  // 初始化场景管理器的指针
  LOBYTE(v2) = v4; 
  BYTE1(v2) = 12; 

  v10 = (int)v1; // 将参数 v1 转换为整数,作为角色 ID
  v9 = 0; // 初始化物品数量计数器为 0

  // 检查角色 ID 是否在有效范围(大于 14999 且小于等于 29999)
  if ( (int)v1 > 14999 && v10 <= 29999 )
  {
    // 获取当前场景对象
    Scene = SceneManager::GetScene(v2, SceneID);

    // 检查场景是否有效
    if ( (int)Scene > 0 )
    {
      // 获取角色对象(通过场景中的对象管理器)
      pHuman = (Obj_Human *)Scene->m_pObjManager->m_pObj[v10];

      // 检查角色对象是否有效
      if ( (int)pHuman > 0 )
      {
        // 遍历 Lua 栈中的额外物品索引参数
        for ( i = 1; i <= 8; ++i )
        {
          // 获取物品索引
          uItemIndex = (int)lua_tonumber(L, i + 2);

          // 如果物品索引大于等于 10000000,计算该物品的数量
          if ( uItemIndex >= 10000000 )
            v9 += HumanItemLogic::CalcBagItemUnLockCount(pHuman, uItemIndex);
        }
      }
    }

    // 将计算的物品数量推送到 Lua 栈
    lua_pushnumber(L, (double)v9);
  }
  else
  {
    // 如果角色 ID 无效(不在有效范围内),推送 -1 返回给 Lua
    lua_pushnumber(L, -1.0);
  }

  return 1; // 返回 1,表示 Lua 栈中有一个返回值(物品数量或错误标记)
}

***付费内容***

付费看帖
剩余 60% 内容需要支付 2.00 金币 后可完整阅读
支持付费阅读,激励作者创作更好的作品。
您需要登录后才可以回帖 登录 | register

本版积分规则

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

GMT+8, 2025-1-18 15:44 , Processed in 0.150497 second(s), 8 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表