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

Project1

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

[已经解决] 帮改写一个脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
48
在线时间
2459 小时
注册时间
2011-12-18
帖子
1484
跳转到指定楼层
1
发表于 2012-7-21 13:33:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 a364774426 于 2012-7-21 20:00 编辑

这一段脚本是给装备具有一个根据角色等级而成长的属性,我更想要的效果是,只有在角色佩戴该装备时,该装备才会成长,否则无论角色升到多少级,该装备的属性都无法成长,也不知道这难不难,所以先放500经验上来了,如果需要追加V的话,尽管提哈。
==============================================================================
# ** TDS Equipment Level Bonus
#    Ver: 1.0
#------------------------------------------------------------------------------
#  * Description:
#  Equipment gives bonuses based on the characters level.
#------------------------------------------------------------------------------
#  * Features:
#  Allows equipment to have bonuses based on levels.
#  Allows for bonuses to be "capped" at a maximun value.
#------------------------------------------------------------------------------
#  * Instructions:
#  To make equipment add a bonus based on it's level, add this to it's note box.
#
#   ATK_LV_BONUS: BONUS MAX
#   DEF_LV_BONUS: BONUS MAX
#   SPI_LV_BONUS: BONUS MAX
#   AGI_LV_BONUS: BONUS MAX
#
#   BONUS = Bonus multiplier.
#   MAX   = Max bonus. (Optional)
#
#   Example:
#
#   ATK_LV_BONUS: 5 30
#   DEF_LV_BONUS: 2
#------------------------------------------------------------------------------
#  * Notes:
#  None.
#------------------------------------------------------------------------------
#  * New Methods:
#  RPG::BaseItem:
#  - level_attribute_bonus(level, attribute)
#    ^ Method used to determine attribute bonus total.
#
#  Game_Actor:
#  - attribute_level_bonus(attribute)   
#    ^ Used to determine the attribute bonus for the actor.
#------------------------------------------------------------------------------
#  * Aliased Methods:
#  Game_Actor:
#  - base_atk
#  - base_def
#  - base_spi
#  - base_agi
#    ^ Above methods aliased to add return equipment bonuses along normal bonus.
#------------------------------------------------------------------------------
# WARNING:
#
# Do not release, distribute or change my work without my expressed written
# consent, doing so violates the terms of use of this work.
#
# If you really want to share my work please just post a link to the original
# site.
#
# * Not Knowing English or understanding these terms will not excuse you in any
#   way from the consequenses.
#==============================================================================


#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  This class handles actors. It's used within the Game_Actors class
# ($game_actors) and referenced by the Game_Party class ($game_party).
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias tds_equipment_level_bonus_game_actor_base_atk    base_atk   unless $@
  alias tds_equipment_level_bonus_game_actor_base_def    base_def   unless $@
  alias tds_equipment_level_bonus_game_actor_base_spi    base_spi   unless $@
  alias tds_equipment_level_bonus_game_actor_base_agi    base_agi   unless $@
  #--------------------------------------------------------------------------
  # * Get Basic Defense
  #     attribute : attribute name
  #--------------------------------------------------------------------------
  def attribute_level_bonus(attribute)   
    # Set Initial Bonus
    bonus = 0
    # Go Through Equipment and add up attribute bonus
    equips.compact.each {|equip| bonus += equip.level_attribute_bonus(@level, attribute)}   
    # Return Attribute Bonus
    return bonus
  end  
  #--------------------------------------------------------------------------
  # * Get Basic Attack
  #--------------------------------------------------------------------------
  def base_atk
    # Return Base Plus Attribute Level Bonus
    return tds_equipment_level_bonus_game_actor_base_atk + attribute_level_bonus("攻击")
  end
  #--------------------------------------------------------------------------
  # * Get Basic Defense
  #--------------------------------------------------------------------------
  def base_def
    # Return Base Plus Attribute Bonus
    return tds_equipment_level_bonus_game_actor_base_def + attribute_level_bonus("防御")
  end
  #--------------------------------------------------------------------------
  # * Get Basic Spirit
  #--------------------------------------------------------------------------
  def base_spi     
    # Return Base Plus Attribute Bonus
    return tds_equipment_level_bonus_game_actor_base_spi + attribute_level_bonus("精神")
  end
  #--------------------------------------------------------------------------
  # * Get Basic Agility
  #--------------------------------------------------------------------------
  def base_agi
    # Return Base Plus Attribute Bonus
    return tds_equipment_level_bonus_game_actor_base_agi + attribute_level_bonus("敏捷")
  end
