加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
 本帖最后由 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方法中,你只需要在“固定装备”判定下面加上这个额外判定即可 
if @right_window.index == 4 && @actor.armor4_id == 10   $game_system.se_play($data_system.buzzer_se)   return end 
 
 if @right_window.index == 4 && @actor.armor4_id == 10  
  $game_system.se_play($data_system.buzzer_se)  
  return  
end  
 
  
2. 在Window_EquipRight的refresh方法中,修改绘制的语句,即可将不可卸下的装备名字变成灰色。当然,也可以重写draw_item_name方法 
class Window_EquipRight < Window_Selectable    def draw_item_name(item, x, y)      if item == nil        return      end      self.contents.font.color = normal_color     bitmap = RPG::Cache.icon(item.icon_name)      self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))     if item.is_a?(RPG::Armor) && item.id == 10        self.contents.font.color = disabled_color     end      self.contents.draw_text(x + 28, y, 212, 32, item.name)    end  end 
 
 class Window_EquipRight < Window_Selectable   
  def draw_item_name(item, x, y)   
    if item == nil   
      return   
    end   
    self.contents.font.color = normal_color  
    bitmap = RPG::Cache.icon(item.icon_name)   
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))  
    if item.is_a?(RPG::Armor) && item.id == 10   
      self.contents.font.color = disabled_color  
    end   
    self.contents.draw_text(x + 28, y, 212, 32, item.name)   
  end   
end  
 
  
3-2(技能限制次数) 
这个题目可脚本可事件。事件的写法比较容易理解,但是遇到大规模的问题会比较麻烦。 
 
 
具体如上图所示。设计5个一模一样的技能,分别表示剩余0~4次的状态。每个技能绑定个公共事件。公共事件的作用就是去掉当前技能,然后换上次数-1状态的技能。而后,在休息事件里面,去掉0~3次状态的技能,换上4次的技能即可。但是这种实现方式扩展性差,也不是我想看到的。 
工程中则是我自制的技能限制次数插件脚本,可以直接插入工程里使用。 
3-3(物品选择对话) 
这个也是脚本和事件皆可的题目。而且事件实现没有难度,就是麻烦。如果你使用事件的话,就需要利用条件分歧判断8种不同的状态,写起来比较痛苦。当然有很多人利用公共事件和变量来处理,也非常好,不过还是得判断8种状态。如果我出一个6个物品的选择,那就是64种状态的判断了。@冰水金刚 是唯一一个利用脚本做出这道题的同学,大家可以参考一下。另外,工程里给出的多项选择脚本,稍加改动就可以完美运行。 
 
附参考答案工程:
 
ProjectR5 - RyanBern.rar
(5.78 MB, 下载次数: 169)
  |