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

Project1

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

[已经过期] 为什么有的脚本不能更新

[复制链接]

Lv4.逐梦者

梦石
0
星屑
13657
在线时间
3854 小时
注册时间
2013-7-18
帖子
2314
跳转到指定楼层
1
发表于 2016-6-7 00:10:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
有的脚本修改了数据,游戏里却一直认第一次进游戏的设定,修改了数据的脚本不起做用....
山岚野人,快人快语,礼数不周,还望海涵....

Lv4.逐梦者

素材区好人

梦石
3
星屑
7842
在线时间
3544 小时
注册时间
2011-7-21
帖子
2284

极短25参与极短24参与极短23参与极短22参与极短21参与

2
发表于 2016-6-7 00:54:51 | 只看该作者
你需要保存,并重新开始游戏

点评

理论上可以,但是实际上,你必须看得懂脚本后才能针对该脚本做出相应修改,请等愿意帮忙的好心人吧  发表于 2016-6-7 18:46
我保存好后,那这样它就生效了,但是我给别人补丁,能不能生效呢,理论上应该可以吧  发表于 2016-6-7 18:06
凡是要在存档中写数据的脚本,你要更新设定,都请重新开始新游戏  发表于 2016-6-7 16:04
重新开始新游戏  发表于 2016-6-7 16:03
问题就是更新了脚本,存档还是读取第一次进游戏的脚本设定,等于更新不起作用,怎么办  发表于 2016-6-7 15:30
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13657
在线时间
3854 小时
注册时间
2013-7-18
帖子
2314
3
 楼主| 发表于 2016-6-7 09:03:55 | 只看该作者
