Lua "if...then"语句不响应
2018-3-6 22:0:18
收藏:0
阅读:94
评论:1
我是一个新手,在Operation Flashpoint: Dragon Rising的任务编辑器中使用LUA制作任务。我试图在一周左右的时间里完成脚本,搜索了谷歌,编辑了脚本,并查阅了编辑器的帮助索引,直到眼睛都流血了,但是所有的努力最终都落空了。
我遇到的问题是这个"if...then"语句不起作用。首先,这是整个脚本:
function onMissionStart()
OFP:showLetterBoxOsd(false);
OFP:allowPlayerMovement(true);
OFP:allowPlayerFire(true);
OFP:setObjectiveState("Wave1","IN_PROGRESS");
OFP:setObjectiveState("Wave2","IN_PROGRESS");
OFP:activateEntitySet("enemy1");
end --这似乎一切正常,没有什么可看的。
--OFP:isAlive(单位或实体集的名称)
function isAlive() --给这个函数命名之后,一个棘手的 "'<name>' expected near 'if'" 错误消失了,这很好。
if OFP:isAlive("enemy1") == (false) --这个"if..Then"语句应该在"enemy1"死亡时生成"enemy2"。
then
OFP:activateEntitySet("enemy2");
end
if OFP:isAlive("enemy2") == (false)
then
OFP:setObjectiveState("Wave2","COMPLETED")
OFP:missionCompleted()
end
end
现在给我麻烦的部分是:
function isAlive()
if OFP:isAlive("enemy1") == (false)
then
OFP:activateEntitySet("enemy2");
end
这应该在"enemy1"死亡时生成"enemy2",但在游戏中它几乎不存在,它不起作用。
以下是命名我的函数,下一行代码原本是 "'
function isAlive()
这应该跟踪"enemy1"是否仍然存活,如果返回false,则应该生成"enemy2"。
if OFP:isAlive("enemy1") == (false)
then
OFP:activateEntitySet("enemy2");
end
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

以下是代码:
function onMissionStart() OFP:showLetterBoxOsd(false); OFP:allowPlayerMovement(true); OFP:allowPlayerFire(true); OFP:setObjectiveState("Wave1","IN_PROGRESS"); OFP:setObjectiveState("Wave2","IN_PROGRESS"); OFP:activateEntitySet("enemy1"); end function isAlive() if OFP:isAlive("enemy1") == (false) then OFP:activateEntitySet("enemy2"); end if OFP:isAlive("enemy2") == (false) then OFP:setObjectiveState("Wave2","COMPLETED") OFP:missionCompleted() end end EventScripts = { onAllPlayersDead = 0, onArriveAtWaypoint = 0, onCmdCompleted = 0, onDeath = 0, onDespawnEntitySet = 0, onDespawnEntity = 0, onDismount = 0, onEnter = 0, onEnterRVPoint = 0, onFirepowerKill = 0, onHit = 0, onIdentified = 0, onIncap = 0, onLand = 0, onLeave = 0, onMissionStart = 0, onMobilityKill = 0, onMount = 0, onMultiplayerMissionLoaded = 0, onNoAmmo = 0, onNoAmmoAll = 0, onObjectDamage = 0, onObjectiveCompleted = 0, onObjectiveFailed = 0, onObjectiveVisible = 0, onOffboardSupp = 0, onPinned = 0, onPlaceableKill = 0, onPlayEnter = 0, onPlayDone = 0, onPlayFailed = 0, onPlayInvalid = 0, onPvPMissionEnd = 0, onRespawn = 0, onSpawnedReady = 0, onSpeechEnd = 0, onSuppressed = 0, onSuspected = 0, onUnsuppressed = 0, }以上代码定义了两个函数。
onMissionStart()函数最可能是当任务开始时由游戏调用的函数。我没有找到任何官方参考手册,但游戏似乎具有一些基于事件的脚本系统。您提供的剩余代码可能只在加载文件时执行,因此在游戏中没有任何效果。
编辑 根据评论:
上面的代码定义了
onMissionStart()函数。它最有可能实现了一个函数,当任务开始时由游戏调用。如果我没有记错,您添加了以下代码:
-- OFP:isAlive(部队名称或实体集名称) function isAlive() -- 在为该函数命名后,一个令人恼火的 "'<name>' expected near 'if'" 错误消失了,这很好。 if OFP:isAlive("enemy1") == (false) -- 当“enemy1”死亡时,该“if...then”语句应该生成“enemy2”。 then OFP:activateEntitySet("enemy2"); end if OFP:isAlive("enemy2") == (false) then OFP:setObjectiveState("Wave2","COMPLETED") OFP:missionCompleted() end end这也定义了一个函数。
isAlive()函数被谁调用以及何时调用?我在 DROPP 中找到了一个事件列表。我假设这就是您所说的任务编辑器。在某些事件上,它会运行一些函数。例如,如果所有玩家都死了,就会调用
onAllplayersDead()。解释所有这些内容超出了该社区的范围。只需阅读 http://www.suderman.com/OFPDR/DROPP/reference.html 中的所有内容和 http://www.suderman.com/OFPDR/DROPP/download.html 中的所有文件即可。
EventScripts = { onAllPlayersDead = 0, onArriveAtWaypoint = 0, onCmdCompleted = 0, onDeath = 0, onDespawnEntitySet = 0, onDespawnEntity = 0, onDismount = 0, onEnter = 0, onEnterRVPoint = 0, onFirepowerKill = 0, onHit = 0, onIdentified = 0, onIncap = 0, onLand = 0, onLeave = 0, onMissionStart = 0, onMobilityKill = 0, onMount = 0, onMultiplayerMissionLoaded = 0, onNoAmmo = 0, onNoAmmoAll = 0, onObjectDamage = 0, onObjectiveCompleted = 0, onObjectiveFailed = 0, onObjectiveVisible = 0, onOffboardSupp = 0, onPinned = 0, onPlaceableKill = 0, onPlayEnter = 0, onPlayDone = 0, onPlayFailed = 0, onPlayInvalid = 0, onPvPMissionEnd = 0, onRespawn = 0, onSpawnedReady = 0, onSpeechEnd = 0, onSuppressed = 0, onSuspected = 0, onUnsuppressed = 0, }