Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 我只想让它循环一次_Loops_Lua - Fatal编程技术网

Loops 我只想让它循环一次

Loops 我只想让它循环一次,loops,lua,Loops,Lua,我有一个循环的问题。我希望它只循环一次,但它会不断打印。如果我返回,脚本将停止,我不希望这样,因为我必须重新启动服务器,脚本总是会被触发。你知道怎么解决这个问题吗 local hit=GetPedLastDamageBone(ped) 局部机会=数学随机(0,10) 本地ped=PlayerPedId() 尽管如此 等待(0) 如果GetEntityHealth(ped)>0,则 如果是DMGByWeapon那么 如果hit==45454或33646,则 印花(“脚”) 结束 结束 结束 结束

我有一个循环的问题。我希望它只循环一次,但它会不断打印。如果我返回,脚本将停止,我不希望这样,因为我必须重新启动服务器,脚本总是会被触发。你知道怎么解决这个问题吗

local hit=GetPedLastDamageBone(ped)
局部机会=数学随机(0,10)
本地ped=PlayerPedId()
尽管如此
等待(0)
如果GetEntityHealth(ped)>0,则
如果是DMGByWeapon那么
如果hit==45454或33646,则
印花(“脚”)
结束
结束
结束
结束
我只想让它循环一次

a的全部目的是多次执行一个代码块

所以,如果只想循环一次,就不需要循环。只需从代码中删除循环即可

local hit = GetPedLastDamageBone(ped)
local chance = math.random(0,10) 
local ped = PlayerPedId()
Wait(0)
if GetEntityHealth(ped) > 0 then
  if DMGByWeapon then
    if hit == 45454 or 33646 then
      print("Foot")
    end
  end
end
但它经常打印

是一个无限循环。该条件始终为真,并且永远不会更改,因此循环将永远运行

如果我返回,脚本将停止

脚本文件被编译为块。被视为匿名函数的主体
return
将终止该函数,从而终止脚本,除非您在该块中的函数定义中使用它

如果要提前停止循环,请使用
break

请阅读Lua手册并做一个初学者教程

if hit == 45454 or 33646 then
   print("Foot")
end
与…相等吗

if hit == 45454 or true then
   print("Foot")
end
这简化为

if true then
  print("Foot")
end
或者干脆

print("Foot")
任何既不是
nil
也不是
false
的值都是
true
因此
33646
在逻辑上是
true
ing任何带有
true的内容
都会产生
true

带有始终满足的条件的if语句是没有意义的

您可以使用逻辑运算符简单地组合条件,而不是嵌套多个if语句

所以不是

if GetEntityHealth(ped) > 0 then
  if DMGByWeapon then
    if hit == 45454 or 33646 then
      print("Foot")
    end
  end
end
你可以写

if GetEntityHealth(ped) > 0 and DMGByWeapon then
  print("Foot")
end
但如果您真的想使用if语句,则需要修复该条件:

if hit == 45454 or hit == 33646 then
  print("Foot")
end

如果您只想循环一次,这意味着您根本不需要循环!我想你可以去掉这个循环,其他的都保持原样。
if hit == 45454 or hit == 33646 then
  print("Foot")
end