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

Project1

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

[已经解决] 人物升级除去所需经验还需要固定物品的脚本

[复制链接]

Lv4.逐梦者

梦石
0
星屑
5242
在线时间
1260 小时
注册时间
2018-1-16
帖子
366
跳转到指定楼层
1
发表于 2019-4-10 14:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50星屑
如题,人物升级,除去升级所需的经验,还需要固定的物品以及数量才能升级,每升级一级所需的物品也随着等级的加大,所需物品也越来越多。
哪位大神帮忙帮

最佳答案

查看完整内容

很久没有碰 XP 了, 都快忘了

点评

蕊大人,请问该如何学习,才能写出自己的脚本。我学习了很久,还不会  发表于 2021-10-10 17:04

Lv5.捕梦者

梦石
0
星屑
31919
在线时间
5080 小时
注册时间
2012-11-19
帖子
4877

开拓者

2
发表于 2019-4-10 14:02:40 | 只看该作者
很久没有碰 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. #==============================================================================
复制代码

点评

直接更改角色等级的情况,限制无效。  发表于 2019-4-11 10:14
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5242
在线时间
1260 小时
注册时间
2018-1-16
帖子
366
3
 楼主| 发表于 2019-4-11 08:09:51 | 只看该作者
有人没,哪位大神帮帮忙啊
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5242
在线时间
1260 小时
注册时间
2018-1-16
帖子
366
4
 楼主| 发表于 2019-4-11 17:15:21 | 只看该作者
本帖最后由 l734273398 于 2019-4-11 17:25 编辑
芯☆淡茹水 发表于 2019-4-10 14:02
很久没有碰 XP 了, 都快忘了


脚本试了一下可以,但如果角色过多,玩家背包拥有物品,角色经验又充足的情况下会自动升级,能不能弄一个界面,手动来控制武将的升级,且自动判定武将升级所需物品是否可以升级,不足时提示。

点评

100行以内的脚本,闲暇时可以做一下。如果太多了,实在是抽不出太多空余时间。  发表于 2019-4-11 17:55
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5242
在线时间
1260 小时
注册时间
2018-1-16
帖子
366
5
 楼主| 发表于 2019-4-11 18:12:56 | 只看该作者
l734273398 发表于 2019-4-11 17:15
脚本试了一下可以,但如果角色过多,玩家背包拥有物品,角色经验又充足的情况下会自动升级,能不能弄一个 ...

好吧,那能不能直接把脚本修改一下,在状态页面加入升级所需物品的显示,不然不知道升级物品需要数目啊
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5242
在线时间
1260 小时
注册时间
2018-1-16
帖子
366
6
 楼主| 发表于 2019-4-11 18:14:00 | 只看该作者
芯☆淡茹水 发表于 2019-4-10 14:02
很久没有碰 XP 了, 都快忘了

好吧,那能不能直接把脚本修改一下,在状态页面加入升级所需物品的显示,不然不知道升级物品需要数目啊
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31919
在线时间
5080 小时
注册时间
2012-11-19
帖子
4877

开拓者

7
发表于 2019-4-11 19:59:54 | 只看该作者
  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. #==============================================================================
复制代码
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5242
在线时间
1260 小时
注册时间
2018-1-16
帖子
366
8
 楼主| 发表于 2019-4-11 20:54:52 | 只看该作者

谢谢了{:4_123:}{:4_123:}{:4_123:}
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
23
在线时间
2 小时
注册时间
2021-10-9
帖子
3
9
发表于 2021-10-10 00:27:20 | 只看该作者

怎么把代码变为插件
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-24 20:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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