楼主: myownroc

[推荐问答] 【完结】RPG Maker XP(数据库及事件) 使用教程

[复制链接]
梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-8-18 20:04:13 | 显示全部楼层
本帖最后由 RyanBern 于 2019-3-7 22:16 编辑

数据库-敌人

[fold=数据库-敌人]
RPG游戏没有敌人怎么可以,所有敌人的作用都是衬托主角的伟岸啊。不过敌人太脆太弱小怎么能体现出我们主角的实力呢?在英雄见到魔王之前,肯定会遇到各种奇葩敌人,只有掌握了它们各自的特点,主角才能玩成这“不可能的任务”的。下面我们就要设置敌人了。
有关敌人的脚本,可参考下面几个类:
RPG::Enemy
RPG::Enemy::Action
Game_Enemy
其中前两个类和数据库的关系最大。
1.png
(A)敌人总括设置:
在这里可以大致浏览敌人的信息,同时可以进行复制/批量复制/更改最大值等操作。
(B)敌人的名字和战斗图:
就是设置敌人名字和在战斗场景中显示的图片。敌人战斗图的位置可以在队伍中调节(参考数据库-队伍)
(C)敌人的能力值设置:
在这里设置敌人的能力值,敌人的能力值是固定的。下面列表给出了各个能力值的范围。
  • MAXHP:1~999999
  • MAXSP:0~9999
  • 力量:1~999
  • 灵巧:1~999
  • 速度:1~999
  • 魔力:1~999
  • 攻击力:0~999
  • 物理防御:0~999
  • 魔法防御:0~999
  • 回避修正:-100~100

(D)敌人的动画设置:
在这里可以设置敌人进攻时的动画和对象方的动画。注意,这里应该是敌人进行普通物理攻击时的两个动画,敌人发动特技时,遵循特技的动画设置。
同样地,如果将攻击方的动画设置为[无],那么实际会由一次短暂的白色闪烁来代替进攻动画。
(E)击杀敌人的奖励设置:
这里是设置击杀该敌人后,获得的奖励。
  • EXP:击杀该敌人后,所有队员获得的EXP(无法获得EXP的除外),每个敌人单独计算。
  • 金钱:击杀该敌人后,队伍获得的金钱。
  • 宝物:敌人掉落的宝物,只可以设置一件,种类可以是物品/武器/防具,但是数量为1,掉落可以设定掉落几率,每个敌人单独计算。

(F)敌人在战斗中备选行为列表:
上面的设定可以说几乎没什么需要注意的,那么下面的这个,就要好好说一下了。
这里是设置敌人战斗中备选所有行为的列表,每次敌人进行行动时,都要按照一定规律从这个列表中选取一个行为进行发动。
2.png
【事件出现条件】也就是该动作出现的条件,注意,这里只表示该动作会出现在备选行为列表中,并不表明敌人一定会采取这个行为。
  • 回合a+bx:表明该行为在第a+bx回合出现,这里a和b是可以调节的参数。第0回合定义为刚刚进入战斗场景时的那个瞬间,因为这个瞬间没有开始进行打斗,所以第0回合出现的备选行为没有意义。如果a=1,b=3,则再第1,4,7,...回合时,这个行为才可以作为敌人的备选行为。
  • HP:当该名敌人的HP达到指定百分比以下时,才会出现的备选行为。
  • 等级:当队伍中成员最高等级达到规定数值时,该行动会作为备选行动出现。
  • 开关:当某个开关打开时,该行动会作为备选行动出现。

以上四个条件必须同时满足,该行动才会可能被选中成为最终的行为。
【行为】
基本:攻击/防御/逃跑/什么也不做,很好解释,这里不说了。
特技:敌人发动一个特技。
【概率】
这个设定是整个数据库-敌人中最难说清楚的了,概率一共分为9个等级,分别由数字1~9表示。那么敌人最终的行为的抽取满足什么规律呢?在研究完十分别扭的Game_Enemy后,本人将此规律送上。
首先,还是引入权重的概念,每一条行为都有其对应的权重,但是这个权重并不是我们设置的这个概率等级1~9。而是要从备选行为中找到最大的概率,以这个最大概率为基准,其他行为,如果他们的概率和最大的概率相差在2以内(包括2),那么这样的行为才有可能被采用。其他概率和最大概率相差超过2的,即使满足了所有出现的条件,也不可能被采用。
实际的权重表示为:
  • 具有最大概率的行为:权重为3
  • 概率比最大概率低一个等级:权重为2
  • 概率比最大概率低两个等级:权重为1

而后,对所有的这样的(满足出现条件的)行为进行一次有权重的随机选取,决定最终行为。
接下来给出一个例子,假设某敌人总共有5个行为(其中标明√的行为是满足出现条件的行为):
  • 行为1:概率5(实际权重0)
  • √行为2:概率4(实际权重3)
  • √行为3:概率4(实际权重3)
  • √行为4:概率2(实际权重1)
  • √行为5:概率1(实际权重0)

那么按照如上规则,最终的总权重为3+3+1=7,在该回合内,该敌人有3/7的概率选择行为2,有3/7的概率选择行为3,有1/7的概率选择行为4。
注意,行为1由于不满足出现条件,所以权重为0。但是如果条件发生改变,满足行为1的出现条件了,权重就要进行调整。
(G)属性有效度和状态有效度:
这个参考数据库-职业,在这里不再重复。
[/fold]

评分

参与人数 1梦石 +1 收起 理由
myownroc + 1 塞糖

查看全部评分

回复 1 0

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-8-24 12:23:43 | 显示全部楼层
本帖最后由 RyanBern 于 2019-3-7 22:17 编辑

数据库-队伍

