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

Project1

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

[已经过期] STACK LEVEL TOO DEEP

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
22 小时
注册时间
2013-4-26
帖子
8
跳转到指定楼层
1
发表于 2013-4-29 18:43:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
    最近用WYONGCAN大神的一个脚本,出现了标题的问题,一直不知道是什么原因,麻烦大神为小弟解惑,谢谢!
几个现象:
           1. 单独用此脚本,毫无问题;
           2.配合第2个脚本(WYONGCAN的装备说明脚本)结果就出现这问题了。(以下是脚本)
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ 随机属性装备 By wyongcan
  4. #==============================================================================
  5. module Equipplus
  6. #得到随机属性装备方法:gainequip(装备ID,属性数)
  7. #~ 前缀结构:
  8. #~ ①权重(1-100) 越大越重要
  9. #~ ②名称(多个名称用","分开,会随机取其中一个添加到武器名前)
  10. #~ ③属性数组  提供两种方式:
  11. #~ 1.[属性ID,增加值]    属性ID参考说明增强脚本 增加了9号属性“极品出现率” ID为8,影响前缀的好坏 1 - 100
  12. #~ 2.与装备特性相同[code,data_id,value]  code,data_id参考说明增强脚本
  13.   @maxparamplus = 7 #最大前缀数
  14.   @moneyrate = 10 #物品价格计算公式为:原价格 + 前缀权重 * @moneyrate
  15.   @transpose = [*1..100].reverse #用于把1变成100,100变成1
  16.   @paramsplus = [           #暂时只写了三个前缀,可以自己添加,参照前缀结构
  17.   [10,"力量,凶残",[[2,10]]], #物理攻击加10
  18.   [20,"灵气",[[0,200],[1,200]]], # HP和MP各加200
  19. [20,"不屈",[[0,500]]],# HP加500
  20. [30,"灵巧",[[22,1,0.1]]],# 闪避+10%
  21. [45,"轻盈",[[22,1,0.15]]],# 闪避+15%
  22. [30,"稳重",[[43,0,0.1]]],# 命中+10%
  23. [25,"魔力",[[1,350]]],# MP+350
  24. [30,"专注",[[22,2,0.1]]],# 必杀几率+10%
  25. [30,"坚韧",[[22,7,1.1]]],# 体力恢复速度+10%
  26. [50,"悟性",[[23,9,1.1]]],# 经验获得+10%
  27.   [60,"战神",[[21,2,2]]] #物理攻击双倍
  28.   ]
  29.   $商店随机 = true #商店买装备时出随机属性
  30.   $战斗随机 = true #战斗后获得随机属性装备
  31.   def self.getname(paramsplus)
  32.     name = ""
  33.     paramsplus.is_a?(Array) ? paramsplus.each{|a| @temp = []; a[1].scan(/^[\u4e00-\u9fa5|\w]*|,[\u4e00-\u9fa5|\w]*/){|b| @temp.push b.gsub(","){}}; name += @temp[rand(@temp.size)]} : paramsplus[1].scan(/^[\u4e00-\u9fa5|\w]*|,[\u4e00-\u9fa5|\w]*/){|b| @temp = [] if @temp == nil ;@temp.push b.gsub(","){}}
  34.     name += @temp[rand(@temp.size)] if paramsplus.is_a?(Array) != true
  35.     name += "之"
  36.   end
  37.   def self.getluck #获得极品出现率
  38.     luck = 0
  39.     $game_party.all_members.each{|a| a.weapons.each{|a| luck += a.params[8] if a.params.size == 9};a.armors.each{|a| luck += a.params[8] if a.params.size == 9}}
  40.     luck
  41.   end
  42.   def self.getnewequip(xequip,params = nil) #提供两个参数  装备(RPG::Equip类下的)和附加前缀数,不填则为随机
  43.     return unless xequip.is_a?(RPG::EquipItem)
  44.     #xparamplus为前缀数
  45.     xequip.paramsplus = [] if xequip.paramsplus == nil
  46.     return if xequip.paramsplus.size >= @maxparamplus
  47.     params != nil ? xparamplus = params :  xparamplus = rand(@maxparamplus * 110) / 100
  48.     xparamplus = xparamplus.to_int
  49.     return xequip if xparamplus == 0
  50.     equip = xequip.dup
  51.     paramsplus = equip.paramsplus.dup  #无奈的方法,不这样改一个装备所有同父装备的装备都会变
  52.     newparams = equip.params.dup
  53.     newfeatures = equip.features.dup
  54.     aparamsplus = @paramsplus.collect{|a| [a[0] = @transpose[a[0]-1],a[1],a[2]]}.sort_by{|a| a[0]}
  55.     while paramsplus.size < xparamplus
  56.       temp = rand(aparamsplus[-1][0])
  57.       temp = [temp - getluck,0].max
  58.       x = []
  59.       for i in aparamsplus
  60.         x.push i if i[0] >= temp && paramsplus.include?(i) != true
  61.       end
  62.       if x != []
  63.         a = [(x.size-1)*100 - getluck,0].max
  64.         a = (rand(a)/100).to_int
  65.         paramsplus.push x[a]
  66.       end
  67.     end
  68.     equip.name = getname(paramsplus) + equip.name #更新名称
  69.     paramsplus.each{|a| equip.price += @transpose[a[0] - 1] * @moneyrate} #更新价格
  70.     paramsplus.select{|a| a[2].select{|a| a.size == 2}.each{|a| newparams[a[0]] += a[1]}} #更新属性
  71.     #以下为更新特性
  72.     features = []
  73.     paramsplus.each{|a| a[2].each{|a| features.push a if a.size == 3}}
  74.     while features.size > 0
  75.       i = features.pop
  76.       newfeatures.select{|a| a.code == i[0] && a.data_id == i[1]}.size == 0 ? newfeatures.push(RPG::BaseItem::Feature.new(i[0],i[1],i[2])) : newfeatures.each_with_index{|a,b| newfeatures[b].value += i[2] if a.code == i[0] && a.data_id == i[1]}
  77.     end
  78.     if equip.is_a?(RPG::Weapon)
  79.       equip.id = $data_weapons.size
  80.       $data_weapons.insert $data_weapons.size,equip
  81.       $data_weapons[equip.id].paramsplus = paramsplus
  82.       $data_weapons[equip.id].params = newparams
  83.       $data_weapons[equip.id].features = newfeatures
  84.     else
  85.       equip.id = $data_armors.size
  86.       $data_armors.insert $data_armors.size,equip
  87.       $data_armors[equip.id].paramsplus = paramsplus
  88.       $data_armors[equip.id].params = newparams
  89.       $data_armors[equip.id].features = newfeatures
  90.     end
  91.     equip
  92.   end
  93.   def self.gainequip(id,params = nil)
  94.     $game_party.gain_item(Equipplus.getnewequip($data_weapons[id],params),1,true)
  95.   end
  96. end
  97. if $商店随机 == true
  98.   class Scene_Shop < Scene_MenuBase
  99.     def do_buy(number)
  100.       $game_party.lose_gold(number * buying_price)
  101.       if @item.is_a?(RPG::EquipItem)
  102.         x = number
  103.         loop do
  104.           break if x <= 0
  105.           x -= 1
  106.           $game_party.gain_item(Equipplus.getnewequip(@item), 1)
  107.         end
  108.       else
  109.         $game_party.gain_item(@item, number)
  110.       end
  111.     end
  112.   end
  113. end
  114. if $战斗随机 == true
  115.   module BattleManager
  116.     def self.gain_drop_items
  117.       $game_troop.make_drop_items.each do |item|
  118.         item.is_a?(RPG::EquipItem) ? xitem = Equipplus.getnewequip(item) : xitem = item
  119.         $game_party.gain_item(xitem, 1)
  120.         $game_message.add(sprintf(Vocab::ObtainItem, xitem.name))
  121.       end
  122.       wait_for_message
  123.     end
  124.   end
  125. end
  126. class RPG::EquipItem < RPG::BaseItem
  127.   alias old initialize
  128.   def initialize
  129.     old
  130.     @paramsplus #前缀
  131.   end
  132.   attr_accessor :paramsplus
  133. end


RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ 装备说明增强
  4. #------------------------------------------------------------------------------
  5. #  修改了说明窗口,增强了装备的说明 作者:wyongcan  发布于66RPG   转载请注明
  6. #==============================================================================
  7. module Help
  8.   CODE ={
  9.     11 => "属性抗性",
  10.     12 => "弱化抗性",
  11.     13 => "状态抗性",
  12.     14 => "状态免疫",
  13.     21 => "普通能力",
  14.     22 => "添加能力",
  15.     23 => "特殊能力",
  16.     31 => "攻击附带属性",
  17.     32 => "攻击附带状态",
  18.     33 => "修正攻击速度",
  19.     34 => "添加攻击次数",
  20.     41 => "添加技能类型",
  21.     42 => "禁用技能类型",
  22.     43 => "添加技能",
  23.     44 => "禁用技能",
  24.     51 => "可装备武器类型",
  25.     52 => "可装备护甲类型",
  26.     53 => "固定装备",
  27.     54 => "禁用装备",
  28.     55 => "装备风格",
  29.     61 => "添加行动次数",
  30.     62 => "特殊标志",
  31.     63 => "消失效果",
  32.     64 => "队伍能力"}
  33.   #特殊标志
  34.   FLAG ={
  35.                 0 => "自动战斗",
  36.                 1 => "擅长防御",
  37.                 2 => "保护弱者",
  38.                 3 => "特技专注"}
  39.   #普通能力
  40.         PARAM ={
  41.                 0 => "最大HP",
  42.                 1 => "最大MP",
  43.                 2 => "物理攻击",
  44.                 3 => "物理防御",
  45.                 4 => "魔法攻击",
  46.                 5 => "魔法防御",
  47.                 6 => "敏 捷 值",
  48.                 7 => "幸 运 值"}
  49.   #添加能力
  50.         XPARAM ={
  51.                 0 => "物理命中几率:",
  52.                 1 => "物理闪避几率:",
  53.                 2 => "必杀几率:",
  54.                 3 => "必杀闪避几率:",
  55.                 4 => "魔法闪避几率:",
  56.                 5 => "魔法反射几率:",
  57.                 6 => "物理反击几率:",
  58.                 7 => "体力值再生速度:",
  59.                 8 => "魔力值再生速度:",
  60.                 9 => "特技值再生速度:"}
  61.   #特殊能力
  62.         SPARAM ={
  63.                 0 => "受到攻击的几率",
  64.                 1 => "防御效果比率",
  65.                 2 => "恢复效果比率",
  66.                 3 => "药理知识",
  67.                 4 => "MP消费率",
  68.                 5 => "TP消耗率",
  69.                 6 => "物理伤害加成",
  70.                 7 => "魔法伤害加成",
  71.                 8 => "地形伤害加成",
  72.                 9 => "经验获得加成"}
  73. #~   #效果范围
  74. #~         SCOPE ={
  75. #~                 0 => "特殊",
  76. #~                 1 => "单个敌人",
  77. #~                 2 => "全体敌人" ,
  78. #~                 3 => "一个随机敌人",
  79. #~                 4 => "两个随机敌人",
  80. #~                 5 => "三个随机敌人",
  81. #~                 6 => "四个随机敌人",
  82. #~                 7 => "单个队友",
  83. #~                 8 => "全体队友",
  84. #~                 9 => "单个队友(无法战斗)",
  85. #~                 10 => "全体队友(无法战斗)",
  86. #~                 11 => "使用者"}
  87.         @队伍能力 ={
  88.                 0 => "遇敌几率减半",
  89.                 1 => "随机遇敌无效",
  90.                 2 => "敌人偷袭无效",
  91.                 3 => "先制攻击几率上升",
  92.                 4 => "获得金钱数量双倍",
  93.                 5 => "物品掉落几率双倍"}
  94.   def self.ready
  95.     @状态 = {}
  96.     @武器类型 = {}
  97.     @防具类型 = {}
  98.     @属性 = {}
  99.     $data_states.each{|x| @状态[x.id] = x.name if x != nil}
  100.     elements = $data_system.elements
  101.     weapon_types = $data_system.weapon_types
  102.     armor_types = $data_system.armor_types
  103.     elements.each_with_index{|x,y| @属性[y] = x if x != ""}
  104.     weapon_types.each_with_index{|x,y| @武器类型[y] = x if x != ""}
  105.     armor_types.each_with_index{|x,y| @防具类型[y] = x if x != ""}
  106.   end
  107.   def self.getequiphelp(equip)
  108.     help = ""
  109.     param = []
  110.     equip.params.each_with_index{|x,y| param.push([PARAM[y],x])}
  111.     param = param.select{|x| x[1] != 0}
  112.     param.each{|x| help += x[0] + ":" + x[1].to_s + "\n"}
  113.     features = equip.features
  114.     features.select{|x| x.code == 55}.each{|x| help += CODE[x.code] + ":双持武器" + "\n"}
  115.     features.select{|x| x.code == 11}.each{|x| help += CODE[x.code] + ":" + @属性[x.data_id] + "*" + x.value.to_s + "\n"}
  116.     features.select{|x| x.code == 12}.each{|x| help += CODE[x.code] + ":" + PARAM[x.data_id] + "*" + x.value.to_s + "\n"}
  117.     features.select{|x| x.code == 13}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "*" + x.value.to_s + "\n"}
  118.     features.select{|x| x.code == 14}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "\n"}
  119.     features.select{|x| x.code == 31}.each{|x| help += CODE[x.code] + ":" + @属性[x.data_id] + "\n"}
  120.     features.select{|x| x.code == 32}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "+" + x.value.to_s + "\n"}
  121.     features.select{|x| x.code == 33}.each{|x| help += CODE[x.code] + ":" + x.value.to_s + "\n"}
  122.     features.select{|x| x.code == 34}.each{|x| help += CODE[x.code] + ":" + x.value.to_s + "\n"}
  123.     features.select{|x| x.code == 41}.each{|x| help += CODE[x.code] + ":" + (x.data_id == 1 ? "特技" : "魔法")  + "\n"}
  124.     features.select{|x| x.code == 42}.each{|x| help += CODE[x.code] + ":" + (x.data_id == 1 ? "特技" : "魔法")  + "\n"}
  125.     features.select{|x| x.code == 43}.each{|x| help += CODE[x.code] + ":" + $data_skills[x.data_id].name  + "\n"}
  126.     features.select{|x| x.code == 44}.each{|x| help += CODE[x.code] + ":" + $data_skills[x.data_id].name  + "\n"}
  127.     features.select{|x| x.code == 51}.each{|x| help += CODE[x.code] + ":" + @武器类型[x.data_id]  + "\n"}
  128.     features.select{|x| x.code == 52}.each{|x| help += CODE[x.code] + ":" + @防具类型[x.data_id]  + "\n"}
  129.     features.select{|x| x.code == 61}.each{|x| help += CODE[x.code] + ":" + x.value.to_s  + "\n"}
  130.     features.select{|x| x.code == 62}.each{|x| help += CODE[x.code] + ":" + FLAG[x.data_id]  + "\n"}
  131.     features.select{|x| x.code == 64}.each{|x| help += CODE[x.code] + ":" + @队伍能力[x.data_id]  + "\n"}
  132.     featuresparam = []
  133.     featuresparam.push features.select{|x| x.code == 21}
  134.     featuresparam.push features.select{|x| x.code == 22}
  135.     featuresparam.push features.select{|x| x.code == 23}
  136.     featuresparam[0].each{|x| help += PARAM[x.data_id] + "*" + x.value.to_s + "\n"}
  137.     featuresparam[1].each{|x| help += XPARAM[x.data_id] + x.value.to_s + "\n"}
  138.     featuresparam[2].each{|x| help += SPARAM[x.data_id] + "*" + x.value.to_s + "\n"}
  139.     help
  140.   end
  141.   def self.getline(text,maxtext)
  142.     xtext = []
  143.     line = 0
  144.     text.each_line{|x| xtext.push x.sub(/\n/){}}
  145.     xtext.each{|x| x.size % maxtext != 0 ? line += x.size / maxtext + 1 : line += x.size / maxtext}
  146.     line
  147.   end
  148. end
  149. #==============================================================================
  150. # ■ Window_Help
  151. #------------------------------------------------------------------------------
  152. #  显示特技和物品等的说明、以及角色状态的窗口
  153. #==============================================================================
  154.  
  155. class Window_Help < Window_Base
  156.   #--------------------------------------------------------------------------
  157.   # ● 初始化对象
  158.   #--------------------------------------------------------------------------
  159.   def initialize(line_number = 0)
  160.     super(0, 0, 210, fitting_height(line_number))
  161.     self.z = 150
  162.     contents.font.size = 14
  163.     hide
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ● 设置内容
  167.   #--------------------------------------------------------------------------
  168.   def set_text(text)
  169.     if text != @text
  170.       @text = text
  171.       refresh
  172.     end
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● 清除
  176.   #--------------------------------------------------------------------------
  177.   def clear
  178.     set_text("")
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   # ● 更新帮助位置
  182.   #--------------------------------------------------------------------------
  183.   def uppos(index,rect,window)
  184.     self.height = fitting_height2(Help.getline(@xtext,13))
  185.     create_contents
  186.     contents.font.size = 14
  187.     rect.x -= window.ox
  188.     rect.y -= window.oy
  189.     ax = rect.x + rect.width + 10
  190.     ax = rect.x - self.width + 10 if ax + self.width > window.width + 10
  191.     ax += window.x
  192.     ax = 0 if ax < 0
  193.     ay = rect.y + rect.height
  194.     ay = rect.y - self.height if ay + self.height > window.height
  195.     ay += window.y
  196.     ay = 0 if ay < 0
  197.     self.x = ax
  198.     self.y = ay
  199.     set_text(@xtext)
  200.     show
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● 设置物品
  204.   #     item : 技能、物品等
  205.   #--------------------------------------------------------------------------
  206.   def set_item(item)
  207.     if item == nil
  208.       set_text("")
  209.       return
  210.     end
  211.     @xtext = ""
  212.     @xtext = "名称:" + item.name + "\n"
  213.     @xtext += "介绍:" + item.description + "\n"
  214.     @xtext += "价格:" + item.price.to_s + "\n" if item.is_a?(RPG::EquipItem) || item.is_a?(RPG::Item)
  215.     @xtext += Help.getequiphelp(item) if item.is_a?(RPG::EquipItem)
  216.     @xtext = @xtext[0,@text.size - 2] if @xtext[@xtext.size - 2,2] == "\n"
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 刷新
  220.   #--------------------------------------------------------------------------
  221.   def refresh
  222.     contents.clear
  223.     hide if @text == ""
  224.     draw_text_ex(4, 0, @text,width,40,false)
  225.   end
  226. end
  227.  
  228. class Window_Base < Window
  229.   #--------------------------------------------------------------------------
  230.   # ● 计算窗口显示指定行数时的应用高度2*************************
  231.   #--------------------------------------------------------------------------
  232.   def fitting_height2(line_number)
  233.     line_number * contents.font.size + standard_padding * 2
  234.   end
  235. #~ draw_text_ex的增强,使其可以自动换行  原作者:叶子 修改:wyongcan
  236.   #--------------------------------------------------------------------------
  237.   # ● 绘制带有控制符的文本内容
  238.   #   如果传递了width参数的话,会自动换行
  239.   #--------------------------------------------------------------------------
  240.   def draw_text_ex(x, y, text, width = nil,textwidth = nil,normalfont = true)
  241.     reset_font_settings if normalfont == true
  242.     text = convert_escape_characters(text)
  243.     pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
  244.     if width != nil
  245.       pos[:height] = contents.font.size
  246.       pos[:width] = width
  247.       pos[:textwidth] = textwidth
  248.     end
  249.     process_character(text.slice!(0, 1), text, pos) until text.empty?
  250.   end
  251.   #--------------------------------------------------------------------------
  252.   # ● 文字的处理
  253.   #     c    : 文字
  254.   #     text : 绘制处理中的字符串缓存(字符串可能会被修改)
  255.   #     pos  : 绘制位置 {:x, :y, :new_x, :height}
  256.   #--------------------------------------------------------------------------
  257.   def process_character(c, text, pos)
  258.     case c
  259.     when "\r"   # 回车
  260.       return
  261.     when "\n"   # 换行
  262.       process_new_line(text, pos)
  263.     when "\f"   # 翻页
  264.       process_new_page(text, pos)
  265.     when "\e"   # 控制符
  266.       process_escape_character(obtain_escape_code(text), text, pos)
  267.     else        # 普通文字
  268.       pos[:textwidth] == nil ? text_width = text_size(c).width : text_width = pos[:textwidth]
  269.       if pos[:width] != nil && pos[:x] - pos[:new_x] + text_width > pos[:width]
  270.         process_new_line(text, pos)
  271.       end
  272.       process_normal_character(c, pos)
  273.     end
  274.   end
  275. end
  276.  
  277. class Window_ItemList < Window_Selectable
  278.   #--------------------------------------------------------------------------
  279.   # ● 更新帮助内容
  280.   #--------------------------------------------------------------------------
  281.   def update_help
  282.     @help_window.set_item(item)
  283.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil
  284.   end
  285. end
  286.  
  287. class Window_SkillList < Window_Selectable
  288.   #--------------------------------------------------------------------------
  289.   # ● 更新帮助内容
  290.   #--------------------------------------------------------------------------
  291.   def update_help
  292.     @help_window.set_item(item)
  293.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil
  294.   end
  295. end
  296.  
  297. class Window_ShopBuy < Window_Selectable
  298.   #--------------------------------------------------------------------------
  299.   # ● 更新帮助内容
  300.   #--------------------------------------------------------------------------
  301.   def update_help
  302.     @help_window.set_item(item) if @help_window
  303.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window
  304.     @status_window.item = item if @status_window
  305.   end
  306. end
  307.  
  308. class Window_EquipSlot < Window_Selectable
  309.   #--------------------------------------------------------------------------
  310.   # ● 更新帮助内容
  311.   #--------------------------------------------------------------------------
  312.   def update_help
  313.     super
  314.     @help_window.set_item(item) if @help_window
  315.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window
  316.     @status_window.set_temp_actor(nil) if @status_window
  317.   end
  318. end
  319.  
  320. class Scene_Shop < Scene_MenuBase
  321.         alias on_sell_ok_old on_sell_ok
  322.         def on_sell_ok
  323.                 on_sell_ok_old
  324.                 @help_window.hide
  325.         end
  326.         alias on_buy_ok_old on_buy_ok
  327.         def on_buy_ok
  328.                 on_buy_ok_old
  329.                 @help_window.hide
  330.         end
  331.         alias on_number_ok_old on_number_ok
  332.         def on_number_ok
  333.                 on_number_ok_old
  334.     @help_window.refresh
  335.                 @help_window.show
  336.         end
  337.         alias on_number_cancel_old on_number_cancel
  338.         def on_number_cancel
  339.                 on_number_cancel_old
  340.     @help_window.refresh
  341.                 @help_window.show
  342.         end
  343. end
  344.  
  345. class Scene_Title < Scene_Base
  346.   alias start_old start
  347.   def start
  348.     start_old
  349.     Help.ready
  350.   end
  351. end
  352.  
  353. #encoding:utf-8
  354. #==============================================================================
  355. # ■ 装备说明增强
  356. #------------------------------------------------------------------------------
  357. #  修改了说明窗口,增强了装备的说明 作者:wyongcan  发布于66RPG   转载请注明
  358. #==============================================================================
  359. module Help
  360.   CODE ={
  361.     11 => "属性抗性",
  362.     12 => "弱化抗性",
  363.     13 => "状态抗性",
  364.     14 => "状态免疫",
  365.     21 => "普通能力",
  366.     22 => "添加能力",
  367.     23 => "特殊能力",
  368.     31 => "攻击附带属性",
  369.     32 => "攻击附带状态",
  370.     33 => "修正攻击速度",
  371.     34 => "添加攻击次数",
  372.     41 => "添加技能类型",
  373.     42 => "禁用技能类型",
  374.     43 => "添加技能",
  375.     44 => "禁用技能",
  376.     51 => "可装备武器类型",
  377.     52 => "可装备护甲类型",
  378.     53 => "固定装备",
  379.     54 => "禁用装备",
  380.     55 => "装备风格",
  381.     61 => "添加行动次数",
  382.     62 => "特殊标志",
  383.     63 => "消失效果",
  384.     64 => "队伍能力"}
  385.   #特殊标志
  386.   FLAG ={
  387.                 0 => "自动战斗",
  388.                 1 => "擅长防御",
  389.                 2 => "保护弱者",
  390.                 3 => "特技专注"}
  391.   #普通能力
  392.         PARAM ={
  393.                 0 => "最大HP",
  394.                 1 => "最大MP",
  395.                 2 => "物理攻击",
  396.                 3 => "物理防御",
  397.                 4 => "魔法攻击",
  398.                 5 => "魔法防御",
  399.                 6 => "敏 捷 值",
  400.                 7 => "幸 运 值"}
  401.   #添加能力
  402.         XPARAM ={
  403.                 0 => "物理命中几率:",
  404.                 1 => "物理闪避几率:",
  405.                 2 => "必杀几率:",
  406.                 3 => "必杀闪避几率:",
  407.                 4 => "魔法闪避几率:",
  408.                 5 => "魔法反射几率:",
  409.                 6 => "物理反击几率:",
  410.                 7 => "体力值再生速度:",
  411.                 8 => "魔力值再生速度:",
  412.                 9 => "特技值再生速度:"}
  413.   #特殊能力
  414.         SPARAM ={
  415.                 0 => "受到攻击的几率",
  416.                 1 => "防御效果比率",
  417.                 2 => "恢复效果比率",
  418.                 3 => "药理知识",
  419.                 4 => "MP消费率",
  420.                 5 => "TP消耗率",
  421.                 6 => "物理伤害加成",
  422.                 7 => "魔法伤害加成",
  423.                 8 => "地形伤害加成",
  424.                 9 => "经验获得加成"}
  425. #~   #效果范围
  426. #~         SCOPE ={
  427. #~                 0 => "特殊",
  428. #~                 1 => "单个敌人",
  429. #~                 2 => "全体敌人" ,
  430. #~                 3 => "一个随机敌人",
  431. #~                 4 => "两个随机敌人",
  432. #~                 5 => "三个随机敌人",
  433. #~                 6 => "四个随机敌人",
  434. #~                 7 => "单个队友",
  435. #~                 8 => "全体队友",
  436. #~                 9 => "单个队友(无法战斗)",
  437. #~                 10 => "全体队友(无法战斗)",
  438. #~                 11 => "使用者"}
  439.         @队伍能力 ={
  440.                 0 => "遇敌几率减半",
  441.                 1 => "随机遇敌无效",
  442.                 2 => "敌人偷袭无效",
  443.                 3 => "先制攻击几率上升",
  444.                 4 => "获得金钱数量双倍",
  445.                 5 => "物品掉落几率双倍"}
  446.   def self.ready
  447.     @状态 = {}
  448.     @武器类型 = {}
  449.     @防具类型 = {}
  450.     @属性 = {}
  451.     $data_states.each{|x| @状态[x.id] = x.name if x != nil}
  452.     elements = $data_system.elements
  453.     weapon_types = $data_system.weapon_types
  454.     armor_types = $data_system.armor_types
  455.     elements.each_with_index{|x,y| @属性[y] = x if x != ""}
  456.     weapon_types.each_with_index{|x,y| @武器类型[y] = x if x != ""}
  457.     armor_types.each_with_index{|x,y| @防具类型[y] = x if x != ""}
  458.   end
  459.   def self.getequiphelp(equip)
  460.     help = ""
  461.     param = []
  462.     equip.params.each_with_index{|x,y| param.push([PARAM[y],x])}
  463.     param = param.select{|x| x[1] != 0}
  464.     param.each{|x| help += x[0] + ":" + x[1].to_s + "\n"}
  465.     features = equip.features
  466.     features.select{|x| x.code == 55}.each{|x| help += CODE[x.code] + ":双持武器" + "\n"}
  467.     features.select{|x| x.code == 11}.each{|x| help += CODE[x.code] + ":" + @属性[x.data_id] + "*" + x.value.to_s + "\n"}
  468.     features.select{|x| x.code == 12}.each{|x| help += CODE[x.code] + ":" + PARAM[x.data_id] + "*" + x.value.to_s + "\n"}
  469.     features.select{|x| x.code == 13}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "*" + x.value.to_s + "\n"}
  470.     features.select{|x| x.code == 14}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "\n"}
  471.     features.select{|x| x.code == 31}.each{|x| help += CODE[x.code] + ":" + @属性[x.data_id] + "\n"}
  472.     features.select{|x| x.code == 32}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "+" + x.value.to_s + "\n"}
  473.     features.select{|x| x.code == 33}.each{|x| help += CODE[x.code] + ":" + x.value.to_s + "\n"}
  474.     features.select{|x| x.code == 34}.each{|x| help += CODE[x.code] + ":" + x.value.to_s + "\n"}
  475.     features.select{|x| x.code == 41}.each{|x| help += CODE[x.code] + ":" + (x.data_id == 1 ? "特技" : "魔法")  + "\n"}
  476.     features.select{|x| x.code == 42}.each{|x| help += CODE[x.code] + ":" + (x.data_id == 1 ? "特技" : "魔法")  + "\n"}
  477.     features.select{|x| x.code == 43}.each{|x| help += CODE[x.code] + ":" + $data_skills[x.data_id].name  + "\n"}
  478.     features.select{|x| x.code == 44}.each{|x| help += CODE[x.code] + ":" + $data_skills[x.data_id].name  + "\n"}
  479.     features.select{|x| x.code == 51}.each{|x| help += CODE[x.code] + ":" + @武器类型[x.data_id]  + "\n"}
  480.     features.select{|x| x.code == 52}.each{|x| help += CODE[x.code] + ":" + @防具类型[x.data_id]  + "\n"}
  481.     features.select{|x| x.code == 61}.each{|x| help += CODE[x.code] + ":" + x.value.to_s  + "\n"}
  482.     features.select{|x| x.code == 62}.each{|x| help += CODE[x.code] + ":" + FLAG[x.data_id]  + "\n"}
  483.     features.select{|x| x.code == 64}.each{|x| help += CODE[x.code] + ":" + @队伍能力[x.data_id]  + "\n"}
  484.     featuresparam = []
  485.     featuresparam.push features.select{|x| x.code == 21}
  486.     featuresparam.push features.select{|x| x.code == 22}
  487.     featuresparam.push features.select{|x| x.code == 23}
  488.     featuresparam[0].each{|x| help += PARAM[x.data_id] + "*" + x.value.to_s + "\n"}
  489.     featuresparam[1].each{|x| help += XPARAM[x.data_id] + x.value.to_s + "\n"}
  490.     featuresparam[2].each{|x| help += SPARAM[x.data_id] + "*" + x.value.to_s + "\n"}
  491.     help
  492.   end
  493.   def self.getline(text,maxtext)
  494.     xtext = []
  495.     line = 0
  496.     text.each_line{|x| xtext.push x.sub(/\n/){}}
  497.     xtext.each{|x| x.size % maxtext != 0 ? line += x.size / maxtext + 1 : line += x.size / maxtext}
  498.     line
  499.   end
  500. end
  501. #==============================================================================
  502. # ■ Window_Help
  503. #------------------------------------------------------------------------------
  504. #  显示特技和物品等的说明、以及角色状态的窗口
  505. #==============================================================================
  506.  
  507. class Window_Help < Window_Base
  508.   #--------------------------------------------------------------------------
  509.   # ● 初始化对象
  510.   #--------------------------------------------------------------------------
  511.   def initialize(line_number = 0)
  512.     super(0, 0, 210, fitting_height(line_number))
  513.     self.z = 150
  514.     contents.font.size = 14
  515.     hide
  516.   end
  517.   #--------------------------------------------------------------------------
  518.   # ● 设置内容
  519.   #--------------------------------------------------------------------------
  520.   def set_text(text)
  521.     if text != @text
  522.       @text = text
  523.       refresh
  524.     end
  525.   end
  526.   #--------------------------------------------------------------------------
  527.   # ● 清除
  528.   #--------------------------------------------------------------------------
  529.   def clear
  530.     set_text("")
  531.   end
  532.   #--------------------------------------------------------------------------
  533.   # ● 更新帮助位置
  534.   #--------------------------------------------------------------------------
  535.   def uppos(index,rect,window)
  536.     self.height = fitting_height2(Help.getline(@xtext,13))
  537.     create_contents
  538.     contents.font.size = 14
  539.     rect.x -= window.ox
  540.     rect.y -= window.oy
  541.     ax = rect.x + rect.width + 10
  542.     ax = rect.x - self.width + 10 if ax + self.width > window.width + 10
  543.     ax += window.x
  544.     ax = 0 if ax < 0
  545.     ay = rect.y + rect.height
  546.     ay = rect.y - self.height if ay + self.height > window.height
  547.     ay += window.y
  548.     ay = 0 if ay < 0
  549.     self.x = ax
  550.     self.y = ay
  551.     set_text(@xtext)
  552.     show
  553.   end
  554.   #--------------------------------------------------------------------------
  555.   # ● 设置物品
  556.   #     item : 技能、物品等
  557.   #--------------------------------------------------------------------------
  558.   def set_item(item)
  559.     if item == nil
  560.       set_text("")
  561.       return
  562.     end
  563.     @xtext = ""
  564.     @xtext = "名称:" + item.name + "\n"
  565.     @xtext += "介绍:" + item.description + "\n"
  566.     @xtext += "价格:" + item.price.to_s + "\n" if item.is_a?(RPG::EquipItem) || item.is_a?(RPG::Item)
  567.     @xtext += Help.getequiphelp(item) if item.is_a?(RPG::EquipItem)
  568.     @xtext = @xtext[0,@text.size - 2] if @xtext[@xtext.size - 2,2] == "\n"
  569.   end
  570.   #--------------------------------------------------------------------------
  571.   # ● 刷新
  572.   #--------------------------------------------------------------------------
  573.   def refresh
  574.     contents.clear
  575.     hide if @text == ""
  576.     draw_text_ex(4, 0, @text,width,40,false)
  577.   end
  578. end
  579.  
  580. class Window_Base < Window
  581.   #--------------------------------------------------------------------------
  582.   # ● 计算窗口显示指定行数时的应用高度2*************************
  583.   #--------------------------------------------------------------------------
  584.   def fitting_height2(line_number)
  585.     line_number * contents.font.size + standard_padding * 2
  586.   end
  587. #~ draw_text_ex的增强,使其可以自动换行  原作者:叶子 修改:wyongcan
  588.   #--------------------------------------------------------------------------
  589.   # ● 绘制带有控制符的文本内容
  590.   #   如果传递了width参数的话,会自动换行
  591.   #--------------------------------------------------------------------------
  592.   def draw_text_ex(x, y, text, width = nil,textwidth = nil,normalfont = true)
  593.     reset_font_settings if normalfont == true
  594.     text = convert_escape_characters(text)
  595.     pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
  596.     if width != nil
  597.       pos[:height] = contents.font.size
  598.       pos[:width] = width
  599.       pos[:textwidth] = textwidth
  600.     end
  601.     process_character(text.slice!(0, 1), text, pos) until text.empty?
  602.   end
  603.   #--------------------------------------------------------------------------
  604.   # ● 文字的处理
  605.   #     c    : 文字
  606.   #     text : 绘制处理中的字符串缓存(字符串可能会被修改)
  607.   #     pos  : 绘制位置 {:x, :y, :new_x, :height}
  608.   #--------------------------------------------------------------------------
  609.   def process_character(c, text, pos)
  610.     case c
  611.     when "\r"   # 回车
  612.       return
  613.     when "\n"   # 换行
  614.       process_new_line(text, pos)
  615.     when "\f"   # 翻页
  616.       process_new_page(text, pos)
  617.     when "\e"   # 控制符
  618.       process_escape_character(obtain_escape_code(text), text, pos)
  619.     else        # 普通文字
  620.       pos[:textwidth] == nil ? text_width = text_size(c).width : text_width = pos[:textwidth]
  621.       if pos[:width] != nil && pos[:x] - pos[:new_x] + text_width > pos[:width]
  622.         process_new_line(text, pos)
  623.       end
  624.       process_normal_character(c, pos)
  625.     end
  626.   end
  627. end
  628.  
  629. class Window_ItemList < Window_Selectable
  630.   #--------------------------------------------------------------------------
  631.   # ● 更新帮助内容
  632.   #--------------------------------------------------------------------------
  633.   def update_help
  634.     @help_window.set_item(item)
  635.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil
  636.   end
  637. end
  638.  
  639. class Window_SkillList < Window_Selectable
  640.   #--------------------------------------------------------------------------
  641.   # ● 更新帮助内容
  642.   #--------------------------------------------------------------------------
  643.   def update_help
  644.     @help_window.set_item(item)
  645.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil
  646.   end
  647. end
  648.  
  649. class Window_ShopBuy < Window_Selectable
  650.   #--------------------------------------------------------------------------
  651.   # ● 更新帮助内容
  652.   #--------------------------------------------------------------------------
  653.   def update_help
  654.     @help_window.set_item(item) if @help_window
  655.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window
  656.     @status_window.item = item if @status_window
  657.   end
  658. end
  659.  
  660. class Window_EquipSlot < Window_Selectable
  661.   #--------------------------------------------------------------------------
  662.   # ● 更新帮助内容
  663.   #--------------------------------------------------------------------------
  664.   def update_help
  665.     super
  666.     @help_window.set_item(item) if @help_window
  667.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window
  668.     @status_window.set_temp_actor(nil) if @status_window
  669.   end
  670. end
  671.  
  672. class Scene_Shop < Scene_MenuBase
  673.         alias on_sell_ok_old on_sell_ok
  674.         def on_sell_ok
  675.                 on_sell_ok_old
  676.                 @help_window.hide
  677.         end
  678.         alias on_buy_ok_old on_buy_ok
  679.         def on_buy_ok
  680.                 on_buy_ok_old
  681.                 @help_window.hide
  682.         end
  683.         alias on_number_ok_old on_number_ok
  684.         def on_number_ok
  685.                 on_number_ok_old
  686.     @help_window.refresh
  687.                 @help_window.show
  688.         end
  689.         alias on_number_cancel_old on_number_cancel
  690.         def on_number_cancel
  691.                 on_number_cancel_old
  692.     @help_window.refresh
  693.                 @help_window.show
  694.         end
  695. end
  696.  
  697. class Window_Base < Window
  698.         alias old_process_new_line process_new_line
  699.         def process_new_line(text, pos)
  700.     old_process_new_line(text, pos)
  701.                 pos[:height] = contents.font.size if pos[:width] != nil
  702.         end
  703. end
  704. class Scene_ItemBase < Scene_MenuBase
  705.         alias old_on_actor_cancel on_actor_cancel
  706.   def on_actor_cancel
  707.     old_on_actor_cancel
  708.         @help_window.refresh
  709.   end
  710.         alias old_on_actor_ok on_actor_ok   
  711.   def on_actor_ok
  712.     old_on_actor_ok
  713.         @help_window.refresh
  714.   end
  715. end

Lv1.梦旅人

梦石
0
星屑
85
在线时间
424 小时
注册时间
2009-8-3
帖子
984
2
发表于 2013-5-3 08:42:03 | 只看该作者
我记得这两个脚本就是要一起用的吧。。把下面这个放上面,然后属性拓展方式在上面写有了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
41 小时
注册时间
2013-3-19
帖子
44
3
发表于 2013-5-4 16:27:49 | 只看该作者
這兩個腳本會起衝突,必須捨棄一個。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3846
在线时间
1966 小时
注册时间
2013-1-3
帖子
9536
4
发表于 2013-5-4 18:34:40 | 只看该作者
栈堆过深…
找冲突的地方:打注释或简单修改
也可能是顺序的问题,换一下位置~
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
22 小时
注册时间
2013-4-26
帖子
8
5
 楼主| 发表于 2013-5-9 19:47:52 | 只看该作者
wsmyzc 发表于 2013-5-3 08:42
我记得这两个脚本就是要一起用的吧。。把下面这个放上面,然后属性拓展方式在上面写有了。 ...

貌似不是。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 16:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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