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

Project1

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

[已经解决] 关于Hime大神的Equip Param Formulas,装备自定义公式。

[复制链接]

Lv2.观梦者

梦石
0
星屑
328
在线时间
49 小时
注册时间
2021-3-27
帖子
18
跳转到指定楼层
发表于 2021-3-27 12:05:28 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
最近刚刚开始学脚本,用了Hime大神的Equip Param Formulas,想要做一个防具,增加防御力=人物等级*2

脚本(By: Hime)
=begin
#===============================================================================
Title: Equip Param Formulas
Author: Hime
Date: Mar 15, 2014
URL: http://www.himeworks.com/2014/03/15/equip-param-formulas/
--------------------------------------------------------------------------------
** Change log
Mar 15, 2014
   - Initial release
--------------------------------------------------------------------------------   
** Terms of Use
* Free to use in non-commercial projects
* Contact me for commercial use
* No real support. The script is provided as-is
* Will do bug fixes, but no compatibility patches
* Features may be requested but no guarantees, especially if it is non-trivial
* Credits to Hime Works in your project
* Preserve this header
--------------------------------------------------------------------------------
** Description

This script allows you to use formulas to define parameters for weapons and
armors.

For example, if you were using a script that provided equip levels, you can
define a formula that uses the level to determine the weapon's parameters.

All attributes that the equip holds can be referenced.
Formula variables are also available to use.

--------------------------------------------------------------------------------
** Installation

Place this script below Materials and above Main

--------------------------------------------------------------------------------
** Usage

To specify a parameter formula, note-tag a weapon or armor with

   <param formula: TYPE>
     FORMULA
   </param formula>
   
Where the TYPE is one of

   mhp - Max HP
   mmp - Max MP
   atk - Attack Power
   def - Defense Power
   mat - Magic Attack Power
   mdf - Magic Defense Power
   agi - Agility
   luk - Luck

The formula can be any valid formula that returns a number
The following formula variables are available

   p - game party
   t - game troop
   s - game switches
   v - game variables

#===============================================================================
=end
$imported = {} if $imported.nil?
$imported[:TH_EquipParamFormulas] = true
#===============================================================================
# ** Configuration
#===============================================================================
module TH
  module Equip_Param_Formulas
    Ext_Regex = /<param[-_ ]formula:\s*(\w+)\s*>(.*?)<\/param[-_ ]formula>/im

    Param_Table = {
      :mhp => 0,
      :mmp => 1,
      :atk => 2,
      :def => 3,
      :mat => 4,
      :mdf => 5,
      :agi => 6,
      :luk => 7
    }
  end
end
#===============================================================================
# ** Rest of Script
#===============================================================================
module RPG
  class EquipItem

    #---------------------------------------------------------------------------
    # Not the most efficient way to do it but it preserves the interface
    #---------------------------------------------------------------------------
    def params
      load_notetag_param_formulas unless @param_formulas_checked
      return @param_formulas.collect {|f| eval_param_formula(f)}
    end

    def eval_param_formula(formula, p=$game_party, s=$game_switches, t=$game_troop, v=$game_variables)
      eval(formula)
    end

    def load_notetag_param_formulas
      @param_formulas_checked = true
      @param_formulas = @params.map {|val| val.to_s }
      results = self.note.scan(TH::Equip_Param_Formulas::Ext_Regex)
      results.each do |res|
        type = res[0].strip.downcase.to_sym
        id = TH::Equip_Param_Formulas::Param_Table[type]
        formula = res[1]
        @param_formulas[id] = formula
      end
    end
  end
end



但在公式中写上
<param formula: TYPE>
     self.level * 2
   </param formula>
后,一接触到这件装备,就
undefined method 'level'  for # <RPG::Armor:0x10627964>


试着在后面加入:
def a
SceneManager.scene.is_a?(Scene_Battle) ? BattleManager.actor : $game_party.menu_actor
end

后,将公式改为 a.level * 2,这样在菜单里没有问题,也正是想要的东西,但一进入战斗就又
undefined method 'level' for nil:Nilclass 了。

害怕是因为和以前的脚本冲突,所以试着新开了一个Project,但还是老问题。

新人实在是没办法了,希望有大神能指点一下。如果不行的话,有没有类似效果的脚本?

Lv2.观梦者

梦石
0
星屑
328
在线时间
49 小时
注册时间
2021-3-27
帖子
18
2
 楼主| 发表于 2021-3-27 15:01:16 | 只看该作者
alexncf125 发表于 2021-3-27 13:19
[fold=应该用Hime的Parameter Bonuses]=begin
#======================================================== ...

谢谢您,不过如果用obj.level还是会无法定义level,用a.level就没问题了!
再一次,感谢您的热心解答。

点评

谢谢提醒~已更正~我没测试的错...  发表于 2021-3-27 15:38
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26264
在线时间
5355 小时
注册时间
2016-3-8
帖子
1655
1
发表于 2021-3-27 13:19:46 | 只看该作者
本帖最后由 alexncf125 于 2021-3-27 15:30 编辑
应该用Hime的Parameter Bonuses

在该防具的备注中写上
<param bonus: def>
    a.level * 2
</param bonus>
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 01:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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