[fold=数据库-队伍]
主角闯关打怪需要发挥团队精神,那么敌人组织主角自然也是拉帮结伙了。在这里我们就可以设置敌人的队伍了。
有关敌人队伍的脚本,可以参考下面两个类:
Game_Troop
RPG::Troop
其中,RPG::Troop还有若干内部类:
RPG::Troop::Member             # 队伍中的成员的类
RPG::Troop::Page                   # 队伍中事件页的类
RPG::Troop::Page::Condition # 事件页出现条件的类
队伍设置的主面板如下:
1.png


(A)队伍总括设置:
在这里可以浏览所有队伍,并可以进行复制/批量复制/删除/更改最大值等操作。


(B)队伍详细设置:
在这里可以进行队伍的详细设置。下面说说几个按钮的作用。
【自动生成名称】根据加入到队伍中的敌人自动生成名称,默认为[敌人1的名字*敌人1的数量, 敌人2的名字*敌人2的数量, ...]
【ED战斗背景】这里是设置下方敌人位置示意图的战斗背景,也是战斗测试场景的战斗背景,可以随意更换。注意,这里并不是真正设置战斗背景的地方,要想设置战斗背景,请参考数据库-图块。
【战斗测试】使用自己指定的角色和装备对当前队伍进行战斗测试。
4.png
点击战斗测试,会看到上面的面板。在这里可以尽情调节你的参战人员,然后进行战斗测试。在战斗测试中,所有的物品都被设置为99个,因此可以初步测试出打败这个队伍的敌人需要多少道具消耗,总之这是个非常有用处的功能。


【删除】在下方敌人位置示意图中选中一个敌人,然后可以点击删除,将它从队伍中移除。
【全部删除】删除所有队伍中的敌人。
【整列】自动调节敌人位置,默认为在画面下方居中排列。
【添加】在右边所有敌人列表中,选择一个敌人,点击添加按钮可以将选中的敌人加入到队伍中。


左下角的部位是一张战斗场景的缩略图,在这里可以调节敌人的位置和敌人的战斗属性。
选中敌人的战斗图后,按住左键可以拖动该战斗图,这样可以改变位置。
右键单击某个敌人后,会出现战斗属性的设置,这里只有两个设置:(在这里就不截图了)
  • 中途出现:该敌人不会在一开始出现,需要在【战斗事件】中设置指令让其出现。如果在所有敌人出现之前,现有的敌人都被打败,则依然会判定战斗胜利。
  • 不死之身:该敌人是无敌的,任何攻击都不能给它造成伤害。通常在必败战中会设置不死之身。



(C)战斗事件设置:
这个面板和我们的事件页设置非常像,具体按钮的功能可以参考【详细介绍-事件页】,在这里只说不一样的地方。
【条件】该战斗事件页出现的条件,类比于“事件出现条件”。在这里我们可以设置四个条件:
2.png
  • 回合a+bx:在特定回合才能出现,例如a=1 b=3,则在第1,4,7...回合,该条件才被满足。
  • 敌人HP在固定百分比以下:指定敌人HP的数值在固定百分比以下时,该条件才被满足。
  • 角色HP在固定百分比以下:指定角色的HP在固定百分比以下时,该条件才被满足。
  • 开关为ON:指定某开关打开时,该条件才被满足。

一个事件页出现,以上四条必须同时满足。如果一条也不设置,在设置栏中我们看到的是“不执行”,这个经过测试,真的是永远都不执行,所以不要把它理解为“无条件”。
另外,和地图的事件页不同,如果多个事件页的条件同时满足,那么战斗事件将会从满足条件的所有事件页中编号最小的依次执行。意思就是说,如果1号,2号事件页的条件同时满足,那么战斗时会先执行1号事件页的内容,再执行2号事件页的内容。这个和地图事件页不同,要注意。
【距离】该战斗事件页出现条件满足的期间,执行该事件页的方式。
3.png
  • 战斗:满足条件时,在整个战斗中只执行一次。
  • 回合:满足条件时,每回合执行一次。
  • 暂时:满足条件时,反复执行,直到条件不满足为止。

[/fold]

评分

参与人数 1梦石 +1 收起 理由
myownroc + 1 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-8-25 11:09:19 | 显示全部楼层
本帖最后由 RyanBern 于 2019-3-7 22:17 编辑

数据库-状态

[fold=数据库-状态]
状态的设置可以说是RPG战斗的精华部分之一,如果没有了状态那么RPG战斗会顿时变得非常无趣。下面我们就要设置我们的状态了。
与状态有关的脚本,可以参考下面的类:
RPG::State
下面的图就是状态设置的主要面板:
1.png


(A)状态总括设置:
在这里你可以浏览所有的状态,并且可以进行复制/批量复制/删除/更改最大值的操作。


(B)状态的名称、动画、限制和效果
名称,就是该状态的名字,动画,就是战斗者持有该状态时播放的动画。由于在战斗中,同一时间只能在一个战斗者身上显示一个状态动画,所以当战斗者持有不同状态时,到底显示哪个状态的动画,还需要我们仔细发掘,这个规律我们马上就要说到。
状态的限制,就是当战斗者持有该状态时,对战斗者的特殊限制。
2.png
  • 无:该状态不会对战斗者有特殊限制
  • 不能使用魔法:该状态下的战斗者不可以使用魔法类特技(PS,魔法类特技是指攻击力F为0的特技,攻击力F为1以上的特技不会受到这个限制)
  • 普通攻击敌人:该状态下的战斗者会自动使用普通攻击来攻击敌人(注意,如果是角色的话不受玩家控制)
  • 普通攻击同伴:该状态下的战斗者会自动使用普通攻击来攻击队友,也包括本人(同样,如果是角色的话不受玩家控制)
  • 不行动:该状态下的战斗者无法进行战斗

