查看: 2120|回复: 6

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

[复制链接]
梦石
0
星屑
48
在线时间
2459 小时
注册时间
2011-12-18
回帖
1419
发表于 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
这是一个深不见底的坑,这是一个广袤无边的坑,我才刚刚放上了一抔泥土……

《六道·陈国篇》开坑了……↓点我
梦石
0
星屑
2306
在线时间
1010 小时
注册时间
2012-4-30
回帖
1455

开拓者

发表于 2012-7-21 17:42:57 | 显示全部楼层
看不到内容编辑一下吧,,

点评

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

使用道具 举报

梦石
0
星屑
47
在线时间
412 小时
注册时间
2012-6-1
回帖
1008
发表于 2012-7-21 19:56:13 | 显示全部楼层
本帖最后由 明特·布兰马修 于 2012-7-21 19:57 编辑

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

点评

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

还有我不是正太啊ORZ
回复

使用道具 举报

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-7-30
回帖
124
发表于 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的诸君赶紧藏好咧~
回复

使用道具 举报

八宝粥的基叔

梦石
0
星屑
4957
在线时间
5234 小时
注册时间
2009-4-29
回帖
14054

贵宾

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

点评

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

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

使用道具 举报

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

Scene_battle_Original.rar

438.54 KB, 下载次数: 48

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

使用道具 举报

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-7-30
回帖
124
发表于 2012-8-2 02:43:20 | 显示全部楼层
本帖最后由 devilg 于 2012-8-6 23:25 编辑

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


[pre lang="ruby" line="1"]=begin
下面的系统是enchant系统。依稀记得英雄坛说的系统也有类似的功效(打造武器的系统)
不过为什么别人做过我就不能再写一个呢。
copywrong DevilG.版权没有翻版。。。翻吧。


使用方法:

1.设定等级
在物品库里的备注放入
atk1=1000
      def1=0
      agi1=0
      spi1=0
      hprec1=0
      mprec1=0
等数值。atk1=1000 意味着物品提升一级将会提升额外的10点攻击(1000/100)
atk1=111就是每级1.11攻击,会四舍五入。
hprec1等是被可用物品使用的。
这些数值是可以扩充的,别忘了增加相应处理语句。存储位也可以放在另一设定脚本里。

2.增加有等级的物品的方法:
在事件脚本内加入

balls = $data_weapons[1].dup  
balls.bonus = [0,100]         
$game_party.gain_item(balls,1)

其中
balls = $data_weapons[1].dup  获得武器库第一个武器:木棒
balls.bonus = [0,100]         增加武器的等级为0抚摸,100等级
$game_party.gain_item(balls,1)获得一个蛋成为三蛋

3.自定义抚摸
ENCHANT array包含了抚摸的名字,比如木棒-->爆炎木棒
ENCHANT NAME & DES用作抚摸效果的显示。
在def enchantBonus定义抚摸的效果:case type后加入when number
其他请参照注释和范例。

技术支持:
将游戏中所有的辨别item的key:item.id换成了[item.id,bonus]的array形式。
其中包括$game_party的@item hash list和角色的装备决定数值weapon_id等。
并对一些处理语句做出了修改,返还物品时做bonus的附加修改。
致想看完这个脚本的朋友:debug时我很容易写F**K,S**T等字样无视就好
我的编程style很烂,各种tab都是乱七八糟的。请多多包涵
由于只测试了武器木棒,出现bug请pm我。

兼容性/整合系统技术支持:
可能不支持修改过game_party中gain_item,items,item_number,
game_actors中armor_id,weapons, armors, change_equip,
RPG:ITEM,和window_base中draw_item_name的系统整合。
可能与装备显示的系统有冲突。
与游戏事件:失去物品可能不兼容。尤其是升级过后的装备。(等级不同所以key不同)

update NOTE
将在武器和防具类的bonus更新语句放到了baseitem内。更新bonus内容时直接更新物品数据。
运行速度可能会变慢(处理语句变多)
处理了weapon_Id等的getter模式,提升了兼容性
对某些语句使用了alias。
修复了一个丢弃防具的bug。
添加了物品升级的函数。
更新了物品升级的语句(未测试)
修正上述废话。
=end

module SHIT
  #Bonus初始化的状态。目前的状态是(抚摸,装备等级)[enchant,item level]
  SHITBONUS = [0,0]
  ENCHANT = ["爆炎","Shitty"]
  #FOLLOWING USED IN ARMOUR DESCRIPTION
  ENCHANTNAME = ["爆炎:","Shitty"]
  ENCHANTDES  = ["提升5点攻击并攻击为火属性","大幅降低物品属性"]
end

