找回密码
 register

QQ登录

只需一步,快速开始

查看: 1032|回复: 0

[魔改引擎] LuaFnSetItemQual 修正指定装备的星级

[复制链接]

[魔改引擎] LuaFnSetItemQual 修正指定装备的星级

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

主题

0

回帖

1万

积分

仙帝

积分
11929
Waylee 2021-5-30 14:57 | 显示全部楼层 |阅读模式

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

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

×

适用版本:逍遥子引擎
***付费内容***

IDA伪代码(经典地址:8037443 怀旧地址:8033127):

int __cdecl SetItemQual(lua_State_0 *L)
{
  long double v1; // 用于存储物品的品质值
  SceneManager *v2; // 存储场景管理器的指针
  char v4; // 用于设置场景管理器的参数
  _ITEM *m_pItem; // 存储物品的指针
  Item *Item; // 存储物品结构体指针
  Obj_Human *pHuman; // 存储人的对象(玩家/角色)
  Scene *Scene; // 存储场景对象
  int uBagIndex; // 背包中物品的索引
  int v10; // 玩家(或对象)的 ID

  // 获取 Lua 中传入的参数
  lua_tonumber(L, 1); // 获取第一个参数,可能用于校验
  v10 = (int)lua_tonumber(L, 2); // 获取第二个参数,代表玩家或对象的 ID
  uBagIndex = (int)lua_tonumber(L, 3); // 获取第三个参数,物品的背包索引
  v1 = lua_tonumber(L, 4); // 获取第四个参数,物品的品质值(`Qual`)

  LOBYTE(v2) = v4; // 设置场景管理器的低字节为 v4
  BYTE1(v2) = 12; // 设置场景管理器的次低字节为 12

  // 进行一些条件判断,确保有效的玩家和物品
  if ( v10 > 14999 && v10 <= 29999 && 
       (Scene = SceneManager::GetScene(v2, SceneID), (int)Scene > 0) && 
       (pHuman = (Obj_Human *)Scene->m_pObjManager->m_pObj[v10], (Item = HumanItemLogic::GetItem(pHuman, uBagIndex)) != 0) && 
       (m_pItem = Item->m_pItem) != 0 )
  {
    // 如果条件成立,设置物品的品质(Qual)
    m_pItem->_anon_1.m_Equip.m_Qual = (int)v1;
    // 通知服务器物品属性变化
    xyzServerNotifyEquipAttr(pHuman, uBagIndex, Item);
    // 将成功结果推送到 Lua 栈中
    lua_pushnumber(L, 1.0);
  }
  else
  {
    // 如果条件不成立,推送失败结果到 Lua 栈
    lua_pushnumber(L, -1.0);
  }

  // 返回 1,表示有一个返回值
  return 1;
}
付费看帖
剩余 16% 内容需要支付 2.00 金币 后可完整阅读
支持付费阅读,激励作者创作更好的作品。
您需要登录后才可以回帖 登录 | register

本版积分规则

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

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

Powered by XueWu Licensed

Copyright © Tencent Cloud.

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