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

Project1

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

[有事请教] 所有装备多是模型如何获得装备且修改脚本

[复制链接]

Lv4.逐梦者

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

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

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

x
本帖最后由 金芒芒 于 2025-1-6 08:31 编辑

module Figter_data
data_id = 2
CHARACTER_NAME[data_id]  =  "吕布"
BASE_ATK[data_id]  = 70
end

module 勋章_data
@data_id = 1
ICON[@data_id] = "icon_近卫军"
NAME[@data_id] = "近卫军"
BASE_ATK[@data_id] = 100
end
module 神器_data
@data_id = 1
ICON[@data_id] = "icon_赤月戟[鬼神]"
NAME[@data_id] = "赤月戟[鬼神]"
BASE_ATK[@data_id] = 900
end
$魏国远征军 = [
  EFS_Battler.new(2),
  EFS_Battler.new(4),
  EFS_Battler.new(9),
  EFS_Battler.new(13),
  EFS_Battler.new(8)
]
RUBY 代码复制
  1. class EFS_Battler < Game_Character
  2.   attr_accessor :base_atk, :character_name, :勋章, :神器, :头盔, :盔甲, :战靴
  3.   attr_reader :soldier_id
  4.  
  5.   def initialize(data_id)
  6.     super()
  7.     @character_name = Figter_data::CHARACTER_NAME[data_id]
  8.     @basic_character_name = @character_name
  9.     @base_atk = Figter_data::BASE_ATK[data_id]
  10.     @base_base_atk = @base_atk
  11.     @soldier_id = data_id
  12.     @勋章 = []
  13.     @神器 = []
  14.     @头盔 = []
  15.     @盔甲 = []
  16.     @战靴 = []
  17.   end
  18.  
  19.   def refill
  20.     @base_atk = calculate_total_base_atk
  21.   end
  22.  
  23.   def calculate_total_base_atk
  24.     get_勋章_base_atk + get_神器_base_atk + get_头盔_base_atk + get_盔甲_base_atk + get_战靴_base_atk
  25.   end
  26.  
  27.   def get_勋章_base_atk(const = false)
  28.     n = const ? @base_base_atk : 0
  29.     @勋章.each do |i|
  30.       n += 勋章_data::BASE_ATK[i] if i
  31.     end
  32.     n
  33.   end
  34.  
  35.   def get_神器_base_atk(const = false)
  36.     n = const ? @base_base_atk : 0
  37.     @神器.each do |i|
  38.       n += 神器_data::BASE_ATK[i] if i
  39.     end
  40.     n
  41.   end
  42.  
  43.   def get_头盔_base_atk(const = false)
  44.     n = const ? @base_base_atk : 0
  45.     @头盔.each do |i|
  46.       n += 头盔_data::BASE_ATK[i] if i
  47.     end
  48.     n
  49.   end
  50.  
  51.   def get_盔甲_base_atk(const = false)
  52.     n = const ? @base_base_atk : 0
  53.     @盔甲.each do |i|
  54.       n += 盔甲_data::BASE_ATK[i] if i
  55.     end
  56.     n
  57.   end
  58.  
  59.   def get_战靴_base_atk(const = false)
  60.     n = const ? @base_base_atk : 0
  61.     @战靴.each do |i|
  62.       n += 战靴_data::BASE_ATK[i] if i
  63.     end
  64.     n
  65.   end
  66.  
  67.   # 添加装备
  68.   def add_equipment(equipment_type, equipment_id)
  69.     send("#{equipment_type}_add", equipment_id)
  70.     refill
  71.   end
  72.  
  73.   # 私有方法,用于实际添加装备到对应的数组
  74.   private
  75.  
  76.   def 勋章_add(equipment_id)
  77.     @勋章 << equipment_id
  78.   end
  79.  
  80.   def 神器_add(equipment_id)
  81.     @神器 << equipment_id
  82.   end
  83.  
  84.   def 头盔_add(equipment_id)
  85.     @头盔 << equipment_id
  86.   end
  87.  
  88.   def 盔甲_add(equipment_id)
  89.     @盔甲 << equipment_id
  90.   end
  91.  
  92.   def 战靴_add(equipment_id)
  93.     @战靴 << equipment_id
  94.   end
  95.  
  96.   public
  97.  
  98.   # 更换装备
  99.   def replace_equipment(equipment_type, new_equipment_id)
  100.     send("#{equipment_type}_replace", new_equipment_id)
  101.     refill
  102.   end
  103.  
  104.   # 私有方法,用于实际更换装备
  105.   private
  106.  
  107.   def 勋章_replace(new_equipment_id)
  108.     @勋章.clear
  109.     @勋章 << new_equipment_id
  110.   end
  111.  
  112.   def 神器_replace(new_equipment_id)
  113.     @神器.clear
  114.     @神器 << new_equipment_id
  115.   end
  116.  
  117.   def 头盔_replace(new_equipment_id)
  118.     @头盔.clear
  119.     @头盔 << new_equipment_id
  120.   end
  121.  
  122.   def 盔甲_replace(new_equipment_id)
  123.     @盔甲.clear
  124.     @盔甲 << new_equipment_id
  125.   end
  126.  
  127.   def 战靴_replace(new_equipment_id)
  128.     @战靴.clear
  129.     @战靴 << new_equipment_id
  130.   end
  131.  
  132.   public
  133.  
  134.   # 卸除装备
  135.   def remove_equipment(equipment_type)
  136.     send("#{equipment_type}_remove")
  137.     refill
  138.   end
  139.  
  140.   # 私有方法,用于实际卸除装备
  141.   private
  142.  
  143.   def 勋章_remove
  144.     @勋章.clear
  145.   end
  146.  
  147.   def 神器_remove
  148.     @神器.clear
  149.   end
  150.  
  151.   def 头盔_remove
  152.     @头盔.clear
  153.   end
  154.  
  155.   def 盔甲_remove
  156.     @盔甲.clear
  157.   end
  158.  
  159.   def 战靴_remove
  160.     @战靴.clear
  161.   end
  162. end

