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

Project1

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

[已经解决] 关于这个技能升级的脚本啊恩……

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-7-3
帖子
724
跳转到指定楼层
1
发表于 2010-7-8 22:11:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 沙之爱罗 于 2010-7-11 00:43 编辑
  1. #=====================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #====================================================================


  4. #====================================================================
  5. # ■ スキルアップデート   Ver. 4.4.0                     by Claimh
  6. #---------------------------------------------------------------
  7. #     スキルごとにレベル制を導入する
  8. #     戦闘中にスキルを使用するほど、威力上昇、消費SP減少、命中率上昇
  9. #==============================================================

  10. module Skill_updata
  11.   S_EXCEP = [1, 57]
  12.   S_MIGHT = []
  13.   S_COST = []
  14.   S_HIT = []
  15.   S_LEVEL = []
  16.   S_INTER = []
  17.   S_SLOPE = []
  18.   S_ANIME = []
  19.   S_ELEMENT = []
  20.   S_STATE_P = []
  21.   S_STATE_N = []
  22. #=============================================================
  23. # □ 自定义内容
  24. #==============================================================
  25.   # 威力上升使用true/false
  26.   SKILL_MIGHT_UP = true
  27.   
  28.   # SP消耗减少使用true/false
  29.   SP_COST_DOWN = true      
  30.   
  31.   # 命中率上升使用true/false
  32.   SKILL_HIT_UP = true      
  33.   
  34.   # 属性变化的使用true/false
  35.   ELEMENT_CHANGE = true   
  36.   
  37.   # 状态变化的使用true/false
  38.   STATE_CHANGE = true
  39.   
  40.   # 显示特技等级上升true/false
  41.   SHOW_SKILL_LV_UP = true
  42.   
  43.   # 等级上升的声效,不用的时候就=nil
  44.   SKILLUP_SE = "056-Right02"
  45.   
  46.   # 菜单使用计数true/false
  47.   MENU_COUNT = false

  48.   # 升级所需次数
  49.   UPDATA_INTERVAL = 2
  50.   
  51.   # 等级上限
  52.   LEVEL_LIMIT = 20

  53.   # 威力上升率(%%)
  54.   MIGHT_RATE = 0.5
  55.   
  56.   # SP消耗减少率(%)
  57.   COST_RATE = 3
  58.   
  59.   # 命中上升率(%)
  60.   HIT_RATE = 1

  61.   #-------------------------------------------------------------
  62.   # 特别技能的详细设定,57和61号特技分别是十字斩和扫荡,大家最熟悉的两个招数
  63.   #----------------------------------------------------------------
  64.   
  65.   # 界限水平
  66.   # S_LEVEL[技艺ID]=[角色ID=>界限,…]
  67.   S_LEVEL[57] = {1=>18, 2=>12, 3=>5, 4=>12, 5=>12, 6=>12, 7=>12, 8=>12}
  68.   S_LEVEL[61] = {1=>12, 2=>18, 3=>15, 4=>12, 5=>12, 6=>12, 7=>12, 8=>12}
  69.      
  70.   # 技艺&actor威力上升率
  71.   # S_MIGHT[技艺ID]=[角色ID=>威力上升率,…]
  72.   S_MIGHT[57] = {1=>8, 2=>2, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}
  73.   S_MIGHT[61] = {1=>2, 2=>8, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}

  74.   # 技艺&actorSP消费减少率
  75.   # S_COST[技艺ID]=[角色ID=>SP消费减少率,…]
  76.   S_COST[57] = {1=>8, 2=>2, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}
  77.   S_COST[61] = {1=>2, 2=>8, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}

  78.   # 技艺&actor命中率
  79.   # S_HIT[技艺ID]=[角色ID=>命中上升率,…]
  80.   S_HIT[57] = {1=>2, 2=>1, 3=>1, 4=>1, 5=>1, 6=>1, 7=>1, 8=>1}
  81.   S_HIT[61] = {1=>1, 2=>2, 3=>1, 4=>1, 5=>1, 6=>1, 7=>1, 8=>1}

  82.   #-----------------------------------------------------------------
  83.   # 技能成长的具体调节
  84.   #-----------------------------------------------------------------
  85.   # 技艺的增长图形
  86.   # 0:使用技艺一定回数的话提高水平
  87.   # 1:技艺一定回数+每水平の使用提高水平
  88.   SKILL_PATTERN = 0
  89.   
  90.   # 技艺水平上升间隔每(使用几回Lv提高)
  91.   #   ※没有设定的情况→基本设定被适应
  92.   # S_INTER[技艺ID]=[actorID=>上升间隔,…]
  93.   S_INTER[57] = {1=>5, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8}
  94.   
  95.   # スキルレベル上昇の傾き(パターン1を使用する場合のみ必要)
  96.   #   ※設定がない場合は1となります。
  97.   # S_SLOPE[スキルID] = [アクターID=>上昇の傾き, …]
  98.   S_SLOPE[57] = {1=>5, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8}

  99.   #-------------------------------------------------------------
  100.   # 技艺增长的话使之动画变化
  101.   #  记录格式: S_ANIME[技艺ID] = [角色ID=>[[等级, 动画ID]], ・・・]
  102.   #------------------------------------------------------------
  103.   # 实施技艺增长的动画变化?
  104.   USE_S_ANIME = true
  105.   
  106.   # 設定例
  107.   # 1号角色,57号特技,lv5,lv10动画变化
  108.   # 2号角色,Lv.11动画变化
  109.   S_ANIME[57] = {1=>[[5, 69], [10, 70]], 2=>[[11, 70]]}

  110.   #-------------------------------------------------------------------
  111.   # 属性変化/状态変化
  112.   #------------------------------------------------------------------
  113.   # 属性変化
  114.   # S_ELEMENT[技艺ID] = {角色ID=>{水平=>[属性ID,属性ID…]}, ・・・・}
  115.   S_ELEMENT[57] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}

  116.   # 状态変化+
  117.   # S_STATE_P[技艺ID] = {角色ID=>{水平=>[属性ID,属性ID…]}, ・・・・}
  118.   S_STATE_P[57] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}

  119.   # 状态変化-
  120.   # S_STATE_N[技艺ID] = {角色ID=>{水平=>[属性ID,属性ID…]}, ・・・・}
  121.   S_STATE_N[57] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}

  122. #==================================================================
  123. # □ 自定义内容终了
  124. #==================================================================
  125. end


  126. class Game_Actor
  127.   include Skill_updata
  128.   attr_accessor   :skill_use      # スキル使用回数
  129.   attr_accessor   :skill_level    # スキルレベル
  130.   attr_accessor   :skill_power    # スキル威力更新値
  131.   attr_accessor   :skill_sp_cost  # スキルSP消費更新値
  132.   attr_accessor   :skill_hit      # スキル命中率
  133.   attr_accessor   :skill_up       # レベルアップフラグ
  134.   attr_accessor   :skill_list     # スキルEXPリスト
  135.   alias skill_updata_init setup
  136.   def setup(actor_id)
  137.     skill_updata_init(actor_id)
  138.     @skill_use = []
  139.     @skill_level = []
  140.     @skill_power = []
  141.     @skill_sp_cost = []
  142.     @skill_hit = []
  143.     @skill_up = false
  144.     @skill_list = []
  145.     for id in 1...$data_skills.size
  146. ##########################################################
  147.       next if S_EXCEP.include?(id)
  148. ##########################################################
  149.       @skill_use[id] = 0
  150.       @skill_level[id] = 0
  151.       @skill_power[id] = $data_skills[id].power
  152.       @skill_sp_cost[id] = $data_skills[id].sp_cost
  153.       @skill_hit[id] = $data_skills[id].hit
  154.       @skill_list[id] = make_skill_list(id)
  155.     end
  156.   end

  157.   #-------------------------------------------------------------
  158.   # ● スキルEXP 計算
  159.   #------------------------------------------------------------
  160.   def make_skill_list(skill_id)
  161.     interval = S_INTER[skill_id]
  162.     up_interval = ( (interval != nil and interval[@actor_id] != nil) ? interval[@actor_id] : UPDATA_INTERVAL )
  163.     slope = S_SLOPE[skill_id]
  164.     up_slope = ( (slope != nil and slope[@actor_id] != nil) ? slope[@actor_id] : 1 )
  165.     limit = S_LEVEL[skill_id]
  166.     limit_lv = ( (limit != nil and limit[@actor_id] != nil) ? limit[@actor_id] : LEVEL_LIMIT )
  167.     list = []
  168.     list[0] = 0
  169.     for lv in 1...limit_lv+1
  170.       exp = 0
  171.       case SKILL_PATTERN
  172.       when 0
  173.         exp = up_interval * lv
  174.       when 1
  175.         exp = list[lv-1] + up_slope * lv + up_interval
  176.       end
  177.       list[lv] = exp.truncate
  178.     end
  179.     return list
  180.   end
  181. end


  182. class Game_Battler
  183.   include Skill_updata
  184.   #-----------------------------------------------------------------
  185.   # ● スキルの効果適用
  186.   #     user  : スキルの使用者 (バトラー)
  187.   #     skill : スキル
  188.   #-------------------------------------------------------------
  189.   alias skill_effect_update skill_effect
  190.   def skill_effect(user, skill)
  191.     up_flag = false
  192. ##########################################################
  193.     if !S_EXCEP.include?(skill.id)
  194. ##########################################################
  195.     if user.is_a?(Game_Actor) and ($scene.is_a?(Scene_Battle) or MENU_COUNT)
  196.       skill_update_main(user, skill)
  197.       skill_base = skill.dup
  198.       # 威力上昇
  199.       if SKILL_MIGHT_UP
  200.         skill.power = user.skill_power[skill.id]
  201.       end
  202.       # 命中率上昇
  203.       if SKILL_HIT_UP
  204.         skill.hit = user.skill_hit[skill.id]
  205.       end
  206.       # 属性変化
  207.       if ELEMENT_CHANGE and S_ELEMENT != []
  208.         ele1 = S_ELEMENT[skill.id]
  209.         if ele1 != nil and ele1[user.id] != nil
  210.           ele2 = ele1[user.id]
  211.           if ele2 != [] and ele2[user.skill_level[skill.id]] != nil
  212.             skill.element_set = ele2[user.skill_level[skill.id]]
  213.           end
  214.         end
  215.       end
  216.       # ステート変化
  217.       if STATE_CHANGE
  218.         if S_STATE_P != []
  219.           pst1 = S_STATE_P[skill.id]
  220.           if pst1 != nil and pst1[user.id] != nil
  221.             pst2 = pst1[user.id]
  222.             if pst2 != nil and pst2[user.skill_level[skill.id]] != nil
  223.               skill.plus_state_set = pst2[user.skill_level[skill.id]]
  224. #              p skill.plus_state_set
  225.             end
  226.           end
  227.         end
  228.         if S_STATE_N != []
  229.           nst1 = S_STATE_N[skill.id]
  230.           if nst1 != nil and nst1[user.id] != nil
  231.             nst2 = nst1[user.id]
  232.             if nst1 != nil and nst2[user.skill_level[skill.id]] != nil
  233.               skill.minus_state_set = nst2[user.skill_level[skill.id]]
  234.             end
  235.           end
  236.         end
  237.       end
  238.       up_flag = true
  239.     end
  240. ##########################################################
  241.     end
  242. ##########################################################
  243.     ret = skill_effect_update(user, skill)    # 原物
  244.     if up_flag
  245.       skill = skill_base
  246.       # Miss時には後戻し
  247.       if self.damage == "Miss"
  248.         skill_use_recount(user, skill)
  249.       end
  250.     end
  251.     return ret
  252.   end
  253.   
  254.   #------------------------------------------------------------
  255.   # ● スキルアップデータメイン
  256.   #-------------------------------------------------------------
  257.   def skill_update_main(actor, skill)
  258.     # スキル使用回数のカウント
  259.     actor.skill_use[skill.id] += 1
  260.     # リミット取得
  261.     limit = S_LEVEL[skill.id]
  262.     s_limit = ( (limit != nil and limit[actor.id] != nil) ? limit[actor.id] : LEVEL_LIMIT)
  263.     # 書き換え限界到達
  264.     if s_limit == false or actor.skill_level[skill.id] < s_limit
  265.       # レベルアップ間隔取得
  266.       interval = actor.skill_list[skill.id]
  267.       # 書き換え回数到達
  268.       if actor.skill_use[skill.id] == interval[actor.skill_level[skill.id]+1]
  269.         # スキルレベル上昇
  270.         actor.skill_level[skill.id] += 1
  271.         actor.skill_up = true
  272.         # 威力上昇 = 有効
  273.         if SKILL_MIGHT_UP
  274.           might = S_MIGHT[skill.id]
  275.           might_rate = ((might != nil and might[actor.id] != nil) ? might[actor.id] : MIGHT_RATE)
  276.           # 補正値更新
  277.           actor.skill_power[skill.id] += skill.power * might_rate / 100
  278.           actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
  279.         end
  280.         # SP消費減少 = 有効
  281.         if SP_COST_DOWN
  282.           cost = S_COST[skill.id]
  283.           cost_rate = ((cost != nil and cost[actor.id] != nil) ? cost[actor.id] : COST_RATE)
  284.           actor.skill_sp_cost[skill.id] += skill.sp_cost * cost_rate / 100
  285.           actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
  286.           # SP消費が0以下はありえない
  287.           if actor.skill_sp_cost[skill.id] < 0
  288.             actor.skill_sp_cost[skill.id] = 0
  289.           end
  290.         end
  291.         # 命中率上昇 = 有効
  292.         if SKILL_HIT_UP
  293.           hit = S_HIT[skill.id]
  294.           hit_rate = ((hit != nil and hit[actor.id] != nil) ? hit[actor.id] : HIT_RATE)
  295.           actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
  296.           actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
  297.           # 100以上はありえない
  298.           if actor.skill_hit[skill.id] > 100
  299.             actor.skill_hit[skill.id] = 100
  300.           end
  301.         end
  302.       end
  303.     end
  304.   end
  305.   
  306.   #---------------------------------------------------------
  307.   # ● 再カウント
  308.   #------------------------------------------------------
  309.   def skill_use_recount(actor, skill)
  310.     if actor.skill_up
  311.       actor.skill_level[skill.id] -= 1
  312.       # 威力を再計算
  313.       if SKILL_MIGHT_UP
  314.         actor.skill_power[skill.id] = skill.power
  315.         might = S_MIGHT[skill.id]
  316.         might_rate = ((might != nil and might[actor.id] != nil) ? might[actor.id] : MIGHT_RATE)
  317.         for i in 1...actor.skill_level[skill.id]
  318.           actor.skill_power[skill.id] += skill.power * might_rate / 100
  319.           actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
  320.         end
  321.       end
  322.       # SP消費再計算
  323.       if SP_COST_DOWN
  324.         actor.skill_sp_cost[skill.id] = skill.sp_cost
  325.         cost = S_COST[skill.id]
  326.         cost_rate = ((cost != nil and cost[actor.id] != nil) ? cost[actor.id] : COST_RATE)
  327.         for i in 1...actor.skill_level[skill.id]
  328.           actor.skill_sp_cost[skill.id] += skill.sp_cost * cost_rate / 100
  329.           actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
  330.         end
  331.         # SP消費が0以下はありえない
  332.         if actor.skill_sp_cost[skill.id] < 0
  333.           actor.skill_sp_cost[skill.id] = 0
  334.         end
  335.       end
  336.       # 命中率再計算
  337.       if SKILL_HIT_UP
  338.         actor.skill_hit[skill.id] = skill.hit
  339.         hit = S_HIT[skill.id]
  340.         hit_rate = ((hit != nil and hit[actor.id] != nil) ? hit[actor.id] : HIT_RATE)
  341.         for i in 1...actor.skill_level[skill.id]
  342.           actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
  343.           actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
  344.         end
  345.         # 100以上はありえない
  346.         if actor.skill_hit[skill.id] > 100
  347.           actor.skill_hit[skill.id] = 100
  348.         end
  349.       end
  350.       actor.skill_up = false
  351.     end
  352.     actor.skill_use[skill.id] -= 1
  353.   end
  354. end

  355. #=================================================================
  356. # スキル成長によるアニメーション変化
  357. #=================================================================
  358. class Scene_Battle
  359.   include Skill_updata
  360.   #--------------------------------------------------------------
  361.   # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
  362.   #-----------------------------------------------------------
  363.   alias update_phase4_step4_skillup update_phase4_step4
  364.   def update_phase4_step4
  365.     update_phase4_step4_skillup
  366. ##########################################################
  367.     if !S_EXCEP.include?(@skill.id)
  368. ##########################################################
  369.     if @active_battler.is_a?(Game_Actor) and USE_S_ANIME
  370.       s_anime = S_ANIME[@skill.id]
  371.       # 設定がないなら無視
  372.       if s_anime != nil and s_anime[@active_battler.id] != nil
  373.         s_anime_set = s_anime[@active_battler.id]
  374.         for i in 0...s_anime_set.size
  375.           s_anime_def = s_anime_set[i]
  376.           # 規定レベル以上
  377.           if @active_battler.skill_level[@skill.id] >= s_anime_def[0]
  378.             # 対象側アニメーション
  379.             for target in @target_battlers
  380.               target.animation_id = s_anime_def[1]
  381.             end
  382.           end
  383.         end
  384.       end
  385.     end
  386. ##########################################################
  387.     end
  388. ##########################################################
  389.   end
  390. end

  391. #=================================================================
  392. # 以下、レベルアップ表示部分(レベルアップ表示がいらないなら消してもOK)
  393. #=================================================================
  394. class Scene_Battle
  395.   include Skill_updata
  396.   if SHOW_SKILL_LV_UP
  397.   #----------------------------------------------------------
  398.   # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  399.   #----------------------------------------------------------
  400.   alias update_phase4_step2_skillup update_phase4_step2
  401.   def update_phase4_step2
  402. ##########################################################
  403.     if !S_EXCEP.include?(@skill.id)
  404. ##########################################################
  405.     if @active_battler.is_a?(Game_Actor)
  406.       @active_battler.skill_up = false
  407.     end
  408.     @skillup = false
  409. ##########################################################
  410.     end
  411. ##########################################################
  412.     update_phase4_step2_skillup   # 原物
  413.   end

  414.   #-------------------------------------------------------------
  415.   # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
  416.   #-----------------------------------------------------------
  417.   alias update_phase4_step3_skillup update_phase4_step3
  418.   def update_phase4_step3
  419. ##########################################################
  420.     if !S_EXCEP.include?(@skill.id)
  421. ##########################################################
  422.     if @active_battler.is_a?(Game_Actor) and @active_battler.skill_up != false
  423.       @skillup = true
  424.       @skill_up_window = Window_Skillup.new(@active_battler)
  425.       if SKILLUP_SE != nil
  426.         Audio.se_play("Audio/SE/" + SKILLUP_SE)
  427.         sleep(0.1)
  428.       end
  429.     end
  430. ##########################################################
  431.     end
  432. ##########################################################
  433.     update_phase4_step3_skillup
  434.   end

  435.   #--------------------------------------------------------------
  436.   # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
  437.   #--------------------------------------------------------------
  438.   alias update_phase4_step5_skillup update_phase4_step5
  439.   def update_phase4_step5
  440. ##########################################################
  441.     if !S_EXCEP.include?(@skill.id)
  442. ##########################################################
  443.     if @active_battler.is_a?(Game_Actor) and @skillup
  444.       @skill_up_window.dispose
  445.       @active_battler.skill_up = false
  446.       @skillup = false
  447.     end
  448. ##########################################################
  449.     end
  450. ##########################################################
  451.     update_phase4_step5_skillup     # 原物
  452.   end

  453.   #---------------------------------------------------------------
  454.   # ● フレーム更新
  455.   #----------------------------------------------------------------
  456.   alias update_skillup update
  457.   def update
  458. ##########################################################
  459.     if !S_EXCEP.include?(@skill.id)
  460. ##########################################################
  461.     if @active_battler.is_a?(Game_Actor) and @active_battler.skill_up and @skillup
  462.       @skill_up_window.contents_opacity -= 4
  463.     end
  464. ##########################################################
  465.     end
  466. ##########################################################
  467.     update_skillup              # 原物
  468.   end
  469.   end # if SHOW_SKILL_LV_UP
  470. end

  471. class Window_Skillup < Window_Base
  472.   #--------------------------------------------------------------
  473.   # ● オブジェクト初期化
  474.   #     actor : アクター
  475.   #-------------------------------------------------------------
  476.   def initialize(actor)
  477.     super(actor.screen_x-140, 260, 250, 64)
  478.     self.contents = Bitmap.new(width - 32, height - 32)
  479.     self.opacity = 0
  480.     self.contents.font.color = Color.new(255, 64, 0)
  481.     self.contents.draw_text(80, 0, 150, 32, "LEVEL UP!")
  482.   end
  483. end



  484. #====================================================================
  485. # 以下、再定義部分を含む(SP消費減少の機能がいらないなら消してもOK)
  486. #====================================================================
  487. class Window_Skill < Window_Selectable
  488.   include Skill_updata
  489.   #----------------------------------------------------------------
  490.   # ● 項目の描画
  491.   #     index : 項目番号
  492.   #-----------------------------------------------------------------
  493.   def draw_item(index)
  494.     skill = @data[index]
  495.     if @actor.skill_can_use?(skill.id)
  496.       self.contents.font.color = normal_color
  497.     else
  498.       self.contents.font.color = disabled_color
  499.     end
  500.     x = 4 + index % 2 * (288 + 32)
  501.     y = index / 2 * 32
  502.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  503.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  504.     bitmap = RPG::Cache.icon(skill.icon_name)
  505.     opacity = self.contents.font.color == normal_color ? 255 : 128
  506.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  507. #-修正-----
  508.     @actor.skill_level[skill.id] = 0 if @actor.skill_level[skill.id] == nil
  509.     #name_level = skill.name + "(Lv" + @actor.skill_level[skill.id].to_s + ")"
  510.     name_level = skill.name
  511. ##########################################################
  512.     if !S_EXCEP.include?(skill.id)
  513. ##########################################################
  514.     name_level += "(Lv" + @actor.skill_level[skill.id].to_s + ")"
  515. ##########################################################
  516.     end
  517. ##########################################################
  518.     self.contents.draw_text(x + 28, y, 204, 32, name_level, 0)
  519. ##########################################################
  520.     if !S_EXCEP.include?(skill.id)
  521. ##########################################################
  522.     @actor.skill_sp_cost[skill.id] = skill.sp_cost if @actor.skill_sp_cost[skill.id] == nil
  523.     self.contents.draw_text(x + 232, y, 48, 32, @actor.skill_sp_cost[skill.id].to_s, 2)
  524. ##########################################################
  525.     else
  526.     self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)      
  527.     end
  528. ##########################################################
  529. #----------
  530.   end
  531. end

  532. class Scene_Skill
  533.   #----------------------------------------------------------
  534.   # ● フレーム更新 (ターゲットウィンドウがアクティブの場合)
  535.   #-------------------------------------------------------------
  536.   def update_target
  537.     # B ボタンが押された場合
  538.     if Input.trigger?(Input::B)
  539.       # キャンセル SE を演奏
  540.       $game_system.se_play($data_system.cancel_se)
  541.       # ターゲットウィンドウを消去
  542.       @skill_window.active = true
  543.       @target_window.visible = false
  544.       @target_window.active = false
  545.       return
  546.     end
  547.     # C ボタンが押された場合
  548.     if Input.trigger?(Input::C)
  549.       # SP 切れなどで使用できなくなった場合
  550.       unless @actor.skill_can_use?(@skill.id)
  551.         # ブザー SE を演奏
  552.         $game_system.se_play($data_system.buzzer_se)
  553.         return
  554.       end
  555.       # ターゲットが全体の場合
  556.       if @target_window.index == -1
  557.         # パーティ全体にスキルの使用効果を適用
  558.         used = false
  559.         for i in $game_party.actors
  560.           used |= i.skill_effect(@actor, @skill)
  561.         end
  562.       end
  563.       # ターゲットが使用者の場合
  564.       if @target_window.index <= -2
  565.         # ターゲットのアクターにスキルの使用効果を適用
  566.         target = $game_party.actors[@target_window.index + 10]
  567.         used = target.skill_effect(@actor, @skill)
  568.       end
  569.       # ターゲットが単体の場合
  570.       if @target_window.index >= 0
  571.         # ターゲットのアクターにスキルの使用効果を適用
  572.         target = $game_party.actors[@target_window.index]
  573.         used = target.skill_effect(@actor, @skill)
  574.       end
  575.       # スキルを使った場合
  576.       if used
  577.         # スキルの使用時 SE を演奏
  578.         $game_system.se_play(@skill.menu_se)
  579. #-----修正---------------------------------------------
  580. ##########################################################
  581.         if !S_EXCEP.include?(@skill.id)
  582. ##########################################################
  583.         @actor.skill_sp_cost[@skill.id] = @skill.sp_cost if @actor.skill_sp_cost[@skill.id] == nil
  584.         # SP 消費
  585.         @actor.sp -= @actor.skill_sp_cost[@skill.id]
  586. ##########################################################
  587.         end
  588. ##########################################################
  589. #------------------------------------------------
  590.         # 各ウィンドウの内容を再作成
  591.         @status_window.refresh
  592.         @skill_window.refresh
  593.         @target_window.refresh
  594.         # 全滅の場合
  595.         if $game_party.all_dead?
  596.           # ゲームオーバー画面に切り替え
  597.           $scene = Scene_Gameover.new
  598.           return
  599.         end
  600.         # コモンイベント ID が有効の場合
  601.         if @skill.common_event_id > 0
  602.           # コモンイベント呼び出し予約
  603.           $game_temp.common_event_id = @skill.common_event_id
  604.           # マップ画面に切り替え
  605.           $scene = Scene_Map.new
  606.           return
  607.         end
  608.       end
  609.       # スキルを使わなかった場合
  610.       unless used
  611.         # ブザー SE を演奏
  612.         $game_system.se_play($data_system.buzzer_se)
  613.       end
  614.       return
  615.     end
  616.   end
  617. end

  618. class Scene_Battle
  619.   include Skill_updata
  620.   #------------------------------------------------------
  621.   # ● スキルアクション 結果作成
  622.   #-------------------------------------------------------
  623.   alias make_skill_action_result_skill_update make_skill_action_result
  624.   def make_skill_action_result
  625.     make_skill_action_result_skill_update
  626.     # SP 消費
  627. ##########################################################
  628.       if !S_EXCEP.include?(@skill.id)
  629. ##########################################################
  630.       if SP_COST_DOWN and @active_battler.is_a?(Game_Actor)
  631.       @active_battler.sp += @skill.sp_cost
  632.       @active_battler.sp -= @active_battler.skill_sp_cost[@skill.id]
  633.       end
  634. ##########################################################
  635.       end
  636. ##########################################################
  637.   end
  638. end

  639. class Game_Battler
  640.   #--------------------------------------------------------
  641.   # ● スキルの使用可能判定
  642.   #     skill_id : スキル ID
  643.   #------------------------------------------------------
  644.   alias skill_update_can_use? skill_can_use?
  645.   def skill_can_use?(skill_id)
  646.     ret = skill_update_can_use?(skill_id)
  647. ##########################################################
  648.     if !S_EXCEP.include?(@skill.id)
  649. ##########################################################
  650.     if !ret and SP_COST_DOWN
  651.       # SP が足りない場合は使用不可となった?
  652.       if $data_skills[skill_id].sp_cost > self.sp
  653.         if self.is_a?(Game_Actor)
  654.           skill_sp_cost = self.skill_sp_cost[skill_id]
  655.           if skill_sp_cost < self.sp
  656.             ret = true
  657.           end
  658.         end
  659.       end
  660.     end
  661. ##########################################################
  662.     end
  663. ##########################################################
  664.     return ret
  665.   end
  666. end

  667. #===============================================================
  668. # イベントスクリプト操作
  669. #===============================================================
  670. class Interpreter
  671.   include Skill_updata
  672.   #-----------------------------------------------------------
  673.   # ● スキルレベル設定(レベルセット)
  674.   #     actor_id  :   アクターID
  675.   #     skill_id  :   スキルID
  676.   #     level     :   設定レベル
  677.   #-----------------------------------------------------------
  678.   def set_skill_level(actor_id, skill_id, level)
  679.     actor = $game_actors[actor_id]
  680.     skill = $data_skills[skill_id]
  681.     # リミット取得
  682.     limit = S_LEVEL[skill_id]
  683.     s_limit = ( (limit != nil and limit[actor.id] != nil) ? limit[actor.id] : LEVEL_LIMIT)
  684.     if level > s_limit or level < 0
  685.       return
  686.     end
  687.     # レベル
  688.     actor.skill_level[skill.id] = level
  689.     # 使用回数
  690.     use_list = actor.skill_list[skill.id]
  691.     actor.skill_use[skill.id] = use_list[level]
  692.     # 威力を再計算
  693.     if SKILL_MIGHT_UP
  694.       actor.skill_power[skill.id] = skill.power
  695.       might = S_MIGHT[skill.id]
  696.       might_rate = ((might != nil and might[actor.id] != nil) ? might[actor.id] : MIGHT_RATE)
  697.       for i in 0...level
  698.         actor.skill_power[skill.id] += skill.power * might_rate / 100
  699.         actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
  700.       end
  701.     end
  702.     # SP消費再計算
  703.     if SP_COST_DOWN
  704.       actor.skill_sp_cost[skill.id] = skill.sp_cost
  705.       cost = S_COST[skill.id]
  706.       cost_rate = ((cost != nil and cost[actor.id] != nil) ? cost[actor.id] : COST_RATE)
  707.       for i in 0...level
  708.         actor.skill_sp_cost[skill.id] += skill.sp_cost * cost_rate / 100
  709.         actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
  710.       end
  711.       # SP消費が0以下はありえない
  712.       if actor.skill_sp_cost[skill.id] < 0
  713.         actor.skill_sp_cost[skill.id] = 0
  714.       end
  715.     end
  716.     # 命中率再計算
  717.     if SKILL_HIT_UP
  718.       actor.skill_hit[skill.id] = skill.hit
  719.       hit = S_HIT[skill.id]
  720.       hit_rate = ((hit != nil and hit[actor.id] != nil) ? hit[actor.id] : HIT_RATE)
  721.       for i in 0...level
  722.         actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
  723.         actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
  724.       end
  725.       # 100以上はありえない
  726.       if actor.skill_hit[skill.id] > 100
  727.         actor.skill_hit[skill.id] = 100
  728.       end
  729.     end
  730.   end
  731.   
  732.   #---------------------------------------------------------
  733.   # ● スキルレベル設定(レベルアップ)
  734.   #     actor_id  :   アクターID
  735.   #     skill_id  :   スキルID
  736.   #--------------------------------------------------------
  737.   def skill_level_up(actor_id, skill_id)
  738.     actor = $game_actors[actor_id]
  739.     set_skill_level(actor_id, skill_id, actor.skill_level[skill_id]+1)
  740.   end
  741.   
  742.   #-------------------------------------------------------
  743.   # ● スキルレベル設定(レベルダウン)
  744.   #     actor_id  :   アクターID
  745.   #     skill_id  :   スキルID
  746.   #--------------------------------------------------------
  747.   def skill_level_down(actor_id, skill_id)
  748.     actor = $game_actors[actor_id]
  749.     set_skill_level(actor_id, skill_id, actor.skill_level[skill_id]-1)
  750.   end
  751. end

  752. #==================================================================
  753. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  754. #==================================================================
