|
禁止访问
- UID
- 4538
- 精华
- 3
- 积分
- 826
- 威望
- 2 度
|
阁楼
大 中
小 发表于 2011-4-26 08:54 只看该作者
GMSV LUA脚本解析器 功能预览1 - NPC循环事件
经过长达一年的测试,gmsvplus正式问世了咯,详情请见:http://bbs.mocwww.com/viewthread.php?tid=27866&extra=page%3D1魔力私服,最新魔力宝贝私服技术交流& `8 p/ g8 Y/ B( j1 `; y
8 w% Z3 W8 P& x3 e魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表LUA是一款轻量级的脚本语言,很多目前市面上的游戏都有引用这款脚本语言,比如魔兽世界的客户端插件等 0 X5 a9 h& T _$ g/ L( [3 C) ]
本次的GMSV LUA脚本解析器,则是将LUA语言直接植入了GMSV中,让GMSV除了有自身的脚本功能外,还能增加更多的扩展性功能
2 |7 l4 w9 T2 D; B% C0 ^魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 E j- |7 N* V! v( k) k
本次展示的功能是 NPC的循环事件,展示的方式是 NPC的随机走动 bbs.mocwww.com" t7 \1 y- o8 z& P1 f
用户在gmsv的目录下新建两个文件 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 o$ y% ^0 I& ]" y' M, [0 H0 ]/ f
1. hello.lua
4 U! a& j: o# `3 j: |魔力私服,最新魔力宝贝私服技术交流这个文件是lua脚本引擎的初始化脚本,内容如下 复制内容到剪贴板 代码:--生成NPC的函数
function GMSV_NPC_Init()
if (TestNpc_index == nil) then --如果NPC没有被生成过 则进行生成
--创建NPC 第一个参数是 TestNpc_Init函数 所在的文件 第二个参数是NPC初始化时候会调用的函数
TestNpc_index = NL.CreateNpc("testnpc.lua", "TestNpc_Init");
end
--创建成功后,对NPC进行一些初始化操作
Char.SetData(TestNpc_index,%对象_形象%,105508); --设置NPC的形象为105508
Char.SetData(TestNpc_index ,%对象_原形%,105508);--同上
Char.SetData(TestNpc_index ,%对象_MAP%,0); --设置NPC的MAP ID为0
Char.SetData(TestNpc_index ,%对象_地图%,1000); --设置NPC的Floor ID为1000,即法兰城
Char.SetData(TestNpc_index ,%对象_X%,72); --设置NPC的X坐标为72
Char.SetData(TestNpc_index ,%对象_Y%,88); --设置NPC的Y坐标为88
NLG.UpChar(TestNpc_index); --更新NPC的设置信息,并且发送给周围玩家
--给NPC注册一个循环事件,循环调用TestNpc_Loop_Func函数,循环间隔为1000毫秒(1秒)
if (Char.SetLoopEvent(nil, "TestNpc_Loop_Func", TestNpc_index, 1000) < 0) then
print("TestNpc_Loop_Func 注册事件失败。");
end
end
--调用生成NPC的函数
GMSV_NPC_Init();2.testnpc.lua
) n7 \+ e% k; c" D% N—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这个文件包含了几个npc的事件 复制内容到剪贴板 代码:--NPC初始化的函数,不需要特别做说明,直接返回成功(true)既可
function TestNpc_Init( _MeIndex )
return true;
end
--NPC的循环函数,即随机走路函数
function TestNpc_Loop_Func(_MeIndex)
--定义一个随机数种子,这样取的随机数每次都会不一样
math.randomseed(os.time());
--取一个0-7的随机数,代表NPC移动的方向
local dir= math.random(0, 7);
--设置NPC状态为走路
local walk = 1;
NLG.SetAction(_MeIndex,walk);
--让NPC走一步
NLG.WalkMove(_MeIndex,dir);
--获取当前NPC的新的坐标
local x = Char.GetData(_MeIndex,%对象_X%);
local y = Char.GetData(_MeIndex,%对象_Y%);
--定义一个NPC的说话内容,汇报自己的位置
local buf = "我目前的位置是["..x..","..y.."]哦."
--让NPC把这句话告诉给所有玩家,-1表示对所有玩家,0,0表示字体和颜色,这里是普通字体和白色字
NLG.TalkToCli(-1,_MeIndex,buf,0,0);
endgmsv在启动过程中会自动执行这些脚本 不影响原本的NPC生成和触发 bbs.mocwww.com0 |( d; u4 l$ {3 l4 E
以下是上面的脚本的执行效果,即一个NPC每秒随机走一步,并且将坐标发送给所有玩家 魔力私服,最新魔力宝贝私服技术交流: A2 M1 D5 | b7 V+ ^ N3 V. |
[flash]http://www.tudou.com/v/5prCZQXpips/&rpid=79180957/v.swf[/flash] 妖城在线论坛" w9 f2 H: i$ z7 g; H
bbs.mocwww.com' o$ `- h8 z( }& ?5 W$ ~6 c
[ 本帖最后由 freefs 于 2012-4-2 21:04 编辑 ]
|