RUBY 代码复制
  1. class EFS_Battler < Game_Character
  2.   attr_accessor :base_atk, :character_name, :勋章, :神器, :头盔, :盔甲, :战靴
  3.   attr_reader :soldier_id
  4.  
  5.   def initialize(data_id)
  6.     super()
  7.     @soldier_id = data_id
  8.     @character_name = Figter_data::CHARACTER_NAME[data_id]
  9.     @base_atk = Figter_data::BASE_ATK[data_id]
  10.     @base_base_atk = @base_atk
  11.     @勋章 = []
  12.     @神器 = []
  13.     @头盔 = []
  14.     @盔甲 = []
  15.     @战靴 = []
  16.   end
  17.  
  18.   def refill
  19.     calculate_勋章
  20.     calculate_神器
  21.     calculate_头盔
  22.     calculate_盔甲
  23.     calculate_战靴
  24.   end
  25.  
  26.   def calculate_勋章
  27.     @base_base_atk = get_勋章_base_atk(true)
  28.   end
  29.  
  30.   def calculate_神器
  31.     @base_base_atk = get_神器_base_atk(true)
  32.   end
  33.  
  34.   def calculate_头盔
  35.     @base_base_atk = get_头盔_base_atk(true)
  36.   end
  37.  
  38.   def calculate_盔甲
  39.     @base_base_atk = get_盔甲_base_atk(true)
  40.   end
  41.  
  42.   def calculate_战靴
  43.     @base_base_atk = get_战靴_base_atk(true)
  44.   end
  45.  
  46.   def get_装备_base_atk(装备, const = false)
  47.     n = Figter_data::BASE_ATK[@soldier_id]
  48.     unless const
  49.       n = @base_base_atk
  50.     end
  51.     装备.each do |i|
  52.       next if i.nil?
  53.       n += send("#{装备.to_s.gsub('装备', '')}_data::BASE_ATK", i)
  54.     end
  55.     n
  56.   end
  57.  
  58.   alias get_勋章_base_atk get_装备_base_atk
  59.   alias get_神器_base_atk get_装备_base_atk
  60.   alias get_头盔_base_atk get_装备_base_atk
  61.   alias get_盔甲_base_atk get_装备_base_atk
  62.   alias get_战靴_base_atk get_装备_base_atk
  63.  
  64.   def add_equipment(equipment_type, equipment_id)
  65.     send("#{equipment_type}<<", equipment_id)
  66.     send("calculate_#{equipment_type}")
  67.   end
  68.  
  69.   def change_equipment(equipment_type, new_equipment_id)
  70.     old_equipment_index = send("#{equipment_type}").index { |id| !id.nil? }
  71.     if old_equipment_index
  72.       send("#{equipment_type}[old_equipment_index]=", new_equipment_id)
  73.     else
  74.       send("add_equipment", equipment_type, new_equipment_id)
  75.     end
  76.     send("calculate_#{equipment_type}")
  77.   end
  78.  
  79.   def remove_equipment(equipment_type)
  80.     send("#{equipment_type}.clear")
  81.     send("calculate_#{equipment_type}")
  82.   end
  83. end
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2025-1-11 11:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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