技能升级脚本,如何把数据保存到存档中
  1. #====================================================================
  2. # ■ スキルアップデート   Ver. 4.4.0                     by Claimh
  3. #---------------------------------------------------------------
  4. #     スキルごとにレベル制を導入する
  5. #     戦闘中にスキルを使用するほど、威力上昇、消費SP減少、命中率上昇
  6. #==============================================================

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

  44.   # 升级所需次数
  45.   UPDATA_INTERVAL = 25
  46.   
  47.   # 等级上限
  48.   LEVEL_LIMIT = 3

  49.   # 威力上升率(%%)
  50.   MIGHT_RATE = 30
  51.   
  52.   # SP消耗减少率(%)
  53.   COST_RATE = 10
  54.   
  55.   # 命中上升率(%)
  56.   HIT_RATE = 1

  57.   #-------------------------------------------------------------
  58.   # 特别技能的详细设定,57和61号特技分别是十字斩和扫荡,大家最熟悉的两个招数
  59.   #----------------------------------------------------------------
  60.   
  61.   # 界限水平
  62.   # S_LEVEL[技艺ID]=[角色ID=>界限,…]
  63.   
  64.   
  65.   S_LEVEL[1] = {2=>3}
  66.   S_LEVEL[2] = {1=>3,2=>3}
  67.   S_LEVEL[3] = {1=>3}
  68.   S_LEVEL[4] = {1=>3,2=>3}
  69.   S_LEVEL[5] = {1=>2}
  70.   S_LEVEL[6] = {1=>2}
  71.   S_LEVEL[7] = {1=>3}
  72.   S_LEVEL[9] = {1=>0}
  73.   S_LEVEL[10] = {1=>0}  
  74.   S_LEVEL[11] = {1=>2}  
  75.   S_LEVEL[12] = {1=>2}
  76.   S_LEVEL[13] = {1=>3}
  77.   S_LEVEL[14] = {1=>0}
  78.   S_LEVEL[16] = {1=>3}
  79.   S_LEVEL[17] = {1=>2}
  80.   
  81.   
  82.   # 技艺&actor威力上升率
  83.   # S_MIGHT[技艺ID]=[角色ID=>威力上升率,…]
  84.   
  85.    
  86.   S_MIGHT[1] = {2=>40}
  87.   S_MIGHT[2] = {1=>30,2=>30}
  88.   S_MIGHT[3] = {1=>40}
  89.   S_MIGHT[4] = {1=>30,2=>30}
  90.   S_MIGHT[5] = {1=>30}
  91.   S_MIGHT[6] = {1=>30}
  92.   S_MIGHT[7] = {1=>30}
  93.   S_MIGHT[11] = {1=>30}  
  94.   S_MIGHT[12] = {1=>30}
  95.   S_MIGHT[13] = {1=>30}
  96.   S_MIGHT[16] = {1=>30}
  97.   S_MIGHT[17] = {1=>30}
  98.   
  99.   # 技艺&actorSP消费减少率
  100.   # S_COST[技艺ID]=[角色ID=>SP消费减少率,…]
  101.   
  102.    
  103.   S_COST[1] = {2=>10}
  104.   S_COST[2] = {1=>10,2=>10}
  105.   S_COST[3] = {1=>10}
  106.   S_COST[4] = {1=>10,2=>10}
  107.   S_COST[5] = {1=>10}
  108.   S_COST[6] = {1=>10}
  109.   S_COST[7] = {1=>10}
  110.   S_COST[11] = {1=>10}  
  111.   S_COST[12] = {1=>10}
  112.   S_COST[13] = {1=>10}
  113.   S_COST[16] = {1=>10}
  114.   S_COST[17] = {1=>10}
  115.   
  116.   # 技艺&actor命中率
  117.   # S_HIT[技艺ID]=[角色ID=>命中上升率,…]
  118.   S_HIT[1] = {1=>2}
  119.   S_HIT[2] = {1=>2}

  120.   #-----------------------------------------------------------------
  121.   # 技能成长的具体调节
  122.   #-----------------------------------------------------------------
  123.   # 技艺的增长图形
  124.   # 0:使用技艺一定回数的话提高水平
  125.   # 1:技艺一定回数+每水平の使用提高水平
  126.   SKILL_PATTERN = 1
  127.   
  128.   # 技艺水平上升间隔每(使用几回Lv提高)
  129.   #   ※没有设定的情况→基本设定被适应
  130.   # S_INTER[技艺ID]=[actorID=>上升间隔,…]
  131.   

  132.   S_INTER[1] = {2=>20}
  133.   S_INTER[2] = {1=>25,2=>25}
  134.   S_INTER[3] = {1=>20}
  135.   S_INTER[4] = {1=>30,2=>30}
  136.   S_INTER[5] = {1=>22}
  137.   S_INTER[6] = {1=>20}
  138.   S_INTER[7] = {1=>40}
  139.   S_INTER[11] = {1=>20}
  140.   S_INTER[12] = {1=>22}
  141.   S_INTER[13] = {1=>40}
  142.   S_INTER[16] = {1=>40}
  143.   S_INTER[17] = {1=>25}
  144.   
  145.   # スキルレベル上昇の傾き(パターン1を使用する場合のみ必要)
  146.   #   ※設定がない場合は1となります。
  147.   # S_SLOPE[スキルID] = [アクターID=>上昇の傾き, …]
  148.   S_SLOPE[999] = {1=>5, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8}

  149.   #-------------------------------------------------------------
  150.   # 技艺增长的话使之动画变化
  151.   #  记录格式: S_ANIME[技艺ID] = [角色ID=>[[等级, 动画ID]], ・・・]
  152.   #------------------------------------------------------------
  153.   # 实施技艺增长的动画变化?
  154.   USE_S_ANIME = true
  155.   
  156.   # 設定例
  157.   # 1号角色,57号特技,lv5,lv10动画变化
  158.   # 2号角色,Lv.11动画变化
  159.   S_ANIME[999] = {1=>[[5, 69], [10, 70]], 2=>[[11, 70]]}

  160.   #-------------------------------------------------------------------
  161.   # 属性変化/状态変化
  162.   #------------------------------------------------------------------
  163.   # 属性変化
  164.   # S_ELEMENT[技艺ID] = {角色ID=>{水平=>[属性ID,属性ID…]}, ・・・・}
  165.   S_ELEMENT[999] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}

  166.   # 状态変化+
  167.   # S_STATE_P[技艺ID] = {角色ID=>{水平=>[属性ID,属性ID…]}, ・・・・}
  168.   S_STATE_P[999] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}

  169.   # 状态変化-
  170.   # S_STATE_N[技艺ID] = {角色ID=>{水平=>[属性ID,属性ID…]}, ・・・・}
  171.   S_STATE_N[999] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}

  172. #==================================================================
  173. # □ 自定义内容终了
  174. #==================================================================
  175. end


  176. class Game_Actor
  177.   include Skill_updata
  178.   attr_accessor   :skill_use      # スキル使用回数
  179.   attr_accessor   :skill_level    # スキルレベル
  180.   attr_accessor   :skill_power    # スキル威力更新値
  181.   attr_accessor   :skill_sp_cost  # スキルSP消費更新値
  182.   attr_accessor   :skill_hit      # スキル命中率
  183.   attr_accessor   :skill_up       # レベルアップフラグ
  184.   attr_accessor   :skill_list     # スキルEXPリスト
  185.   alias skill_updata_init setup
  186.   def setup(actor_id)
  187.     skill_updata_init(actor_id)
  188.     @skill_use = []
  189.     @skill_level = []
  190.     @skill_power = []
  191.     @skill_sp_cost = []
  192.     @skill_hit = []
  193.     @skill_up = false
  194.     @skill_list = []
  195.     for id in 1...$data_skills.size
  196.       @skill_use[id] = 0
  197.       @skill_level[id] = 0
  198.       @skill_power[id] = $data_skills[id].power
  199.       @skill_sp_cost[id] = $data_skills[id].sp_cost
  200.       @skill_hit[id] = $data_skills[id].hit
  201.       @skill_list[id] = make_skill_list(id)
  202.     end
  203.   end

  204.   #-------------------------------------------------------------
  205.   # ● スキルEXP 計算
  206.   #------------------------------------------------------------
  207.   def make_skill_list(skill_id)
  208.     interval = S_INTER[skill_id]
  209.     up_interval = ( (interval != nil and interval[@actor_id] != nil) ? interval[@actor_id] : UPDATA_INTERVAL )
  210.     slope = S_SLOPE[skill_id]
  211.     up_slope = ( (slope != nil and slope[@actor_id] != nil) ? slope[@actor_id] : 1 )
  212.     limit = S_LEVEL[skill_id]
  213.     limit_lv = ( (limit != nil and limit[@actor_id] != nil) ? limit[@actor_id] : LEVEL_LIMIT )
  214.     list = []
  215.     list[0] = 0
  216.     for lv in 1...limit_lv+1
  217.       exp = 0
  218.       case SKILL_PATTERN
  219.       when 0
  220.         exp = up_interval * lv
  221.       when 1
  222.         exp = list[lv-1] + up_slope * lv + up_interval
  223.       end
  224.       list[lv] = exp.truncate
  225.     end
  226.     return list
  227.   end
  228. end


  229. class Game_Battler
  230.   include Skill_updata
  231.   #-----------------------------------------------------------------
  232.   # ● スキルの効果適用
  233.   #     user  : スキルの使用者 (バトラー)
  234.   #     skill : スキル
  235.   #-------------------------------------------------------------
  236.   alias skill_effect_update skill_effect
  237.   def skill_effect(user, skill)
  238.     up_flag = false
  239.     if user.is_a?(Game_Actor) and ($scene.is_a?(Scene_Battle) or MENU_COUNT)
  240.       skill_update_main(user, skill)
  241.       skill_base = skill.dup
  242.       # 威力上昇
  243.       if SKILL_MIGHT_UP
  244.         skill.power = user.skill_power[skill.id]
  245.       end
  246.       # 命中率上昇
  247.       if SKILL_HIT_UP
  248.         skill.hit = user.skill_hit[skill.id]
  249.       end
  250.       # 属性変化
  251.       if ELEMENT_CHANGE and S_ELEMENT != []
  252.         ele1 = S_ELEMENT[skill.id]
  253.         if ele1 != nil and ele1[user.id] != nil
  254.           ele2 = ele1[user.id]
  255.           if ele2 != [] and ele2[user.skill_level[skill.id]] != nil
  256.             skill.element_set = ele2[user.skill_level[skill.id]]
  257.           end
  258.         end
  259.       end
  260.       # ステート変化
  261.       if STATE_CHANGE
  262.         if S_STATE_P != []
  263.           pst1 = S_STATE_P[skill.id]
  264.           if pst1 != nil and pst1[user.id] != nil
  265.             pst2 = pst1[user.id]
  266.             if pst2 != nil and pst2[user.skill_level[skill.id]] != nil
  267.               skill.plus_state_set = pst2[user.skill_level[skill.id]]
  268. #              p skill.plus_state_set
  269.             end
  270.           end
  271.         end
  272.         if S_STATE_N != []
  273.           nst1 = S_STATE_N[skill.id]
  274.           if nst1 != nil and nst1[user.id] != nil
  275.             nst2 = nst1[user.id]
  276.             if nst1 != nil and nst2[user.skill_level[skill.id]] != nil
  277.               skill.minus_state_set = nst2[user.skill_level[skill.id]]
  278.             end
  279.           end
  280.         end
  281.       end
  282.       up_flag = true
  283.     end
  284.     ret = skill_effect_update(user, skill)    # 原物
  285.     if up_flag
  286.       skill = skill_base
  287.       # Miss時には後戻し
  288.       if self.damage == "Miss"
  289.         skill_use_recount(user, skill)
  290.       end
  291.     end
  292.     return ret
  293.   end
  294.   
  295.   #------------------------------------------------------------
  296.   # ● スキルアップデータメイン
  297.   #-------------------------------------------------------------
  298.   def skill_update_main(actor, skill)
  299.     # スキル使用回数のカウント
  300.     actor.skill_use[skill.id] += 1
  301.     # リミット取得
  302.     limit = S_LEVEL[skill.id]
  303.     s_limit = ( (limit != nil and limit[actor.id] != nil) ? limit[actor.id] : LEVEL_LIMIT)
  304.     # 書き換え限界到達
  305.     if s_limit == false or actor.skill_level[skill.id] < s_limit
  306.       # レベルアップ間隔取得
  307.       interval = actor.skill_list[skill.id]
  308.       # 書き換え回数到達
  309.       if actor.skill_use[skill.id] == interval[actor.skill_level[skill.id]+1]
  310.         # スキルレベル上昇
  311.         actor.skill_level[skill.id] += 1
  312.         actor.skill_up = true
  313.         # 威力上昇 = 有効
  314.         if SKILL_MIGHT_UP
  315.           might = S_MIGHT[skill.id]
  316.           might_rate = ((might != nil and might[actor.id] != nil) ? might[actor.id] : MIGHT_RATE)
  317.           # 補正値更新
  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.         # SP消費減少 = 有効
  322.         if SP_COST_DOWN
  323.           cost = S_COST[skill.id]
  324.           cost_rate = ((cost != nil and cost[actor.id] != nil) ? cost[actor.id] : COST_RATE)
  325.           actor.skill_sp_cost[skill.id] -= skill.sp_cost * cost_rate / 100
  326.           actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
  327.           # SP消費が0以下はありえない
  328.           if actor.skill_sp_cost[skill.id] < 0
  329.             actor.skill_sp_cost[skill.id] = 0
  330.           end
  331.         end
  332.         # 命中率上昇 = 有効
  333.         if SKILL_HIT_UP
  334.           hit = S_HIT[skill.id]
  335.           hit_rate = ((hit != nil and hit[actor.id] != nil) ? hit[actor.id] : HIT_RATE)
  336.           actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
  337.           actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
  338.           # 100以上はありえない
  339.           if actor.skill_hit[skill.id] > 100
  340.             actor.skill_hit[skill.id] = 100
  341.           end
  342.         end
  343.       end
  344.     end
  345.   end
  346.   
  347.   #---------------------------------------------------------
  348.   # ● 再カウント
  349.   #------------------------------------------------------
  350.   def skill_use_recount(actor, skill)
  351.     if actor.skill_up
  352.       actor.skill_level[skill.id] -= 1
  353.       # 威力を再計算
  354.       if SKILL_MIGHT_UP
  355.         actor.skill_power[skill.id] = skill.power
  356.         might = S_MIGHT[skill.id]
  357.         might_rate = ((might != nil and might[actor.id] != nil) ? might[actor.id] : MIGHT_RATE)
  358.         for i in 1...actor.skill_level[skill.id]
  359.           actor.skill_power[skill.id] += skill.power * might_rate / 100
  360.           actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
  361.         end
  362.       end
  363.       # SP消費再計算
  364.       if SP_COST_DOWN
  365.         actor.skill_sp_cost[skill.id] = skill.sp_cost
  366.         cost = S_COST[skill.id]
  367.         cost_rate = ((cost != nil and cost[actor.id] != nil) ? cost[actor.id] : COST_RATE)
  368.         for i in 1...actor.skill_level[skill.id]
  369.           actor.skill_sp_cost[skill.id] -= skill.sp_cost * cost_rate / 100
  370.           actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
  371.         end
  372.         # SP消費が0以下はありえない
  373.         if actor.skill_sp_cost[skill.id] < 0
  374.           actor.skill_sp_cost[skill.id] = 0
  375.         end
  376.       end
  377.       # 命中率再計算
  378.       if SKILL_HIT_UP
  379.         actor.skill_hit[skill.id] = skill.hit
  380.         hit = S_HIT[skill.id]
  381.         hit_rate = ((hit != nil and hit[actor.id] != nil) ? hit[actor.id] : HIT_RATE)
  382.         for i in 1...actor.skill_level[skill.id]
  383.           actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
  384.           actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
  385.         end
  386.         # 100以上はありえない
  387.         if actor.skill_hit[skill.id] > 100
  388.           actor.skill_hit[skill.id] = 100
  389.         end
  390.       end
  391.       actor.skill_up = false
  392.     end
  393.     actor.skill_use[skill.id] -= 1
  394.   end
  395. end

  396. #=================================================================
  397. # スキル成長によるアニメーション変化
  398. #=================================================================
  399. class Scene_Battle
  400.   include Skill_updata
  401.   #--------------------------------------------------------------
  402.   # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
  403.   #-----------------------------------------------------------
  404.   alias update_phase4_step4_skillup update_phase4_step4
  405.   def update_phase4_step4
  406.     update_phase4_step4_skillup
  407.     if @active_battler.is_a?(Game_Actor) and USE_S_ANIME
  408.       s_anime = S_ANIME[@skill.id]
  409.       # 設定がないなら無視
  410.       if s_anime != nil and s_anime[@active_battler.id] != nil
  411.         s_anime_set = s_anime[@active_battler.id]
  412.         for i in 0...s_anime_set.size
  413.           s_anime_def = s_anime_set[i]
  414.           # 規定レベル以上
  415.           if @active_battler.skill_level[@skill.id] >= s_anime_def[0]
  416.             # 対象側アニメーション
  417.             for target in @target_battlers
  418.               target.animation_id = s_anime_def[1]
  419.             end
  420.           end
  421.         end
  422.       end
  423.     end
  424.   end
  425. end

  426. #=================================================================
  427. # 以下、レベルアップ表示部分(レベルアップ表示がいらないなら消してもOK)
  428. #=================================================================
  429. class Scene_Battle
  430.   include Skill_updata
  431.   if SHOW_SKILL_LV_UP
  432.   #----------------------------------------------------------
  433.   # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  434.   #----------------------------------------------------------
  435.   alias update_phase4_step2_skillup update_phase4_step2
  436.   def update_phase4_step2
  437.     if @active_battler.is_a?(Game_Actor)
  438.       @active_battler.skill_up = false
  439.     end
  440.     @skillup = false
  441.     update_phase4_step2_skillup   # 原物
  442.   end

  443.   #-------------------------------------------------------------
  444.   # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
  445.   #-----------------------------------------------------------
  446.   alias update_phase4_step3_skillup update_phase4_step3
  447.   def update_phase4_step3
  448.     if @active_battler.is_a?(Game_Actor) and @active_battler.skill_up != false
  449.       @skillup = true
  450.       @skill_up_window = Window_Skillup.new(@active_battler)
  451.       if SKILLUP_SE != nil
  452.         Audio.se_play("Audio/SE/" + SKILLUP_SE)
  453.         sleep(0.1)
  454.       end
  455.     end
  456.     update_phase4_step3_skillup
  457.   end

  458.   #--------------------------------------------------------------
  459.   # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
  460.   #--------------------------------------------------------------
  461.   alias update_phase4_step5_skillup update_phase4_step5
  462.   def update_phase4_step5
  463.     if @active_battler.is_a?(Game_Actor) and @skillup
  464.       @skill_up_window.dispose
  465.       @active_battler.skill_up = false
  466.       @skillup = false
  467.     end
  468.     update_phase4_step5_skillup     # 原物
  469.   end

  470.   #---------------------------------------------------------------
  471.   # ● フレーム更新
  472.   #----------------------------------------------------------------
  473.   alias update_skillup update
  474.   def update
  475.     if @active_battler.is_a?(Game_Actor) and @active_battler.skill_up and @skillup
  476.       @skill_up_window.contents_opacity -= 4
  477.     end
  478.     update_skillup              # 原物
  479.   end
  480.   end # if SHOW_SKILL_LV_UP
  481. end

  482. class Window_Skillup < Window_Base
  483.   #--------------------------------------------------------------
  484.   # ● オブジェクト初期化
  485.   #     actor : アクター
  486.   #-------------------------------------------------------------
  487.   def initialize(actor)
  488.     super(actor.screen_x-160, 260, 210, 64)
  489.     self.contents = Bitmap.new(width - 32, height - 32)
  490.     self.opacity = 190
  491.     self.contents.font.color = Color.new(255, 255, 0)
  492.     self.contents.draw_text(15, 0, 160, 32, "你有武功升级了!")
  493.   end
  494. end



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

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

  606. class Scene_Battle
  607.   include Skill_updata
  608.   #------------------------------------------------------
  609.   # ● スキルアクション 結果作成
  610.   #-------------------------------------------------------
  611.   alias make_skill_action_result_skill_update make_skill_action_result
  612.   def make_skill_action_result
  613.     make_skill_action_result_skill_update
  614.     # SP 消費
  615.     if SP_COST_DOWN and @active_battler.is_a?(Game_Actor)
  616.       @active_battler.sp += @skill.sp_cost
  617.       @active_battler.sp -= @active_battler.skill_sp_cost[@skill.id]
  618.     end
  619.   end
  620. end

  621. class Game_Battler
  622.   #--------------------------------------------------------
  623.   # ● スキルの使用可能判定
  624.   #     skill_id : スキル ID
  625.   #------------------------------------------------------
  626.   alias skill_update_can_use? skill_can_use?
  627.   def skill_can_use?(skill_id)
  628.     ret = skill_update_can_use?(skill_id)
  629.     if !ret and SP_COST_DOWN
  630.       # SP が足りない場合は使用不可となった?
  631.       if $data_skills[skill_id].sp_cost > self.sp
  632.         if self.is_a?(Game_Actor)
  633.           skill_sp_cost = self.skill_sp_cost[skill_id]
  634.           if skill_sp_cost < self.sp
  635.             ret = true
  636.           end
  637.         end
  638.       end
  639.     end
  640.     return ret
  641.   end
  642. end

  643. #===============================================================
  644. # イベントスクリプト操作
  645. #===============================================================
  646. class Interpreter
  647.   include Skill_updata
  648.   #-----------------------------------------------------------
  649.   # ● スキルレベル設定(レベルセット)
  650.   #     actor_id  :   アクターID
  651.   #     skill_id  :   スキルID
  652.   #     level     :   設定レベル
  653.   #-----------------------------------------------------------
  654.   def set_skill_level(actor_id, skill_id, level)
  655.     actor = $game_actors[actor_id]
  656.     skill = $data_skills[skill_id]
  657.     # リミット取得
  658.     limit = S_LEVEL[skill_id]
  659.     s_limit = ( (limit != nil and limit[actor.id] != nil) ? limit[actor.id] : LEVEL_LIMIT)
  660.     if level > s_limit or level < 0
  661.       return
  662.     end
  663.     # レベル
  664.     actor.skill_level[skill.id] = level
  665.     # 使用回数
  666.     use_list = actor.skill_list[skill.id]
  667.     actor.skill_use[skill.id] = use_list[level]
  668.     # 威力を再計算
  669.     if SKILL_MIGHT_UP
  670.       actor.skill_power[skill.id] = skill.power
  671.       might = S_MIGHT[skill.id]
  672.       might_rate = ((might != nil and might[actor.id] != nil) ? might[actor.id] : MIGHT_RATE)
  673.       for i in 0...level
  674.         actor.skill_power[skill.id] += skill.power * might_rate / 100
  675.         actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
  676.       end
  677.     end
  678.     # SP消費再計算
  679.     if SP_COST_DOWN
  680.       actor.skill_sp_cost[skill.id] = skill.sp_cost
  681.       cost = S_COST[skill.id]
  682.       cost_rate = ((cost != nil and cost[actor.id] != nil) ? cost[actor.id] : COST_RATE)
  683.       for i in 0...level
  684.         actor.skill_sp_cost[skill.id] -= skill.sp_cost * cost_rate / 100
  685.         actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
  686.       end
  687.       # SP消費が0以下はありえない
  688.       if actor.skill_sp_cost[skill.id] < 0
  689.         actor.skill_sp_cost[skill.id] = 0
  690.       end
  691.     end
  692.     # 命中率再計算
  693.     if SKILL_HIT_UP
  694.       actor.skill_hit[skill.id] = skill.hit
  695.       hit = S_HIT[skill.id]
  696.       hit_rate = ((hit != nil and hit[actor.id] != nil) ? hit[actor.id] : HIT_RATE)
  697.       for i in 0...level
  698.         actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
  699.         actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
  700.       end
  701.       # 100以上はありえない
  702.       if actor.skill_hit[skill.id] > 100
  703.         actor.skill_hit[skill.id] = 100
  704.       end
  705.     end
  706.   end
  707.   
  708.   #---------------------------------------------------------
  709.   # ● スキルレベル設定(レベルアップ)
  710.   #     actor_id  :   アクターID
  711.   #     skill_id  :   スキルID
  712.   #--------------------------------------------------------
  713.   def skill_level_up(actor_id, skill_id)
  714.     actor = $game_actors[actor_id]
  715.     set_skill_level(actor_id, skill_id, actor.skill_level[skill_id]+1)
  716.   end
  717.   
  718.   #-------------------------------------------------------
  719.   # ● スキルレベル設定(レベルダウン)
  720.   #     actor_id  :   アクターID
  721.   #     skill_id  :   スキルID
  722.   #--------------------------------------------------------
  723.   def skill_level_down(actor_id, skill_id)
  724.     actor = $game_actors[actor_id]
  725.     set_skill_level(actor_id, skill_id, actor.skill_level[skill_id]-1)
  726.   end
  727. end

  728. #==================================================================
  729. # 本脚本来自http://www.66rpg.com/,使用和转载请保留此信息
  730. #==================================================================

复制代码
山岚野人,快人快语,礼数不周,还望海涵....
回复 支持 反对

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
4
发表于 2016-6-8 14:20:52 | 只看该作者
有的脚本更新之后数据结构会有所改变,因此就的存档便废了,除非了解两个版本之间数据结构的不同才能写个脚本将存档内数据结构转换成新格式再重新存档,借此转换存档格式。
但如果新版本的脚本增加了一些新的数据,旧的存档根本不可能会存在这些数据,转换存档时只能捏造这些数据,这有很大的概率会对游戏产生一些不良影响,因此最好的解决方法是将那个存档砍了重炼
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
125
在线时间
171 小时
注册时间
2014-4-14
帖子
151
5
发表于 2016-6-11 08:38:42 | 只看该作者
你的脚本是不是插入的?插入的话就会有两个同形脚本,可能你修改的那个不是起作用那个脚本,插入脚本后要把原脚本删去,以免冲突。
Vanyogin
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 07:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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