上面的状态从上至下,受限制的等级不断提高,前两个限制下,玩家还能给角色下达战斗指令,而后面三个限制,玩家就不可以给角色下达战斗指令了。另外,如果战斗者被附加了多重状态,那么所有状态对他的限制应该取限制等级最高的那个。(例:普通攻击敌人+普通攻击同伴,实际效果只会普通攻击同伴;普通攻击同伴+不行动,实际效果应该是不行动)
状态的效果,在这里分为5种,不同的状态可以相互叠加。
  • 不能抵抗:该状态附加时一定会成功,无视状态有效度的设定。而且当战斗者已经持有该状态时,再次附加也不会出现MISS。但是,不能抵抗的状态可以通过穿戴防具来防御这个状态的附加。
  • 当做HP为0的状态:该状态和HP为0相互关联,被附加该状态时,HP自动变为0,反之HP变为0时,该状态也会自动附加。通常这个效果只有代表[死亡]的状态才有。
  • 无法获得EXP:战斗结束时,持有该状态的角色无法获得EXP。
  • 不能回避攻击:持有该状态的战斗者无法回避敌人攻击,无视他的灵巧值和回避修正。(但是如果某特技的第一命中率不是100%,那仍然可以打出MISS)
  • 连续伤害:持有该状态的战斗者,在战斗中每回合都会损失自身最大HP的10%左右的血量。如果是角色的话,在地图上每走2步就要损失自身最大HP的1%左右血量。此外,在地图中这个状态是无法自行解除的。



(C)状态引起的能力值变化
附加状态引起的能力值变化,如果是多重状态,能力值变化为百分比的,百分比之间相互叠加,能力值变化为数值的,数值之间直接叠加。
但是这里有一个特殊的设置不属于能力值变化,那就是【定量】。
定量:刻画状态等级的特殊参数,实际上是表示显示状态名称和动画的优先程度。在同时附加多个状态的情况下,定量大的状态优先显示动画和名称,如果定量相同,则选取限制等级高的(参见上文)进行优先描绘。另外,定量为0的状态状态栏不会显示其名称。
命中率:这个也是一个特殊的能力值,表示人物自身的命中率,注意,不是技能的命中率。该命中率设定只对物理攻击和攻击力F为1以上的特技有效,其余情况无效。当这个命中率发生变化时,人物的物理攻击和物理特技的命中都会受到影响,真正的第一命中率为:人物命中率*技能命中率。通常情况下,人物命中率为100%,只有当人物中了状态时人物命中率才会下降。
其他的能力值比较好理解,在这里就不进行叙述了。


(D)状态的解除条件
  • 战斗结束时解除:勾选后,战斗结束该状态自动解除
  • 回合解除:在战斗中,固定回合之后解除该状态的概率。实际上,这里设定的是该状态的最低持续回合数,过了这个回合数,之后的每个回合都有概率进行解除。
  • 受到物理攻击解除:受到物理攻击或者攻击力F为1以上的特技攻击后,固定概率解除。



(E)状态的属性防御
该状态对某属性攻击的防御,可以与其他状态以及防具相互叠加。具体叠加规则参考数据库-武器和防具。


(F)状态变化
在这里可以设置该状态附加时引起的其他状态变化,通常是表示状态之间的关联或者排斥。
状态变化(+):附加该状态时,顺带一起附加的其他状态。通过这样附加的状态无视状态有效度,而且不能被防具所防御,但是可以被其它的状态所防御(关于状态防御状态在下面就会提到)。
状态变化(-):附加该状态时,自动去除的其他状态。移除状态一定成功,并且这里有个不太引起人注意的规则,可以利用这个来做状态之间的防御。
如果状态A的状态变化里面设置了对状态B的(-)变化(即附加状态A会自动去除状态B),而状态B的状态变化里面没有设置对状态A的(-)变化(即附加状态B不会去除状态A),那么当战斗者持有状态A时,状态B是无法附加成功的,这就好似状态A可以防御状态B一样。
不过,如果状态B的状态变化里面也设置了对状态A的(-)变化,那么状态A和B之间就是相互排斥的关系了,附加任何一个状态都会解除另一个。
[/fold]

评分

参与人数 1梦石 +1 收起 理由
myownroc + 1 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-8-28 13:28:35 | 显示全部楼层
本帖最后由 RyanBern 于 2019-3-7 22:18 编辑

数据库-动画

数据库中的动画可以在地图和战斗中进行播放。每当主角发动必杀技时,一套绚丽的动画会给游戏的观赏性增加不少。下面就要设计我们的动画了。
有关动画的脚本,可以参考下面的类:
RPG::Animation
RPG::Sprite
有关内容参考这个帖子的内容,感谢@羁绊的守望者 编写此帖
https://rpg.blue/forum.php?mod=v ... p;page=1#pid2557137

点评

↓太好了,教程帖子先回复到这里吧http://rm.66rpg.com/forum.php?mod=viewthread&tid=370578  发表于 2014-9-14 16:24
申请讲解动画  发表于 2014-9-14 13:51

评分

参与人数 1星屑 +100 收起 理由
紫英晓狼1130 + 100 讲些绘制原理就够了

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-8-28 14:31:21 | 显示全部楼层
本帖最后由 RyanBern 于 2019-3-7 22:18 编辑

数据库-图块

[fold=数据库-图块]
RPG游戏的世界这么大,没有地图怎么可以?地图哪里允许经过,哪里是死路一条,哪里是水流哪里是高山,都需要我们好好设置一番。下面我们就要设置我们的图块了。
与图块有关的脚本,可以参考下面的类:
RPG::Tileset        # 数据库-图块类
Game_Map        # 游戏中装载当前地图数据的类
Spriteset_Map   # 用于把地图上的东西,包括主角和事件真正显示出来的活动块
首先依然是我们的主面板
1.png
(A)图块总括设置:
用于浏览所有可用的图块,在这里你可以进行图块的复制/批量复制/删除/更改最大值的操作。


