Project1

标题: R考场第五期参考答案 [打印本页]

作者: RyanBern    时间: 2016-2-16 13:26
标题: R考场第五期参考答案
本帖最后由 RyanBern 于 2016-2-16 16:49 编辑

[box=RoyalBlue]
R考场第五期——For XP:参考答案
[/box]

R考场第五期的答案已经做出来了,经过挑选,本次参考答案的第二大题和部分第三大题来自于考生的试卷,其余为本人自行制作。首先艾特全员
@涅炎 @多啦A夢 @H·H·Y @冰水金刚 @风吹处阴凉 @欧买歌 @鑫の尘埃 @冷峻逸 @精灵使者
工程做得比较急,因此不保证不出BUG。
工程各个题目的来源:
2-1(快速旅行)风吹处阴凉
2-2(物品收集)鑫の尘埃
2-3(与盗贼的战斗)涅炎
2-4(难度设置)H·H·Y
3-1(被诅咒的装备)精灵使者(站内插件脚本)
3-2(技能限制次数)RyanBern
3-3(物品选择对话)冰水金刚
附加题冰水金刚(数据结构)、H·H·Y(UI设计)、RyanBern(BUG修复与整合)

出现在上表的同学,名字每出现一次可以领取一张好人卡(RyanBern除外)

1-1(打击技能)
固定伤害的制作很容易。只需要把影响伤害的因素设置成0就行了。回避判定与普通攻击相同,则回避F要设置为100
1-2(通行度修改)
考了这么久也没考过通行度的题,这次就出了一个。这个题目非常简单,只要照着下面几个图块抄就不会出问题。个别同学只注意了【通行:块】的设定,忽略了方向。

1-3(敌人设置)
我又考了一次战斗行为概率的设置。从答题情况来看,有一半的考生没有理解这个概率到底是怎么回事。具体的说明请参考置顶的数据库教程。
2-3(与盗贼的战斗)
这个题看似简单,实际上有很多扣分点。
1. 战斗的剧情和对话需要设计。虽然分值不多,但是如果设计得过于草率会被扣分。
2. 有关对话框在战斗中的使用,这个我想是我自己没说明白。使用\p[1000+敌人索引]即可将对话框显示在敌人头上,注意,是敌人索引,不是敌人ID。敌人索引为1~8,这个索引由你添加敌人到敌人队伍时决定。如果不确定的话可以打开事件指令中的【强制行为】【敌人完全回复】等即可查看。
3. 有关战斗中断,很多人在这里都扣了分数。题目里说敌人HP剩下50%时,战斗中断。这句话出现在最后面,言外之意就是只有5回合之后是有效的。如果在5回合之前,主角将敌人的HP直接打到50%以下,这样是不算数的。有的同学会问,BOSS不是已经设置了“不死之身”吗?为什么5回合之前还会掉血。这点需要注意,XP的不死之身状态的敌人,受到伤害依然会掉血,但只是无法死亡罢了。因此这个地方的判断要改成这样

2-4(难度设置)
很多人把这个题目做成了脚本题。但是,它确实可以用事件来完成。我们要使用“状态法”。
先设置两个状态,命名为“EASY”和“HARD”。注意,这两个辅助状态的定量要设置为0,这样状态名字就不会显示出来了。另外,在状态中设置各项能力值的变化。在这里要注意,困难状态下的攻击力是不减少的,而简单状态下攻击力会增加。所以大家要注意审题。

然后,这个状态就永久跟着主角走了。注意此后不要使用【完全回复】事件指令来回复主角。公共事件的Inn已经给大家写好了,里面的回复并没有直接使用这个指令。
3-1(被诅咒的装备)
这个题目其实改动两个地方即可。
1. 在Scene_Equip的update_right方法中,你只需要在“固定装备”判定下面加上这个额外判定即可
RUBY 代码复制
  1. if @right_window.index == 4 && @actor.armor4_id == 10
  2.   $game_system.se_play($data_system.buzzer_se)
  3.   return
  4. end

2. 在Window_EquipRight的refresh方法中,修改绘制的语句,即可将不可卸下的装备名字变成灰色。当然,也可以重写draw_item_name方法
RUBY 代码复制
  1. class Window_EquipRight < Window_Selectable
  2.   def draw_item_name(item, x, y)
  3.     if item == nil
  4.       return
  5.     end
  6.     self.contents.font.color = normal_color
  7.     bitmap = RPG::Cache.icon(item.icon_name)
  8.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
  9.     if item.is_a?(RPG::Armor) && item.id == 10
  10.       self.contents.font.color = disabled_color
  11.     end
  12.     self.contents.draw_text(x + 28, y, 212, 32, item.name)
  13.   end
  14. end

3-2(技能限制次数)
这个题目可脚本可事件。事件的写法比较容易理解,但是遇到大规模的问题会比较麻烦。

具体如上图所示。设计5个一模一样的技能,分别表示剩余0~4次的状态。每个技能绑定个公共事件。公共事件的作用就是去掉当前技能,然后换上次数-1状态的技能。而后,在休息事件里面,去掉0~3次状态的技能,换上4次的技能即可。但是这种实现方式扩展性差,也不是我想看到的。
工程中则是我自制的技能限制次数插件脚本,可以直接插入工程里使用。
3-3(物品选择对话)
这个也是脚本和事件皆可的题目。而且事件实现没有难度,就是麻烦。如果你使用事件的话,就需要利用条件分歧判断8种不同的状态,写起来比较痛苦。当然有很多人利用公共事件和变量来处理,也非常好,不过还是得判断8种状态。如果我出一个6个物品的选择,那就是64种状态的判断了。@冰水金刚 是唯一一个利用脚本做出这道题的同学,大家可以参考一下。另外,工程里给出的多项选择脚本,稍加改动就可以完美运行。

附参考答案工程: ProjectR5 - RyanBern.rar (5.78 MB, 下载次数: 168)
作者: 欧买歌    时间: 2016-2-16 13:30
3-2为什么是你的……
作者: 无忧谷主幻    时间: 2016-2-16 13:30
照例拿去当范例工程
作者: H·H·Y    时间: 2016-2-16 15:56
然而VA区连结果都还没见到……还是RB君速度多了_(:з」∠)_




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1