复制代码
S_EXCEP = [1, 57]  (这个是不会升级的技能编号么?)
我试验了一下,平均用多久才会升级呢?还是要怎么个设置法?

Lv1.梦旅人

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-7-3
帖子
724
2
 楼主| 发表于 2010-7-8 23:40:12 | 只看该作者
果断自顶
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

3
发表于 2010-7-8 23:49:13 | 只看该作者
#   # 技艺水平上升间隔每(使用几回Lv提高)
#   #   ※没有设定的情况→基本设定被适应
#   # S_INTER[技艺ID]=[actorID=>上升间隔,…]
#   S_INTER[57] = {1=>5, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8}

第99行

点评

那个,我是脚本盲……就说这样我还是看不明白的,还有这个S_EXCEP = [1, 57],到底是什么意思呢?  发表于 2010-7-9 22:37
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
339
在线时间
453 小时
注册时间
2009-10-2
帖子
125
4
发表于 2010-7-9 07:20:26 | 只看该作者
我上回也在用这个脚本,不过我用不来就放弃了,下下3楼的给我们这些菜鸟答案
...
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

5
发表于 2010-7-10 01:43:36 | 只看该作者
S_EXCEP = [1, 57]  (这个是不会升级的技能编号么?)
我试验了一下,平均用多久才会升级呢?还是要怎么个 ...
沙之爱罗 发表于 2010-7-8 22:11