(B)图块名字和素材设置:
在这里你可以设置图块的各种素材,并且在右侧你可以看到图块的样子。
  • 名称:描述图块的名称,可不填
  • 地图元件图形:用于描绘普通元件的素材图形,保存在Graphics/Tilesets文件夹下,在右侧,则显示为第二行以后的部分(即不包括第一行的部分)
  • 自动元件图形:用于描绘自动元件素材的图形,保存在Graphics/Autotiles文件夹下,在右侧显示为第一行除左上角第一个以外的部分。也就是说你可以设置7个不同的自动元件。和普通元件不同的是,自动元件只需要描绘它覆盖区域的边缘,其内部会自动进行填充。
  • 全景图形:作为地图背景显示的图形,保存在Graphics/Panoramas文件夹下,我们可以将全景图形理解为第一层下面的那层,如果没有三个图层的遮挡,全景图就会显示出来。在这里要注意的是,并不是任何一张图片都可以作为全景图,只有那些左右可以无缝对接的图片(即如果把图片的左侧和右侧平行拼起来,不会出现错位等不和谐现象)才可作为全景图。
  • 雾图形:如果说全景图形是第一层下方的部分,那么雾图形就是第三层(甚至事件层)上方的部分,保存在Graphics/Fogs文件夹下,它用于显示雾场景的遮罩效果。同样,雾图形也要求左右无缝对接。
  • 战斗背景图形:在当前图块描绘的地图触发战斗时,默认的战斗背景图形。保存在Graphics/Battlebacks文件夹下,大小不可小于640*320,注意这里并不是640*480,这是因为下面的那一条用于显示状态栏。如果图片过大,超过范围的地方不会显示。

注意,左上角那一块空白的地位比较特殊,相当于绘制地图中的“橡皮”,我们稍后会详细说明这个图块。


(C)图块通行与属性设置:
在这里,我们可以对图块的通行和特殊属性进行设置。在右侧我们看到了六个选项:通行 块,通行 4方向,优先级,草木繁茂处,柜台属性,地形标志。
(C-1)通行 块
我们打开图块的设置面板,默认的设置就是让我们设置通行 块,在这里我们看到有圆圈和叉的标记。实际上,在这个面板下一共有三个标记。
  • 圆圈○:表示该图块至少有一个方向可以通行。
  • 叉×:表示该图块所有方向都不能通行。
  • 方块□:只在自动元件处有此设置,表示基本不能全方向通行,但是如果某一片区域都被同种的这样的自动元件填充,那么最顶层的边缘图块是可以全方向通行的。这个设定通常用于墙体,树林等海拔较高的自动元件。

我们注意左上角“橡皮”的通行规则,是全方向可以通行,这个千万不要更改。
(C-2)通行 4 方向
在这里我们可以进行更细致的通行方向设置。
点击这个按钮,我们发现这个小面板发生了变化,每个图片上面不再是圈圈叉叉,而是变成了四个方向的箭头。
2.png
首先说明一下什么叫某方向可以通行,某方向不能通行。这里我们可以把它理解为在每个图块的四条边上设置“墙”,哪个方向不可通行,就把哪个方向上的边设置上墙。例如,某图块的“向上方向”不可通行,意思就是说,你踩在这个图块上,向上走是走不过去的,同样,你在这个图块上方紧邻的图块向这个图块走也是走不通的。
知道了这点,我们就可以进行方向设置了,点击一个箭头,它会变成一个圆点,就表明这个点所在的方向不可通行了。
(C-3)优先级
在这里我们可以进行图块优先级的设置。所谓优先级,其实就是在重叠情况下,优先显示的程度。也可以理解为“图块的高度”。
点击这个按钮,有些图块上会出现☆+数字的显示。
3.png
这后面的数字就代表优先级了,数字越大优先级越大,总共可以设置6个级别:无,1~5星。
我们注意到,最左上角的橡皮的优先级是5星,这个也是不要更改,否则会造成麻烦。
另外,角色和事件这样在地图上显示的对象,如果不是“总在最前显示”,优先级是[无]。
除了优先级以外,地图的层数也可以决定显示的优先度,在有相同优先级的情况下,高图层的对象被优先显示。事件层是最高层,所以通常事件层的显示要高于其他层的显示。但是如果优先级不同,就要按照优先级的大小进行显示了。所以1星以上优先级的图块会将主角和事件盖住。

在这里再唠叨一句RMXP通行判定的规则。在RMXP中说通行,实际上是说角色或者事件在某图块上沿着某方向的通行规则。而一张地图分为4层:3个元件图层+1个事件层。由于不同层的统一位置可能有不同的对象(图块或者角色/事件),在没有设置穿透和允许穿透的情况下,通行的规则如下:
由上至下(即按照事件层-第三层-第二层-第一层)的顺序考虑,忽略无事件和无主角的情况,以及优先度为1星以上的该方向可通行图块,考虑到的第一个图块的通行规则,就是这个位置的(该方向)通行规则。这样说比较难以理解,我们还是举个例子。
例1:高地边缘下方的石头(向上)
事件层:无事件与主角
第三层:通行方向为向上为可通行,优先度为1星
第二层:通行方向为全方向不可通行,优先度为[无]
第一层:通行方向为全方向可通行,优先度为[无]
那么这个位置的向上的通行规则就是不可通行。
例2:墙上的梯子(向上)
事件层:无事件与主角
第三层:通行方向为全方向可通行,优先度为5星(其实这个很可能就是橡皮)
第二层:通行方向为上下方向可通行,优先度为[无]
第一层:通行方向为全方向不可通行,优先度为[无]
那么这个位置的向上的通行规则就是可以通行。
所以说这能够解释一些明明设置为不可通行,但是主角仍然能够通行的“灵异事件”,原因很可能就是错把普通的透明图块当作橡皮使用。我们知道普通的透明图块虽然是全方向可通行,但是优先度不是5星,而是[无],根据通行规则,如果这种图块加在了不可通行的图块之上,那么被设置为不可通行的图块实际上就可以通行。


