- 1、本文档共88页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 桥台计算书.doc VIP
- 2025年甘肃亚盛实业股份有限公司校园招聘模拟试题附带答案详解完整版.docx VIP
- 我国商业银行开展绿色信贷业务存在的问题和对策.docx VIP
- 甘肃亚盛实业股份有限公司校园招聘模拟试题附带答案详解附答案.docx VIP
- 2023年西安文理学院计算机应用技术专业《计算机组成原理》科目期末试卷A(有答案).docx VIP
- 2024年中国工会审计条例知识竞赛试题及答案.docx VIP
- VDA6.3过程审核检查表(中英文版)6.xls VIP
- 2024年山东水发集团高校毕业招聘笔试真题.docx VIP
- 甘肃亚盛实业股份有限公司校园招聘模拟试题附带答案详解完美版.docx VIP
- 双减背景下小学语文作业的优化设计.pptx VIP
文档评论(0)