不好意思~~在下又来麻烦各位板友了
最近在试做移动特效的时候
调用了 WAR_MovePerson 函数来移动人物
可是却在战斗时跳出
DEBUG文件显示
17:00:07 .\script\LDCR.lua:8747: attempt to perform arithmetic on field '人方向' (a nil value)
17:00:07 stack traceback:
.\script\LDCR.lua:37308: in function <.\script\LDCR.lua:37306>
.\script\LDCR.lua:8747: in function 'WarCalPersonPic'
.\script\LDCR.lua:43529: in function 'War_MovePerson'
.\script\LDCR.lua:23542: in function 'WarMain'
readkdef.hsk:911: in function 'ReadKDEF'
readkdef.hsk:2: in function 'oldCallEvent'
.\script\LDCR.lua:38869: in function 'oldEventExecute'
.\script\LDCR.lua:28692: in function 'EventExecute'
.\script\LDCR.lua:29162: in function 'Game_SMap'
.\script\LDCR.lua:28957: in function 'Game_Cycle'
.\script\LDCR.lua:35902: in function <.\script\LDCR.lua:35817>
[C]: in function 'xpcall'
.\script\LDCR.lua:35815: in function <.\script\LDCR.lua:35813>
好像是在 WarCalPersonPic 里
--计算战斗人物贴图
function WarCalPersonPic(id)
local n = 5106
n = n + JY.Person[WAR.Person[id]["人物编号"]]["头像代号"] * 8 + WAR.Person[id]["人方向"] * 2
return n
end
人方向的部份值为 nil 造成的
可是我并没有动到关于此函数的部分
只有直接呼叫 WAR_MovePerson 函数
if War_CanMoveXY(jump[locate][1], jump[locate][2], 0) == true then
War_MovePerson(jump[locate][1], jump[locate][2])
DIYdisplay("Jump!!") --试做显示用
break;
else
movefail = movefail + 1
locrnm[locate] = 1
end
像这样做而已,请问是什么地方没有设定到吗 ?
因为我看 movemenu 里
local r = nil
local x, y = War_SelectMove()
if x ~= nil then
War_MovePerson(x, y, 1)
r = 1
else
r = 0
WAR.ShowHead = 1
Cls()
End
也是直接呼叫并没有另外设定数值 ?
因此想请教各位程序大大,是我有什么地方忽略了吗 ?
还请不吝指教~~感激不尽
|