【发布时间】:2018-06-22 10:07:16
【问题描述】:
我对 lua 还很陌生,并且已经盯着 lua 搞砸了。我编写了以下脚本,在数组的帮助下打印出我与构造函数中每个可用对象的距离和角度,但我的方式存在一个大问题:
me = {'["game.exe"+2A]','["game.exe"+A8]','["game"+6A8]'}
botallx = {'["game.exe"+01]','["game.exe"+02]','["game.exe"+03]',
'["game.exe"+04]','["game.exe"+05]','["game.exe"+06]','["game.exe"+07]',
'["game.exe"+08]','["game.exe"+09]','["game.exe"+10]','["game.exe"+11]',
'["game.exe"+12]'}
botally = {'["game.exe"+31]','["game.exe"+32]','["game.exe"+33]',
'["game.exe"+34]','["game.exe"+35]','["game.exe"+36]','["game.exe"+37]',
'["game.exe"+38]','["game.exe"+39]','["game.exe"+30]','["game.exe"+31]',
'["game.exe"+32]'}
botallz = {'["game.exe"+51]','["game.exe"+52]','["game.exe"+53]',
'["game.exe"+54]','["game.exe"+55]','["game.exe"+56]','["game.exe"+57]',
'["game.exe"+58]','["game.exe"+59]','["game.exe"+50]','["game.exe"+51]',
'["game.exe"+52]'}
function sight_angle()
if (isKeyPressed(VK_E)) then
for i=1, 12 do
if (botallx[i] ~= nil or botally[i] ~= nil or botallz[i] ~= nil ) then
vecX=readFloat(me[1])-readFloat(botallx[i])
vecY=readFloat(me[2])-readFloat(botally[i])
vecZ=readFloat(me[3])-readFloat(botallz[i])
distance=math.sqrt(math.pow(calcZ,2)+math.pow(calcX,2))
angleX=math.deg(math.atan2(calcZ, calcX))
print ("current distance is " .. distance)
print ("current angle is " .. angleX)
else --One of the botallx, botally, botallz value was nil
print ("Can't perform calculations due to a nil value")
end
end
end
这些名为 ["game.exe"+...] 的地址包含一个浮点值,但 botally、botallx 和 botallz 容器中的某些对象为 nil 或具有 nil 值。因此,当我执行脚本时,i=1 到 12 的数组开始计算第一个并给我角度和距离,但一直计算直到它从容器中遇到一个具有 nil 值的对象然后不想要继续计算其他对象。
示例:botally 中的对象 1,3,6,botallx 和 botallz 都有值,其他的都是 nil。 它开始计算第一个...给出距离和角度,然后在第二个停止并开始抱怨由于 nil 值而无法执行计算,所以它跳回到第一个对象并给我再看看它的距离和角度。
但我希望它跳过第二个空的 nil 对象并继续处理第三个对象,它有一个值并为我打印距离和角度,然后跳过空的第 4 和第 5 个并计算第 6 个和之后,它可以再次跳回第一个,因为从 7 到 12 的其余部分为零。
但它不想这样做....有人可以帮助我吗?
【问题讨论】:
-
目前,您的表格结构似乎存在问题。检查你的单引号 (
'),因为有一些不匹配的。您在此处显示脚本的方式(忽略构造错误),您的表中没有nil值。 -
那么还有一种强烈的感觉,就是你应该这样做不同。您说您的表中有浮点值(即数字),但您决定使用字符串来存储这些值。这看起来很奇怪。
-
哦,我明白了,我修复了单引号。表中的这些字符串实际上是指向包含浮点值的特定地址的指针地址。
-
你是否使用嵌入的lua,比如c++?在纯lua中,没有指针,那么你到底在做什么?即使您需要指针地址的偏移量,将它们存储为数字而不是字符串仍然会更容易。也许你可以展示一些代码。你从哪里得到偏移量?顺便说一句,您还没有修复单引号,请查看语法突出显示。表格下方的代码是红色的(这是一个字符串)。
-
对不起,我再次检查了它......现在它应该用引号修复。我使用嵌入在名为 Cheat Engine 的程序中的 LUA 来使用指针。我想打印出我与游戏中显示的所有当前机器人的距离和角度