游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7911|回复: 23

Miu.C 来看看。RPG脚本构想。

[复制链接]

45

主题

222

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
发表于 2006-10-27 20:21:00 | 显示全部楼层 |阅读模式
    以下是我以前构思的脚本,后来因为要吃饭被搁置了,没有被补充完整,而且到现在也有完成这个解释器。
    这个构思是根据《火魔》脚本参考而来。当时辛巴给了很多建议。
    请各位大哥小弟们不要灌水。

---------------------------------------------------------------------------------------------------------------------
一、预处理:处理一些地图信息,人物,NPC等基本地图组件
    使用此模块建立最初的地图组件,使用地图显示出来,并交付控制台(玩家)控制。
define
end define

二、事件:行走点,点击。
    玩家行走到某区域的事件,玩家点击。
    所有事件后只能调用函数来执行,即便只有一条语句。
events
    eventarea x1,y1,x2,y2,func()        //玩家行走到x1,y1,x2,y2时调用函数func();
    eventclick 对象A,func()             //玩家点击对象A后,调用函数func();
end events

三、函数:可以在预处理里或事件里调用
function func_name()
    exit function
end function

四、判断语句:可以在以上一/三模块中调用
if 条件 then
else
end if

五、运算方法
add(变量1,值或变量2)               //将变量1加上值或变量2的和,再送到变量1
sub(变量1,值或变量2)               //减法
mul(变量1,值或变量2)               //乘法
div(变量1,值或变量2)               //除法
let(变量1,值或变量2)               //赋值。将值或变量2送到变量1.

六、方法:可以在判断语句、函数、预处理中使用。
LoadBgTexture(材质编号,名称)       //载入背景材质;
LoadSpriteTexture(材质编号,名称)   //载入对象的材质;
CreateObject(材质编号,对象名称)    //从载入的对象材质里建立一个对象;
Locate(对象,方向,位置X,位置Y)      //设置对象的方向和所在的位置;
Release(对象)                      //释放对象;
Show(对象,显示值0-255)             //显示对象,显示值为0时效果同Hide;
Hide(对象)                         //隐藏对象;
PlayerLength                       //玩家组里的人员数量;
PlayerExist(名称)                  //指定的玩家名称是否存在;
PlayerAdd(名称)                    //玩家群里加入一个成员;
ThingAdd(名称)                     //增加一件物品;
ThingNumber(名称)                  //返回某物品的数量;
ThingLength()                      //所有物品类别数量;
ThingUse(名称)                     //使用某物品
View(x,y,mode)                     //显示地图位置,mode是立即显示还是移动显示;
MoveTo(对象,x,y)                   //移动对象到新位置x,y;
Talk(对象,对话内容)                //某人在说话。对话内容可含控制符(\\代替字符"\",\n代替换行,\cffffff代替颜色值FFFFFF);
Message(消息内容)                  //系统消息,对话内容可含控制符;
Select(条目,变量)                  //选择条目,并将选择结果返回到变量中;
FadeIn()                           //淡入;
FadeOut()                          //淡出;
Buy(等级,变量)                     //买卖系统,根据等级控制可购买的东西,购买结果返回变量中;
Fight(等级,变量)                   //战斗系统,根据等级控制战斗的难易度,战斗结果返回变量中;
Var(变量,值)                       //定义全局变量,将值设为变量的初始化值,更换场景时不会被丢失;
Dim(变量,值)                       //定义局部变量,将值设为变量的初始化值,更换场景时将被丢失;
Map(地图名)                        //更换地图;
Sound(文件名,mode)                 //播放音效,mode控制是否循环;
Music(文件名,mode)                 //播放音乐,mode控制是否循环;
play(文件名)                       //播放一段媒体文件,avi,mpeg,mp3,midi,wave;
Timer(n,mode)                      //设置一个计时器,以秒为单位,mode是否显示计时器情况;
End()                              //结束;

45

主题

222

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
 楼主| 发表于 2006-10-27 20:33:00 | 显示全部楼层

Re:Miu.C 来看看。RPG脚本构想。

