RPG脚本杂片

合集下载

RPG Maker XP脚本系列之-采集+高级独立开关

RPG Maker XP脚本系列之-采集+高级独立开关

第三次制作:结合第一次和第二次,公共事件里面改用独立开关,更加灵活,就是逻辑上绕得更远了。效果非常统一,黑暗圣剑中所有柜子中获得的金钱都是这么制作。由于方法过于困难,不做叙述。
OK,看过历史,下面给一种写教程时候研究的推荐方法。经过黑暗圣剑发布后又半年,偶自己按理说也应该成长了一点,故……嗯。这种方法逻辑很清晰,但是教学起来难度偏高,看大家能不能理解了。
独立开关方法好是好(可以大量复制),但是受到独立开关个数(ABCD只有四个)的限制,而且页面太多,制作检查都比较麻烦,而且独立开关只能记录true/false。如果能用独立开关来记录一个数字的话,岂不就相当于结合了1、2种方法的优点了?
故首先修改脚本,让独立开关可以记录数据。
条件分歧:$game_self_switches[[$game_map.map_id, @event_id, "E"]] == false
key = [$game_map.map_iபைடு நூலகம், @event_id, "E"]
$game_self_switches[key]=
| ——脚本:
| key = [$game_map.map_id, @event_id, "E"]
| $game_self_switches[key]=
| $game_variables[1] + 2000
然后事件中设置:
☆条件分歧:($game_self_switches[[$game_map.map_id, @event_id, "E"]] <=
$game_variables[1]
| 选项:
| (1)全部采集:

RPGXP

RPGXP
还有,作为程序的说明,在后面的学习中脚本会写有很多的注释。 但实际操作中没有必要完全仿效其注释的内容。# 以后的文字,可以 按实际中最容易理解的说明注释。
语法和库
程序语言在结构上大致分为语法和库
两种。
所谓语法
,就是使用语言记录某些处理时的规则。 与中文和英文等自然语言一样,程序语言也有语法。例如条件分歧的语法、 循环的语法等等。「# 符号后面的一整行文字认定为注释」这也是语法之 一。语言的说法,狭义上指的就是语法。
循环
函数
对象
显示图片
数组
哈希表
定义类
[Amber demo]
开始
建立工程
,将一边完成单个短程序一边解说 RGSS 的基础知识。
首先,来进行开始学习的准备吧。
建立工程
首先建立一个工程,把它作为学习脚本入门用的新工程。
[Amber demo]
字符串
print
为变量赋值
控制码
内嵌表达式
一般来说,由文字连接起来的数据就称为字符串

print
双引号 "" 或单引号 '' 中间的部分,就作为字符串数据使用。
p "RPG Maker XP" # => "RPG Maker XP"
y = 4
p x + y # => 7
第一行和第二行是进行变量的赋值。 其中 = 号是赋值运算符
。和数学上使用等号 表示「左边等于右边」的意思不同,这里表示「左边的变量代入 右边的数值」。在上述示例中,第一行 x 变量和第二行 y 变量 分别代入数值 3 和 4。

软件RPGmakerXP脚本详细解释介绍

软件RPGmakerXP脚本详细解释介绍

显示文章:$game_temp.message_text=""显示引号中的文章。

更改文章选项:$game_system.message_position =0,1,2表示上、中、下,三个位置$game_system.message_frame =0 ,10表示不透明,其他的话就透明等待:@wait_count = X等待X帧中断事件处理:command_end把某一个事件暂时消除$game_map.events[X].erase其中X表示把X号事件暂时消除,如果是消除本事件X = @event_id执行公共事件:$game_mon_event_id = 编号执行编号的公共事件。

注意,这个执行和直接在事件中的公共事件有微妙区别。

开关操作:$game_switches[编号] = true / falsetrue是打开,false是关闭变量操作:$game_variables[编号] = 数值这里有一些常用的内容:rand(100):返回0-99的随机数rand(100)+10000:返回10000-10099的随机数$game_party.item_number(编号):编号物品的个数角色相关:以下为某编号的角色的相关属性生命:$game_actors[编号].hp精神:$game_actors[编号].sp经验:$game_actors[编号].exp等级:$game_actors[编号].level最大生命:$game_actors[编号].maxhp最大精神:$game_actors[编号].maxsp力量:$game_actors[编号].str灵巧:$game_actors[编号].dex速度:$game_actors[编号].agi魔力:$game_actors[编号].int攻击力:$game_actors[编号].atk物理防御:$game_actors[编号].pdef魔法防御:$game_actors[编号].mdef回避修正:$game_actors[编号].eva姓名:$game_actors[编号].name职业编号:$game_actors[编号].class_id职业名称:$game_actors[编号].class_name武器编号:$game_actors[编号].weapon_id防具1编号:$game_actors[编号].armor1_id防具2编号:$game_actors[编号].armor2_id防具3编号:$game_actors[编号].armor3_id防具4编号:$game_actors[编号].armor4_id完全回复:$game_actors[编号].recover_all领悟特技:$game_actors[编号].learn_skill(编号)遗忘特技:$game_actors[编号].forget_skill(编号)位置(前卫返回0,中卫返回1,后卫返回2):$data_classes[$game_actors[编号].class_id].position学会特技总数:$game_actors[编号].skills.size敌人:$game_troop.enemies[编号]敌人拥有角色的部分功能,包括.hp,.sp,.maxhp,.maxsp,.str,.dex,.agi,.int,.atk,.pd ef,.mdef,.eva地图的事件属性:$game_map.events[编号].x,$game_map.events[编号].y编号事件的x,y 坐标$game_map.events[编号].screen_x,$game_map.events[编号].screen_y编号事件的屏幕x,y坐标$game_map.events[编号].direction编号事件的朝向$game_map.events[编号].terrain_tag编号事件所处的地形标志$game_map.events[编号].moveto(x,y)把事件扔到(x,y) ——————————————————以上几个事件的,如果要求为角色,则为“$game_player.x”等地图ID:$game_map.map_id同伴总人数:$game_party.actors.size步数:$game_party.steps金钱:$game_party.gold游戏总时间(秒数):Graphics.frame_count / Graphics.frame_rate 游戏总帧数:Graphics.frame_count游戏帧速率(可直接=n调整):Graphics.frame_rate计时器剩余秒数:$game_system.timer / Graphics.frame_rate 存档次数:$game_system.save_count独立开关操作:$game_self_switches[[地图编号,事件编号,"A"]] = true/false把地图编号的地图上的事件编号的事件的A开关打开。

Unity3D引擎RPG动作游戏设计

Unity3D引擎RPG动作游戏设计

Unity3D引擎RPG动作游戏设计一、本文概述随着游戏产业的蓬勃发展,Unity3D引擎因其易用性、跨平台兼容性以及强大的社区支持,已成为众多游戏开发者首选的游戏开发工具。

在Unity3D引擎中设计RPG(角色扮演游戏)动作游戏,不仅能够锻炼开发者的编程和设计能力,还能为玩家提供沉浸式的游戏体验。

本文旨在探讨如何在Unity3D引擎中设计一款高质量的RPG动作游戏,从游戏设计的基本概念出发,逐步深入到角色设计、动作系统实现、游戏逻辑与交互等方面,以期为开发者提供一份全面而实用的设计指南。

在本文中,我们将首先概述RPG动作游戏的核心要素和设计理念,接着分析Unity3D引擎在RPG动作游戏设计中的应用优势,然后详细介绍角色设计、动作系统、游戏逻辑与交互等关键部分的实现方法,最后分享一些提升游戏体验的设计技巧和注意事项。

通过阅读本文,读者将能够掌握Unity3D引擎在RPG动作游戏设计中的核心技术,为打造一款成功的RPG动作游戏奠定坚实的基础。

二、游戏设计基础在Unity3D引擎中设计RPG(角色扮演游戏)动作游戏,首先需要明确游戏设计的基础理念。

游戏设计不仅仅是编程和美术的结合,更是对玩家体验的深度挖掘和创新。

需要明确游戏的核心机制与规则。

这包括了玩家的角色如何成长、如何与敌人战斗、如何探索世界等。

例如,玩家可以通过完成任务、击败敌人或探索隐藏区域来获得经验值,进而提升角色的等级和能力。

同时,游戏的战斗系统也需要精心设计,确保玩家在与敌人的战斗中能够体验到策略性和紧张感。

RPG游戏的核心是角色的成长与发展。

因此,游戏中的角色设定和技能系统至关重要。

每个角色都应该有其独特的背景故事、性格特点和技能树。

技能系统的设计也需要考虑到平衡性和深度,既要让玩家能够通过学习和实践来掌握新的技能,又要确保这些技能在战斗中能够发挥出不同的作用。

一个引人入胜的RPG游戏需要一个丰富多彩、充满探索价值的游戏世界。

游戏世界的设计应该包括各种不同类型的场景,如森林、城市、地下城等。

RPG游戏制作教程

RPG游戏制作教程

〖一〗制作游戏中,角色扮演游戏可以说是所有游戏中最复杂的。

它需要统合各方面的人员(像是程序、脚本、美术、音乐音效等等),因此对于一名游戏企划来说,如何去制作一个角色扮演游戏就成为最大的挑战。

在国内某知名游戏公司内部有一种说法,就是「制作游戏的数量不到三套,不能算是一个专业的游戏制作人员。

」不过还有一些人对这一点有另外一种看法,就是「没有制作过角色扮演游戏的人,不算是真的经历过考验。

」由这种说法,可以知道角色扮演的制作有多么的复杂。

在开始制作一个角色扮演游戏前,前置作业相当的重要。

什么是前置作业呢﹖最简单的说法就是对于整个游戏的规划。

由于笔者刚才也提过制作一个角色扮演游戏需要协调各方面的人员,因此前置作业的成功与否,就会影响到游戏的后期制作。

现在先请各位看下面的这个图表:工作类别第一月第二月第三月第四月第五月第六月企划脚本▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓程序设计▓▓▓▓▓▓▓▓▓▓▓▓▓▓美术设计▓▓▓▓▓▓▓▓▓▓▓▓音乐音效▓▓▓▓▓▓这个图表是表示一个计划在六个月里完成的角色扮演游戏各方面的工作进度表。

当然啦,制作一个角色扮演游戏所需要的时间可能不止六个月,不过本专栏为了不浪费各位太多的时间,因此将以一个较小的案子来进行,因此设定的制作时间就只有六个月。

至于工作类别的分类上,笔者也以最少量的人员来进行规划(在许可的情况下,部份的工作可以再作一些分工,像是企划和脚本就可以分成两个不同的工作类别)。

在这个子中,笔者只将工作分成四个部份。

现在笔者就先为各位说明各个工作类别所负责的工作:1.企划脚本(Game Designer/Scenario Writer)企划和脚本可以说是角色扮演游戏中的骨干,一个好的脚本可以让整个游戏的剧情引人入胜,同时好的企划也能够吸引玩家。

因此在这四个游戏的分类中,企划脚本可以说是最重要的工作了。

不过各位可不要以为工作就只有这么一点点,在游戏制作中,企划通常也担任了资料设定、调整以及测试难易度的工作。

rpgmaker教程

rpgmaker教程

1-1 新建工程咳,那么安装RMXP的部分我就跳过了,大家应该都知道怎么安装吧- -|||打开RMXP之后,可以在左上角看到一个白纸图标,它代表新建一个RMXP工程,也就是你制作的的游戏。

当然,你也可以通过“文件”菜单里面的“新建工程”来完成这个功能。

选择了新建工程之后,就会弹出窗口。

其中,“文件夹名”代表你放游戏的那个文件的名称,可以随意自己取一个,方便自己找就行了,不过建议是和你游戏的名字一样比较好。

然后,“标题”代表你这个游戏的名字,比如《勇者大冒险》之类的……= =|||当你命名了文件夹名的时候,文件路径就会被自动生成在“位置”一栏。

你也可以自己定义一个比较容易找的位置(使用右边那个“...”的按钮来设定路径)。

新建工程之后,就会出现这样的界面。

当你在游戏工程里做了设置之后,可以单击左数第三个图标——“保存”你的设定。

当然,在“文件”菜单下选择保存也可以。

按下右上角的红叉会关闭工程,如果你做出了更改而忘记保存,它同样会弹出对话框询问你是否保存更改。

当你新建了你的工程以后,就可以在设定好的路径下看到你的游戏文件夹了。

其中,画红圈的那个Game.exe文件是你的游戏执行程序,只要打开它就可以直接进行游戏。

而蓝圈的那个是你的工程文件,当你需要编辑这个游戏工程的时候,就打开这个。

不过,你不需要每次都通过点击Game.exe文件测试你做好的游戏,因为RMXP自带游戏测试功能,你只要在打开工程的时候按下F12就能测试了。

当然,在你工程的图标面板上倒数第一个绿色三角形的图标也是测试游戏。

(注意:在你测试游戏的时候,无法编辑工程。

但是如果是直接点击Game.exe进行测试就可以。

)而测试游戏的时候,你会发现角色在一片小小的空空的草地上晃来晃去,什么都没有发生-。

-虽然按下ESC可以调出菜单,但是也仅此而已……不用着急,因为这只是个开始而已。

接下来我会教大家怎么绘制比较基本的地图,然后通过数据库、事件等,将你们的第一个游戏丰满起来,成为一个真正的游戏。

rpg电子书脚本

rpg电子书脚本
@sprite.y = (480 - @sprite.bitmap.height) / 2 #这是Y坐标
#----------《图片的主处理》---------------------------------
@sprite.opacity = 255 #透明度,255为不透明,0是完全透明。
@update_phase = 3
when 1
#这里你就自己写
when 2
#这里你就自己写
when 3
#这里你就自己写
#when
#当你改了S1、S2那些东西时,这里就是要改的第二处,看到when了吗?
#祝你们做游戏愉快!~~~~
#########################《使用方法》##########################################
#在地图中建立一个事件,在事件编辑中,添加脚本,写上$scene = Scene_Book.new,就可以打开
#如果想添加更多的页码Hale Waihona Puke 请在30行、31行、98行进行编辑!
#------------------《页码窗口的终极处理》--------------------
if Input.trigger?(Input::A) #当按下Shift键时发生以下事件
@update_phase = 2
Audio.se_play("Audio/SE/028-Door05") #播放SE
#---------《封面处理》-------------------------------------
@sprite = Sprite.new #生成新的图片

RPG Maker XP脚本

RPG Maker XP脚本

判断是否学过某特技:$game_actors[编号].skill_learn?(特技编号)
按下某键的时候:Input.press?(键),Input.trigger?(键)
这两个请参考脚本中的其他定义推理
播放bgm,bgs,me,se
Audio.bgm_stop
Audio.bgs_stop
Audio.me_stop
Audio.se_stop
停止播放bgm,bgs,me,se
$game_system.playing_bgm,$game_system.playing_bgs
获得演奏中的bgm,bgs
等级:$game_actors[编号].level
最大生命:$game_actors[编号].maxhp
最大精神:$game_actors[编号].maxsp
力量:$game_actors[编号].str
灵巧:$game_actors[编号].dex
速度:$game_actors[编号].agi
rand(100)+10000:返回10000-10099的随机数
$game_party.item_number(编号):编号物品的个数
角色相关:以下为某编号的角色的相关属性
生命:$game_actors[编号].hp
精神:$game_actors[编号].sp
经验:$game_actors[编号].exp
# duratiscreen.pictures[number].rotate(速度)
删除图片:
$game_screen.pictures[number].erase
显示动画(战斗中)

RPG Maker XP脚本:人物跟随

RPG Maker XP脚本:人物跟随
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
# 座標を更新
@x += 1
@y -= 1
end
end
attr_writer :move_speed
attr_writer :step_anime பைடு நூலகம்
#Input::UP = 6
DOWN_LEFT = 1
DOWN_RIGHT = 3
UP_LEFT = 7
UP_RIGHT = 9
JUMP = 5
class Game_Party_Actor < Game_Character
def initialize
super()
@through = true
def move_up(turn_enabled = true)
# 上を向く
if turn_enabled
turn_up
end
# 通行可能な場合
if passable?(@x, @y, Input::UP)
# 上を向く
turn_up
# 座標を更新
@y -= 1
end
end
#--------------------------------------------------------------------------
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
# 座標を更新
@x -= 1
@y -= 1

RPG显示图片脚本

RPG显示图片脚本

RPG显示图片脚本
$game_screen.pictures[图片编号].show("图片名字", 原点, 画面x坐标, 画面y坐标, x轴放大率, y轴放大率, 不透明度, 显示方式) 说明:
图片名字就是要显示的图片的文件名字
原点就是显示图片的原点位置,0代表左上,1代表中心。

画面的x坐标和y坐标就是图片原点的画面的x坐标和y坐标。

x轴放大率和y轴放大率就是以原点为中心的x方向和y方向放大率,100为正常大小。

不透明度就是图片的不透明度,为0到255。

显示方式其实就是图片的合成方式,0是正常,1是加法,2是减法。

例子:
$game_screen.pictures[1].show("BunnyGod", 1, 320, 240, 100, 100, 255, 0)
就是在画面中心显示一张正常大小,完全不透明,显示方式为正常,编号为1的叫做BunnyGod的图片。

RPG游戏制作教程

RPG游戏制作教程

项目一默认素材使用教程任务1 认识RPG与RPG Maker XP1.RPG简述RPG,即角色扮演游戏(英文全称是Role-playing game),是一种游戏。

在游戏中,玩家扮演虚拟世界中的一个或者几个特定角色在特定场景下进行游戏。

角色根据不同的游戏情节和统计数据(例如力量、灵敏度、智力、魔法等)具有不同的能力,而这些属性会根据游戏规则在游戏情节中改变。

有些游戏的系统可以根据此而改进。

玩家需扮演游戏中的主角(可以不止一个人)在游戏。

在所给定的世界里进行漫游、冒险;他可以购买物品、装备来使自己与自己的队伍更为强大;与游戏中的敌人进行战斗,从而获得金钱与能使自己升级的经验值;通过对话、调查等行为来完成游戏中的剧情。

由于角色扮演游戏可以使玩家扮演与其本人截然不同的人物;可以满足玩家成为世界上(当然是指游戏中的世界)最强大的人、最伟大的英雄的欲望;而亲身体验跌宕起伏的剧情又能使玩者如同看一本小说一般,与游戏中的人物同喜同悲。

这些恐怕也就是角色扮演游戏里最有趣最吸引人的地方。

《仙剑奇侠传》游戏截图1 《仙剑奇侠传》游戏截图2《天之痕》游戏截图1 《天之痕》游戏截图22.RPG要素(1)剧情剧情的好坏直接影响到玩家对游戏的感觉。

不论是武侠RPG的煽情路线,还是日式RPG 的一主线多分支模式,或者是欧美RPG开放式剧情模式,讲故事永远是不变的主题。

角色,即玩家扮演的人物。

这一要素及包容在剧情中,也游离于剧情之外,可以说是相辅相成的两大要素。

《仙剑》之所以感人,优秀的剧情和突出的角色缺一不可。

(2)画面好花还需绿叶配。

好的剧情也需要好的画面,随着动画技术的提高以及玩家口味的挑剔,再好的剧情配上几十年前超烂的画面,也足够让所有人倒胃的了。

(3)战斗系统资格老点的玩家一定还记得《风云》中三步一岗,五步一雷的迷宫,《神雕侠侣》(2D)中冗长的战斗。

战斗系统也决定着玩家对这个游戏的耐心。

(4)升级以及技能、物品疯狂升级才能对付越来越变态的BOSS,合理运用技能和物品,才能更有效的杀敌升级。

RPG_Maker_XP教程

RPG_Maker_XP教程
地图元件的配置 编辑地图时打算在地图上配置的地图元件,必须从主窗口左边的地图元件面板中选择。在地图 元件面板中选择一个地图元件,也可以同时选择多个地图元件。选择了地图元件,就可以用绘 图工具在右侧的绘图区域自由配置了。
配置地图元件的绘图工具,可以在主菜单「绘图」中选择。各个绘图工具的功能如下。
铅笔 是最常用的绘图工具。在绘图区域上进行点选和拖曳可将目前选取的地图元件配置到地图上。 四边形 籍由拖曳对角线形成一个四边形,将目前选取的地图元件填满该四边形区域。 椭圆 籍由拖曳对角线形成一个四边形缩起的圆形,将目前选取的地图元件填满该区域。 填充 在点选处的上下左右连续相同的地图元件全部置换为目前选取的地图元件。 选择 为地图的剪切和复制等选取一个编辑范围。这种情况下点击鼠标右键会显示一个弹出菜单,就 可以进行该范围的剪切和复制等操作。另外,选取范围的复制等操作包括全部三层的所有对像。 绘图工具为「选择」以外的其它工具时,在绘图区域某处点击鼠标右键,地图元件面板中白线 框选的地图元件就会自动切换为该处所配置的地图元件。这个功能称为吸管。使用吸管功能会 省略从地图元件面板中选择地图元件的步骤,将大大提升作业效率。
还有,复制游戏工程文件夹,就可完成整个游戏的拷贝。为了减少操作疏忽和无法预料的错误 引起数据丢失的风险,推荐定期备份制作中的游戏。
游戏的发布 游戏制作完成后要于 Web 上发布,在主菜单「文件」菜单中选择「压缩游戏数据」。压缩结束, 就在指定文件夹中生成了一个自解压文件,发布那个文件就 OK 了。
游戏发布后,如果玩家电脑内没有安装 RPGXP,要想运行 RPGXP 制作的游戏,就必须下载 和安装 RGSS-RTP(也有不需要 RTP 的游戏制作方法,但不推荐)。 RGSS-RTP 可以从下面
walfmanrpgmakerxprpgmakerxp系统需求游戏的操作方法帮助提示工程地图事件数据库脚本素材规格战斗计算式脚本入门脚本入门基础篇开始基础篇数字的计算基础篇变量基础篇字符串基础篇条件分歧基础篇循环基础篇函数基础篇对象基础篇显示图片基础篇数组基础篇hash基础篇定义类解读篇数据库解读篇游戏对象解读篇活动块的管理解读篇窗口的管理解读篇编译器解读篇场景类rgss参考rgss参考rgss的说明ruby的语法字句构造和表达式ruby的语法变量和常量ruby的语法字面值ruby的语法运算符表达式ruby的语法控制结构ruby的语法方法调用ruby的语法类和方法的定义标准库内部函数标准库内部变量标准库内部类object标准库内部类objectarrayrpgmakerxprpgmakerxprpgxp是一款可让玩家自行制作在计算机游戏中相当受欢迎的角色扮演游戏也就是roleplayinggamerpg的软件

RGSS脚本入门

RGSS脚本入门

RGSS脚本入门原版作者:夏克整理&修改:光的圆周率版本:0.1一.前言注:因为复制的时候太激动了,所以本文的转载无法经过夏克的同意,这里说声对不住了,希望有人能给个地址,大家上他那去看看!(幻想森林-Tiger),本文在原文的基础上面稍微扩充了RGSS2的知识,但是不多,很多地方都修改了,希望希望夏克同学原谅我,因为我实在没办法联系到你.那么,请各位看官阅览本文过后,仔细看看RPG Maker自带的帮助,虽然说是帮助,但是那个也是很好的教材哦!二.基本概念1.什么是RGSS/RGSS 2?Ruby Game Scripting System(以下简称RGSS),中文意思就是:Ruby游戏脚本系统,是一个脚本性质的游戏编程系统,并不是整个游戏都用它来生成,RGSS所能做的只是一些有限的功能,而这些功能,是由厂家也就是EnterBrain所规定的,我们只能在自己力所能及的范围内来挖掘RGSS的潜力,RGSS 2则是在RGSS的基础上扩充和删减了一部分形成的,也可以称之为RGSS 的换代版本,是RMVX所使用的2.脚本(Script):脚本这个概念应用的范围很广,Windows系统里就有VBScript,JavaScript,WScript等脚本程序,Unix系统也有很多Perl,C等脚本程序,脚本可以解释为是一种系统内用来实现一些特定功能的有着局限性的编程环境.有的脚本可以触及到系统底层,有的却只是完成一些运算或者控制流程的功能,这取决于脚本系统的权限,也可以说取决于脚本系统所提供的库函数功能.3.RGSS/RGSS2中的脚本:在RPG Maker XP/RPG Maker VX(以下简称RMXP/RMVX)中,按F11就可以打开[脚本编辑器],不过RM2003或更早的版本却没有这个功能,左边的窗口是脚本列表,右边的窗口是脚本内容,左下角可以修改脚本名称.在RMXP/RMVX中,游戏开始运行后,总是从最上边的脚本开始运行,依次往下,所以,经常把变量声明、类声明、函数声明、函数定义的脚本放在上面,而MAIN脚本总是放在最后.三.开始神奇的脚本学习旅程1.Hello,World!经过上面的基本知识后,相信你对RGSS/RGSS2的相关知识有了一定了解,一般的编程语言教程都是从"Hello,World!"开始的,那好,我们也从"Hello,World!"开始,不过为了体现RGSS语言与Ruby的不同,我们将其改为"Hello,World,我来学习RGSS语言了!",首先,请打开RMXP/RMVX,在新建好一个空白工程后,按下键盘上面的"F11"键,开始我们的RGSS/RGSS2脚本学习之旅!为了保证执行脚本的快速,请在脚本列表中选中最顶端的那个脚本,然后按下方向键上面的Delete(也称为DEL、删除)键,删除脚本直到Main脚本为止(这里的意思是只保留Main脚本),选择[插入]来插入一个新的脚本,给新脚本命名为Test,删除Main脚本,点[确定].这样我们就得到了一个空的脚本系统,试着运行一下游戏,可以看到游戏在短暂的启动后就自动终止了,这表明没有任何脚本可以执行,游戏只好退出.既然测试成功了,那么下面我们在Test 脚本中加入一些内容.按F11打开[脚本编辑器],因为我们只有Test一个空脚本,所以在Test的内容中输入下面的代码:p "Hello,World,我来学习RGSS语言了!"把这行代码复制并粘贴在Test脚本中,按[确定],按F12,保存后游戏开始运行,短暂停顿后就会弹出一个对话框,内容是不是:"Hello,World!"?这样我们就做出了第一个脚本,如果是学过Ruby的你一定会发现中文会被正常的输出,而不是类似于"/数字/"的结果,但是这里要说的是,RGSS不支持puts命令,而printf命令则会忽略掉,如果您实在怀恋,可以通过其他的脚本来辅助实现.值得说一下的是,RGSS是会区分大小的,所以这里的p不能使用P(大写的P).2.脚本的注释在学习任何语言的过程中,注释是少不了的,因为注释不仅仅可以让新手更明白脚本语句的含义,而且还会使脚本看起来更整洁、美观,当然,能做到的当然还有很多.在RGSS中,有两种注释,它们分别是符号# 和=begin=end如果你比较细心的话应该可以看出他们的用途, 符号#是用来注释单行,而=begin ... =end 是用来注释多行的,在这里,有个知识点需要提一下,符号#后的脚本是会被忽略的,也就是说,你把符号#插入到某一脚本的前面,那么那条脚本就会无效,很多人都将在脚本前添加#看做是一种解决脚本故障的办法(也就是DEBUG),举个例子:p "Hello,World,我来学习RGSS语言了!" #我是很可爱的注释,执行脚本的时候你会无视我!将这段代码插入到脚本中,#后面的语句或者注释将被无视,然而在这段代码中,无论是什么都会无效.=beginp "Hello,World,我来学习RGSS语言了!" #我是很可爱的注释,执行脚本的时候你会无视我!=end到此,基础部分完毕,如果你想要学习更深入的知识,请往下看.四.数据类型1.数字数字包括整数和小数,小数在计算机术语中被称为浮点数,相信大家都明白什么是整数和小数了.整数包括正整数和负整数,0可以被视为整数,数字属于常量的一部分.常见的数字种类有:1 = 整数100 = 整数-10 = 整数0 = 整数0.11 = 浮点数-12.3 = 浮点数那好,让我们写一个脚本来学习如何显示一个常量的值,在Test脚本中,清除脚本内容,插入下面的代码:p 100运行游戏,看到弹出的对话框显示:"100",若输入我们输入:p 100.100作为新手的你觉得会弹出什么呢,想想,实际上弹出的是100.1,而不是100.1002.数字的计算我们在上节讲了数字的类型与输出给用户的方法,现在我们来体验一下数字的计算,在脚本TEST 中插入以下代码:p 1+1运行游戏,看到弹出的对话框显示:2.这就是常量的加法.你可以很聪明地想象出乘法、除法、减法:p 3+5p 3*5p 3/5p 3-5运行游戏,你会发现游戏按脚本顺序输出了加、乘、除、减,你会发现,3/5输出的是0而不是正确结果,整数和整数的运算,其结果仍旧表现为整数,如果你希望得到浮点数,那么就应该使被除数或者除数至少有一个是小数形式的表示.请看下面的代码:p 3.0/5p 3/5.0运行游戏,显示的结果就都是小数了.值得一提的是还有两个很有用的算符,求余数(%)和乘方(**),输入以下代码:p 14%4p 2**3它们分别输出了2与8,和预期的正确结果一样.3.括号的用处各种运算符之间总会存在优先顺序,加减乘除的顺序是不变的,对于其它你所不熟悉的或者弄不清除的,只要记住一点就可以了,那就是括号的优先权是最高的,善用括号能够至少确保程序的准确性而先不管是不是很难看,当然,强大的RGSS所使用的基本不是只有一个功能,或考得其他功能我们会在以后的章节一一阐述.4. 常量与变量常量:常量就是我们经常会用的数字、字符串了,比如我们问一张光盘多少钱,回答说5元,那么5就是常量,如果说一张光盘的价格不定,在3-5元的范围内浮动,那么这就是我们学过的未知数,对于这样的未知数我们经常会用一个变量来表示.变量:变量就是我们用一个符号来表示一个我们想要表示的概念,比如我们可以用price这个变量来表示一张光盘的价格.变量与常量的区别就在变量是可以变动的,也就是说我们用变量来定义一个概念后,接下来就会来操作这个变量使它变化.而我们不能让一个常量变化,比如我们不能让5=4,但我们可以让price=4.命名规则: 变量的取名有以下的限制:1、必须以英文字母(大小写均可)、汉字、下划线开头.2、第二个字符开始可以使用数字、英文字母、汉字、下划线.3、不能使用保留字作变量的名字.保留字是保留给系统用的,也就是说系统已经占用了,以下是系统的保留字:alias def false nil return unlessand do for not self untilbegin else if or super whenbreak elsif in redo then whilecase end module rescue true yieldclass ensure next retry undef所以不要使用上面列出的单词做你的变量的名字.变量的赋值:变量无需事先声明,可以拿来就用,例如:a=100p a运行脚本,看到弹出的对话框显示:100 , 但必须先赋值才可以使用变量,否则,试试下面的代码:p b会弹出什么呢,如果不赋值给变量,就相当于这个变量不存在,而一旦赋值给它,就表明这个变量存在了.变量的运算:下面的代码你应该可以猜出是什么结果的:战斗前的体力=234战斗后的体力=200p 战斗前的体力p 战斗后的体力继续:p 战斗前的体力-战斗后的体力看到了吗,这里我进行了运算,变量的运算.就像对于常量一样,加减乘除和括号同样适用于变量的运算:x=1y=2z=3p x+(y*z)/(y+z)-y+z但下面的运算是常量所没有的:自运算:x+=5y*=2z/=3p xp yp z+=,-=,*=,/=这四个运算符是自运算符,x+=1相当于x=x+1,其它同理.全局变量:局部变量和全局变量的区别在于局部变量只能被所在的脚本访问,而全局变量能被所有的脚本访问.在变量名前加$符号就可以声明全局变量了.5. 字符串显示字符串:先看看下面这几行语句在RGSS中的效果:p"这将会显示双引号"p'这也会显示双引号'print"这不会显示双引号"print'这也不会显示双引号'把上面的四行语句复制下来,然后在我们刚刚建立好的Test脚本中粘贴,粘贴前最好把Test脚本的内容清除掉,我们只需要测试我们现在的代码.好,运行游戏,看看效果吧.首先,看得出来,用来输出显示的方法又多了一种:print,不同的是,p可以显示很多种数据类型,对不同的数据类型,它会按人们容易理解的格式来显示,比如说这里的字符串,它都会加上双引号来告诉人们:这次显示的是字符串,而print直接显示字符串本身.在上面的代码中,分别输出下面的四行字符串:"这将会显示双引号""这也会显示双引号"这不会显示双引号这也不会显示双引号6.字符串常量:字符串常量的表示有两种方法.1.双引号表示的字符串:这种表示方法使得字符串可以支持一些特殊格式,这将是我们用的最多的表示方法,下面会有更详细的介绍.2.单引号表示的字符串:直白的说,单引号所包括的字符串会被原样显示出来,也就是说,即使单引号中包含特殊格式,也不会显示这种特殊格式.7.字符串变量:和数字变量一样,看看例子吧:1、赋值:a="欢迎使用RGSS来编程"print a结果输出:欢迎使用RGSS来编程2、连接:a="中华人民"b="共和国"print a+b结果输出:中华人民共和国3、乘法:a="连续两遍"print a*2结果输出:连续两遍连续两遍4、换行符:\n表示换行,但是只能用在双引号字符串内,若是在单引号字符串内便不起作用了,看看下面两个例子:a='中华人民\n共和国'b="中华人民\n共和国"print aprint b结果输出:中华人民\n共和国中华人民共和国5、常量中包含变量:a="人民"print "中华#{a}共和国"结果输出:中华人民共和国记住:这个特殊格式和\n一样只能在双引号形式的字符串中使用,这里提一下,这里的#符号不是注释的意思.再看一个:a="C:\\Program Files\\RPG Maker XP\\System\\Data\\Skills.rxdata"print "系统安装后的初始脚本文件是:#{a}"你可以试试看下面的例子:a="人民"print '中华#{a}共和国'结果输出:中华#{a}共和国五. 控制语句1. 条件分歧语句1.比较运算符:有6个比较运算符,分别是== 相等!= 不相等< 小> 大<= 小或相等>= 大或相等比较运算符,顾名思义,就是用来比较的,比较的对象可以是任意的,比较的结果是True或者False.举例:p(" 早安"==" 早安") # => truep(" 早安"==" 晚安") # => falsep (3 + 1 == 3 + 5) # => falsep (3 + 1 == 2 + 2) # => true观察一下结果就会明白.逻辑运算符:逻辑运算符也有6个,分别是:与:and , &&或:or , ||非:not , !举例:p (100 > 77 and 1 + 1 == 2) # => true p (100 > 77 && 1 + 1 == 2) # => trueif..elseif..else..end 语句:结构:if 条件1语句1elseif 条件2语句2..else语句end举例:x=123y=23z=67a=(x*y*z+x/y+z/y)*(y-z)+x*zif a>0print "大于0"elseif a=0print "等于0"elseprint "小于0"end最常用的还是if...end语句:金钱数=10if 金钱数<100print "对不起,你的钱不够了.."endunless..end 语句:这是if..end语句的变种,正好跟if..end相反,就是除非的意思:unless 条件语句end举例:金钱数=10unless 金钱数>=100print "对不起,你的钱不够了.."end除非你的金钱数大于等于100,否则:“对不起,你的钱不够了..”case..when..end 语句:如果对于把条件限制在某个范围或者某些特定的值的情况,使用case..end语句更方便:case 变量when 特定的值或者范围when 特定的值或者范围..end举例:主角状态="昏睡"case 主角状态when "昏迷"print "你昏迷了.."when "中毒"print "你中毒了.."when "昏睡"print "你昏睡了.."end2.条件赋值语句:条件赋值语句给我们提供了一个非常方便的if..else..end的简化版. (条件1 ? 语句1 : 语句2)相当于:if 条件1语句1else语句2end举例:战斗状态=1print (战斗状态>0 ? "胜利" : "失败")2.循环1.while..end 循环:举例:a = 0i = 1while i <= 5a += ii += 1endp a这很简单,很容易明白的.2.for..in..end 循环:类似于c语言中的for,但不同,in后面给出变量的变化范围.3变化范围:类似于1..5表示一个变化范围,其所含的值为大于等于1小于等于5. 举例:a = 0for i in 1..5a += iendp a这也很简单,很容易明白的.4.loop do..end 循环:举例:loop doi += 1p iend上面的代码会一直循环下去,也就是说是个死循环.只有使用break才可以从中跳出.5.break 语句:上面的例子如果改成下面的样子,就不再是死循环了:i = 0loop doi += 1if i == 5breakendp iendbreak也可以从while、for循环中跳出.6.next 语句:跳过本次循环,进入下次循环.举例:for i in 1..5if i == 3nextendend结果显示四次,就只有1,2,3,4,5被显示出来了.3. 函数1. 函数的概念:我们把事先编好的,能够解决或者说处理某种情况的功能的集合叫做函数.不必在意概念,用得多了自然就明白.其实我们一直在使用的p,print就是函数的一种,下面介绍一个很有用的函数,随机函数rand():rand(x)返回0-(xx-1)范围内的随机数,例如:p rand(100)返回的数字在0-99范围内.我们也可以设计自己的函数以便增加我们需要的功能,更多的时候,我们大多数时间是在跟函数打交道.2. 函数的声明:函数的名字基本上和变量的名字有着相同的限制,例外的情况是,函数可以在名字的最后添加?或!符号,这种符号有着特殊的用处,以后会讲到.函数的声明要用def..end语句,形如:def 函数名字语句end我们用rand函数来设计一个自己的函数bet():def betif rand(6)>3return "大"elsereturn "小"endendprint bet这里的return表示函数返回的值,如果省略return也可以,但最好带上,能够使程序可读性更好.我们给bet函数增加参数:def bet(x)if rand(x)>3return "大"elsereturn "小"endendprint bet(7)还可以为参数设置默认值:def bet(x=7)if rand(x)>3return "大"elsereturn "小"endendprint bet #这和print bet(7)一样函数可以有很多参数:def bet(x,y,z)if rand(x)>3 and rand(y)>3 and rand(z)>3return "大"elsereturn "小"endendprint bet(7,6,10)4. 重定义函数:如果定义了两次相同的函数,则只有后面定义的函数有效,而先前的定义就无效了. def helloreturn" 您好"enddef helloreturn" 晚安"endp hello #=>" 晚安"六. 数组如果知道将多次对一个变量,例如$salut赋值,您会怎样做呢?这在很多情况下都会发生.因此,您可以将所有的变量值放进一个数组里,而不是手动地给变量重新赋值.数组允许对每个变量值进行分别的处理.请看如下示例:$salut = ['Hello World','Good Bye World','What do you mean Good Bye World?'] print $salut运行上述代码得到的输出如下所示:Hello WorldGood Bye WorldWhat do you mean Good Bye World?显然,这不是我们想要的输出.没有间隔也没有换行.因此,我们可以标识希望显示数组的哪一部分,并使用先前解释的串联技术来更方便地提供易读的输出.$salut = ['Hello World','Good Bye World','What do you mean Good Bye World?']print $salut[0] + "\n"print $salut[1] + "\n"print $salut[2] + "\n"将会导致如下输出:Hello WorldGood ByeWorld What do you mean Good Bye World?仔细分析这些代码.如果回顾一下我们建立的数组:$salut = ['Hello World','Good Bye World','What do you mean Good Bye World?']我们告诉Ruby 定义一个名为salut 的变量,其值为:$salut = 0 1 2Hello World Good Bye World What do you mean Good Bye World?每个值通过一个数字来被识别.数字通过数组中的数字位置来定义.位置总是从0 开始,并从0 开始递增.所以要打印数组中的第2 个值,您要输入:print $salut[1]最容易忘记的是字段从0 而不是从1 开始.七. load,require语句在许多知名网站上,很多的人都认为RGSS不支持load,requir,语句,如果需要使用的话好去破解Scripts.rxdata文件(XP)或者Scripts.rvdata(VX),其实你不用去研究破解Scripts.rxdata了,因为RGSS完全支持load,require语句,只不过与Ruby语言稍有区别的是这两个语句只支持绝对地址,也就是说不支持类似于:require "win32/***" 的格式在我们的试验脚本中输入:load "d:/sequh.rb"就可以加载D盘的sequh.rb文件了,同理:require "D:/sequh.rb"这里我输入的是绝对路径,绝对路径的表示方法是:把DOS格式的路径名中的“\”统统改为“/”即可而相对路径的获得,需要一点儿办法:因为在我的游戏目录下有game.exe文件,所以我们可以通过它来获得游戏目录,然后得到绝对目录,把我们的相对路径加到绝对目录后面,例子:load "#{File.dirname(File.expand_path("Game.exe"))}/scripts/sequh.rb"其中的File.dirname(File.expand_path("Game.exe"))便是游戏目录的绝对路径.八. 对象和方法这个代码段中用到的一些技术和方法您可能是第一次见到.RGSS是一种面向对象的编程(Object Oriented Programming,OOP)语言.使用OOP 时,通常情况下程序员将调用诸如对象和方法之类的项目.对象就象一个容器.它包含自己特定的变量和函数. 方法是一种被调用的东西,就像函数对对象进行专门处理一样.如果看一下先前的示例,我们就可以显示工作中的对象和方法.while enterWorld = STDIN.gets enterWorld.chop!这里我们有两个对象和两个方法的示例.第一个对象是enterWorld,第二个对象是STDIN.enterWorld 对象是用户定义的对象,而STDIN 对象(Standard Input 的缩写)是RGSS内建的.这个示例中还有两种方法.第一种是gets,第二种是chop!.前面提到过,方法对对象进行专门处理.明确地说,方法将在对象中执行一个操作.用gets 方法,我们告诉RGSS 去获取STDIN.当RGSS 看到与STDIN 关联的gets,它就会等待键盘输入和一个回车.简而言之,STDIN.gets 就是等待用户输入一些内容然后敲Enter 键.第二种方法chop! 用来对用户定义的对象enterWorld 进行专门处理.chop! 方法告诉enterWorld 将enterWorld 对象关联的数据的换行符和回车符截去.如果不使用chop!(或者chomp!),那么包含在先前代码上下文中的下面语句永远都不会为真.if enterWorld == $salut[0]因为没有使用chop!,所以得出结果将为假,$salut[0] 实际上就等于$salut[0]\n.新行是由STDIN 对象从gets 方法接收的输入产生的.使用回车将会在值末尾添加一个换行符.九.后记Ruby是是一种非常强大而且易于使用的语言,而RGSS继承了Ruby的很多优点,如果您是一个出身于C++、Perl 或Python 的程序员,您会发现它们与Ruby 有一些极为相似之处(尤其是Python 语言),这个很简单的基础教程就先写到这里,如果您在学习脚本的期间有什么疑问,欢迎你到66RPG论坛()以及RPG驿站()提问!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Window_Item 物品选择窗口 Window_Selectable
Window_Skill 特技选择窗口 Window_Selectable
Window_SkillStatus 特技画面用 状态窗口 Window_Base
Window_Target 物品、特技画面用 对象选择窗口 Window_Selecta6: 敌人完全回复
337: 显示动画
338: 伤害处理
339: 强制行动
340: 战斗中断
351: 呼叫菜单画面
352: 呼叫存档画面
353: 游戏结束
354: 返回标题画面
355: 脚本
Scene_Title 标题画面
Window_EquipLeft 装备画面用 左侧窗口 Window_Base
Window_EquipRight 装备画面用 右侧窗口 Window_Selectable
Window_EquipItem 装备画面用 物品窗口 Window_Selectable
Window_Status 状态画面用 状态窗口 Window_Base
@viewport1 (0) @fog (3000) 雾
@weather (1000) 天气
@character_sprites (0..800) 人物
@tilemap (0..800) 地图
@panorama (-1000) 远景
Spriteset_Battle
221: 准备渐变
222: 执行渐变
223: 更改画面色调
224: 画面闪烁
225: 画面震动
231: 显示图片
232: 移动图片
233: 旋转图片
234: 更改图片色调
235: 图片消失
236: 天气设置
241: 演奏 BGM
242: 淡出 BGM
图片384*256
地图256*256
脚本
3 # 整数
52 # 整数
-99 # 整数
1.5 # 浮点数
3.0 # 浮点数
# 载入数据库
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
245: 演奏 BGS
246: 淡出 BGS
247: 记忆 BGM / BGS
248: 还原 BGM / BGS
249: 演奏 ME
250: 演奏 SE
251: 停止 SE
301: 战斗处理
302: 商店处理
303: 名称输入处理
311: 增减 HP
312: 增减 SP
313: 更改状态
314: 完全回复
315: 增减 EXP
316: 增减等级
317: 增减能力值
318: 增减特技
319: 变更装备
320: 更改角色姓名
321: 更改角色职业
322: 更改角色图形
331: 增减敌人 HP
332: 增减敌人 SP
333: 更改敌人状态
$data_tilesets 图块 RPG::Tileset 数组
$data_common_events 公共事件 RPG::CommonEvent 数组
$data_system 系统 RPG::System
# 生成各种游戏对像
$game_temp = Game_Temp.new
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
$data_armors 防具 RPG::Armor 数组
$data_enemies 敌人 RPG::Enemy 数组
$data_troops 队伍 RPG::Troop 数组
$data_states 状态 RPG::State 数组
$data_animations 动画 RPG::Animation 数组
$game_player = Game_Player.new
变量名称 内容 所属类
$game_temp 临时数据 Game_Temp
$game_system 系统数据 Game_System
$game_switches 开关 Game_Switches
$game_variables 变量 Game_Variables
Window_InputNumber 数值输入窗口 Window_Base
Window_Message 信息窗口 Window_Selectable
Window_PartyCommand 战斗画面用 同伴指令窗口 Window_Selectable
Window_BattleStatus 战斗画面用 状态窗口 Window_Base
135: 更改禁止菜单
136: 更改禁止遇敌
201: 场所移动
202: 设置事件位置
203: 画面卷动
204: 更改地图设置
205: 更改雾的色调
206: 更改雾的不透明度
207: 显示动画
208: 更改透明状态
209: 设置移动路线
210: 等待移动结束
@viewport1 (0) @weather (1000) 天气
@enemy_sprites (1..320) 战斗者(敌人)
@battleback_sprite (0) 战斗背景
Window_Command 指令窗口(泛用) Window_Selectable
Window_Help 帮助窗口 Window_Base
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_map 地图 Game_Map
$game_player 主角 Game_Player
@viewport3 (5000) - 画面的闪烁
@timer_sprite (500) - 计时器
@viewport2 (200) @picture_sprites (1..50) 图片
变量名称 内容 所属类
$data_actors 角色 RPG::Actor 数组
$data_classes 职业 RPG::Class 数组
$data_skills 特技 RPG::Skill 数组
$data_items 物品 RPG::Item 数组
$data_weapons 武器 RPG::Weapon 数组
$game_self_switches 独立开关 Game_SelfSwitches
$game_screen 画面效果 Game_Screen
$game_actors 角色排列 Game_Actors
$game_party 同伴 Game_Party
$game_troop 队伍 Game_Troop
Window_SaveFile 存档、读档画面用 文件窗口 Window_Base
Window_ShopCommand 商店画面用 商品选择窗口 Window_Selectable
Window_ShopBuy 商店画面用 购买窗口 Window_Selectable
Window_ShopSell 商店画面用 出售窗口 Window_Selectable
Window_Gold 显示金钱窗口 Window_Base
Window_PlayTime 菜单画面用 游戏时间窗口 Window_Base
Window_Steps 菜单画面用 步数窗口 Window_Base
Window_MenuStatus 菜单画面用 状态窗口 Window_Selectable
Window_ShopNumber 商店画面用 数量输入窗口 Window_Base
Window_ShopStatus 商店画面用 状态窗口 Window_Base
Window_NameEdit 名称输入画面用 名称窗口 Window_Base
Window_NameInput 名称输入画面用 文字选择窗口 Window_Base
Window_BattleResult 战斗画面用 结果显示窗口 Window_Base
Window_DebugLeft 调试画面用 左侧窗口 Window_Selectable
Window_DebugRight 调试画面用 右侧窗口 Window_Selectable
101: 显示文章
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
相关文档
最新文档