Project1

标题: 求简化这段将相同敌人名字加序号的脚本[已经解决] [打印本页]

作者: 2357691704    时间: 2017-1-31 08:09
标题: 求简化这段将相同敌人名字加序号的脚本[已经解决]
本帖最后由 2357691704 于 2017-2-1 10:33 编辑

自己写的一段脚本
作用:将同名字的敌人的名字加序号。例如:幽灵、幽灵2、幽灵3。我只写到最多支持六个敌人的显示。
求简化这段脚本,并且如果可以弄成不管多少个敌人都可以显示的就更好了。
脚本使用方法:替换Game_Enemy中的def name----end
敌人名字排序

作者: RyanBern    时间: 2017-1-31 21:01
随手写的,不太满意。
方法是尽量保持 Game_Enemy 然后黑掉 Game_Troop#setup
RUBY 代码复制
  1. class Game_Enemy
  2.   alias :rb_initialize_20170131 :initialize
  3.   def initialize(troop_id, member_index, suffix = "")
  4.     rb_initialize_20170131(troop_id, member_index)
  5.     @suffix = suffix
  6.   end
  7.   def name
  8.     sprintf("%s%s", $data_enemies[@enemy_id].name, @suffix)
  9.   end
  10. end
  11.  
  12. class Game_Troop
  13.   def setup(troop_id)
  14.     # Set array of enemies who are set as troops
  15.     @enemies = []
  16.     @enemy_count = {}
  17.     troop = $data_troops[troop_id]
  18.     for i in 0...troop.members.size
  19.       enemy = $data_enemies[troop.members[i].enemy_id]
  20.       if enemy != nil
  21.         @enemy_count[enemy.id] ||= 0
  22.         suffix = (@enemy_count[enemy.id] += 1).to_s
  23.         @enemies.push(Game_Enemy.new(troop_id, i, suffix))
  24.       end
  25.     end
  26.   end
  27. end



标题我给你改了,原来的有点随便。
作者: 2357691704    时间: 2017-2-1 07:34
本帖最后由 2357691704 于 2017-2-1 07:49 编辑
RyanBern 发表于 2017-1-31 21:01
随手写的,不太满意。
方法是尽量保持 Game_Enemy 然后黑掉 Game_Troop#setup
class Game_Enemy


不过你这好像“1”序号也显示出来了,这样如果只有一个同类敌人的话很违和。
这样就行了:
RUBY 代码复制
  1. def name
  2.     case @suffix
  3.     when "1"
  4.      return $data_enemies[@enemy_id].name
  5.       else
  6.     sprintf("%s%s", $data_enemies[@enemy_id].name, @suffix)
  7.     end
  8.   end





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