Project1

标题: 人物升级除去所需经验还需要固定物品的脚本 [打印本页]

作者: l734273398    时间: 2019-4-10 14:02
标题: 人物升级除去所需经验还需要固定物品的脚本
如题,人物升级,除去升级所需的经验,还需要固定的物品以及数量才能升级,每升级一级所需的物品也随着等级的加大,所需物品也越来越多。
哪位大神帮忙帮
作者: 芯☆淡茹水    时间: 2019-4-10 14:02
很久没有碰 XP 了, 都快忘了

  1. #==============================================================================
  2. module XdRs
  3.   #--------------------------------------------------------------------------
  4.   # 升级物品限制。格式: 职业ID => 物品ID  。未写入这个记录的职业,将不受限制。
  5.   Item_data = {
  6.     1 => 13,
  7.     2 => 14,
  8.     3 => 15,
  9.     4 => 16,
  10.     5 => 17,
  11.     6 => 18,
  12.     7 => 19,
  13.     8 => 20
  14.   }
  15.   #--------------------------------------------------------------------------
  16.   # 升级需要对应物品个数的算式, level: 角色等级  。
  17.   Equation = "level * 2"
  18.   #--------------------------------------------------------------------------
  19.   def self.is_limit_item?(item_id)
  20.     return Item_data.values.include?(item_id)
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   def self.deduct_test(actor)
  24.     item_id = Item_data[actor.class_id]
  25.     return true if !item_id
  26.     level   = actor.level
  27.     number  = eval Equation
  28.     result  = $game_party.item_number(item_id) >= number
  29.     result && $game_party.lose_item(item_id, number)
  30.     return result
  31.   end
  32. end
  33. #==============================================================================
  34. class Game_Actor
  35.   #--------------------------------------------------------------------------
  36.   def exp=(exp)
  37.     @exp = [[exp, 9999999].min, 0].max
  38.     # 升级
  39.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0 &&
  40.       XdRs.deduct_test(self)
  41.       @level += 1
  42.       # 学会特技
  43.       for j in $data_classes[@class_id].learnings
  44.         if j.level == @level
  45.           learn_skill(j.skill_id)
  46.         end
  47.       end
  48.     end
  49.     # 降级
  50.     while @exp < @exp_list[@level]
  51.       @level -= 1
  52.     end
  53.     # 修正当前的 HP 与 SP 超过最大值
  54.     @hp = [@hp, self.maxhp].min
  55.     @sp = [@sp, self.maxsp].min
  56.   end
  57. end
  58. #==============================================================================
  59. class Game_Party
  60.   #--------------------------------------------------------------------------
  61.   def refresh_level_limit
  62.     @actors.each{|a| a.exp += 0 }
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   alias xr_level_limit_gain_item gain_item
  66.   def gain_item(item_id, n)
  67.     xr_level_limit_gain_item(item_id, n)
  68.     n > 0 && XdRs.is_limit_item?(item_id) && refresh_level_limit
  69.   end
  70. end
  71. #==============================================================================
复制代码

作者: l734273398    时间: 2019-4-11 08:09
有人没,哪位大神帮帮忙啊
作者: l734273398    时间: 2019-4-11 17:15
本帖最后由 l734273398 于 2019-4-11 17:25 编辑
芯☆淡茹水 发表于 2019-4-10 14:02
很久没有碰 XP 了, 都快忘了


脚本试了一下可以,但如果角色过多,玩家背包拥有物品,角色经验又充足的情况下会自动升级,能不能弄一个界面,手动来控制武将的升级,且自动判定武将升级所需物品是否可以升级,不足时提示。
作者: l734273398    时间: 2019-4-11 18:12
l734273398 发表于 2019-4-11 17:15
脚本试了一下可以,但如果角色过多,玩家背包拥有物品,角色经验又充足的情况下会自动升级,能不能弄一个 ...

好吧,那能不能直接把脚本修改一下,在状态页面加入升级所需物品的显示,不然不知道升级物品需要数目啊
作者: l734273398    时间: 2019-4-11 18:14
芯☆淡茹水 发表于 2019-4-10 14:02
很久没有碰 XP 了, 都快忘了

