我有大约100条if语句,我能以更好的方式做到这一点吗?
function onSay (cid, words, param)
mark = string.lower(param)
if mark == "kojo" then
moveTo(cid, {x=32838, y=31926, z=7})
sendEffect({x=32838, y=31926, z=7}, 10)
elseif mark == "habala" then
moveTo(cid, {x=32838, y=31926, z=7})
sendEffect({x=32838, y=31926, z=7}, 10)
end
-- and so on.....
end
答案 0 :(得分:8)
使用mark
作为关键字创建一个表,其中每个元素都是一个包含四个参数的表(x
,y
,z
,以及最后一个10
代表)。然后,您的onSay
方法可以作为表查找实现,然后使用已标识元素中的值调用moveTo
和sendEffect
。您仍然需要构建表,但是您可以从文件中读取它或将其移动到单独的模块中,因此它不会支配您的onSay
方法。
答案 1 :(得分:1)
LUA缺少C风格的开关,我们讨论了这个问题here,建议您使用不同的方法。
也许此链接可能对您有所帮助。希望它能做到!
答案 2 :(得分:0)
如果我了解您尝试做的事情,可以尝试使用
function onSay (cid, words, param)
mark = param:lower()
if mark:search("kojo", "habala", "and", "so", "goes", "on")
then
moveTo(cid, {x=32838, y=31926, z=7})
sendEffect({x=32838, y=31926, z=7}, 10)
end
当然除非moveTo和sendEffect总是具有相同的值