(C-4)草木繁茂处
这个不多做解释,被设置为草木繁茂处的图块,角色或事件走上去,它的下半部分(如果是人物图形则恰好是在腿部)会有模糊化效果,这就好像人走在草丛里下半身若隐若现一样。
4.png
被设置为草木繁茂处的图块,上方会有波浪的标志。
(C-5)柜台属性
这个是为柜台桌子等特殊元件设置的属性。被设置为柜台属性的元件,角色可以隔着这种元件远距离触发事件,而无需走到事件上面或它的旁边。
5.png
被设置为柜台属性的图块,上方会有实心的菱形。但是这个图中没有。
(C-6)地形标志
这个是为了区分地形区域而设置的特殊属性,一般不会用到。不过一些特殊的功能实现有赖于地形标志的设置。
6.png
地形标志可以设置0~7八个不同的数字。
[/fold]
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-8-31 11:49:45 | 显示全部楼层
本帖最后由 RyanBern 于 2019-3-7 22:18 编辑

数据库-公共事件与系统

[fold=数据库-公共事件]
一个事件被反复调用,我又不想书写那么多次怎么办?
使用物品或特技后,我还想要一些特殊效果怎么办?
每个地图都要自动执行相同的事件,难道真的要在每个地图上设置并行处理的事件吗?
有了公共事件,这些就再也不是问题。
1.png


(A)公共事件总括设置:
在这里你可以浏览所有的公共事件,并进行一些复制/批量复制/删除/更改最大值等操作。


(B)公共事件的名称和触发条件:
左侧的输入框可以让你自定义公共事件的名字。而右侧的两个选项【目标】和【条件开关】,可以让你设置公共事件的触发条件。
【目标】公共事件启动的方式
2.png
  • 无:该公共事件没有任何启动方式,实际上是只有主动调用该事件的时候(其他事件调用公共事件,特技或物品关联,etc)它才会真正启动。
  • 自动执行:在相应条件开关打开时,立即执行。
  • 并行处理:在相应条件开关打开时,反复执行。和自动执行不同的是,并行处理的事件不会影响其他事件以及主角活动,而自动执行的事件会迫使其他的行为卡住。

【条件开关】
自动执行或并行处理的公共事件,要设置对应的开关来控制其触发。


(C)公共事件的执行内容:
和事件页的内容相似,这里是公共事件的执行内容。

注:公共事件和地图事件不同,由于公共事件没有事件页,只有执行内容,所以有些事件指令可能无法正常使用。
例如在公共事件内调用【独立开关操作】,由于独立开关只有地图事件才有,所以这样的指可能无法正常执行。通常认为,如果是某个地图事件调用了这个公共事件,那么该公共事件对独立开关的操作实际是操作了调用它的地图事件的独立开关。
在公共事件内【设置移动路线】,由于移动路线有对应的地图事件或主角,所以实际显示可用的移动的角色应该是当前地图的所有角色。(意思就是如果你在地图001编辑模式下打开了公共事件编辑面板,显示可用是移动角色就是地图001中的事件)
[/fold]

[fold=数据库-系统]
数据库-系统用于一些其他设置,通常是素材的设定。另外,游戏中的属性也是在这里设置的。
有关系统的脚本,可以参考下面的类:
RPG::System
3.png


(A)初期成员设置:
在这里可以设置你队伍的初期队员,即点击“新游戏”后,主角队伍有的初始队员。如果一个也不设置,则游戏开始后角色队伍为空,主角在地图上的行走图不会显示。


(B)属性的设置:
这里是游戏里各种属性的编辑,由于属性不像状态那样有很多地方可以自定义,因此放在这里设置。


(C)系统素材设置:
这里可以设置系统的一些图形和音乐音效。
这里有几个地方翻译不是很恰当或者不是很明白。
  • 警告 SE:实际上应该是点击了无效的项目时播放的SE,在脚本中被称作“冻结SE”
  • 商店 SE:在商店购买物品时,确认购买后播放的SE。
  • 角色受伤 SE:实际上是角色被击倒时候播放的SE,所以,被击倒和受伤程度上看来是完全不同的。
  • 敌人受伤 SE:实际上是敌人被击倒时候播放的SE。



(D)用语设置:
用来设置游戏中的专有名词设置。
[/fold]
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2015-1-28 12:39:30 | 显示全部楼层
本帖最后由 RyanBern 于 2019-3-7 22:19 编辑

停更这么久了,本人继续来填坑。
接下来的几个帖子是有关事件指令的介绍。在这里主要介绍一些容易忽略的功能还有常用的技巧,十分简单指令将会被一笔带过。由于本人的事件使用功力不强,有些东西会想不到,因此欢迎各位事件党来批评补充。

事件指令——Part I

[fold=事件指令——Part I]
事件指令,就是在事件页的执行内容中的各种命令代码。在编辑模式下,这些指令以固定的格式保存在地图文件中,具体来说,每一条指令都有其编码(code)和参数(parameters)。在游戏启动之后,由RGSS的事件解释器Interpreter把这些事件指令翻译成真正执行的代码。换句话说,真正可以执行的源码并不是存在地图数据文件中的,而是Interpreter通过解释得到的。
以上这一小段文字简单说明了RGSS1事件指令执行的机制,初学者可以跳过,不过,理解这个机制可以使你拥有利用脚本编辑器制作事件的能力。
与事件指令有关的脚本:
Interpreter1~Interpreter7
在Interpreter2中,可以看到所有事件指令对于的编码,如果想要查看其定义,可以通过搜索command_(+命令代码)的方式直接跳转到定义的部分。

