loading请求处理中...
x

怎么制作脚本

提问者:和胜服饰 4回答 浏览次数:179 提问时间: 2012/07/14 09:57
提问者采纳
怎么制作脚本 的方法很简单

那就是首先掌握一种脚本语言
当前最流行的脚本语言有 javaScript 和 VbScript

其中javaScript 已经成为主流
是各浏览器默认的脚本语言

学完后,你就好好的深入思考;
灵活运用其中的语法和规则

相信你能作出很好的脚本!

全部回答

  • 0
    效果图表现 2012/07/14 11:07
    游戏脚本制作
    一个游戏引擎做好了,最重要的是缺什么?脚本。打个比方,游戏引擎是一部电脑,则脚本就是电脑的软件。既然脚本这么重要,那该怎样实现呢?下面我就来说说我的做法。
    首先理解一下消息循环
    一个好的游戏离不开好的消息循环。它是游戏实现很重要的一部分。下面我就来说说我的游戏《宿命传说》的做法。
    首先,我定义了一个全局变量extern int GameState;
    在游戏中定义了许多当前的游戏状态例如
    #define GAME_STATE_CUSTOM 0 //这代表在战斗中玩家可以控制游戏
    #define GAME_STATE_TALKING 1
    等等。
    好了,下面在WinMain里面的while(1)循环中有个UpdateScreen()函数
    原型为
    void UpdateScreen()
    {
    延时
    switch(GameState)
    {
    case GAME_STATE_CUSTOM:
    画出地图
    画出所有精灵
    画出天气(如果有的话)
    如果玩家选中了敌人的话(打个比方DrawFlag=DrawEnemyState)就显示敌人的移动范围和敌人状态
    break;
    case GAME_STATE_TALKING:
    GameDialogProc();
    break;
    case GAME_STATE_SCRIPTCONTROLLING:
    ScriptControlProc();
    break;
    ….//其他的消息在这里处理
    }
    将缓冲表面的图象显示到屏幕;
    }
    每个游戏状态都需要一个独立的函数来写。这样在每次切换游戏状态时都不会出现无法处理的情况。
    在处理键盘消息的时候我也用一个个独立的函数来写
    如处理回车键我用了 KeyReturnProc()来控制
    在这个函数里同样也少不了switch(GameState)这一句,为什么?
    答案很简单,比如说在精灵行走时回车键就没有用,这是我没有处理精灵行走这个状态的键盘消息。而在战斗场景里按下回车键,如果有精灵在选择框里的话,就会处理相应的东西。
    例如选择了敌人则使DrawFlag=DrawEnemyState;这样在更新屏幕时就会画出敌人的移动范围和状态。
    明白了吗?好了,如果你明白了消息循环的原理,下面的东西就很容易理解了。
    下面谈谈脚本控制
    要实现这个,就必须在UpdataScreen()这个函数中拦截一个“脚本控制”的消息,并调用相应的处理函数:ScriptControlProc();
    那么怎样得到“脚本控制”这个消息呢?
    我是这样约定的:新游戏->调用脚本
    "战斗结束"->调用脚本
    “前往下一个地点”->调用脚本
    好了,就只有这几种情况下才调用,调用脚本的函数为BeginScriptControl();
    这个函数做了三个工作:
    1.首先读取舞台(场景)角色的数据(没一关都是一个不同的舞台)
    2.打开脚本文件(注意要用全局的文件指针)(虽然我在源程序中没直接打开,但是原理是一样的)
    3.将游戏状态设定为“脚本控制”以便在下一次UpdateScreen()中调用的是ScriptControlProc();(怎么样?知道消息循环的作用了吧?)
    ScriptControlProc()这个函数其实也很简单:
    读取脚本文件中的参数直到文件结束
    读取脚本文件需要一个解释脚本的函数LoadParam(FILE*fp);
    这个函数负责解释脚本中的东西:是函数调用还是函数参数
    然后找到相应的函数执行即可
    比如说脚本里有一段代码MovePlayerTo(1,1,1);
    意思就是把第1个玩家移动到1,1处
    怎样做呢?
    我是按照以下几步做的
    1.保存当前的游戏状态
    2.把当前游戏状态设定为“移动精灵”
    当引擎得到“移动精灵”这个函数后,在UpdataScreen()中调用的是
    MoveRoleProc()这个函数
    当移动结束后,MoveRoleProc()调用EndMoveRole(),这个函数的作用就是
    读取先前的游戏状态
    怎么样?又回到读脚本了吧?记住在移动角色的时候脚本文件的指针没有改变,
    所以回到读脚本的这个函数后不是重新读取而是继续读取!
    同理其他的脚本指令如LoadDialog也是一样的道理!
    当文件要结束的时候,别忘了告诉引擎该停止了,这时候我们必须更新游戏状态
    脚本里的SetGameState就是负责这项工作的。
    好了,先讲到这里,如果你有什么不明白的地方请联系我
  • 0
    枫岚园林景观设计 2012/07/14 10:37
    你只要静下心来学3天,就可以了
  • 0
    bahamutww 2012/07/14 10:40
    不会 我也想学

问题分类

所有频道
我 要 回 答 我 要 提 问
问题分类   验证码 换一组

相关问题

向专家快速提问