个人觉得写脚本不一定要用什么语言,具体怎么写法或如何定义,是根据封装的函数结构来决定的。

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2006-10-27 21:47:00 | 显示全部楼层

Re:Miu.C 来看看。RPG脚本构想。

MIU.C是用什么语言的?

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2006-10-27 21:55:00 | 显示全部楼层

Re:Miu.C 来看看。RPG脚本构想。

还好vb.net能动态编译,直接把vb.net或者c#代码当脚本,不需要自己去设计脚本语言

45

主题

222

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
 楼主| 发表于 2006-10-28 12:55:00 | 显示全部楼层

Re:Miu.C 来看看。RPG脚本构想。

.net能动态编译吗?学了这么久还没发现这个功能,郁闷啊.

    不过用VB写游戏的一般不用.net,那个.net framework 2.0就让机器配置不好的性能又下降好多,而且支持dx9.0的显示卡还没普及吧.如果用.net结合dx8,不太好吧.
    .net也不是啥都不好,比如写数据库就比vb6强多了.呵呵..

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2006-10-28 15:02:00 | 显示全部楼层

Re:Miu.C 来看看。RPG脚本构想。

LZ的构想太棒了。

我有一点疑惑,就是赋值语句怎么能被判断?
你用的是:
  let(变量1,值或变量2)               //赋值。将值或变量2送到变量1.
我用的是
SetValue()
其实都是一样。
怎么像VB里面或C里面一样呢??
a := b + c 或是a = b + c。

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2006-10-28 15:09:00 | 显示全部楼层

Re:Miu.C 来看看。RPG脚本构想。

这些语句果然比较全面!太强了。

那么多语句调试的时候肯定很麻烦。我觉得要让语句通过率高一些的方法有
(1):有没有什么自定义语句的加亮文本编辑控件呢??
(2):有一个自己的代码检查系统。
LZ有没有这方面的资料,谢谢!!

LZ是不是就是火魔的作者啊??好强啊,可以给我留个联系方式吗??谢谢~~

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2006-10-28 18:56:00 | 显示全部楼层

Re:Miu.C 来看看。RPG脚本构想。

理论就是理论,和实际游戏制作差的远。
不信的话,马上写一个。

45

主题

222

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
 楼主| 发表于 2006-10-29 14:33:00 | 显示全部楼层

Re:Miu.C 来看看。RPG脚本构想。

    很抱歉,在发这个的贴的时候就说了,只是构思,并没有实际开发,当时在写地图编辑器的时候考虑过将脚本编辑器嵌入到其中,使用控件选择的方式进行脚本编写,可惜只完成了整体的30%左右,主要的而且也是最重要的部分都没有动作。
    就像游戏之家说的那样,理论就是理论,所有的构思必须通过实际动作才能通过,在实际运用中很多构思都必须更改,就如你说的运算和赋值一样,使用i=i+1,i+=1等比let(i,i)的效果就好得多,但是在实际运用中,我们必须得找到一个关键字来判断这个语句来干什么的。
    在你贴出的设置精灵的位置语句中,就少了方向这个参数,类似的还有一些,所以才贴出我的想法仅供参考。
    肯定的我不是火魔的作者,只是制作火魔最初的发起者,当时我用的vb+API,但API那玩意儿用的时间一长,程序就死掉,解决不了,才学用DX。这样的开发进度就拖长了,又遇上kingsimba的加入,就由它完成程序的所有制作了,我就去为吃饭忙碌。呵呵。。
    我是参考king的想法和星际争霸的脚本编辑构思出来的,当然得根据自己的能力,做不了就得换一种方式。

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2006-10-29 14:57:00 | 显示全部楼层

Re:Miu.C 来看看。RPG脚本构想。

我有直接设置精灵方向的语句了,设置位置就单独分开。
关于a = b + c,lingjingqiu朋友说可以用正则文法构造,好像编译原理里面有的。
实际应用中不是要用其他的语句逃避它,而是解决它。

还有,你的火魔真的很棒。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 20:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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