Interpreter 2

Interpreter 2

例如,搜索'command_101'可以找到【显示文章】的代码定义。

接下来的内容会介绍事件指令第一页的所有命令。注意一下各个按钮上的文字,后面带有三个点'...'的表明你要进一步设定这个指令的参数。

事件指令第一页

事件指令第一页

  • 显示文章:显示一个对话框(Window_Message),里面的内容是你输入的文字。
    这个指令为最常用的指令之一,显示你要表达的文字。需要注意的是,这个里面可以输入若干控制码来表示有特殊意义的文字。
    \c[颜色编号]:从这个控制码开始,将描绘文字的颜色改变成指定编号的颜色。

    颜色编码

    颜色编码

    上图引用自F1,代表了可用颜色的编号。
    \n[角色ID]:显示对应ID的角色名字。
    \v[变量ID]:显示对应ID的变量数值。
    \G:显示金钱框,该金钱框会在这个对话框消失的时候同时消失。
    \\:显示'\'符号本身,由于'\'符号是转义字符,所以必须要利用这种方式显示。
    【小技巧】在对话框中输入角色名字时,推荐使用\n[角色ID],这样如果角色的名字发生变化,能省去大量修改对话的时间。
  • 显示选择项:显示一个带光标的对话框,可以从各种选择项中选择一个。
    【取消的场合】的含义:按下Esc键时,所对应的行为。“无效”表示按Esc键没有任何反应;"选择项1~4"表示按下Esc的效果等同于选择对应的选择项;“分歧”表示按下Esc键要有一个自定义的反应,这个反应通常不同于已有的选项。
    【小技巧】当显示文章和显示选择项两个指令相邻的时候,RGSS会尝试着把两个对话框合并成一个。如果文章的行数+选择项个数<=4,那么实际显示的时候,只会显示一个对话框,这个对话框上方是显示文章的内容,下方是选择项的内容。
  • 数值输入的处理:显示一个数字输入框,将输入的数字赋值给对应的变量。
  • 更改文章选项:作用在对话框上,可以更改对话框在屏幕中的位置以及窗口是否透明。
  • 输入键的处理:等待按下一个按键,将按键的对应编号赋值给对应变量。只能识别Input模块定义的按键,并不是所有键盘按键都可识别。
  • 等待:等待一段时间,在事件指令模式下,20帧为一秒。
  • 注释:为事件指令添加注释,该注释起说明作用,没有什么执行的效果。
  • 条件分歧:处在条件分歧层次下的指令只有在条件被满足时才会被执行。
    其中,第四页【脚本】选项需要你输入一个表达式,如果表达式的值不是false或者nil,那么则视为条件被满足,否则视为条件不满足。
  • 循环:设置一个循环,循环层次下的所有指令都会按照顺序被无限次执行(直到遇到特定脚本)。
  • 中断循环:立即跳出该中断循环指令所在的循环层次。即跳转到该层循环之外继续执行。
  • 中断事件处理:立即结束本次事件指令的处理,即跳转到事件指令的末尾。中断事件处理后,该事件依然能够再次被触发,只要满足相关开始条件。
    注:中断事件处理也会使得循环指令中断。
  • 暂时消除事件:暂时将本事件从地图上擦除,能够使得该事件的所有事件页无效,就好像这个事件从地图上消失了一样。被暂时消除的事件不会出现在地图上,也不可能被再次触发。当角色离开本地图再回到该地图上时,被暂时消除的事件会重新出现。
  • 公共事件:执行一个公共事件
  • 标签:为该位置设定一个标签。
  • 标签跳转:跳转到相同名字的标签处,从跳转后标签的位置继续执行。
    【小技巧】标签跳转实际上的原理类似于goto语句,如果用得好会让程序更加简洁。例如,利用标签可以直接从多重循环的最内部跳转到最外部,然后继续执行;也可以直接结束本次循环,进行下一次循环处理(next语句)。实际上,也可以把中断循环和中断事件处理看作特殊的标签跳转。
  • 开关操作:对某个或者某一组开关进行打开或者关闭处理。在这里操作的种类有限,如果操作更加灵活的话,请使用事件脚本。
  • 变量操作:对变量进行特定的处理。一般来说,变量的操作需要指定三个元素:操作的主体,运算符,操作数。三者连起来就是一个变量操作。运算符都是一系列的赋值运算符:
    代入'=',加法'+=',减法'-=',乘法'*=',除法'/=',剩余(取余数)'%=',操作数的形式有很多种这里不多说了。
  • 独立开关操作:对某特定编号的独立开关进行操作。
  • 更改禁止存档:用于限制玩家是否可以通过菜单点击“存档”命令。
    注:在禁止存档的情况下,【呼叫存档画面】指令依然可以正常呼出存档。

没有提到的指令,使用上没有太多需要注意的内容,大家一看便会,这里就不多说了。
[/fold]

评分

参与人数 1星屑 +30 收起 理由
Vortur + 30 就是要这种!

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2015-1-30 15:47:06 | 显示全部楼层
本帖最后由 RyanBern 于 2019-3-7 22:19 编辑

事件指令——Part II


[fold=事件指令——Part II]
本楼的帖子讲述了事件指令第二页的内容。

事件指令第二页

