IsWaiGuaUser(sceneId,selfId)
返回值为被限制的时间
IDA伪代码:
int __cdecl LuaFnTbl::LuaFnIsWaiGuaUser(lua_State *L)
{
int i; // ebx
long double v2; // fst7
SceneManager_1 *const v3; // eax
Scene_3 *Scene; // ebx
Obj *v5; // ebx
const CHAR *v7; // [esp-14h] [ebp-44Ch]
const CHAR *v8; // [esp-10h] [ebp-448h]
double IsDefentWaigua; // [esp-Ch] [ebp-444h]
unsigned int selfId; // [esp+10h] [ebp-428h]
SceneID_t sceneId; // [esp+14h] [ebp-424h]
char v12; // [esp+1Eh] [ebp-41Ah]
char s[1048]; // [esp+20h] [ebp-418h] BYREF
for ( i = 1; i <= 2; ++i )
{
if ( L )
{
if ( lua_isnumber((lua_State_0 *)L, i) == 1 )
continue;
snprintf(s, 0x200u, "ERROR: [%s]Param %d is illegal!", "LuaFnIsWaiGuaUser", i);
}
else
{
snprintf(s, 0x200u, "ERROR: [%s] Lua_State==NULL!", "LuaFnIsWaiGuaUser");
}
CacheLog(3, s);
}
sceneId = (__int16)lua_tonumber((lua_State_0 *)L, 1);
v2 = lua_tonumber((lua_State_0 *)L, 2);
LOBYTE(v3) = v12;
BYTE1(v3) = 12;
selfId = (int)v2;
Scene = SceneManager::GetScene(v3, *(int *)&g_pSceneManager, sceneId);
if ( !Scene )
{
v8 = "Scene ID ErrorLuaFnIsWaiGuaUser";
v7 = "pScene";
LABEL_17:
__assertex__("./Script/LuaFnTbl_DoAction.h", 0x3Bu, "int LuaFnTbl::LuaFnIsWaiGuaUser(lua_State*)", v7, v8);
}
if ( ThreadValueManager::GetCurrentThreadID() != Scene->m_ThreadID )
__assertex__(
"./Script/LuaFnTbl_DoAction.h",
0x3Bu,
"int LuaFnTbl::LuaFnIsWaiGuaUser(lua_State*)",
"ThreadValueManager::GetCurrentThreadID()==pScene->m_ThreadID",
"ThreadValueManager::GetCurrentThreadID()==pScene->m_ThreadIDLuaFnIsWaiGuaUser");
if ( selfId > 0x752F || (v5 = Scene->m_pObjManager->m_pObj[selfId]) == 0 )
{
v8 = "selfId ErrorLuaFnIsWaiGuaUser";
v7 = "pObj";
goto LABEL_17;
}
if ( (*((int (__cdecl **)(Obj *))v5->_vptr_Obj + 2))(v5) == 1 )
{
if ( !Obj_Human::IsCanLogic((Obj_Human *const)v5) )
__assertex__(
"./Script/LuaFnTbl_DoAction.h",
0x3Bu,
"int LuaFnTbl::LuaFnIsWaiGuaUser(lua_State*)",
"pHuman->IsCanLogic()",
"IsCanLogic() test return falseLuaFnIsWaiGuaUser");
IsDefentWaigua = (double)GamePlayer::IsDefentWaigua((GamePlayer *const)v5[1520].m_pScene);
lua_pushnumber((lua_State_0 *)L, IsDefentWaigua);
}
else
{
lua_pushnumber((lua_State_0 *)L, 0.0);
}
return 1;
}
|