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

Project1

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

[已经解决] [已解决]难度脚本问题

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7570
在线时间
1157 小时
注册时间
2016-9-10
帖子
165

开拓者

跳转到指定楼层
1
发表于 2017-4-5 20:19:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 devil033 于 2017-4-5 21:31 编辑

这是一个难度脚本
脚本中前面还有定义不同难度下敌人的 maxhp, atk, def 等属性分别是基本难度的多少倍
  }
  DIFFICULTY << {               # Difficulty Level: 2
        :name  => "困难",
        :maxhp => 150,   #150
        :maxmp => 130,
        :atk   => 120,
        :mat   => 120,
        :mdf   => 120,
        :agi   => 105,
        :luk   => 110,
        :exp   => 150,
        :drop  => 150,
  }



可是后面却定义了所有param_base 都是由 前面设置的 maxhp 的倍数来决定的
也就是不同难度下 maxhp 是基本难度的多少倍,atk, def 等其它属性 也跟着是多少倍
  alias :th_kgc_difficulty_param_base :param_base
  def param_base(i)
    th_kgc_difficulty_param_base(i) * KGC::BattleDifficulty.get[:maxhp] / 100
  end


如果我要改成每种属性在不同难度下的倍数是前面那个难度定义中设置的那个倍数  要怎么改?谢谢

以下是脚本:


