Project1

标题: 求教,如何做出一个具有强制选择的状态。 [打印本页]

作者: zhuyapeng119    时间: 2015-1-5 18:48
标题: 求教,如何做出一个具有强制选择的状态。
比如敌人用了一个嘲讽技能加了一个状态,这个状态存在的时候,我方人物单体技能的选择对象就是只能选有这个状态的敌人,不能选其他敌人。
作者: zhuyapeng119    时间: 2015-1-8 16:34
比如敌人用了一个嘲讽技能加了一个状态,这个状态存在的时候,我方人物单体技能的选择对象就是只能选有这个状态的敌人,不能选其他敌人。

作者: 三途亚梦    时间: 2015-1-8 17:02
少年……自己顶贴不是这么顶的…… 另外,我先告诉你一声这种效果不好做,没有一定的脚本基础的话很容易出现逻辑错误。

如果你能看懂就看看↓这个帖子里的脚本。

https://rpg.blue/thread-375221-1-1.html
作者: taroxd    时间: 2015-1-8 17:35
本帖最后由 taroxd 于 2015-1-8 17:51 编辑
三途亚梦 发表于 2015-1-8 17:02
少年……自己顶贴不是这么顶的…… 另外,我先告诉你一声这种效果不好做,没有一定的脚本基础的话很容易出 ...


写了一个思路性质的东西,麻烦亚梦或者 @VIPArcher 帮忙实现一下可以吗?(没环境真是超不爽)

RUBY 代码复制
  1. class Window_?
  2.  
  3.   FORCE_SELECT = -> e { e.state? 5 }
  4.   alias_method :include_20150108, :include?
  5.  
  6.   def include?(enemy)
  7.     include_20150108(enemy) &&
  8.       (FORCE_SELECT.call(enemy) ||
  9.       $game_troop.members.none?(&FORCE_SELECT))
  10.   end
  11. end

作者: rpg-sheep    时间: 2015-1-8 22:43
你可以试试这样:技能嘲讽,效果是对自己那一方全体施加嘲讽状态,再解除自己的嘲讽状态(就是让你不想选择的敌人都附加上嘲讽状态)。选择攻击对象时,判定如果那个对象有嘲讽状态,就不能选。这样就简单了。
作者: VIPArcher    时间: 2015-1-12 16:23
本帖最后由 VIPArcher 于 2015-1-12 16:38 编辑
  1. class Window_BattleEnemy < Window_Selectable

  2.   FORCE_SELECT = -> e { e.state? 5 }


  3.   def item_max
  4.     $game_troop.alive_members.select {|member| include?(member)}.size
  5.   end

  6.   def enemy
  7.     $game_troop.alive_members.select {|member| include?(member)}[@index]
  8.   end
  9.   
  10.   def draw_item(index)
  11.     change_color(normal_color)
  12.     name = $game_troop.alive_members.select { |member|
  13.       include?(member)}[index].name
  14.     draw_text(item_rect_for_text(index), name)
  15.   end
  16.   
  17.   def include?(enemy)
  18.       (FORCE_SELECT.call(enemy) ||
  19.       $game_troop.members.none?(&FORCE_SELECT))
  20.   end
  21. end
复制代码
我就测试了一下,大概可以了,不知道有没有BUG。嘛,我只是做个示范,还希望楼主能自己多多琢磨一下下。




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