适用版本:大仓库引擎
脚本作者:小皇子
修复作者:雪舞
问题编号:XUEWU-CSX-038
问题视频
问题描述:
在大理(230,103)处进行打造转移,可以把雕纹信息一起复制到另外的七情刃装备上。就可以无限复制雕纹了。导致全部新的七情刃全部都是雕纹。
转移前的两个装备
源装备创建者信息1:083811870FB20F00690F00730F007D0F&DWA02000
新装备创建者信息2:013A115210B20F005E11006811007211
转换前
转换前
第一次转移后
源装备创建者信息1:013811870FB20F00690F00730F007D0F&DWA02000
新装备创建者信息2:083811870FB20F00690F00730F007D0F
转换后
转换后
可以看到装备信息中的雕纹信息没有被转移。
第二次转移后
源装备创建者信息1:083811870FB20F00690F00730F007D0F&DWA02000
新装备创建者信息2:013A115210B20F005E11006811007211&DWA02000
可以看到两个装备都有雕纹了。
[md]
解决方案
***付费内容***
IDA伪代码
int __cdecl LuaFnShenBingTransition(lua_State_0 *L)
{
long double v1; // fst7
SceneManager_1 *v2; // eax
UINT v3; // eax
UINT v4; // eax
int v5; // eax
int v6; // eax
char v8; // [esp+6h] [ebp-A2h]
int j; // [esp+8h] [ebp-A0h]
int k; // [esp+8h] [ebp-A0h]
unsigned int i; // [esp+Ch] [ebp-9Ch]
CHAR v12[16]; // [esp+10h] [ebp-98h] BYREF
CHAR pOut[16]; // [esp+20h] [ebp-88h] BYREF
UINT pIn[17]; // [esp+30h] [ebp-78h] BYREF
int v15; // [esp+74h] [ebp-34h]
_ITEM *v16; // [esp+78h] [ebp-30h]
_ITEM *m_pItem; // [esp+7Ch] [ebp-2Ch]
Item *v18; // [esp+80h] [ebp-28h]
Item *Item; // [esp+84h] [ebp-24h]
Obj_Human *pHuman; // [esp+88h] [ebp-20h]
Scene_3 *Scene; // [esp+8Ch] [ebp-1Ch]
UINT v22; // [esp+90h] [ebp-18h]
UINT uBagIndex; // [esp+94h] [ebp-14h]
int v24; // [esp+98h] [ebp-10h]
int v25; // [esp+9Ch] [ebp-Ch]
v25 = (int)lua_tonumber(L, 1);
v24 = (int)lua_tonumber(L, 2);
uBagIndex = (int)lua_tonumber(L, 3);
v1 = lua_tonumber(L, 4);
LOBYTE(v2) = v8;
BYTE1(v2) = 12;
v22 = (int)v1;
if ( v24 > 14999 && v24 <= 29999 )
{
Scene = SceneManager::GetScene(v2, SceneID);
if ( (int)Scene > 0 )
{
pHuman = (Obj_Human *)Scene->m_pObjManager->m_pObj[v24];
if ( (int)pHuman > 0 && uBagIndex <= 0x64 && v22 <= 0x64 )
{
Item = HumanItemLogic::GetItem(pHuman, uBagIndex);
v18 = HumanItemLogic::GetItem(pHuman, v22);
if ( Item )
{
if ( v18 )
{
m_pItem = Item->m_pItem;
v16 = v18->m_pItem;
v15 = 0;
memset(pIn, 0, 0x3Au);
sub_804AE40(pIn, "%s", m_pItem->m_Creator);
v3 = sub_7FF6AC3(pIn);
DBStr2Binary((const CHAR *)pIn, v3, pOut, 0x10u, pIn);
sub_804AE40(pIn, "%s", v16->m_Creator);
v4 = sub_7FF6AC3(pIn);
DBStr2Binary((const CHAR *)pIn, v4, v12, 0x10u, pIn);
for ( i = 0; i < *(_DWORD *)dword_22B63A2C; ++i )
{
if ( *(_DWORD *)(dword_22B63A2C + 52 * i + 4) == m_pItem->m_ItemIndex )
{
v12[0] = pOut[0];
pOut[0] = 1;
for ( j = 0; j <= 2; ++j )
{
*(_WORD *)&v12[2 * j + 1] = *(_WORD *)&pOut[2 * j + 1];
*(_WORD *)&pOut[2 * j + 1] = *(_WORD *)(dword_22B63A2C + 2 * (j + 26 * i) + 26);
}
for ( k = 0; k <= 2; ++k )
{
v12[3 * k + 7] = pOut[3 * k + 7];
*(_WORD *)&v12[3 * k + 8] = *(_WORD *)&pOut[3 * k + 8];
pOut[3 * k + 7] = 0;
*(_WORD *)&pOut[3 * k + 8] = *(_WORD *)(dword_22B63A2C + 2 * (k + 26 * i) + 32);
}
Binary2String(pOut, 0x10u, (CHAR *)pIn);
v5 = sub_7FF6AC3(pIn);
sub_804AD80(&m_pItem->m_DarksInfo, pIn, v5);
m_pItem->m_Creator[57] = 0;
_ITEM::SetCreatorVar(m_pItem, 1);
Binary2String(v12, 0x10u, (CHAR *)pIn);
v6 = sub_7FF6AC3(pIn);
sub_804AD80(&v16->m_DarksInfo, pIn, v6);
v16->m_Creator[57] = 0;
_ITEM::SetCreatorVar(v16, 1);
lua_pushnumber(L, 1.0);
return 1;
}
}
}
}
}
}
lua_pushnumber(L, -1.0);
}
else
{
lua_pushnumber(L, -1.0);
}
return 1;
}
剩余 27% 内容需要支付 300.00
金币 后可完整阅读
支持付费阅读,激励作者创作更好的作品。
|