S_EXCEP = [1, 57]   这句是设置例外.就是有些特定的技能你不想让他能够升级,或者是属性固定的,会用到这句设定.这两个技能分别是治疗和十字斩.你进去看一下就知道这两个技能的后缀名没有(Lv0)这样的提示.

另外看了一下,在第52行有这样的常数
  # 升级所需次数
  UPDATA_INTERVAL = 2
如果在99行没有定义的话,会按这个来.

点评

S_INTER[57] = {1=>5, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8} 是57号技能用5下就升1级么,可是我发现不行……用N下都不能升级  发表于 2010-7-10 23:13
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

6
发表于 2010-7-10 23:20:00 | 只看该作者
S_EXCEP = [1, 57]  (这个是不会升级的技能编号么?)
我试验了一下,平均用多久才会升级呢?还是要怎么个 ...
沙之爱罗 发表于 2010-7-8 22:11


S_EXCEP = [1, 57]是设置例外,在这里有ID的就无法升级....你看看你在  第14行的这句话里有没有57,把他删掉.

点评

我已经删除了57这个数字,十字斩依旧无法升级 S_INTER[57] = {1=>1, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8} 改成:1=>1(是打一下就升级么)没反应  发表于 2010-7-10 23:35
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

7
发表于 2010-7-10 23:37:58 | 只看该作者
本帖最后由 moy 于 2010-7-10 23:46 编辑

