导航菜单
首页 » 石器私服教程 » 正文

石器Lua的实践与运用4

在第三章提到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)