设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2263|回复: 8
打印 上一主题 下一主题

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
125
在线时间
171 小时
注册时间
2014-4-14
帖子
151
跳转到指定楼层
1
发表于 2017-1-31 08:09:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 2357691704 于 2017-2-1 10:33 编辑

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

点评

感谢提示。问题已得到解决。  发表于 2017-2-1 07:47
不好简化,仿va弄一个或者换思路呗  发表于 2017-1-31 20:32
Vanyogin

Lv4.逐梦者 (版主)

梦石
0
星屑
9497
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

2
发表于 2017-1-31 21:01:19 | 只看该作者
随手写的,不太满意。
方法是尽量保持 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



标题我给你改了,原来的有点随便。

点评

感谢!  发表于 2017-2-1 07:09
啧,想到一起去了。 , suffix = "")这里用的是,*suffix 这类,不过数组要麻烦点,也是为了兼容某些敌人图鉴考虑的  发表于 2017-1-31 21:46
回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
125
在线时间
171 小时
注册时间
2014-4-14
帖子
151
3
 楼主| 发表于 2017-2-1 07:34:35 | 只看该作者
本帖最后由 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

点评

貌似修改Game_Troop的话,一就是全部都显示,不然就是全部都不显示。  发表于 2017-2-1 08:24
22行,加上 suffix = "" if @enemy_count[enemy.id] == 1  发表于 2017-2-1 08:19
Vanyogin
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-20 02:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表