看到前面有人问,如何在运行时改变数据库,更改道具的使用可能等,那我就在这里汇总一下吧
运行时设定数据库是完全可能的,而且,只要是你能在数据库中预先设定的项目,都可以在运行时重新设定.
一般来说重设数据库的方法是在公共事件里用脚本,然后调用公共事件,这样比较清晰也比较安全,更可在同类更改时通过变量的引入而实现套用,你要是不怕引起麻烦的话,直接在事件里用脚本或者更改RGSS也是可以的,但一旦想反悔或微调设定就比较麻烦了.
总的说明: 1. 所有的设定方法都不牵涉对RPG数据底层(module RPG)的任何改动,因此无需修改RGSS,只要懂得如何在事件中用脚本即可放心使用。 2. 设定方法会按数据库的标签顺序一一放出,但"动画"和"公共事件"两项跳过,因为我实在找不到什么理由会有人在运行时去设定这两个东西(理论上并非不可能)。 3. 在运行时设定数据库可能影响游戏的表现,也可能不影响,例如:运行时更改已入队角色的EXP值,不会影响其升级进程,但更改其未来等级的能力值,则会受到影响。这个已经超出了本文的讨论范围,有兴趣的可以自己看RGSS的定义。一般说来,RGSS中引用到$game_xxxxx的对象时,修改数据库不会影响,若引用到$data_xxxxx的对象时,修改数据库就会影响。 4. 以下的设定我会先列出系统对象和一般实例(通常都是系统对象的一个下标),在此后的更改方法里,只写出.后面的方法和设置值的类型,比如: .name = 字串 说明在实际调用时应使用 实例名称.name = 字串 的方法, 例如: $data_actors[编号].name = 字串 或者你事先定义了某变量actor是系统对象$data_actors的一个下标,就用 actor.name = 字串 此外,对于设置值有取值范围的限制情况,我会用Ruby的子界(m..n)格式说明上下限. 5. 运行时的设定都是暂时的,只要返回标题画面就会丢失(重载数据库),因此在这里建议,凡是较大规模重设数据库的,最好不要做成随时能存档的那种,当然这个问题是可以解决的,就是修改RGSS,在存档时将$data_xxxx的对象都写到存档文件里去,关于这些我在最后一章会说明.
角色设定: 系统对象: $data_actors 一般实例: $data_actors[编号] 设定方法: 名称: .name = 字串 一般直接用事件"更改角色姓名"修改 职业: .class = 职业编号 一般直接用事件"更改角色职业"修改 初期等级: .initial_level = 1..100 最终等级: .final_level = initial_level..100 在默认的脚本里,角色是允许升到100级(不是99级)的 EXP基本值: .exp_basis = 正整数 EXP增加度: .exp_inflation = 正整数 更改这两个值可以突破10-50的界限,比如你可以都改成1让角色打一场就升N级 角色头像: .character_name = 文件名(字串) 角色色相: .character_hue = 0..360 战斗图: .battler_name = 文件名(字串) 战斗图色相: .battler_hue = 0..360 各项能力指数: .parameters[项目,等级] = 0..9999 在能力值的默认设定里,只有99个等级的值,不能直接用parameters[项目,100] 来指定100(或以上级别)的能力值。如果有必要,应先用脚本: parameters.resize(5,最大级别+1)来更改能力表的上限。 项目的含义如下:0-HP 1-SP 2-力 3-巧 4-速 5-魔 要更改42级时的力量为185,则用: 实例名.parameters[2,42]=185 初期装备: .weapon_id = 初期武器ID .armor1_id = 初期盾ID .armor2_id = 初期盔ID .armor3_id = 初期甲ID .armor4_id = 初期饰物ID .weapon_fix = true/false 武器装备是否固定 .armor1_fix = true/false 盾装备是否固定,以下义同 .armor2_fix = true/false .armor3_fix = true/false .armor4_fix = true/false
运用例子: 例如想实现设定,某角色加入一段时间后与队伍失散,再回来时,等级上升了10级,装备也换了一套全新的,样子也变了.则可以在角色离队前更改数据库 .initial_level = $game_party.actors[角色队列序号].level + 10 .character_name = xx .battler_name = xx .weapon_id = xx .armor1_id = xx .armor2_id = xx 等等 之后该角色要加入时,直接使用事件"加入队伍",并勾上"初始化"这个选项即可. 当然,如果你非要说以上这些都可以用纯事件来做(加入队伍,变更等级,变更装备,变更角色图片....)就当我没说好了-,- |