网站大量收购独家精品文档,联系QQ:2885784924

russ脚本.doc

  1. 1、本文档共88页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
russ脚本.doc

MsgBox(内容,延迟) OpenMap(地图,Tile,之前按键请求,之后发送按键) Sleep(延迟[单位:秒]) SetSpiritPos(精灵,X坐标,y坐标) SetSpiritVisable(精灵,是否显示) SetSpiritDirection(精灵,方向) Go(精灵,步数) Tip(精灵) SetActor(新精灵名字) Music.Set(音乐名) Music.Play Music.Stop Menu(项目数,宽度,项目内容与转向[格式:内容n@转向标号/...],显示内容,屏幕位置) Goto 标号 :标号 Save(保存内容) Exit(保存内容) IfSaveGoto(保存内容,是否保存,转向) DeleteSave(保存内容) PaintImage(图片名,延迟) Cls Draw Dim 变量1,变量2, .. ,变量n Sav-ue(位置,变量名) Getvalue(位置,变量名) Setvalue(变量名,变量值) Readln(变量名,显示内容,默认值) If 表达式 Then Goto 转向 Game.Save Game.Load Game.LoadState Game.Over   引用变量:/#变量名#/ 逻辑运算符: = :等于 lt; :小于 gt; :大于 lt;= :小于等于 gt;= :大于等于 == :等于(字符串) !! :不等于(字符串)   其中的命令功能很简单,一目了然,后来我才知道有什么Ruby,Angelscript,LUA等等,我何必自讨苦吃设计自己的脚本语言呢?不过我的游戏已经用上了,改也就没有必要了,目前的问题是代码老是输错,以后要改正纠错系统才行。 ******************************************************************** ***进一步提高: 低级脚本中,实现“变量”比较困难。但是,你因该从另一个角度考虑: --我们可以提供这样的命令: GetTempVar(VarIndex);SetTempVar(VarIndex,Value); VarIndex的范围,你可以自己制定。即,在游戏中先预先搞好一个数组(如BYTE pVars[999]) 那么,代码如下: BYTE GetTempVar(VarIndex){return pVars[VarIndex]}; void SetTempVar(VarIndex,Value){pVars[VarIndex]=Value;} 。。。 继续整理一下思维,你就会想到,----gt;为游戏脚本虚拟出一个内存环境! ----听起来很高深,其实很简单: BYTE Memory[32767]; BYTE ReadMemory(int Address){return Memory[Address];} void WriteMemory(int Address,BYTE Value){Memory[Address]=Value} ***至于内存的类型,也可以用VB的String! 那么,只要提供Stack(堆zhai),就可以在高级语言中实现“函数调用”。 然后,把低级脚本代码,也放在所谓的“内存”中去即可。 那么,你还可以把脚本的解释器,取名(***只是改个好听的名字而已!!)叫做“虚拟CPU”。 那么,你就等以设计出了一个虚拟机! (这也是3DMarks,Word,java等的实现方式) 内存的实现有以下两种: (1) private MemData() as string#//存放全局变量 private MemStack() as string#//存放过程内变量 private MemCode() as string #//存放代码 ReadMem(MemType,Addr) as string WriteMem(MemType,Addr,Value) (2)#//统一编址(推荐!) private Mem() as string private DS eger#//全局变量的内存区的开始地址除以16 private CS eger#//过程内变量的内存区的开始地址除以16 private SS eger#//代码的内存区的开始地址除以16 ---------------------------------------------------------- 怎么实现跳转呢?很简单: private IP eger 然后: sub MyCPU_Run() call 解释代码(Mem(CS*16+IP)) end sub 然后,提供一个jmp命令: jmp(addr) gt;gt;实现条件跳转: 提供jz和jnz 具体来说: sub jz(条件表达式的值 as

文档评论(0)

000 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档