module RPG
class BaseItem
  attr_accessor:bonus #添加的bonus数据。
   
  def fix(bonus=[0,0])#bonus的setter。将bonus变量导入到本类的@bonus变量里
      @bonus = bonus
      enchantBonus(@bonus[0])
      levelBonus(@bonus[1])
      return self
    end
   
    def bonus#bonus的getter。若本类@bonus为nil则返回bonus初始化array。
      return SHIT::SHITBONUS if @bonus == nil
      return @bonus
    end

    def showBonus?#是否在物品名旁显示bonus的返回boolean。若没有属性加成则不显示
      atk1=0
      def1=0
      agi1=0
      spi1=0
      hit1=0
      eva1=0
      hprec1=0
      mprec1=0
      eval(@note)
      shittyarray=[atk1,def1,agi1,spi1,hprec1,mprec1]#将所有的变量放到array里
      for shit in shittyarray
        return true if shit != 0#如果有则显示bonus加成
        end
      return false
    end
   
    def lvlup
@bonus =SHIT::SHITBONUS if @bonus == nil
@bonus = @bonus.dup
@bonus[1]+= 1
return self
    end

    def update_qualify(id,type)
      #id:物品编号。type:1=misc, 2=weap,3=armour
      #物品升级时的特殊要求。目前为100%
      case id
      when 1
      end
      
      return true if rand(100)<100
      return false
      end
   
    def enchantBonus(type)
      #common variables;atk,def,spi,agi,price
      #variables only weapon have :hit, twohand, fastatk,cri,elementset,stateset
      #only armour:eva,halfmp, double exp,
      list =        [0,  0,  0,  0,  0,    0,   0,      0,      0,   [],       [],      0,    0,     0,      0,        [],                       [],         0 ]
      #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]
      #atk1 def2 spi3 agi4 pric5 hit6 2h7 fast8 cri9 elem10 stat11 eva12
      #1/2mp13 2xexp14 hprec15 elementset16 stateset17 preventcri18
      #elementset format:[elementid,element id]
      #stateset format:[stateid, stateid]
      #WARNING:7,8,9,13,14,15,18 MUST BE SET TO BOOLEAN(TRUE/FALSE) OR 0(NO CHANGE)
      case type
      when 1#name=火焰武器抚摸(+5攻击并攻击火焰化)
        list[0]=5#ATK+5
        list[9]=[9]#ELEMENTSET PUSH 9(火焰)
      when 2#shitty:全属性-500
        list[0]=-500
        list[1]=-500
        list[2]=-500
        list[3]=-500
      end
      @atk +=           list[0] if @atk != nil
      @def +=           list[1] if @def != nil
      @spi +=           list[2] if @spi != nil
      @agi +=           list[3] if @agi != nil
      @price +=         list[4] if @price != nil
      @hit +=           list[5] if @hit != nil
      @two_handed     = list[6] if @two_handed != nil && list[6]!=0
      @fast_attack    = list[7] if @fast_attack!= nil && list[7]!=0
      @critical_bonus = list[8] if @critical_bonus!= nil && list[8]!=0
      @element_set += list[9] if @element_set!=nil && @two_handed != nil
      @state_set  += list[10] if @state_set!=nil && @two_handed != nil
      @eva += list[11] if @eva != nil
      @half_mp_cost     = list[12] if @half_mp_cost != nil && list[12]!=0
      @double_exp_gain     = list[13] if @double_exp_gain!= nil && list[13]!=0
      @auto_hp_recover   = list[14] if @auto_hp_recover!= nil && list[14]!=0
      @element_set += list[15] if @element_set!=nil && @auto_hp_recover != nil
      @state_set  += list[16] if @state_set!=nil && @auto_hp_recover != nil
      @prevent_critical   = list[17] if @prevent_critical!= nil && list[17]!=0
      end
  
    def levelBonus(level)
      atk1=0
      def1=0
      agi1=0
      spi1=0
      hit1=0
      eva1=0
      hprec1=0
      mprec1=0
      #能力扩充HERE
      eval(@note)
      @atk += (atk1*level/100).to_i if @atk!=nil
      @def += (def1*level/100).to_i if @def!=nil
      @spi += (spi1*level/100).to_i if @spi!=nil
      @agi += (agi1*level/100).to_i if @agi!=nil
      @hit += (hit1*level/100).to_i if @hit!=nil
      @eva += (eva1*level/100).to_i if @eva!=nil
      @hp_recovery += (hprec1*level/100).to_i if @hp_recovery!=nil
      @mp_recovery += (mprec1*level/100).to_i if @mp_recovery!=nil
      end  
    end#end of class
   
  end#end of module
  
  class Window_Base#对物品名字表述的重新定义。
  def draw_item_name(item, x, y, enabled = true)
    return if item == nil
    if item != nil
      draw_icon(item.icon_index, x, y, enabled)
      self.contents.font.color = normal_color
      self.contents.font.color.alpha = enabled ? 255 : 128
      text = item.name
      text = SHIT::ENCHANT[item.bonus[0]-1]+text if item.bonus[0]!=0 && SHIT::ENCHANT[item.bonus[0]-1] != nil
      #print "fuck"+item[1][1].to_i.to_s #请忽略debug语句
      text += ("+"+(item.bonus[1].to_s)) if item.bonus[1]!=0 && item.showBonus?#bonus name spec. here
      #如果物品有属性加成并有等级则显示+X在名字后面
      self.contents.draw_text(x + 24, y, 172, WLH, text)
    end
  end
