M2现已支持多种模式:纯Lua脚本Npc、TXT脚本与Lua混编
纯LuaNPC启用方法如下:
删除原本的txt脚本,以ExternLua\Npcs\作为根目录(默认,可修改配置),以前在Market_Def怎么建文件夹、取文件名就还怎么弄,不过这次后缀换成.lua
用编辑器打开lua脚本,下面的示例进行编写即可
--[[
NPC脚本说明:
使用局部变量定义表并返回
并且需要存在main函数,注意大小写,写错无法正确被M2识别并执行
local npc = {
_click = function(self, args)
self:_main(args)
end,
_main = function(self, args)
local npc = TMerchant(args.pNpc)
npc:Say('这是一段来自Lua脚本的对话!\\<跳转到另一个函数/@另一个触发>', true, args.pPlayer, args.sLabel)
end,
_另一个触发 = function(self, args)
local npc = TMerchant(args.pNpc)
npc:Say('这是另一条消息了,函数名是支持中文的,但Lua函数名不支持@符,所以函数名的@要换为_\\<我懂了/@back>', false, args.pPlayer, args.sLabel)
end,
}
return npc
]]
local npc = {
_click = function(self, args)
local player = TPlayObject(args.pPlayer)
self:_main(args)
end,
_main = function(self, args)
local npc = TMerchant(args.pNpc)
npc:Say('很好办的啦\\<搞起/@另一个触发>', true, args.pPlayer, args.sLabel)
end,
_另一个触发 = function(self, args)
local npc = TMerchant(args.pNpc)
npc:Say('或许吧\\<返回/@back>', false, args.pPlayer, args.sLabel)
end,
}
return npc
TXT老NPC与Lua脚本混编:
请参考下面的例子:
Market_Def\比奇城\测试NPC2-0.txt
[@main]
#SAY
混合写也可以的呢\ \<是的呢/@混合触发>
[@混合触发]
#ACT
LUA_NPC_CALL
[@给他整个活]
#ACT
SendMsg 5 草!走!忽略!
ExternLua\npcs\测试NPC2-0.lua
local npc = {
_混合触发 = function(self, args)
--
local npc = TNormNpc(args.pNpc)
local player = args.pPlayer
local sLabel = args.sLabel
npc:Say('没错呢\\ \\<返回/@back>', true, player, sLabel)
npc:GotoLabel(player, '@给他整个活', false, '')
end,
}
return npc
注意:TXT脚本NPC缺失的触发自动检测相应的Lua脚本
声明:本文系互联网搜索而收集整理,不以盈利性为目的,文字、图文资料源于互联网且共享于互联网。
如有侵权,请联系 yao4fvip#qq.com (#改@) 删除。
如有侵权,请联系 yao4fvip#qq.com (#改@) 删除。