游戏开发论坛

 找回密码
 立即注册
搜索
楼主: sanikoyes

★★★ 想在 DELPHI 中使用游戏脚本 LUA 吗? ★★★

[复制链接]

16

主题

160

帖子

176

积分

注册会员

Rank: 2

积分
176
QQ
 楼主| 发表于 2005-9-7 17:46:00 | 显示全部楼层

Re:想在 DELPHI 中使用超级游戏脚本 LUA 吗?

  LUA只是提供了一个执行脚本的模块给你的程序使用,同时LUA又是一门语言,LUA内部的库都是用C写的;也就是说,你可以用C或者其他的语言如DELPHI扩展LUA的功能;
  就拿写RPG来说,你可以在程序中定义一个输出NPC对话框的函数,参数为NPC的头像ID和NPC说的话(字符串),然后注册到LUA中,就能使用LUA来输出NPC对话框;
  还有LUA是一门语言的事实保证了你可以非常容易地实现RPG游戏中的条件判断及多重剧情等(通过在LUA中定义全局变量标志),总之,LUA能做的事情很多。
  你可以做个RPG引擎,提供所有RPG应该有的功能,比如对话、获取角色HPMP之类的函数,地图坐标、切换场景、战斗等模块给LUA,然后可以用LUA自由编写脚本也就是剧情了。
  AI等还是用程序来写的好,毕竟LUA的速度和编译器生成的代码是有区别的。 [em5]

9

主题

45

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2005-9-7 17:58:00 | 显示全部楼层

Re:想在 DELPHI 中使用超级游戏脚本 LUA 吗?

谢谢老兄,和我理解的差不多。
但是和我想象的有差距。看来游戏的引擎还是要自己写的。Lua只能在引擎的范围内操作或编码。我开始的时候一直认为这个东东是无所不能的了。
看来目前我是用不到Lua的高级功能了,目前也就能射个参数调整程序。:(

24

主题

213

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
QQ
发表于 2005-10-29 23:21:00 | 显示全部楼层

Re:想在 DELPHI 中使用超级游戏脚本 LUA 吗?

上面有好多的PAS单元,那具体在DELPHI中如何使用?可否举一两个小例子?感谢!

0

主题

9

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2006-3-18 12:26:00 | 显示全部楼层

Re:想在 DELPHI 中使用超级游戏脚本 LUA 吗?

能给出更多大额关于LUA使用的实例就好了,能帮助我们更好学习和理解LUA在游戏里面的设计!我正在准备写一个小的游戏,给我的小侄子玩玩,,是RPG的形式,能够根据喜好改变剧情步骤的,目前正苦恼怎么样做,搂住能不能给一个简单的RPG游戏实例,就是实现几个简单的步骤也可以,我参考一下,谢谢了。。

能发的话,请发到我的邮箱里面:

   mymq0001@163.com

谢谢。

16

主题

160

帖子

176

积分

注册会员

Rank: 2

积分
176
QQ
 楼主| 发表于 2006-4-3 10:49:00 | 显示全部楼层

Re:想在 DELPHI 中使用超级游戏脚本 LUA 吗?

最近尝试了一下用LUA封装C++中的对象,小有收获。使用以下语法:
MyObject = create_object("MyObject");
create_object是注册到LUA的普通函数,参数为字符串也就是对象名,函数返回的是一个METATABLE表,在LUA中就能当做一个对象来操作。
就象:
MyObject.OutText(0, 0, "HELLO");
然后不需要这个对象了,就调用
MyObject.Delete() // 删除对象
当然这些方法都是可以自定义的。
注册C++对象中的数据成员到LUA也很简单,
在构造函数中调用
addField(const char *varName, Type type, void *pAddress, bool canWrite);

16

主题

160

帖子

176

积分

注册会员

Rank: 2

积分
176
QQ
 楼主| 发表于 2006-4-3 10:59:00 | 显示全部楼层

Re:想在 DELPHI 中使用超级游戏脚本 LUA 吗?

后来封装了一下ALLEGRO游戏库到LUA,封装了基本部分和BITMAP、GRAPHICS、KEYBOARD、MOUSE、BLIT、DRAW的一部分后,感觉要封装的东西还很多,所以暂时没有继续封装了。完成后的LUA测试脚本如下:

如果你以前用过ALLEGRO游戏库的话,应该能能看懂;)

allegro = create_object("TAllegro");    // 创建基本对象
graphics = create_object("TGraphics"); // 创建图形(初始化图形模式等)
mouse = create_object("TMouse");  // 创建鼠标对象
keyboard = create_object("TKeyboard"); // 创建键盘对象

allegro.install(SYSTEM_AUTODETECT); // 安装ALLEGRO系统
keyboard.install(); // 安装键盘
mouse.install(); // 安装鼠标

allegro.set_window_title('Hello Allegro!'); // 设置ALLEGRO窗口标题
graphics.set_color_depth(16); // 设置色彩深度为16BIT
graphics.set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0); // 设置DIRECTX窗口模式 640*480

screen = create_object("TBitmap", "screen"); // 创建屏幕位图(SCREEN代表屏幕位图)
mysha  = create_object("TBitmap", "./data/mysha.pcx"); // 创建位图,从PCX文件中载入位图数据
sub = create_object("TBitmap"); // 创建一个空的位图(没有数据)

sub.create_sub(mysha, 100, 100, 50, 50); // 从MYSHA位图中创建子位图
mouse.show(screen); // 显示鼠标指针

draw = screen.draw_sprite; // 引用屏幕位图的绘图函数

while not keyboard.key(59) do
  draw(mysha, math.random(255), math.random(255)); // 随机绘制MYSHA,相当于screen.draw
  sleep(1); // 空闲时间将CPU使用权交给系统,不调用该函数将使程序的CPU占用率保持%99以上
end;

allegro.exit(); // 退出ALLEGRO
quit(); // 结束程序。



0

主题

4

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2006-5-6 10:15:00 | 显示全部楼层

Re:想在 DELPHI 中使用超级游戏脚本 LUA 吗?

谢谢LZ,感动啊。。。
还得多多请教。。。

13

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2006-5-6 19:07:00 | 显示全部楼层

Re:想在 DELPHI 中使用超级游戏脚本 LUA 吗?

如何捕获脚本执行的错误,进行调试?

13

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2006-5-9 11:04:00 | 显示全部楼层

Re:想在 DELPHI 中使用超级游戏脚本 LUA 吗?

楼主好人呐~~

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-8-31 00:37:00 | 显示全部楼层

Re:想在 DELPHI 中使用超级游戏脚本 LUA 吗?

我是新来的!老鸟指教指教
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-26 14:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表