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

Project1

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

[有事请教] [已解决]如何让EFS_Battler.new(2)<< 5号勋章

[复制链接]

Lv4.逐梦者

梦石
0
星屑
8054
在线时间
1371 小时
注册时间
2015-8-15
帖子
762
跳转到指定楼层
1
发表于 3 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 金芒芒 于 2025-1-9 13:56 编辑

根据脚本生成 魏国远征军 = [ EFS_Battler.new(2), EFS_Battler.new(4), EFS_Battler.new(9), EFS_Battler.new(13), EFS_Battler.new(8) ] 
class Scene_EFS_Equip 
class Window_EFS_EquipLeft < Window_Base 
class Window_EFS_Selectable < Window_Base
class Window_EFS_EquipItem < Window_Selectable

class Scene_EFS_Equip
  def initialize
    @角色索引 = 0
    @装备索引 = 0
    create_windows
  end

  def create_windows
    @left_window = Window_EFS_EquipLeft.new
    @selectable_window = Window_EFS_Selectable.new
    @equip_item_window = Window_EFS_EquipItem.new
  end
end

class Window_EFS_EquipLeft < Window_Base
  def initialize
    super(0, 0, 160, Graphics.height)
    refresh
  end

  def refresh
    self.contents.clear
    # 这里可以添加代码来显示左侧角色相关信息等
  end
end

class Window_EFS_Selectable < Window_Base
  def initialize
    super(160, 0, Graphics.width - 160, Graphics.height / 2)
    refresh
  end

  def refresh
    self.contents.clear
    # 这里可以添加代码来显示可选择的勋章等相关信息
  end
end

class Window_EFS_EquipItem < Window_Selectable
  def initialize
    super(160, Graphics.height / 2, Graphics.width - 160, Graphics.height / 2)
    refresh
  end

  def refresh
    self.contents.clear
    # 这里可以添加代码来显示已装备的勋章等相关信息
  end
end
 

4. 在主脚本中使用示例

ruby
  
# 初始化角色数组
$魏国远征军 = [
  EFS_Battler.new(2),
  EFS_Battler.new(4),
  EFS_Battler.new(9),
  EFS_Battler.new(13),
  EFS_Battler.new(8)
]

RUBY 代码复制
  1. module Xunzhang_data
  2.  
  3. @data_id = 0
  4. ICON = []
  5. NAME = []
  6. DISCRIPTION = []
  7. PRICE = []
  8. TYPE = []
  9. LIMIT = []
  10.  
  11. AMMOR_HP = []
  12. SHD_HP = []
  13. LIVE_CHANCE = []
  14. MOVEMENT_SPEED = []
  15.  
  16. CRITICAL = []
  17.  
  18. BASE_ATK = []
  19. BRO_ATK = []
  20. S_BASE_ATK = []
  21. S_BRO_ATK = []
  22. ANTI_CAV = []
  23. ANTI_INF = []
  24.  
  25. ATK_FR = []
  26.  
  27. ACCURATCY = []
  28. ENGAGE_RANGE = []
  29. AMMO_MAX = []
  30.  
  31. MORALE = []
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. def self.get_num_Xunzhang #定义自我。获得号码装备
  39. return @data_id #返回@data_id
  40. end

RUBY 代码复制
  1. module Xunzhang_data
  2. #module Equips_data
  3.  
  4. @data_id = 5
  5. ICON[@data_id] = "icon_1280"
  6. NAME[@data_id] = "测试刀"
  7. DISCRIPTION[@data_id] = "测试用的刀,非常坚固,非常OP"
  8. PRICE[@data_id] = 999
  9. #类型:   1.甲 2.盾 3.近战武器  4.远程武器 5.马
  10. TYPE[@data_id] =  3         
  11. #限制:只有特定兵种才能装,nil都能装
  12. LIMIT[@data_id] = nil
  13.  
  14. #防具类, 都是加成
  15. AMMOR_HP[@data_id] = 0
  16. SHD_HP[@data_id] = 0
  17. LIVE_CHANCE[@data_id] = 0
  18. MOVEMENT_SPEED[@data_id] = 0
  19.  
  20. CRITICAL[@data_id] = 0
  21.  
  22. BASE_ATK[@data_id] = 50
  23. BRO_ATK[@data_id] = 0
  24. S_BASE_ATK[@data_id] = 0
  25. S_BRO_ATK[@data_id] = 0
  26. ANTI_CAV[@data_id] = 0
  27. ANTI_INF[@data_id] = 0
  28.  
  29. ATK_FR[@data_id] = 0
  30.  
  31. ACCURATCY[@data_id] = 0
  32. ENGAGE_RANGE[@data_id] = 0
  33. AMMO_MAX[@data_id] = 0
  34.  
  35.  
  36.  
  37. MORALE[@data_id] = 0
  38.  
  39.  
  40.  
  41.  
  42.  
  43. end