事件指令第二页

  • 场所移动:将主角瞬间移动到给定地图的给定位置,并设定移动后的朝向。朝向选择【就这样】时,则不会改变原有朝向。淡入淡出选择【有】时,则移动过程中画面有明暗的过渡效果;选择【没有】时画面没有任何效果。
  • 设置事件位置:将某个事件瞬间移动到同一地图的给定位置,并设定移动后的朝向。
    注意:此指令执行过后,事件的位置会瞬间发生改变,而不是逐渐移动过去的。
              设定的目标位置仅限于本张地图,不可以把一个事件移动到另一张地图里面去。
  • 画面卷动:保持主角的位置不动,将画面镜头移动。
    注意:画面进行卷动时,事件继续执行,而不是等待卷动完毕才继续。因此,必要的时候要使用【等待】指令进行等待。
    【小技巧】这条指令可用作给处于主角视野之外的物体一个特写。
  • 更改地图设置:用于临时更改地图的全景图/雾图形/战斗背景,此更改是临时的,当切换地图之后,效果将会消失。
  • 更改雾的色调:用于临时更改雾的色调。
  • 更改雾的不透明度:用于临时更改雾的不透明度。
  • 显示动画:在主角或者是事件上显示一个动画。
    注意:显示动画后,必要的时候要使用【等待】指令等待动画播放完毕。
              默认情况下,同一个事件同时只能播放一个动画。
              动画只能在主角或者事件上显示,不能在其他地方显示。如果非要在其他地方显示的话,可以试着放置一个空事件。
  • 更改透明状态:更改主角在地图上的透明状态,如果设置为透明,则在地图上看不到主角的图形。但是这不影响主角对地图通行度判定(即一般情况下事件依然不能穿透主角)。
  • 设置移动路线:设定主角或事件的移动路线,设定完毕后,主角和事件会按照设定好的路线走到目标位置。

    移动路线

    移动路线

    移动指令(左1~左13):让角色按照规定方式走一步。
    旋转指令(中1~中11):让角色按照规定方式转身。
    设置指令(中14~中15;右1~右13):更改移动时的设置,这些更改时临时的(某些对主角除外)。
    跳跃:无视通行度,让角色跳跃到指定地点。
    等待:等待固定帧数。

    重复动作:角色会反复执行移动指令,循环移动。
    忽略不能移动的场合:规定了角色在移动过程中碰到障碍物采取的行为。如果勾选,则碰到障碍物之后,角色将跳过本条移动指令进行下一条移动指令;如果不勾选,则碰到障碍物之后,角色会卡住,直到障碍物离开移动路线才继续移动,如果障碍物不移动,角色就会一直卡住不动。
    【小技巧】可以用这个功能来永久更改主角的移动速度。默认主角的移动速度为4,而使用移动指令的“更改移动速度”,可以让主角加速移动。
  • 等待移动结束:设置移动路线完毕后,对应的角色会立即开始移动,此时事件指令继续执行。如果你想要让事件等待移动结束之后再执行,就要添加这个指令。等待移动结束指令会等待所有移动中的角色移动完毕,然后才允许事件继续执行。换言之,如果一个事件的移动路线被卡死,那么整个事件就会被卡住无法执行。此指令在“并行处理”事件中慎用,因为它会严重影响其他事件的执行。在并行处理事件中,应该估计好移动时间,然后使用【等待】指令比较安全。
  • 准备渐变:冻结当前画面,停止一切更新。在这之后你可以给画面添加任何东西,为过渡做准备。本条指令实际上是执行了Graphics.freeze
  • 执行渐变:当给画面添加的元素准备完毕时,要用此指令进行过渡,以解除画面的冻结状态。同时过渡时需要指定一个渐变图形,若不指定,则为普通的明暗过渡。
    【小技巧】可以用这两个指令来做简单黑屏动画。先准备一张全黑图片,然后使用“准备渐变”冻结画面,之后利用“显示图片”指令把全黑图片显示在画面中,最后使用“执行渐变”指令,不选择渐变图形,并设定渐变时间,即可完成效果。
  • 更改画面色调:更改画面的色调,此更改是永久的。这个指令常用作制作白天/黄昏/黑夜的效果。
  • 显示图片:显示Graphics/Pictures文件夹下的一张图片,并为此图片设定编号,位置,通明度等信息。
    注意:RGSS1中,最多同时存储100张图片。编号为1~50的图片在地图中显示,编号为51~100的图片在战斗场景中显示。也就是说,同一场景最多显示50张图片。另外,自己设定过的图片编号一定要牢记。
  • 移动图片:指定某编号的图片,对其进行移动/淡入淡出/放缩等渐变处理。
  • 旋转图片:指定某编号的图片,让其按照一定角速度进行无限旋转。如果让其停止旋转,将旋转速度设置为0即可。
  • 更改图片色调:更改某指定编号的图片色调,有渐变效果。
  • 图片消失:让指定某编号的图片消失。
  • 记忆BGM/BGS:同时记忆正在播放的BGM和BGS,以便更改BGM后还原使用。
  • 还原BGM/BGS:播放已经记忆过的BGM/BGS。

[/fold]
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2015-2-3 18:59:12 | 显示全部楼层
本帖最后由 RyanBern 于 2019-3-7 22:19 编辑

事件指令——Part III

[fold=事件指令——Part III]
这个帖子讲述了事件指令最后一页的部分指令内容。也是此教程帖最后一部分。

事件指令第三页

