[传奇技术]传奇Lua使用说明 NPC
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脚本
|