是嘛....那可能是我看漏了什么东西吧.我再去研究研究...


我在新工程里测试没有任何问题,我不知道你的是怎么回事了...囧,可能是什么莫名的脚本牵扯到了.

你把修改过的那部分脚本先发上来看看,是不是哪里改的有问题?如果不是的话,可能就是脚本默默的冲突了...

点评

# 技艺水平上升间隔每(使用几回Lv提高) # ※没有设定的情况→基本设定被适应 # S_INTER[技艺ID]=[actorID=>上升间隔,…] S_INTER[57] = {1=>1, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8} S_EXCEP =   发表于 2010-7-10 23:49
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

8
发表于 2010-7-10 23:53:59 | 只看该作者
S_EXCEP = [1, 57]  (这个是不会升级的技能编号么?)
我试验了一下,平均用多久才会升级呢?还是要怎么个 ...
沙之爱罗 发表于 2010-7-8 22:11


..........改成S_EXCEP = []
不能直接删掉的...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-7-3
帖子
724
9
 楼主| 发表于 2010-7-10 23:55:10 | 只看该作者
..........改成S_EXCEP = []
不能直接删掉的...
moy 发表于 2010-7-10 23:53



我有些需要不升级啊
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

10
发表于 2010-7-10 23:57:03 | 只看该作者
我有些需要不升级啊
沙之爱罗 发表于 2010-7-10 23:55


那就改成
S_EXCEP = [5,39]之类的,里面填上你要河蟹的技能ID就好.

点评

不行,十字斩无法升级  发表于 2010-7-11 00:33

评分

参与人数 1星屑 +400 收起 理由
「旅」 + 400 前面的加少了~~

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-25 20:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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