RUBY 代码复制
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/     ◆                Battle Difficulty - KGC_BattleDifficulty Ace
  3. #_/     ◇                                Last Update: 2008/05/09                              ◇
  4. #_/     ◇                                Converted: 2012/09/06
  5. #_/     ◆                          Translation by Mr. Anonymous                            ◆
  6. #_/     ◇                          Converted by Tsukihime
  7. #_/----------------------------------------------------------------------------
  8. #_/  This script adds battle difficulty settings to your game.
  9. #_/============================================================================
  10. #_/  Installation: Insert below KGC_ExtraDropItem and KGC_CustomMenuCommand.
  11. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  12.  
  13. #==============================================================================#
  14. #                                                       ★ Customization ★                                                                #
  15. #==============================================================================#
  16.  
  17. module KGC
  18. module BattleDifficulty
  19.   #                                        ◆ Difficulty Variable ◆
  20.   #  Change the variable the difficulty setting is stored in.
  21.   DIFFICULTY_VARIABLE = 944
  22.  
  23.   #                              ◆ Add Difficulty Command to Main Menu ◆
  24.   #  This toggle enables/disables the difficulty command selection to be added
  25.   #   to the main command menu.
  26.   USE_MENU_DIFFICULTY_COMMAND = true
  27.  
  28.   #                                       ◆ Difficulty Initialization ◆
  29.   #  DIFFICULTY Index
  30.   #  By default, 1 = Normal
  31.   INITIAL_DIFFICULTY = 1
  32.  
  33.   #                                                ◆ Difficulty ◆
  34.   #  Difficulty Format:
  35.   #   DIFFICULTY << {
  36.   #      :name  => "Difficulty Name",
  37.   #      :maxhp => MaxHP,
  38.   #      :maxmp => MaxMP,
  39.   #      :atk   => Attack,
  40.   #      :def   => Defense,
  41.   #      :mat   => Magic Attack,
  42.   #      :mdf   => Magic Defense,
  43.   #      :agi   => Agility,
  44.   #      :luk   => Luck
  45.   #      :param => Attack ・ Defense ・ Mat, Mdf ・ Agility, Luck (Batch Specification),
  46.   #      :exp   => Experience,
  47.   #      :gold  => Gold,
  48.   #      :drop  => Item Drop Rate,
  49.   #   }
  50.   #  Create by the format
  51.   #  (:atk, :def, :spi, :agi (The :param field takes highest priority)
  52.   #  The unit is a percentile of a each item.
  53.   #  :name is not optional
  54.   #  An omitted item is treated as a default of 100
  55.   DIFFICULTY = [] # Do not remove or modify this line!
  56.   # 〜 Custom Difficulty Settings Inserted Below Here 〜
  57.   DIFFICULTY << {               # Difficulty Level: 0
  58.         :name  => "简单",
  59.         :maxhp => 80,
  60.         :maxmp => 80,
  61.         :param => 80,
  62.         :cri   => 50,
  63.         :drop  => 80,
  64.   }  # ← Do not remove!
  65.   DIFFICULTY << {               # Difficulty Level: 1
  66.         :name  => "普通",
  67.   }
  68.   DIFFICULTY << {               # Difficulty Level: 2
  69.         :name  => "困难",
  70.         :maxhp => 150,   #150
  71.         :maxmp => 130,
  72.         :atk   => 120,
  73.         :mat   => 120,
  74.         :mdf   => 120,
  75.         :agi   => 105,
  76.         :luk   => 110,
  77.         :exp   => 150,
  78.         :drop  => 150,
  79.   }
  80.  
  81. end
  82. end
  83.  
  84. #------------------------------------------------------------------------------#
  85.  
  86. $imported = {} if $imported == nil
  87. $imported["BattleDifficulty"] = true
  88.  
  89. module KGC::BattleDifficulty
  90.   # Parameters
  91.   PARAMS = [
  92.         :maxhp, :maxmp, :atk, :def, :mat, :mdf, :agi, :luk,
  93.         :exp, :gold, :drop
  94.   ]
  95.  
  96.   module_function
  97.   #--------------------------------------------------------------------------
  98.   # ○ 難易度補正値作成
  99.   #--------------------------------------------------------------------------
  100.   def create_param_revs
  101.         @@param_revs = []
  102.         DIFFICULTY.each { |d|
  103.           rev = {}
  104.           rev[:name] = d[:name]
  105.           # 一括指定を適用
  106.           if d[:param] != nil
  107.                 rev[:atk] = rev[:def] = rev[:mat] = rev[:mdf] = rev[:agi] = rev[:luk] = d[:param]
  108.           end
  109.           # パラメータ指定を適用
  110.           PARAMS.each { |par|
  111.                 if d[par] != nil
  112.                   rev[par] = d[par]
  113.                 else
  114.                   rev[par] = 100 if rev[par] == nil
  115.                 end
  116.           }
  117.           # リストに追加
  118.           @@param_revs << rev
  119.         }
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ○ 難易度補正値取得
  123.   #--------------------------------------------------------------------------
  124.   def param_revs
  125.         return @@param_revs
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ○ 難易度インデックス取得
  129.   #--------------------------------------------------------------------------
  130.   def get_index
  131.         vid = DIFFICULTY_VARIABLE
  132.         if $game_variables[vid] < 0 || DIFFICULTY.size <= $game_variables[vid]
  133.           $game_variables[vid] = INITIAL_DIFFICULTY
  134.         end
  135.         return $game_variables[vid]
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ○ 難易度取得
  139.   #--------------------------------------------------------------------------
  140.   def get
  141.         return @@param_revs[get_index]
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ○ 難易度変更
  145.   #      index : 難易度インデックス
  146.   #--------------------------------------------------------------------------
  147.   def set(index)
  148.         index = [[index, DIFFICULTY.size - 1].min, 0].max
  149.         $game_variables[DIFFICULTY_VARIABLE] = index
  150.   end
  151.  
  152.   create_param_revs
  153. end
  154.  
  155. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  156.  
  157. #==============================================================================
  158. # ■ RPG::Enemy::DropItem
  159. #==============================================================================
  160.  
  161. unless $@
  162. class RPG::Enemy::DropItem
  163.   #--------------------------------------------------------------------------
  164.   # ● 出現率 1/N の分母 N
  165.   #--------------------------------------------------------------------------
  166.   alias denominator_KGC_BattleDifficulty denominator
  167.   def denominator
  168.     n = @denominator
  169.     if n > 1
  170.       n = [n * 100 / KGC::BattleDifficulty.get[:drop], 1].max
  171.     end
  172.     return n
  173.   end
  174.  
  175. end  # class
  176. end  # unless $@
  177.  
  178. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  179.  
  180. #==============================================================================
  181. # ■ Game_Enemy
  182. #==============================================================================
  183.  
  184. class Game_Enemy < Game_Battler
  185.  
  186.  
  187.   # Ace defines one method for accessing all basic parameters
  188.   alias :th_kgc_difficulty_param_base :param_base
  189.   def param_base(i)
  190.     th_kgc_difficulty_param_base(i) * KGC::BattleDifficulty.get[:maxhp] / 100
  191.   end
  192.  
  193.  
  194.   #--------------------------------------------------------------------------
  195.   # ● 経験値の取得
  196.   #--------------------------------------------------------------------------
  197.   alias :th_KGC_BattleDifficulty_exp :exp
  198.   def exp
  199.     th_KGC_BattleDifficulty_exp * KGC::BattleDifficulty.get[:exp] / 100
  200.   end
  201.   #--------------------------------------------------------------------------
  202.   # ● お金の取得
  203.   #--------------------------------------------------------------------------
  204.   alias :th_KGC_BattleDifficulty_gold :gold
  205.   def gold
  206.     th_KGC_BattleDifficulty_gold * KGC::BattleDifficulty.get[:gold] / 100
  207.   end
  208. end
  209.  
  210. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  211.  
  212. #==============================================================================
  213. # ■ Scene_Title
  214. #==============================================================================
  215.  
  216. module DataManager
  217.  
  218.   class << self
  219.     alias :th_KGC_BattleDifficulty_create_game :create_game_objects
  220.   end
  221.  
  222.   def self.create_game_objects
  223.     th_KGC_BattleDifficulty_create_game
  224.     variable_id = KGC::BattleDifficulty::DIFFICULTY_VARIABLE
  225.     p variable_id
  226.     $game_variables[variable_id] = KGC::BattleDifficulty::INITIAL_DIFFICULTY
  227.   end
  228. end
  229.  
  230.  
  231.  
  232.  
  233.  
  234. =begin
  235.  
  236.  
  237.  
  238. #==============================================================================
  239. # ■ Scene_Menu
  240. #==============================================================================
  241.  
  242.  
  243. # new window for Ace, moving it out of Scene_Menu
  244. class Window_BattleDifficulty < Window_Command
  245.  
  246.   def make_command_list
  247.     KGC::BattleDifficulty::param_revs.each { |d|
  248.       add_command(d[:name], d[:name].to_sym)
  249.     }
  250.   end
  251. end
  252.  
  253. class Window_MenuCommand
  254.  
  255.   alias :th_kgc_battle_difficulty_add_main_commands :add_main_commands
  256.   def add_main_commands
  257.     th_kgc_battle_difficulty_add_main_commands
  258.     if KGC::BattleDifficulty::USE_MENU_DIFFICULTY_COMMAND
  259.       add_command("Difficulty", :difficulty, main_commands_enabled)
  260.     end
  261.   end
  262. end
  263.  
  264. class Scene_Menu
  265.  
  266.   # add new menu to the scene
  267.  
  268.   alias :th_kgc_battle_difficulty_start :start
  269.   def start
  270.     th_kgc_battle_difficulty_start
  271.     create_difficulty_window
  272.   end
  273.  
  274.   alias :th_kgc_battle_difficulty_cmd_window :create_command_window
  275.   def create_command_window
  276.     th_kgc_battle_difficulty_cmd_window
  277.     @command_window.set_handler(:difficulty,      method(:command_difficulty))
  278.   end
  279.  
  280.   def create_difficulty_window
  281.     @difficulty_window = Window_BattleDifficulty.new(80, 100)
  282.     @difficulty_window.set_handler(:ok, method(:on_difficulty_ok))
  283.     @difficulty_window.set_handler(:cancel, method(:on_difficulty_cancel))
  284.     @difficulty_window.hide.deactivate
  285.   end
  286.  
  287.   def command_difficulty
  288.     @difficulty_window.show.open.activate
  289.   end
  290.  
  291.   def on_difficulty_ok
  292.     KGC::BattleDifficulty.set(@difficulty_window.index)
  293.     end_difficulty_selection
  294.   end
  295.  
  296.   def on_difficulty_cancel
  297.     end_difficulty_selection
  298.   end
  299.  
  300.   def end_difficulty_selection
  301.     @difficulty_window.close
  302.     @command_window.activate
  303.   end
  304. end
  305.  
  306.  
  307. =end

Lv6.析梦学徒

老鹰

梦石
40
星屑
34725
在线时间
6740 小时
注册时间
2012-5-26
帖子
3259

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

2
发表于 2017-4-5 21:05:42 | 只看该作者
你不是都找到问题关键了么
改成这样
  1. alias :th_kgc_difficulty_param_base :param_base
  2. def param_base(i)
  3.   sym = KGC::BattleDifficulty::PARAMS[i]
  4.   th_kgc_difficulty_param_base(i) * KGC::BattleDifficulty.get[sym] / 100
  5. end
复制代码

点评

目前只能稍微看得懂一点脚本,但还不能改,还在学习中,谢谢哈  发表于 2017-4-5 21:31
成功了,太好用了,感谢!  发表于 2017-4-5 21:30

评分

参与人数 1星屑 +150 收起 理由
RaidenInfinity + 150 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 05:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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