end

#对actor类的重新整理
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 设置
  #     actor_id : 角色 ID
  #--------------------------------------------------------------------------
  alias setup1 setup
  def setup(actor_id)
    setup1(actor_id)
    #将装备的key换成array形式
    @weapon_id = [actor.weapon_id,SHIT::SHITBONUS]
    @armor1_id = [actor.armor1_id,SHIT::SHITBONUS]
    @armor2_id = [actor.armor2_id,SHIT::SHITBONUS]
    @armor3_id = [actor.armor3_id,SHIT::SHITBONUS]
    @armor4_id = [actor.armor4_id,SHIT::SHITBONUS]
  end
  #对装备key做getter处理
  def weapon_id
    return @weapon_id[0]
  end
  def armor1_id
    return @armor1_id[0]
  end
  def armor2_id
    return @armor2_id[0]
  end
  def armor3_id
    return @armor3_id[0]
  end
  def @armor4_id
    return @armor4_id[0]
  end
  #--------------------------------------------------------------------------
  # ● 获取武器对象数组
  #--------------------------------------------------------------------------
  def weapons#重新定义了武器获取模式:由于nil不再好判断,通过另一函数pushFucker处理
    result = []
    result = pushFucker(result,@weapon_id,true)
    if two_swords_style
    result = pushFucker(result,@armor1_id,true)
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ● 获取防具对象数组
  #--------------------------------------------------------------------------
  def armors#重新定义了防具获取模式:由于nil不再好判断,通过另一函数pushFucker处理
    result = []
    unless two_swords_style
      result = pushFucker(result,@armor1_id)
    end
    result = pushFucker(result,@armor2_id)
    result = pushFucker(result,@armor3_id)
    result = pushFucker(result,@armor4_id)
    return result
  end
  
  def pushFucker(result,itemshit,weapon = false)
    #如果系统存在这个武器那么在result表内增加加成过bonus的武器。否则push nil
    if weapon
      if $data_weapons[itemshit[0]]!=nil
        result.push($data_weapons[itemshit[0]].dup.fix(itemshit[1]))
    else
      result.push(nil)
    end
  else
      if $data_armors[itemshit[0]]!=nil
        result.push($data_armors[itemshit[0]].dup.fix(itemshit[1]))
    else
      result.push(nil)
    end
  end
  return result
    end

  #--------------------------------------------------------------------------
  # ● 变更装备(目标对象)
  #     equip_type : 装备部分(0~4)
  #     item_id    : 武器或防具ID
  #     test       : 测试标志(战斗测试或暂时装备用)
  #--------------------------------------------------------------------------
  def change_equip(equip_type, item, test = false)
    last_item = equips[equip_type]
    unless test
      return if $game_party.item_number(item) == 0 if item != nil
      $game_party.gain_item(last_item, 1)
      $game_party.lose_item(item, 1)
    end
    #由于下面就要更新装备处理数值了,所以将物品key改成新的array形式:
    #[id,bonus]的形式。若是物品nil则key为0,初始bonus数值的array。
    item = [item.id,item.bonus] if item != nil#
    item = [0,SHIT::SHITBONUS]if item == nil
    case equip_type
    when 0  # 武器
      @weapon_id = item
      unless two_hands_legal?             # 非双手装备的场合,自动卸下装备
        change_equip(1, nil, test)
      end
    when 1  # 盾
      @armor1_id = item
      unless two_hands_legal?             # 非双手装备的场合,自动卸下装备
        change_equip(0, nil, test)
      end
    when 2  # 头部防具
      @armor2_id = item
    when 3  # 身体防具
      @armor3_id = item
    when 4  # 装饰品
      @armor4_id = item#_id
    end
  end
  #--------------------------------------------------------------------------
  # ● 丢弃装备
  #     item : 要丢弃的武器或防具
  #    在「包含装备品」选项钩上时使用。
  #--------------------------------------------------------------------------
  def discard_equip(item)
    if item.is_a?(RPG::Weapon)
      #同样的更改物品key的形式。
      if @weapon_id == [item.id,item.bonus]
        @weapon_id = [0,SHIT::SHITBONUS]
      elsif two_swords_style and @armor1_id == [item.id,item.bonus]
        @armor1_id = [0,SHIT::SHITBONUS]
      end
    elsif item.is_a?(RPG::Armor)
      if not two_swords_style and @armor1_id == [item.id,item.bonus]
        @armor1_id = [0,SHIT::SHITBONUS]
      elsif @armor2_id == [item.id,item.bonus]
        @armor2_id = [0,SHIT::SHITBONUS]
      elsif @armor3_id == [item.id,item.bonus]
        @armor3_id = [0,SHIT::SHITBONUS]
      elsif @armor4_id == [item.id,item.bonus]
        @armor4_id = [0,SHIT::SHITBONUS]
      end
    end
  end

  alias level_up1 level_up
  def level_up
    level_up1   
    #在升级时同时升级装备。
