在第三章提到npc.CreateNpc
CreateNpc是npc库中的一个接口 (具体请查看\gmsv\mylua\npcbase.c文件)
上图为npc库接口
在第三章知道如何服务器启动后生成NPC
下面内容是如何与创造的NPC之间传送封包
在接口npc.Createnpc()生成后,它得到一个整数值
这个整数就代表NPC编号,除非服务器重启再次执行一次
npc.Createnpc(), 否者该编号不会改变
人物,宠物和NPC都是一样,每一次登录,都会得到一个编号
这个编号一定是大于0的整数,直到登出后编号消失
上图的变量npcindex = npc.Createnpc()
既是npcindex=NPC编号, 再由char.setFunctionPointer() --给对象设定一个事件
给NPC设定事件 char.setFunctionPointer(对像索引,事件标志,函数名,路径)
npcindex已知是NPC的编号
上图的 "1" 对应的是一个常量(事件标签) -- 常量,即是不会改变的量,事件标签的常量分别有 初始化事件 循环事件 对话事件 窗口事件 重叠事件 战后事件 等
"2"对应 函数名 --既然是函数,函数名称也就允许自拟
"3"对应的是该函数的路径 --如果 function WndowTalked 这个函数不是写在该文件 需要把路径写上 否则默认为该文件
之后,只要有玩家与npc对话,就会触动函数Talked()
为了更好理解脚本的自拟性 这里把函数Talked名改为 "shuohua" npcindex 改为npc
在函数shuohua()里有4个参数 --参数名字可自拟
meindex = npc (npc编号) --整数型
talkerindex = "说话的人"(即为玩家编号) --整数型
SzMes = 说话内容 -- 字符型
color = 说话颜色 --整数型
这里的用到了npc库里的isFaceToFace --注意接口一定要按照大小写
这个接口意味着,必须面对面与NPC对话,得到的值才等于1
这个值得到的是1 则执行print ("测试") 服务器会打印出 测试
如果不是1 则直接结束
常量,为源码固定的量,比如 "攻击" "防御" "声望" "活力" 等
格式,接口所用到的参数,格式必须正确
如: npc.isFaceToFace(meindex,talkerindex)
如果接口错误,则服务器会提示读取错误
如果参数错误(参数名写错),参数未被定义
在接口处直接结束,源码检测 该接口必须以2个整数形式取值
评论(0)