end


#==============================================================================
# ** RPG::BaseItem
#------------------------------------------------------------------------------
# This module handles Item, Weapons and Armor information.
#==============================================================================

module RPG
    class BaseItem
    #--------------------------------------------------------------------------
    # * Equipment Attribute Bonus
    #     level     : level multiplier
    #     attribute : attribute for bonus
    #--------------------------------------------------------------------------   
    def level_attribute_bonus(level, attribute)
      self.note[/#{attribute}成长:([0-9]+[\s]?[0-9]*)/]      
      # Make Bonus and Cap Array
      bonus = $1.nil? ? nil : $1.split.collect {|b| b.to_i }
      # If Bonus is not nil
      if bonus != nil
        # Get Max Bonus Limit (If nil set to infinite)
        max = bonus.at(1).nil? ? (1.0 / 0) : bonus.at(1)        
        # Return Bonus
        return [bonus.at(0) * level, max].min
      end
      # Return 0 by default
      return 0
    end  
  end  
end

点评

我非常确定就是这么点 我用过了 并且生效了~~  发表于 2012-7-22 17:27
确定啊。。。连类都没有。。怎么alias。。(´Д`)。。。肯定不值只这么一点  发表于 2012-7-22 16:18
对的 就这么点  发表于 2012-7-21 20:26
包括注释也只有100+么。。  发表于 2012-7-21 20:06
这是一个深不见底的坑,这是一个广袤无边的坑,我才刚刚放上了一抔泥土……

《六道·陈国篇》开坑了……↓点我

Lv3.寻梦者

梦石
0
星屑
1409
在线时间
962 小时
注册时间
2012-4-30
帖子
1475

开拓者

2
发表于 2012-7-21 17:42:57 | 只看该作者
看不到内容编辑一下吧,,

点评

不好意思哈,这代码还得直接贴上来才行  发表于 2012-7-21 20:02
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
412 小时
注册时间
2012-6-1
帖子
1021
3
发表于 2012-7-21 19:56:13 | 只看该作者
本帖最后由 明特·布兰马修 于 2012-7-21 19:57 编辑

楼主,重新编辑一下帖子吧。
你这是空白帖呀,脚本在哪呢?

点评

不好意思哈,这代码还得直接贴上来才行  发表于 2012-7-21 20:02
这里是新人 明特·布兰马修
脚本盲 事件盲 美工盲
还是色盲ORZ
XP\VX略懂VA无助很抱歉
所以问题什么如果答不好就不要提醒我了
短篇7已经放弃,但是坑在继续补上。所以回答和现身次数少之。
有事烧纸或者留言即可。

还有我不是正太啊ORZ
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-7-30
帖子
147
4
发表于 2012-7-30 10:38:38 | 只看该作者
首先有一个很简单的定义:
vx里面物品的处理全部都是只用id做分类的,也就是说不修改脚本的情况下是无法对一个物品进行升级操作。(+5的剑或者+13的汤,除非你在物品库设定所有+1~+100的装备数据,当然附魔什么的就更难做)
我的设想是将$game_party中items这个hash表的key做成[id,bonus]这个形式。
看了这段脚本,程序员一定是北大青鸟毕业的吧。。跟我这种半吊子的注释等级完全不是一个回事
以为我完全不用alias,所以还是只提供个思路,自己改自己的也贴不到网上(全乱套了)
1.在所有有对$game_party中@items操作的i之前全部加入i=[i,0] if i.is_a? Integer
2.不知道你想怎样让装备升级,玩家升级时升级吗?还是战斗后升级?如何升级?总之要提升的就是这个@items[key]中的key,[i,bonus]中的bonus,直接修改equip_id中的bonus就行
3.修改
  1. def attribute_level_bonus(attribute)   
  2.     # Set Initial Bonus
  3.     bonus = 0
  4.     # Go Through Equipment and add up attribute bonus
  5.     equips.compact.each {|equip| bonus += equip.level_attribute_bonus(@level, attribute)}   
  6.     # Return Attribute Bonus
  7.     return bonus
  8.   end  
复制代码

equips.compact.each {|equip| bonus += equip.level_attribute_bonus(@level, attribute)}   
中@level改为key[1]。因为具体的装备id名称我忘了,用key代替,可能是equip_id1之类的吧

顺便说一句原作者明确指出不能修改它的脚本,脚本这么简单还是自己写一个出来的好。
想回复我的话请呼(@)我一下。
准备执行人体盗图计划,copyright的诸君赶紧藏好咧~
回复

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4699
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

5
发表于 2012-7-30 12:43:41 | 只看该作者
本来就是佩带的时候才能看见该装备的属性。不佩带的时候就算装备属性随等级变了你也看不见啊。
或者说是你用了其他脚本,比如《详尽帮助》吗?若是那样的话只需要改一改《详尽帮助》脚本即可。
或者说你是需要让某一装备一直伴随某角色升级,一旦换别的装备,这个“别的装备”等级又要重新练?若是这样的话,则需要用到《复杂装备系统》中“装备重生”的定义。

点评

我觉得他想要的应该是类似召唤兽的可以升级的装备,保有等级的。或许还可以加属性点:D  发表于 2012-7-31 05:36
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-7-30
帖子
147
6
发表于 2012-8-1 23:23:30 | 只看该作者
考虑了一下反正自己也需要这个系统,就写了一个,直接绑到附件里了
顺便绑了个rpg探险队的sideview。不过脚本兼容性差(至少sideview不改是报错,估计所有的战斗系统都不太行,包括什么装备属性显示什么的好像也不行)。所以跟其他系统整合时请谨慎。或者pm我改系统(要求版权和不准修改的就算了)。
如果有人需要我会考虑再改进一下脚本的兼容性。
因为是刚刚写的出现bug很正常。欢迎八阿哥找我报道。
使用指南在脚本里有写。

Scene_battle_Original.rar

438.54 KB, 下载次数: 48

想回复我的话请呼(@)我一下。
准备执行人体盗图计划,copyright的诸君赶紧藏好咧~
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-7-30
帖子
147
7
发表于 2012-8-2 02:43:20 | 只看该作者
本帖最后由 devilg 于 2012-8-6 23:25 编辑

我又后悔了。。。。
再更正几个bug。


RUBY 代码复制
  1. =begin
  2. 下面的系统是enchant系统。依稀记得英雄坛说的系统也有类似的功效(打造武器的系统)
  3. 不过为什么别人做过我就不能再写一个呢。
  4. copywrong DevilG.版权没有翻版。。。翻吧。
  5.  
  6.  
  7. 使用方法:
  8.  
  9. 1.设定等级
  10. 在物品库里的备注放入
  11. atk1=1000
  12.       def1=0
  13.       agi1=0
  14.       spi1=0
  15.       hprec1=0
  16.       mprec1=0
  17. 等数值。atk1=1000 意味着物品提升一级将会提升额外的10点攻击(1000/100)
  18. atk1=111就是每级1.11攻击,会四舍五入。
  19. hprec1等是被可用物品使用的。
  20. 这些数值是可以扩充的,别忘了增加相应处理语句。存储位也可以放在另一设定脚本里。
  21.  
  22. 2.增加有等级的物品的方法:
  23. 在事件脚本内加入
  24.  
  25. balls = $data_weapons[1].dup  
  26. balls.bonus = [0,100]         
  27. $game_party.gain_item(balls,1)
  28.  
  29. 其中
  30. balls = $data_weapons[1].dup  获得武器库第一个武器:木棒
  31. balls.bonus = [0,100]         增加武器的等级为0抚摸,100等级
  32. $game_party.gain_item(balls,1)获得一个蛋成为三蛋
  33.  
  34. 3.自定义抚摸
  35. ENCHANT array包含了抚摸的名字,比如木棒-->爆炎木棒
  36. ENCHANT NAME & DES用作抚摸效果的显示。
  37. 在def enchantBonus定义抚摸的效果:case type后加入when number
  38. 其他请参照注释和范例。
  39.  
  40. 技术支持:
  41. 将游戏中所有的辨别item的key:item.id换成了[item.id,bonus]的array形式。
  42. 其中包括$game_party的@item hash list和角色的装备决定数值weapon_id等。
  43. 并对一些处理语句做出了修改,返还物品时做bonus的附加修改。
  44. 致想看完这个脚本的朋友:debug时我很容易写F**K,S**T等字样无视就好
  45. 我的编程style很烂,各种tab都是乱七八糟的。请多多包涵
  46. 由于只测试了武器木棒,出现bug请pm我。
  47.  
  48. 兼容性/整合系统技术支持:
  49. 可能不支持修改过game_party中gain_item,items,item_number,
  50. game_actors中armor_id,weapons, armors, change_equip,
  51. RPG:ITEM,和window_base中draw_item_name的系统整合。
  52. 可能与装备显示的系统有冲突。
  53. 与游戏事件:失去物品可能不兼容。尤其是升级过后的装备。(等级不同所以key不同)
  54.  
  55. update NOTE
  56. 将在武器和防具类的bonus更新语句放到了baseitem内。更新bonus内容时直接更新物品数据。
  57. 运行速度可能会变慢(处理语句变多)
  58. 处理了weapon_Id等的getter模式,提升了兼容性
  59. 对某些语句使用了alias。
  60. 修复了一个丢弃防具的bug。
  61. 添加了物品升级的函数。
  62. 更新了物品升级的语句(未测试)
  63. 修正上述废话。
  64. =end
  65.  
  66. module SHIT
  67.   #Bonus初始化的状态。目前的状态是(抚摸,装备等级)[enchant,item level]
  68.   SHITBONUS = [0,0]
  69.   ENCHANT = ["爆炎","Shitty"]
  70.   #FOLLOWING USED IN ARMOUR DESCRIPTION
  71.   ENCHANTNAME = ["爆炎:","Shitty"]
  72.   ENCHANTDES  = ["提升5点攻击并攻击为火属性","大幅降低物品属性"]
  73. end
  74.  
  75. module RPG
  76. class BaseItem
  77.   attr_accessor:bonus #添加的bonus数据。
  78.  
  79.   def fix(bonus=[0,0])#bonus的setter。将bonus变量导入到本类的@bonus变量里
  80.       @bonus = bonus
  81.       enchantBonus(@bonus[0])
  82.       levelBonus(@bonus[1])
  83.       return self
  84.     end
  85.  
  86.     def bonus#bonus的getter。若本类@bonus为nil则返回bonus初始化array。
  87.       return SHIT::SHITBONUS if @bonus == nil
  88.       return @bonus
  89.     end
  90.  
  91.     def showBonus?#是否在物品名旁显示bonus的返回boolean。若没有属性加成则不显示
  92.       atk1=0
  93.       def1=0
  94.       agi1=0
  95.       spi1=0
  96.       hit1=0
  97.       eva1=0
  98.       hprec1=0
  99.       mprec1=0
  100.       eval(@note)
  101.       shittyarray=[atk1,def1,agi1,spi1,hprec1,mprec1]#将所有的变量放到array里
  102.       for shit in shittyarray
  103.         return true if shit != 0#如果有则显示bonus加成
  104.         end
  105.       return false
  106.     end
  107.  
  108.     def lvlup
  109. @bonus =SHIT::SHITBONUS if @bonus == nil
  110. @bonus = @bonus.dup
  111. @bonus[1]+= 1
  112. return self
  113.     end
  114.  
  115.     def update_qualify(id,type)
  116.       #id:物品编号。type:1=misc, 2=weap,3=armour
  117.       #物品升级时的特殊要求。目前为100%
  118.       case id
  119.       when 1
  120.       end
  121.  
  122.       return true if rand(100)<100
  123.       return false
  124.       end
  125.  
  126.     def enchantBonus(type)
  127.       #common variables;atk,def,spi,agi,price
  128.       #variables only weapon have :hit, twohand, fastatk,cri,elementset,stateset
  129.       #only armour:eva,halfmp, double exp,
  130.       list =        [0,  0,  0,  0,  0,    0,   0,      0,      0,   [],       [],      0,    0,     0,      0,        [],                       [],         0 ]
  131.       #list format: [atk,def,spi,agi,price,hit,twohand,fastatk,cri,elementset,stateset,eva, halfmp,doubexp, auto_recov, halve_element_damage, state_resist,prevent_cri]
  132.       #atk1 def2 spi3 agi4 pric5 hit6 2h7 fast8 cri9 elem10 stat11 eva12
  133.       #1/2mp13 2xexp14 hprec15 elementset16 stateset17 preventcri18
  134.       #elementset format:[elementid,element id]
  135.       #stateset format:[stateid, stateid]
  136.       #WARNING:7,8,9,13,14,15,18 MUST BE SET TO BOOLEAN(TRUE/FALSE) OR 0(NO CHANGE)
  137.       case type
  138.       when 1#name=火焰武器抚摸(+5攻击并攻击火焰化)
  139.         list[0]=5#ATK+5
  140.         list[9]=[9]#ELEMENTSET PUSH 9(火焰)
  141.       when 2#shitty:全属性-500
  142.         list[0]=-500
  143.         list[1]=-500
  144.         list[2]=-500
  145.         list[3]=-500
  146.       end
  147.       @atk +=           list[0] if @atk != nil
  148.       @def +=           list[1] if @def != nil
  149.       @spi +=           list[2] if @spi != nil
  150.       @agi +=           list[3] if @agi != nil
  151.       @price +=         list[4] if @price != nil
  152.       @hit +=           list[5] if @hit != nil
  153.       @two_handed     = list[6] if @two_handed != nil && list[6]!=0
  154.       @fast_attack    = list[7] if @fast_attack!= nil && list[7]!=0
  155.       @critical_bonus = list[8] if @critical_bonus!= nil && list[8]!=0
  156.       @element_set += list[9] if @element_set!=nil && @two_handed != nil
  157.       @state_set  += list[10] if @state_set!=nil && @two_handed != nil
  158.       @eva += list[11] if @eva != nil
  159.       @half_mp_cost     = list[12] if @half_mp_cost != nil && list[12]!=0
  160.       @double_exp_gain     = list[13] if @double_exp_gain!= nil && list[13]!=0
  161.       @auto_hp_recover   = list[14] if @auto_hp_recover!= nil && list[14]!=0
  162.       @element_set += list[15] if @element_set!=nil && @auto_hp_recover != nil
  163.       @state_set  += list[16] if @state_set!=nil && @auto_hp_recover != nil
  164.       @prevent_critical   = list[17] if @prevent_critical!= nil && list[17]!=0
  165.       end
  166.  
  167.     def levelBonus(level)
  168.       atk1=0
  169.       def1=0
  170.       agi1=0
  171.       spi1=0
  172.       hit1=0
  173.       eva1=0
  174.       hprec1=0
  175.       mprec1=0
  176.       #能力扩充HERE
  177.       eval(@note)
  178.       @atk += (atk1*level/100).to_i if @atk!=nil
  179.       @def += (def1*level/100).to_i if @def!=nil
  180.       @spi += (spi1*level/100).to_i if @spi!=nil
  181.       @agi += (agi1*level/100).to_i if @agi!=nil
  182.       @hit += (hit1*level/100).to_i if @hit!=nil
  183.       @eva += (eva1*level/100).to_i if @eva!=nil
  184.       @hp_recovery += (hprec1*level/100).to_i if @hp_recovery!=nil
  185.       @mp_recovery += (mprec1*level/100).to_i if @mp_recovery!=nil
  186.       end  
  187.     end#end of class
  188.  
  189.   end#end of module
  190.  
  191.   class Window_Base#对物品名字表述的重新定义。
  192.   def draw_item_name(item, x, y, enabled = true)
  193.     return if item == nil
  194.     if item != nil
  195.       draw_icon(item.icon_index, x, y, enabled)
  196.       self.contents.font.color = normal_color
  197.       self.contents.font.color.alpha = enabled ? 255 : 128
  198.       text = item.name
  199.       text = SHIT::ENCHANT[item.bonus[0]-1]+text if item.bonus[0]!=0 && SHIT::ENCHANT[item.bonus[0]-1] != nil
  200.       #print "fuck"+item[1][1].to_i.to_s #请忽略debug语句
  201.       text += ("+"+(item.bonus[1].to_s)) if item.bonus[1]!=0 && item.showBonus?#bonus name spec. here
  202.       #如果物品有属性加成并有等级则显示+X在名字后面
  203.       self.contents.draw_text(x + 24, y, 172, WLH, text)
  204.     end
  205.   end
  206. end
  207.  
  208. #对actor类的重新整理
  209. class Game_Actor < Game_Battler
  210.   #--------------------------------------------------------------------------
  211.   # ● 设置
  212.   #     actor_id : 角色 ID
  213.   #--------------------------------------------------------------------------
  214.   alias setup1 setup
  215.   def setup(actor_id)
  216.     setup1(actor_id)
  217.     #将装备的key换成array形式
  218.     @weapon_id = [actor.weapon_id,SHIT::SHITBONUS]
  219.     @armor1_id = [actor.armor1_id,SHIT::SHITBONUS]
  220.     @armor2_id = [actor.armor2_id,SHIT::SHITBONUS]
  221.     @armor3_id = [actor.armor3_id,SHIT::SHITBONUS]
  222.     @armor4_id = [actor.armor4_id,SHIT::SHITBONUS]
  223.   end
  224.   #对装备key做getter处理
  225.   def weapon_id
  226.     return @weapon_id[0]
  227.   end
  228.   def armor1_id
  229.     return @armor1_id[0]
  230.   end
  231.   def armor2_id
  232.     return @armor2_id[0]
  233.   end
  234.   def armor3_id
  235.     return @armor3_id[0]
  236.   end
  237.   def @armor4_id
  238.     return @armor4_id[0]
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ● 获取武器对象数组
  242.   #--------------------------------------------------------------------------
  243.   def weapons#重新定义了武器获取模式:由于nil不再好判断,通过另一函数pushFucker处理
  244.     result = []
  245.     result = pushFucker(result,@weapon_id,true)
  246.     if two_swords_style
  247.     result = pushFucker(result,@armor1_id,true)
  248.     end
  249.     return result
  250.   end
  251.   #--------------------------------------------------------------------------
  252.   # ● 获取防具对象数组
  253.   #--------------------------------------------------------------------------
  254.   def armors#重新定义了防具获取模式:由于nil不再好判断,通过另一函数pushFucker处理
  255.     result = []
  256.     unless two_swords_style
  257.       result = pushFucker(result,@armor1_id)
  258.     end
  259.     result = pushFucker(result,@armor2_id)
  260.     result = pushFucker(result,@armor3_id)
  261.     result = pushFucker(result,@armor4_id)
  262.     return result
  263.   end
  264.  
  265.   def pushFucker(result,itemshit,weapon = false)
  266.     #如果系统存在这个武器那么在result表内增加加成过bonus的武器。否则push nil
  267.     if weapon
  268.       if $data_weapons[itemshit[0]]!=nil
  269.         result.push($data_weapons[itemshit[0]].dup.fix(itemshit[1]))
  270.     else
  271.       result.push(nil)
  272.     end
  273.   else
  274.       if $data_armors[itemshit[0]]!=nil
  275.         result.push($data_armors[itemshit[0]].dup.fix(itemshit[1]))
  276.     else
  277.       result.push(nil)
  278.     end
  279.   end
  280.   return result
  281.     end
  282.  
  283.   #--------------------------------------------------------------------------
  284.   # ● 变更装备(目标对象)
  285.   #     equip_type : 装备部分(0~4)
  286.   #     item_id    : 武器或防具ID
  287.   #     test       : 测试标志(战斗测试或暂时装备用)
  288.   #--------------------------------------------------------------------------
  289.   def change_equip(equip_type, item, test = false)
  290.     last_item = equips[equip_type]
  291.     unless test
  292.       return if $game_party.item_number(item) == 0 if item != nil
  293.       $game_party.gain_item(last_item, 1)
  294.       $game_party.lose_item(item, 1)
  295.     end
  296.     #由于下面就要更新装备处理数值了,所以将物品key改成新的array形式:
  297.     #[id,bonus]的形式。若是物品nil则key为0,初始bonus数值的array。
  298.     item = [item.id,item.bonus] if item != nil#
  299.     item = [0,SHIT::SHITBONUS]if item == nil
  300.     case equip_type
  301.     when 0  # 武器
  302.       @weapon_id = item
  303.       unless two_hands_legal?             # 非双手装备的场合,自动卸下装备
  304.         change_equip(1, nil, test)
  305.       end
  306.     when 1  # 盾
  307.       @armor1_id = item
  308.       unless two_hands_legal?             # 非双手装备的场合,自动卸下装备
  309.         change_equip(0, nil, test)
  310.       end
  311.     when 2  # 头部防具
  312.       @armor2_id = item
  313.     when 3  # 身体防具
  314.       @armor3_id = item
  315.     when 4  # 装饰品
  316.       @armor4_id = item#_id
  317.     end
  318.   end
  319.   #--------------------------------------------------------------------------
  320.   # ● 丢弃装备
  321.   #     item : 要丢弃的武器或防具
  322.   #    在「包含装备品」选项钩上时使用。
  323.   #--------------------------------------------------------------------------
  324.   def discard_equip(item)
  325.     if item.is_a?(RPG::Weapon)
  326.       #同样的更改物品key的形式。
  327.       if @weapon_id == [item.id,item.bonus]
  328.         @weapon_id = [0,SHIT::SHITBONUS]
  329.       elsif two_swords_style and @armor1_id == [item.id,item.bonus]
  330.         @armor1_id = [0,SHIT::SHITBONUS]
  331.       end
  332.     elsif item.is_a?(RPG::Armor)
  333.       if not two_swords_style and @armor1_id == [item.id,item.bonus]
  334.         @armor1_id = [0,SHIT::SHITBONUS]
  335.       elsif @armor2_id == [item.id,item.bonus]
  336.         @armor2_id = [0,SHIT::SHITBONUS]
  337.       elsif @armor3_id == [item.id,item.bonus]
  338.         @armor3_id = [0,SHIT::SHITBONUS]
  339.       elsif @armor4_id == [item.id,item.bonus]
  340.         @armor4_id = [0,SHIT::SHITBONUS]
  341.       end
  342.     end
  343.   end
  344.  
  345.   alias level_up1 level_up
  346.   def level_up
  347.     level_up1   
  348.     #在升级时同时升级装备。
  349. level_up_armour([@weapon_id,@armor1_id,@armor1_id,@armor1_id,@armor1_id])
  350.   end
  351.  
  352.   def level_up_armour(shits)#升级装备的函数。shit是包括全数据的array
  353.     fucks=equips
  354.     i=0
  355.     for shit in shits
  356.       shit[1]=[0,0] if shit[1]==[]#若是bonus为空,则初始化bonus
  357.       shit[1][1]+= 1 if fucks[i]!=nil && fucks[i].update_qualify#自定义装备升级模式(比如只有装备黄盘才能升级成3d龙之类的)
  358.       i += 1
  359.       end
  360.     end
  361. end
  362.  
  363. class Game_Party
  364.  
  365.   def items#对返还物品列表的函数更改。返还的是bonus加持过的物品。
  366.     result = []
  367.     for i in @items.keys.sort
  368.       result.push($data_items[i[0]].dup.fix(i[1])) if @items[i] > 0
  369.     end
  370.     for i in @weapons.keys.sort
  371.       result.push($data_weapons[i[0]].dup.fix(i[1])) if @weapons[i] > 0
  372.     end
  373.     for i in @armors.keys.sort
  374.       result.push($data_armors[i[0]].dup.fix(i[1])) if @armors[i] > 0
  375.     end
  376.     return result
  377.   end
  378.  
  379.   def gain_item(item, n, include_equip = false)#获得物品时的更改。
  380.     #同样的,key从item.id换成了array形式。
  381.     return if item == nil
  382.     #bonus form: [enchant id, bonus id]
  383.     number = item_number(item)
  384.     case item
  385.     when RPG::Item
  386.       @items[[item.id,item.bonus]] = [[number + n, 0].max, 99].min
  387.     when RPG::Weapon
  388.       @weapons[[item.id,item.bonus]] = [[number + n, 0].max, 99].min
  389.     when RPG::Armor
  390.       @armors[[item.id,item.bonus]] = [[number + n, 0].max, 99].min
  391.     end
  392.     n += number
  393.     if include_equip and n < 0
  394.       for actor in members
  395.         while n < 0 and actor.equips.include?(item)
  396.           actor.discard_equip(item)
  397.           n += 1
  398.         end
  399.       end
  400.     end
  401.   end
  402.  
  403.     def item_number(item)
  404.       #第无数次更新key的形式。
  405.     case item
  406.     when RPG::Item
  407.       number = @items[[item.id,item.bonus]]
  408.     when RPG::Weapon
  409.       number = @weapons[[item.id,item.bonus]]
  410.     when RPG::Armor
  411.       number = @armors[[item.id,item.bonus]]
  412.     end
  413.     return number == nil ? 0 : number
  414.   end
  415. end
  416.  
  417. #以下语句是为了突破999属性的限制。并不是必须的,原脚本也无法完美显示4位攻击值。
  418. class Game_Battler
  419.   #--------------------------------------------------------------------------
  420.   # ● 获取 最大体力值 上限
  421.   #--------------------------------------------------------------------------
  422.   def maxhp_limit
  423.     return 999999
  424.   end
  425.   #--------------------------------------------------------------------------
  426.   # ● 获取 最大体力值
  427.   #--------------------------------------------------------------------------
  428.   def maxhp
  429.     return [[base_maxhp + @maxhp_plus, 1].max, maxhp_limit].min
  430.   end
  431.   #--------------------------------------------------------------------------
  432.   # ● 获取 最大魔力值
  433.   #--------------------------------------------------------------------------
  434.   def maxmp
  435.     return [[base_maxmp + @maxmp_plus, 0].max, 9999].min
  436.   end
  437.   #--------------------------------------------------------------------------
  438.   # ● 获取 攻击力
  439.   #--------------------------------------------------------------------------
  440.   def atk
  441.     n = [[base_atk + @atk_plus, 1].max, 9999].min
  442.     for state in states do n *= state.atk_rate / 100.0 end
  443.     n = [[Integer(n), 1].max, 9999].min
  444.     return n
  445.   end
  446.   #--------------------------------------------------------------------------
  447.   # ● 获取 防御力
  448.   #--------------------------------------------------------------------------
  449.   def def
  450.     n = [[base_def + @def_plus, 1].max, 9999].min
  451.     for state in states do n *= state.def_rate / 100.0 end
  452.     n = [[Integer(n), 1].max, 9999].min
  453.     return n
  454.   end
  455.   #--------------------------------------------------------------------------
  456.   # ● 获取 精神力
  457.   #--------------------------------------------------------------------------
  458.   def spi
  459.     n = [[base_spi + @spi_plus, 1].max, 9999].min
  460.     for state in states do n *= state.spi_rate / 100.0 end
  461.     n = [[Integer(n), 1].max, 9999].min
  462.     return n
  463.   end
  464.   #--------------------------------------------------------------------------
  465.   # ● 获取 敏捷
  466.   #--------------------------------------------------------------------------
  467.   def agi
  468.     n = [[base_agi + @agi_plus, 1].max, 9999].min
  469.     for state in states do n *= state.agi_rate / 100.0 end
  470.     n = [[Integer(n), 1].max, 9999].min
  471.     return n
  472.   end
  473. end
  474. #=end
������

点评

果然不兼容SIDEVIEW。啊,算了,这功能不用也罢  发表于 2012-8-2 23:40

评分

参与人数 1梦石 +2 收起 理由
Luciffer + 2 认真回答

查看全部评分

想回复我的话请呼(@)我一下。
准备执行人体盗图计划,copyright的诸君赶紧藏好咧~
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 22:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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