事件指令第三页

  • 战斗处理:直接进行一场战斗,默认情况下,该战斗和地图上随机触发的战斗不同。你可以设置该场战斗是否可以逃跑或输掉。设置【允许逃跑】【失败的话继续】之后,可以进一步设置不同情况下的条件分歧。
  • 商店处理:设定商店中出售的道具,并进入商店场景。
  • 名称输入的处理:为一个角色变更名字,使用名称输入场景。
    【小技巧】通过这个可以制作出简单的回答题目系统。事先预留一个空的角色,然后等让玩家输入答案时,就使用这个指令为这个空角色的名字赋值。然后使用条件分歧即可。
  • 增减HP:增加或减少某一主角或主角全体的HP,勾选【允许死亡】后,则当减少HP时,当HP不足时角色会死亡。如果不勾选,则无论减少多少HP,角色的HP不会少于1。
  • 增减SP:增加或减少某一主角或主角全体的SP。
  • 更改状态:附加或移除主角身上的某状态。该行为无视属性有效度,无视防具的状态防御。但是要考虑状态之间的相互排斥作用(参见数据库-状态)。当该动作为移除时,不能移除主角身上的自动状态。
  • 完全回复:对某主角或主角全体进行完全回复,即加满HP/SP(对于死亡的角色则有复活效果),并且去掉所有不良状态。
  • 增减EXP:更改角色的EXP,如果发生等级的变化,也要考虑升级或降级。
  • 增减等级:更改角色的等级,EXP变为目标等级0EXP的状态。不能超过角色的等级限制。
  • 变更装备:强制改变某角色身上的装备,如果是穿上的话只能穿上背包中拥有并且角色能够装备的物品。

右边那一栏从【增减敌人HP】到【战斗中断】为战斗事件,所以它们是被用来写在战斗事件页上的,而不是地图事件页。这一类事件如果写在地图事件页上通常会没有效果。
  • 增减敌人HP:同角色,目标指定为敌人。
  • 增减敌人SP:同角色,目标指定为敌人。
  • 更改敌人状态:附加或移除某一敌人或敌人全体的某状态。无视属性有效度。
  • 敌人出现:应用于已经设置为【中途出现】的敌人,此指令过后该敌人会现身。
  • 敌人变身:强制将某敌人改变为其它敌人,并且必要时调整HP/SP(防止其超过最大值,如果本来就不足最大值则无需改动),本身的状态不会变化。
  • 显示动画:此指令区别于事件页第二页的同名指令【显示动画】。此指令用于在战斗场景中在战斗者的战斗图形上播放动画。

    显示动画

    显示动画

    使用时指定显示的目标,此处RMXP对“同伴”这一选项的描述比较令人费解。这里的“1人”,“2人”指的是主角在队伍中所处的战斗位置,在默认系统中,此战斗位置只能由角色加入或离开队伍的次序决定。也就是说,一般情况下不能在“指定ID的角色的战斗图形”上显示动画。
  • 伤害处理:对战斗者设置伤害,数值可以为负数(回复)。此指令和【增减HP】、【增减敌人HP】不同,该指令执行的同时画面上会有伤害显示,而前面两个增减HP的指令执行过后,画面上不会有伤害显示。
    另外,这里面说的“角色1人”和上面“显示动画”的意义相同。
  • 强制行动:强制设置某战斗者的行为。如果让某角色强制行动,则事先玩家下达的行动无效。强制行动时要考虑行动的合理性,例如对一个处于受不行动限制的战斗者采取此指令将没有任何效果,当战斗者SP不足时,强制行动也不会有效果。

    强制行动

    强制行动

    在这里可以设置行动的发出者,行动种类等等。在设置行动对象时,Index 1~Index 8将会对应战斗者在队伍中的位置。如果是敌人则就对应1~8,如果是角色则只有Index 1~4有效。设置行动对象是对单体技能而言的,如果对应技能的攻击范围为“全体”或者“使用者”,该行动对象设置将被忽略。
    设置顺序可以设置为立即执行或按照平时顺序执行。所谓按照平时顺序执行就是按照速度决定的顺序执行,如果某战斗者在本回合内的行为已经执行完毕,那么强制行动不会有任何效果。也就是说,一个战斗者在一回合内只能有一个行为,不能再多了。所谓立即执行就是指令发出后就立即行动,同样,一个战斗者每回合只能行动一次。
  • 战斗中断:强制退出战斗。此行为按照“逃跑”处理。换言之,如果设置了战斗结束后的条件分歧,那么通过事件指令强制战斗中断后,分歧应当落入“逃跑的场合”中。

下面是最后几个指令:
  • 呼叫菜单画面:强制打开菜单画面,无视【更改禁止菜单】。
  • 呼叫存档画面:强制打开存档画面,无视【更改禁止存档】。
  • 游戏结束:强制让玩家GameOver。
  • 返回标题画面:回到标题画面,通常是游戏通关后使用。
  • 脚本:执行一个脚本,当事件指令不太够用的时候,使用脚本会很方便,下面列出了常用脚本命令,以及一个RMXP的BUG。
    • 此为BUG。当执行的脚本的最后一句的返回值为nil或false时,如果不加处理,事件会卡死。所以请务必保证脚本最后一句的返回值不是nil或false。如果原有脚本的最后一句恰恰返回了nil或false,请另起一行,输入一行注释即可。
      例:$game_switches[1] = false
             ###
    • 更改某变量:$game_variables[1] = 1
    • 更改某开关的状态(取反):$game_switches[1] ^= true;###
    • 更改独立开关(1号地图的2号事件的A开关):$game_self_switches[[1, 2, 'A']] = true
    • 调用当前事件的ID(仅地图事件有效):@event_id
    • 如果一句脚本太长,一行写不下,请用'\'符号进行连行,如果不写则会出错。
      例:$data_weapons[1].\
               element_set


[/fold]
回复 1 0

使用道具 举报

梦石
0
星屑
1721
在线时间
93 小时
注册时间
2009-10-25
回帖
16
发表于 2015-3-16 10:59:55 | 显示全部楼层
{:4_94:}{:4_94:}{:4_94:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部