能够从RPG游戏冒险岛2diy成品设计图里提出脚本么(有悬赏)

扫码下载APP
随时选购服务
需求发布后1小时内收到服务商响应每个需求平均有10个服务商参与95%以上的需求得到了圆满解决所有需求不向雇主收取任何佣金双11电商狂欢 爆款服务超乎你想像
网页游戏(RPG)
网页游戏(RPG)
雇主预算:¥30000.00
已收到 2 个服务商的文案稿件
有相似问题想解决?专业顾问来帮助您
通过猪八戒网实名认证,保证身份真实可靠
完成手机认证,保证能随时联系到服务商
该需求下的优秀交稿
交易成功的需求
网站定制开发相关需求您的位置:
→ RPG Maker XP(RPG游戏制作软件) v1.04 简体中文版
RPG Maker XP(RPG游戏制作软件) v1.04 简体中文版rpg制作大师|
网友评分:8
软件大小:21.1M
软件语言:中文
软件类型:国产软件
软件类别:免费软件 / 编程工具
更新时间:
软件等级:
官方网站:
运行环境:WinAll, WinXP
软件厂商:
顶好评:50%
同类相关软件
28.5M/英文/10.021.6M/中文/10.043.4M/中文/10.022.5M/英文/10.04.8M/英文/10.0
RPG Maker XP是一款可让玩家在游戏中自己制作喜欢的游戏角色的,就算你不懂编程开发,也能制作出自己喜欢的游戏人物。软件可以独立定义更改游戏的系统。RPG Maker XP功能介绍图像的强化游戏画面的显示大小为 640×480,为『RPG Maker 2003』的 4 倍。图片格式为 PNG 全彩,对应 Alpha Channel,图像的半透明显示,透过色等可以自由设定。另外,地图的层从 2 层增加到了 3 层,这样就能制作出构造更加复杂的地图。战斗场景变化这个版本中的战斗画面设计是从正面看见怪物的前景类型。最大的特点就是画面下的人物状态窗口部分,变成了显示主角和队伍人物的图像。当然在这里显示的图像可以自由更改。RGSSRPG Maker XP中使用的人物参数和战斗系统等各种各样的功能全部在被称为『脚本』的程序中定义。『RPG Maker XP』中采用的是『RPG Maker』专用的『Ruby』程序语言『Ruby Game Scripting System』(中文意思是 Ruby 游戏脚本系统,以下简称『RGSS』),编辑其中的脚本就可以自由更改或增加系统的功能。需要的话,系统的核心部分也能编辑。游戏制作软件更新日志绘制地图功能复归人物功能复归全新的默认素材库人物步行图默认尺寸定为32x32像素自由的更换字体移动中按住Shift键可以奔跑(可以设定相关装备)动画播放速度提升(30FPS→60FPS)选项更加完善
猜你喜欢 游戏制作软件
游戏制作软件就是用于制作各种的游戏工具,是指一个电子游戏的制作过程中所需要用到的各种软件。目前,游戏制作软件还是比较多的,为了方便用户下载,绿色资源网小编整理出了多款实用的游戏制作软件,包括橙光文字游
其他版本下载
RPG Maker XP v1.04 简体中文版
软件无法下载或下载后无法使用,请点击报错,谢谢!
请描述您所遇到的错误,我们将尽快予以修正,谢谢!
*必填项,请输入内容
本类下载排行
.81 1.32 2.43 6.14 5.45 1.76 2.87 3.58 10.09 3.310 10.011 5.212 10.013 3.714 5.815
本类精品软件
3.2M/英文/4.430.3M/中文/1.3753KB/中文/5.8439.2M/英文/5.13.60G/中文/6.0183.2M/中文/5.719.5M/中文/1.2
装机必备软件
本类集合软件《游戏脚本的设计与开发》-(RPG部分)3.8 通过脚本来自由控制游戏(一) - CSDN博客
《游戏脚本的设计与开发》-(RPG部分)3.8 通过脚本来自由控制游戏(一)
注意:本系列教程为长篇连载无底洞,半路杀进来的朋友,如果看不懂的话,请从第一章开始看起,文章目录请点击下面链接。一,内容预览算起来,游戏脚本系列文章已经很久没更新了,虽然该系列文章更新缓慢,但是确实还是能够帮到一些朋友,前段时间,仅仅因为做毕业设计通过邮件联系我的就有4位学生。有鉴于此,我还是挤点儿时间来继续慢慢更新一下了。另外,我想再声明一下,目前该脚本引擎还处在移植开发阶段,所以功能优先,其中有大量需要优化的地方还没有处理,所以在手机上测试的时候,在一些性能比较差的手机上,如果效果不太好的话,不要奇怪。本节来介绍一下如何通过脚本来控制正在运行的游戏。一个RPG游戏中会触发各种各样的剧情,让某个人物的动作改变,或者让某个人移动到另一处,或者让某个人物从战场上消失,或者会播放一段动画,或者会切换游戏场景,等等吧,这些都要通过脚本来动态的控制。我在序章中就已经说了,一个优秀的游戏脚本,通常能控制游戏中的一切。本次先来实现一下几个游戏指令,以后会再进行扩展。?人物角色按照绝对坐标进行移动?人物角色以自己为参照物,按照相对坐标进行移动?人物角色以指定人物为参照物,按照相对坐标进行移动?人物方向和动作的改变(等待动作结束)?人物方向和动作的改变(不等待动作结束)?人物角色进入场景?人物角色离开场景当然,还有最基本的对话游戏指令,这个已经在之前实现过了,所以可以直接使用。还有我上面提到的或者没有提到的其他指令,以后可能会继续进行扩展。但是RPG的游戏指令是列举不完的,大家需要做的是掌握方法,然后根据自己的实际需求来进行扩展。二,功能屏蔽正在运行的游戏中,如果没有触发特定的剧情,玩家们使用鼠标或者键盘来进行游戏,但是一旦触发了剧情,在剧情结束之前,就需要游戏按照脚本指令来进行,这时候可能需要屏蔽原来的鼠标或者键盘功能,比如点击地图,主角会发生移动,等等,或者控制菜单有时候也会禁用,当然,这个看自己的需要了。总之,需要这么一条脚本指令来屏蔽一些功能,然后让游戏按照制作者期望的方向进行发展。这个功能实现起来并不难,只需要设定一个变量,游戏中的需要屏蔽的一些功能,根据这个变量的值来决定是否有效,然后通过脚本来改变这个变量的值来实现功能屏蔽。先来规定下面的脚本RPGRunMode.set(1);
RPGRunMode.set(0);参数为1的时候表示功能屏蔽,参数为0的时候表示解除功能屏蔽。首先,在LRPGObject.js中建一个变量LRPGObject.runMode =默认是false,表示剧情模式没有开启,也就是不需要屏蔽功能,反之,则表示开启了剧情模式,也就需要屏蔽功能了。而脚本解析部分也可以很轻松的实现。/*
* LRPGRunMode.js
LRPGRunMode = function(){};
LRPGRunMode.analysis=function(value){
var start = value.indexOf(&(&);
var end = value.indexOf(&)&);
var params = value.substring(start+1,end).split(&,&);
switch(value.substr(0,start)){
case &RPGRunMode.set&:
LRPGObject.runMode = (parseInt(params[0]) == 1);
LGlobal.script.analysis();
LGlobal.script.analysis();
};然后,在需要屏蔽的功能的代码中,加入下面一句话就可以实现屏蔽了。if(LRPGObject.runMode)三,人物角色移动指令控制人物角色移动的时候,大致可以分为下面三种情况。?人物角色按照绝对坐标进行移动?人物角色以自己为参照物,按照相对坐标进行移动?人物角色以指定人物为参照物,按照相对坐标进行移动下面一个个来看1,首先看一下[人物角色按照绝对坐标进行移动],就是向绝对坐标的移动,规定脚本如下。//角色ID,坐标x,坐标y,是否等待
RPGCharacter.moveTo(2,60,13,1);先不说这个脚本如何进行解析。首先,先在MapController中加入一个控制角色的行走的函数,然后在解析脚本的时候只需要调用这个函数就行了。控制人物行走的代码,在实现控制主角行走的时候已经有了,现在只需要稍加调整,把主角换成指定的角色(角色ID)就可以了,修改后的部分代码如下。MapController.prototype.characterMoveTo = function(chara,cx,cy,callback){
var self =
chara = self.getCharacter(chara);
if(!chara)
if(chara.hasEventListener(Character.MOVE_COMPLETE)){
chara.removeEventListener(Character.MOVE_COMPLETE);
var coordinate = chara.getTo();
var fx = coordinate[0] , fy = coordinate[1];
var returnList = self.query.queryPath(new LPoint(fx,fy),new LPoint(cx,cy));
if(returnList.length & 0){
chara.setRoad(returnList);
if(callback){
chara.addEventListener(Character.MOVE_COMPLETE,callback);
MapController.prototype.getCharacter = function(value){
var self =
if(LString.isInt(value)){
var childList = self.view.charaLayer.childList,
for(var i=0,l=childList.i&l;i++){
child = childList[i];
if(value != child.index)
}else if(typeof value == &object&){
};有了这个函数,解析前面的脚本就简单多了。看下面的解析代码。LRPGCharacter.moveTo = function (value,start,end){
var params = value.substring(start+1,end).split(&,&),
if(params.length == 3){
wait = (parseInt(params.pop()) == 1);
//params:index,x,y
LRPGObject.RPGMap.characterMoveTo.call(LRPGObject.RPGMap,params[0],parseInt(params[1]),parseInt(params[2]),LRPGCharacter.getMoveCallback(wait));
LRPGCharacter.getMoveCallback = function (wait){
var lineValue, callback = LGlobal.script.analysis.bind(LGlobal.script);
if(!wait && LGlobal.script.lineList.length & 0){
lineValue = LMath.trim(LGlobal.script.lineList[0]);
if(lineValue.indexOf(&RPGCharacter.move&) == 0){
callback =
LGlobal.script.analysis();
};上面的LRPGObject.RPGMap.characterMoveTo.call就是调用前面已经准备好的角色移动的函数了,需要说明的时候,里面还出现了一个新的函数getMoveCallback。这是因为,有时候,人物角色不是一个一个发生移动的,可能需要同时让多个人物角色发生移动,这样的话,一行移动脚本解析完之后,如果该行脚本设定为不需要等待,则需要检查一下下一行的脚本是不是也是人物移动,如果是的话,就立即解析下一行脚本,如此循环。如果脚本指令发生了改变,或是设置了需要等待,就将最后一个移动指令的回调函数设定为LGlobal.script.analysis,这样最后一个人物移动完之后,就会自动解析下一行的脚本了。效果如下。2,接着看[人物角色以自己为参照物,按照相对坐标进行移动],规定脚本如下。//角色ID,相对坐标x,相对坐标y
RPGCharacter.move(2,-4,0);同样,先在MapController中加入相应的函数,因为已经有了前面的characterMoveTo函数,所以只需要计算好相应的绝对坐标,然后调用characterMoveTo函数即可,代码如下。MapController.prototype.characterMove = function(chara,cx,cy,callback){
var self =
chara = self.getCharacter(chara);
self.characterMoveToCharacter(chara,chara,cx,cy,callback);
};接下来是脚本解析。LRPGCharacter.move = function (value,start,end){
var params = value.substring(start+1,end).split(&,&),
if(params.length == 3){
wait = (parseInt(params.pop()) == 1);
//params:index,x,y
LRPGObject.RPGMap.characterMove.call(LRPGObject.RPGMap,params[0],parseInt(params[1]),parseInt(params[2]),LRPGCharacter.getMoveCallback(wait));
};效果如下。3,再看[人物角色以指定人物为参照物,按照相对坐标进行移动],规定脚本如下。//移动角色ID,参照角色ID,相对坐标x,相对坐标y
RPGCharacter.moveToCharacter(2,1,0,4);同样,先在MapController中加入相应的函数MapController.prototype.characterMoveToCharacter = function(chara,toChara,cx,cy,callback){
var self =
chara = self.getCharacter(chara);
toChara = self.getCharacter(toChara);
var coordinate = toChara.getTo();
self.characterMoveTo(chara,coordinate[0] + cx,coordinate[1] + cy,callback);
};脚本解析。LRPGCharacter.moveToCharacter = function (value,start,end){
var params = value.substring(start+1,end).split(&,&),
if(params.length == 4){
wait = (parseInt(params.pop()) == 1);
//params:index,index2,x,y
LRPGObject.RPGMap.characterMoveToCharacter.call(LRPGObject.RPGMap,params[0],parseInt(params[1]),parseInt(params[2]),parseInt(params[3]),LRPGCharacter.getMoveCallback(wait));
};效果如下。4,多个人物同时移动的时候,脚本如下。RPGCharacter.move(1,4,0,0);
RPGCharacter.move(2,4,0,0);效果如图。四,人物角色方向和动作改变指令通常动作发生改变的时候,有下面两种情况的话,应该就够用了。?人物方向和动作的改变(等待动作结束)?人物方向和动作的改变(不等待动作结束)规定脚本如下。//参数:角色ID,动作,方向(或者角色ID),动作是否循环,是否等待
RPGCharacter.changeAction(2,move,up,0,1);
RPGCharacter.changeAction(2,move,left,1);
RPGCharacter.changeAction(1,stand,2,1);当第三个参数指定为数值型的时候,表示转向该指定角色。而最后一个参数必须是当动作不循环的时候才有效,否则默认不等待。先在MapController中提供动作方向改变的函数。MapController.prototype.setActionDirection = function(chara,action,direction,loop,callback){
var self =
chara = self.getCharacter(chara);
if(LString.isInt(direction)){
var toChara = self.getCharacter(direction);
var coordinate = chara.getTo();
var coordinateTo = toChara.getTo();
var angle = Math.atan2(coordinateTo[1] - coordinate[1],coordinateTo[0] - coordinate[0])*180/Math.PI + 180;
if(angle &= 22.5 || angle &= 337.5){
direction = CharacterDirection.LEFT;
}else if(angle & 22.5 && angle &= 67.5){
direction = CharacterDirection.LEFT_UP;
}else if(angle & 67.5 && angle &= 112.5){
direction = CharacterDirection.UP;
}else if(angle & 112.5 && angle &= 157.5){
direction = CharacterDirection.RIGHT_UP;
}else if(angle & 157.5 && angle &= 202.5){
direction = CharacterDirection.RIGHT;
}else if(angle & 202.5 && angle &= 247.5){
direction = CharacterDirection.RIGHT_DOWN;
}else if(angle & 247.5 && angle &= 292.5){
direction = CharacterDirection.DOWN;
direction = CharacterDirection.LEFT_DOWN;
chara.setActionDirection(action,direction);
if(callback){
callback();
var fun = function(){
chara.actionObject.anime.stop();
chara.PLETE,fun);
callback();
chara.PLETE,fun);
};上面的代码并不难理解,需要解释一下的是当传入的方向是角色ID的时候,需要通过当前人物角色和指定人物角色的位置,来判断人物具体应该转向哪个方向,上面的代码是通过计算两个人物之间的向量夹角,与八个方向的角度进行比较,接近哪个方向就设定为相应的方向。接着,是脚本解析的代码。LRPGCharacter.changeAction = function (value,start,end){
var params = value.substring(start+1,end).split(&,&),
//params:index,action,direction,loop,wait
params[3] = (parseInt(params[3]) == 1);
if(params.length == 4){
wait = (parseInt(params.pop()) == 1);
params.push(LRPGCharacter.getActionCallback(wait));
LRPGObject.RPGMap.setActionDirection.apply(LRPGObject.RPGMap,params);
LRPGCharacter.getActionCallback = function (wait){
var lineValue, callback = LGlobal.script.analysis.bind(LGlobal.script);
if(!wait && LGlobal.script.lineList.length & 0){
lineValue = LMath.trim(LGlobal.script.lineList[0]);
if(lineValue.indexOf(&RPGCharacter.changeAction&) == 0){
var start = lineValue.indexOf(&(&);
var end = lineValue.indexOf(&)&);
var params = lineValue.substring(start+1,end).split(&,&);
if(parseInt(params[3]) == 0)
callback =
LGlobal.script.analysis();
};上面的getActionCallback函数是为了实现同时处理多个人物的动作或方向,当指定动作不等待的时候,会紧接着解析下一行脚本。效果如图。同时控制多个角色的动作的时候,脚本如下。RPGCharacter.changeAction(1,stand,2,1,0);
RPGCharacter.changeAction(2,stand,1,1,0);效果如下。五,最后人物角色进入和离开场景的指令首先规定脚本如下。//人物角色离开场景
//参数:角色ID
RPGCharacter.remove(2);
//人物角色进入场景
//参数:角色ID,方向,动作,坐标x,坐标y,是否可控
RPGCharacter.add(2,stand,down,52,13,false);对应的MapController中处理如下,代码很简单就不多解释了。MapController.prototype.addCharacter=function(index,action,direction,x,y,ishero,callback){
var self =
self.view.addCharaLayer(index,action,direction,x,y,ishero);
if(typeof callback == &function&)callback();
MapController.prototype.removeCharacter=function(index,callback){
var self =
self.view.removeCharaLayer(index);
if(typeof callback == &function&)callback();
};在MapView中,加入角色是原来就有的,下面只看一下移除角色部分,代码如下。MapView.prototype.removeCharaLayer=function(index){
var self =
var childList = self.charaLayer.childList,
for(var i=0,l=childList.i&l;i++){
child = childList[i];
if(index == child.index){
self.charaLayer.removeChildAt(i);
};这部分的脚本的解析部分尤其简单,加上本节其他代码,完整的脚本解析可以直接打开下面的连接看一下。人物角色离开场景效果人物角色进入场景效果六,小结还是我刚开始说的那样,RPG的脚本指令是列举不完的,关键是了解本节所介绍的方法,然后就可以自己根据需要进行扩展了。本节所实现的功能,可以打开下面连接,点击关羽右边的那个NPC来进行测试。最后,给出本次的代码下载:预告:RPG部分下一节可能会讲一下变量的应用,简单介绍一下游戏的读档和存档的原理。《游戏脚本的设计与开发》系列文章目录本章就讲到这里,欢迎继续关注我的博客转载请注明:
本文已收录于以下专栏:
相关文章推荐
简单说,游戏脚本就是依据一定的格式编写的可执行文件,游戏可以通过脚本中自定义的语句来执行相应的逻辑。
举个例子,舞蹈演员随着音乐翩翩起舞,其实音乐在这里就担当了脚本的角色,音乐里记录了每一个舞蹈动作,...
最近又一次很久木有更新博客了,但是不是停了,而是一次性更新了太多,想清楚了自己水平有限,不想误导大家,所以就把这里单纯的当做自己的学习笔记。
上次让立方体转起来了,这次我们就直接介绍一个框架《webg...
一个贪吃蛇小游戏javascrpt有效代码17行加上html代码的话,共25行运行方法chrome或者firefox测试连接/html5/lufylegend...
HTML代码中引入必要的javascript文件,以及描述着色器的代码。
准备了着色器的编译函数和连接着色器的程序对象相关的函数。每个函数中都有是否进行了正确处理的判断。
下次,准备好顶点数据,也就...
为了进一步提升纹理的渲染质量,来介绍一下纹理参数。通过控制纹理参数,可以很好的提升模型的渲染质量,虽然会有些比较难理解的地方,这些可以以后再考虑。
那么,WebGL中的纹理参数到底是什么呢?现在就从这...
混色是将颜色和颜色混合处理的总称,在WebGL中主要是指源颜色和目标颜色这两种颜色的混合。源颜色是即将要绘制的颜色,目标颜色是已经绘制的颜色,源颜色如何处理,目标颜色如何处理,这些都可以单独进行设置。...
使用WebGL进行3D渲染,这次说了下面几个必须要做的准备。
最低限度,需要HTML,canvas标签,处理WebGL的javascript代码,顶点着色器和片段着色器的代码。
另外,比如要描画3D模...
顶点就是至少包含了坐标情报的三维空间上的任意的一个点,三个点用线连接起来,表现为一个三角形的多边形。而多边形根据顶点的连接顺序不同,分为内侧和外侧,根据这个可以进行遮挡剔除。
接下来,实际进行渲染的时...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字) 上传我的文档
 下载
 收藏
农学专业毕业,专注农业基层技术的推广工作,分享自己的一些工作体会和收集的资料,为祖国的三农建设贡献自己的光和热
 下载此文档
正在努力加载中...
rpg游戏设计与实现_毕业论文设计
下载积分:4000
内容提示:rpg游戏设计与实现_毕业论文设计
文档格式:DOC|
浏览次数:92|
上传日期: 17:31:30|
文档星级:
全文阅读已结束,如果下载本文需要使用
 4000 积分
下载此文档
该用户还上传了这些文档
rpg游戏设计与实现_毕业论文设计
关注微信公众号29被浏览1257分享邀请回答36 条评论分享收藏感谢收起

我要回帖

更多关于 成品油价格调整 的文章

 

随机推荐