好吧,那能不能直接把脚本修改一下,在状态页面加入升级所需物品的显示,不然不知道升级物品需要数目啊
作者: 芯☆淡茹水    时间: 2019-4-11 19:59
  1. #==============================================================================
  2. module XdRs
  3.   #--------------------------------------------------------------------------
  4.   # 升级物品限制。格式: 职业ID => 物品ID  。未写入这个记录的职业,将不受限制。
  5.   Item_data = {
  6.     1 => 13,
  7.     2 => 14,
  8.     3 => 15,
  9.     4 => 16,
  10.     5 => 17,
  11.     6 => 18,
  12.     7 => 19,
  13.     8 => 20
  14.   }
  15.   #--------------------------------------------------------------------------
  16.   # 升级需要对应物品个数的算式, level: 角色等级  。
  17.   Equation = "level * 2"
  18.   
  19.   #--------------------------------------------------------------------------
  20.   # 升级所需物品的显示用语。
  21.   Status_word = "升级需要物品:"
  22.   
  23.   #--------------------------------------------------------------------------
  24.   # 在 角色状态界面 的显示位置。
  25.   Point = {:x=>260, :y=>0}
  26.   
  27.   #--------------------------------------------------------------------------
  28.   def self.is_limit_item?(item_id)
  29.     return Item_data.values.include?(item_id)
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   def self.need_item?(actor)
  33.     return Item_data.keys.include?(actor.class_id) &&
  34.            $data_items[Item_data[actor.class_id]]
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   def self.quantity_required(actor)
  38.     level  = actor.level
  39.     return eval Equation
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   def self.deduct_test(actor)
  43.     return true if !self.need_item?(actor.class_id)
  44.     item_id = Item_data[actor.class_id]
  45.     number = self.quantity_required(actor)
  46.     result = $game_party.item_number(item_id) >= number
  47.     result && $game_party.lose_item(item_id, number)
  48.     return result
  49.   end
  50. end
  51. #==============================================================================
  52. class Game_Actor
  53.   #--------------------------------------------------------------------------
  54.   def exp=(exp)
  55.     @exp = [[exp, 9999999].min, 0].max
  56.     # 升级
  57.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0 &&
  58.       XdRs.deduct_test(self)
  59.       @level += 1
  60.       # 学会特技
  61.       for j in $data_classes[@class_id].learnings
  62.         if j.level == @level
  63.           learn_skill(j.skill_id)
  64.         end
  65.       end
  66.     end
  67.     # 降级
  68.     while @exp < @exp_list[@level]
  69.       @level -= 1
  70.     end
  71.     # 修正当前的 HP 与 SP 超过最大值
  72.     @hp = [@hp, self.maxhp].min
  73.     @sp = [@sp, self.maxsp].min
  74.   end
  75. end
  76. #==============================================================================
  77. class Game_Party
  78.   #--------------------------------------------------------------------------
  79.   def refresh_level_limit
  80.     @actors.each{|a| a.exp += 0 }
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   alias xr_level_limit_gain_item gain_item
  84.   def gain_item(item_id, n)
  85.     xr_level_limit_gain_item(item_id, n)
  86.     n > 0 && XdRs.is_limit_item?(item_id) && refresh_level_limit
  87.   end
  88. end
  89. #==============================================================================
  90. class Window_Status
  91.   #--------------------------------------------------------------------------
  92.   alias xr_level_limit_refresh refresh
  93.   def refresh
  94.     xr_level_limit_refresh
  95.     XdRs.need_item?(@actor) && draw_limit_item
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   def draw_limit_item
  99.     x = XdRs::Point[:x]
  100.     y = XdRs::Point[:y]
  101.     word = XdRs::Status_word
  102.     item = $data_items[XdRs::Item_data[@actor.class_id]]
  103.     need_num = XdRs.quantity_required(@actor)
  104.     now_num  = $game_party.item_number(item.id)
  105.     text = "#{now_num}/#{need_num}"
  106.     cw = contents.text_size(word).width
  107.     tw = contents.text_size(text).width
  108.     iw = contents.text_size(item.name).width
  109.     self.contents.font.color = system_color
  110.     self.contents.draw_text(x, y, cw, 32, word)
  111.     draw_item_name(item, x+cw, y)
  112.     color_index = now_num >= need_num ? 3 : 2
  113.     self.contents.font.color = text_color(color_index)
  114.     self.contents.draw_text(x+44+cw+iw, y, tw, 32, text)
  115.   end
  116. end
  117. #==============================================================================
复制代码

作者: l734273398    时间: 2019-4-11 20:54
芯☆淡茹水 发表于 2019-4-11 19:59

谢谢了{:4_123:}{:4_123:}{:4_123:}
作者: 77one    时间: 2021-10-10 00:27
芯☆淡茹水 发表于 2019-4-11 19:59

怎么把代码变为插件




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