RUBY 代码复制
  1. class EFS_Battler < Game_Character
  2.   attr_accessor :character_name, :base_atk, :Xunzhang
  3.   attr_reader :soldier_id
  4.  
  5.   def initialize(data_id)
  6.     super()
  7.     @character_name = Figter_data::CHARACTER_NAME[data_id]
  8.     @base_atk = Figter_data::BASE_ATK[data_id]
  9.     @base_base_atk = @base_atk
  10.     @soldier_id = data_id
  11.     @Xunzhang = []
  12.   end
  13.  
  14.   def equip_xunzhang
  15.     unless @Xunzhang.include?(Xunzhang_data.get_num_Xunzhang)
  16.       @Xunzhang << Xunzhang_data.get_num_Xunzhang
  17.       calculate_Xunzhang
  18.     end
  19.   end
  20.  
  21.   def replace_xunzhang(new_xunzhang_id)
  22.     index = @Xunzhang.index(Xunzhang_data.get_num_Xunzhang)
  23.     if index
  24.       @Xunzhang[index] = new_xunzhang_id
  25.     else
  26.       equip_xunzhang
  27.     end
  28.     calculate_Xunzhang
  29.   end
  30.  
  31.   def unequip_xunzhang
  32.     @Xunzhang.delete(Xunzhang_data.get_num_Xunzhang)
  33.     calculate_Xunzhang
  34.   end
  35.  
  36.   def refill
  37.     calculate_Xunzhang
  38.   end
  39.  
  40.   def calculate_Xunzhang
  41.     @base_base_atk = get_Xunzhang_base_atk
  42.   end
  43.  
  44.   def get_Xunzhang_base_atk(const = false)
  45.     n = const? Figter_data::BASE_ATK[@soldier_id] : @base_base_atk
  46.     @Xunzhang.each do |i|
  47.       next if i.nil?
  48.       n += Xunzhang_data::BASE_ATK[i]
  49.     end
  50.     n
  51.   end
  52. end

Lv4.逐梦者

梦石
0
星屑
8054
在线时间
1371 小时
注册时间
2015-8-15
帖子
762
2
 楼主| 发表于 前天 13:55 | 只看该作者
  1. class Scene_EFS_Equip
  2.   def create_and_set_xunzhang(data_ids, xunzhang_options)
  3.     # 假设 data_ids 和 xunzhang_options 是已经给定的数组
  4.     # data_ids = [2, 5, 8, 6, 9]
  5.     # xunzhang_options = [13, 5, 3, 20, 15, 8]
  6.    
  7.     # 创建一个数组来存储 EFS_Battler 实例
  8.     battlers = []
  9.    
  10.     # 遍历 data_ids 数组,为每个 data_id 创建一个 EFS_Battler 实例
  11.     data_ids.each_with_index do |data_id, index|
  12.       # 从 xunzhang_options 中选择一个 xunzhang 值
  13.       # 这里为了示例,我们简单地选择 xunzhang_options[index % xunzhang_options.length]
  14.       # 但在实际应用中,你可能需要根据某种逻辑或用户输入来选择
  15.       selected_xunzhang = xunzhang_options[index % xunzhang_options.length]
  16.       
  17.       # 创建 EFS_Battler 实例
  18.       battler = EFS_Battler.new(data_id)
  19.       
  20.       # 设置 xunzhang 值(这里需要修改 EFS_Battler 类以允许外部设置 xunzhang)
  21.       # 假设我们添加了一个 set_xunzhang 方法来设置 xunzhang
  22.       battler.set_xunzhang(selected_xunzhang)
  23.       
  24.       # 将创建的 battler 实例添加到数组中
  25.       battlers << battler
  26.     end
  27.    
  28.     # 返回创建的 battler 实例数组(如果需要)
  29.     battlers
  30.   end
  31. end

  32. # 修改 EFS_Battler 类以添加 set_xunzhang 方法
  33. class EFS_Battler < Game_Character
  34.   attr_accessor :character_name, :base_atk, :Xunzhang, :soldier_id
  35.   attr_reader :soldier_id
  36.   
  37.   def initialize(data_id)
  38.     super()
  39.     @character_name = Figter_data::CHARACTER_NAME[data_id]
  40.     @base_atk = Figter_data::BASE_ATK[data_id]
  41.     @base_base_atk = @base_atk
  42.     @soldier_id = data_id
  43.     @Xunzhang = []
  44.     set_xunzhang_to_specific_value  # 这个方法现在可能不是必需的,取决于你的具体实现
  45.   end
  46.   
  47.   # 添加一个方法来设置 xunzhang
  48.   def set_xunzhang(value)
  49.     @Xunzhang = [value]
  50.   end
  51.   
  52.   # 保留原有的 set_xunzhang_to_specific_value 方法,如果它有其他用途
  53.   def set_xunzhang_to_specific_value
  54.     @Xunzhang = ‌:ml-citation{ref="1" data="citationList"}  # 这个方法现在被新的 set_xunzhang 方法替代,可以保留或删除
  55.   end
  56. end

  57. # 示例使用
  58. scene = Scene_EFS_Equip.new
  59. data_ids = [2, 5, 8, 6, 9]
  60. xunzhang_options = [13, 5, 3, 20, 15, 8]
  61. battlers = scene.create_and_set_xunzhang(data_ids, xunzhang_options)

  62. # 输出每个 battler 的 xunzhang 值以验证
  63. battlers.each do |battler|
  64.   puts "Battler #{battler.soldier_id} has xunzhang #{battler.Xunzhang.first}"
  65. end
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 14:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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