level_up_armour([@weapon_id,@armor1_id,@armor1_id,@armor1_id,@armor1_id])
  end
  
  def level_up_armour(shits)#升级装备的函数。shit是包括全数据的array
    fucks=equips
    i=0
    for shit in shits
      shit[1]=[0,0] if shit[1]==[]#若是bonus为空,则初始化bonus
      shit[1][1]+= 1 if fucks!=nil && fucks.update_qualify#自定义装备升级模式(比如只有装备黄盘才能升级成3d龙之类的)
      i += 1
      end
    end
end

class Game_Party
  
  def items#对返还物品列表的函数更改。返还的是bonus加持过的物品。
    result = []
    for i in @items.keys.sort
      result.push($data_items[i[0]].dup.fix(i[1])) if @items > 0
    end
    for i in @weapons.keys.sort
      result.push($data_weapons[i[0]].dup.fix(i[1])) if @weapons > 0
    end
    for i in @armors.keys.sort
      result.push($data_armors[i[0]].dup.fix(i[1])) if @armors > 0
    end
    return result
  end
  
  def gain_item(item, n, include_equip = false)#获得物品时的更改。
    #同样的,key从item.id换成了array形式。
    return if item == nil
    #bonus form: [enchant id, bonus id]
    number = item_number(item)
    case item
    when RPG::Item
      @items[[item.id,item.bonus]] = [[number + n, 0].max, 99].min
    when RPG::Weapon
      @weapons[[item.id,item.bonus]] = [[number + n, 0].max, 99].min
    when RPG::Armor
      @armors[[item.id,item.bonus]] = [[number + n, 0].max, 99].min
    end
    n += number
    if include_equip and n < 0
      for actor in members
        while n < 0 and actor.equips.include?(item)
          actor.discard_equip(item)
          n += 1
        end
      end
    end
  end
  
    def item_number(item)
      #第无数次更新key的形式。
    case item
    when RPG::Item
      number = @items[[item.id,item.bonus]]
    when RPG::Weapon
      number = @weapons[[item.id,item.bonus]]
    when RPG::Armor
      number = @armors[[item.id,item.bonus]]
    end
    return number == nil ? 0 : number
  end
end

#以下语句是为了突破999属性的限制。并不是必须的,原脚本也无法完美显示4位攻击值。
class Game_Battler
  #--------------------------------------------------------------------------
  # ● 获取 最大体力值 上限
  #--------------------------------------------------------------------------
  def maxhp_limit
    return 999999
  end
  #--------------------------------------------------------------------------
  # ● 获取 最大体力值
  #--------------------------------------------------------------------------
  def maxhp
    return [[base_maxhp + @maxhp_plus, 1].max, maxhp_limit].min
  end
  #--------------------------------------------------------------------------
  # ● 获取 最大魔力值
  #--------------------------------------------------------------------------
  def maxmp
    return [[base_maxmp + @maxmp_plus, 0].max, 9999].min
  end
  #--------------------------------------------------------------------------
  # ● 获取 攻击力
  #--------------------------------------------------------------------------
  def atk
    n = [[base_atk + @atk_plus, 1].max, 9999].min
    for state in states do n *= state.atk_rate / 100.0 end
    n = [[Integer(n), 1].max, 9999].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 获取 防御力
  #--------------------------------------------------------------------------
  def def
    n = [[base_def + @def_plus, 1].max, 9999].min
    for state in states do n *= state.def_rate / 100.0 end
    n = [[Integer(n), 1].max, 9999].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 获取 精神力
  #--------------------------------------------------------------------------
  def spi
    n = [[base_spi + @spi_plus, 1].max, 9999].min
    for state in states do n *= state.spi_rate / 100.0 end
    n = [[Integer(n), 1].max, 9999].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 获取 敏捷
  #--------------------------------------------------------------------------
  def agi
    n = [[base_agi + @agi_plus, 1].max, 9999].min
    for state in states do n *= state.agi_rate / 100.0 end
    n = [[Integer(n), 1].max, 9999].min
    return n
  end
end
#=end[/pre]������

点评

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

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部