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

Project1

 找回密码
 注册会员
搜索
楼主: 凌冰
打印 上一主题 下一主题

打坐系统v1.03[修正](更新)

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-4-11
帖子
42
21
发表于 2008-3-22 11:12:25 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
22
 楼主| 发表于 2008-3-22 19:07:38 | 只看该作者
以下引用六芒幽狐于2008-3-22 2:22:08的发言:

感谢楼主,辛苦拉~

好东西,非常喜欢~


指出两个BUG:

1.在66整合脚本的条件下使用,会出现许多问题
例如:无法修炼,程序出错等~

2.在一些情况下~

当打坐完毕后,按ESC退出打坐~

之后再按ESC就会退出游戏~

========================================================

还要辛苦楼主再改进一下~

非常期待能够完善~

在此对楼主的辛勤劳动表示感谢~

谢谢拉~

1、这个脚本毕竟是面向默认系统的,关于整合系统,我日后再改一下
2、默认系统好像没问题,应该是你用的脚本与此有冲突
不常在线,有事PM
回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
23
 楼主| 发表于 2008-3-29 04:02:47 | 只看该作者
提醒技术区斑竹,麻烦更新一下主站上的脚本
不常在线,有事PM
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

24
发表于 2008-3-29 05:38:28 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2007-12-22
帖子
73
25
发表于 2008-3-29 06:26:13 | 只看该作者
嘻嘻,其实我是希望,能够做成外挂类型的脚本~

就是那种零冲突的~

目前测试到的冲突脚本如下:

66基础整合脚本:
http://rpg.blue/web/DLPRO/soft/200510/66RPG.exe
(因为里面修改了一些内容,所以还是辛苦LZ下一下)

辛苦了,楼主加油~

期待着完美的打坐系统~

狐狸在此先行谢过拉~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
26
 楼主| 发表于 2008-3-29 21:37:34 | 只看该作者
原来只是少些了一句dispose,不过这个错误还真不好找,汗死{/gg}
主题帖已更新,顺便说一句,66整合系统和本脚本并没有直接冲突,而是本脚本的辅助脚本,技能升级脚本与RTAB有冲突,附上RTAB版的技能升级脚本


  1. #=====================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #====================================================================


  4. #====================================================================
  5. # ■ スキルアップデート   Ver. 4.4.0                     by Claimh
  6. #---------------------------------------------------------------
  7. #     スキルごとにレベル制を導入する
  8. #     戦闘中にスキルを使用するほど、威力上昇、消費SP減少、命中率上昇
  9. #==============================================================
  10. #==============================================================================
  11. #RTAB版 Amended By 凌冰
  12. #==============================================================================
  13. module Skill_updata
  14.   S_MIGHT = []
  15.   S_COST = []
  16.   S_HIT = []
  17.   S_LEVEL = []
  18.   S_INTER = []
  19.   S_SLOPE = []
  20.   S_ANIME = []
  21.   S_ELEMENT = []
  22.   S_STATE_P = []
  23.   S_STATE_N = []
  24. #=============================================================
  25. # □ 自定义内容
  26. #==============================================================
  27.   # 威力上升使用true/false
  28.   SKILL_MIGHT_UP = true
  29.   
  30.   # SP消耗减少使用true/false
  31.   SP_COST_DOWN = true      
  32.   
  33.   # 命中率上升使用true/false
  34.   SKILL_HIT_UP = true      
  35.   
  36.   # 属性变化的使用true/false
  37.   ELEMENT_CHANGE = true   
  38.   
  39.   # 状态变化的使用true/false
  40.   STATE_CHANGE = true
  41.   
  42.   # 显示特技等级上升true/false
  43.   SHOW_SKILL_LV_UP = true
  44.   
  45.   # 等级上升的声效,不用的时候就=nil
  46.   SKILLUP_SE = "056-Right02"
  47.   
  48.   # 菜单使用计数true/false
  49.   MENU_COUNT = false

  50.   # 升级所需次数
  51.   UPDATA_INTERVAL = 10
  52.   
  53.   # 等级上限
  54.   LEVEL_LIMIT = 20

  55.   # 威力上升率(%%)
  56.   MIGHT_RATE = 5
  57.   
  58.   # SP消耗减少率(%)
  59.   COST_RATE = 3
  60.   
  61.   # 命中上升率(%)
  62.   HIT_RATE = 10
  63.   UPDATA_SLOP = 10
  64.   #-------------------------------------------------------------
  65.   # 特别技能的详细设定,57和61号特技分别是十字斩和扫荡,大家最熟悉的两个招数
  66.   #----------------------------------------------------------------

  67.   # 界限水平
  68.   # S_LEVEL[技艺ID]=[角色ID=>界限,…]
  69. #  S_LEVEL[57] = {1=>18, 2=>12, 3=>5, 4=>12, 5=>12, 6=>12, 7=>12, 8=>12}
  70. #  S_LEVEL[61] = {1=>12, 2=>18, 3=>15, 4=>12, 5=>12, 6=>12, 7=>12, 8=>12}
  71.      
  72.   # 技艺&actor威力上升率
  73.   # S_MIGHT[技艺ID]=[角色ID=>威力上升率,…]
  74. #  S_MIGHT[57] = {1=>8, 2=>2, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}
  75. #  S_MIGHT[61] = {1=>2, 2=>8, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}

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

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

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

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

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

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

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

  124. #==================================================================
  125. # □ 自定义内容终了
  126. #==================================================================
  127. end


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

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


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

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

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

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

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

  449.   #---------------------------------------------------------------
  450.   # ● フレーム更新
  451.   #----------------------------------------------------------------
  452.   alias update_skillup update
  453.   def update
  454.     if @active_battler.is_a?(Game_Actor) and @active_battler.skill_up and @skillup
  455.       @skill_up_window.contents_opacity -= 4
  456.     end
  457.     update_skillup              # 原物
  458.   end
  459.   end # if SHOW_SKILL_LV_UP
  460. end

  461. class Window_Skillup < Window_Base
  462.   #--------------------------------------------------------------
  463.   # ● オブジェクト初期化
  464.   #     actor : アクター
  465.   #-------------------------------------------------------------
  466.   def initialize(actor)
  467.     super(actor.screen_x-140, 260, 250, 64)
  468.     self.contents = Bitmap.new(width - 32, height - 32)
  469.     self.opacity = 0
  470.     self.contents.font.color = Color.new(255, 64, 0)
  471.     self.contents.draw_text(80, 0, 150, 32, "Skill LvUp!")
  472.   end
  473. end



  474. #====================================================================
  475. # 以下、再定義部分を含む(SP消費減少の機能がいらないなら消してもOK)
  476. #====================================================================
  477. class Window_Skill < Window_Selectable
  478.   #----------------------------------------------------------------
  479.   # ● 項目の描画
  480.   #     index : 項目番号
  481.   #-----------------------------------------------------------------
  482.   def draw_item(index)
  483.     skill = @data[index]
  484.     if @actor.skill_can_use?(skill.id)
  485.       self.contents.font.color = normal_color
  486.     else
  487.       self.contents.font.color = disabled_color
  488.     end
  489.     x = 4 + index % 2 * (288 + 32)
  490.     y = index / 2 * 32
  491.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  492.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  493.     bitmap = RPG::Cache.icon(skill.icon_name)
  494.     opacity = self.contents.font.color == normal_color ? 255 : 128
  495.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  496. #-修正-----
  497.     @actor.skill_level[skill.id] = 0 if @actor.skill_level[skill.id] == nil
  498.     name_level = skill.name + "(Lv" + @actor.skill_level[skill.id].to_s + ")"
  499.     self.contents.draw_text(x + 28, y, 204, 32, name_level, 0)
  500.     @actor.skill_sp_cost[skill.id] = skill.sp_cost if @actor.skill_sp_cost[skill.id] == nil
  501.     self.contents.draw_text(x + 232, y, 48, 32, @actor.skill_sp_cost[skill.id].to_s, 2)
  502. #----------
  503.   end
  504. end

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

  585. class Scene_Battle
  586.   include Skill_updata
  587.   #------------------------------------------------------
  588.   # ● スキルアクション 結果作成
  589.   #-------------------------------------------------------
  590.   alias make_skill_action_result_skill_update make_skill_action_result
  591.   def make_skill_action_result(battler)
  592.     make_skill_action_result_skill_update(battler)
  593.     # SP 消費
  594.     if SP_COST_DOWN and @active_battler.is_a?(Game_Actor)
  595.       @active_battler.sp += @skill.sp_cost
  596.       @active_battler.sp -= @active_battler.skill_sp_cost[@skill.id]
  597.     end
  598.   end
  599. end

  600. class Game_Battler
  601.   #--------------------------------------------------------
  602.   # ● スキルの使用可能判定
  603.   #     skill_id : スキル ID
  604.   #------------------------------------------------------
  605.   alias skill_update_can_use? skill_can_use?
  606.   def skill_can_use?(skill_id)
  607.     ret = skill_update_can_use?(skill_id)
  608.     if !ret and SP_COST_DOWN
  609.       # SP が足りない場合は使用不可となった?
  610.       if $data_skills[skill_id].sp_cost > self.sp
  611.         if self.is_a?(Game_Actor)
  612.           skill_sp_cost = self.skill_sp_cost[skill_id]
  613.           if skill_sp_cost < self.sp
  614.             ret = true
  615.           end
  616.         end
  617.       end
  618.     end
  619.     return ret
  620.   end
  621. end

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

  710. #==================================================================
  711. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  712. #==================================================================
复制代码
不常在线,有事PM
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2007-12-22
帖子
73
27
发表于 2008-3-30 18:29:23 | 只看该作者
呵呵,问题解决拉~

辛苦楼主拉,强烈支持~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
231 小时
注册时间
2007-12-17
帖子
541
28
发表于 2008-3-31 16:51:37 | 只看该作者
之前我已经用了特技熟练度升级脚本,是根据击中敌人次数升级特技的,如果在已有的基础上添加这个打坐系统,会有冲突吗?原来的特技熟练度升级脚本需要改动哪里?也就是说某些特技是击中敌人升级的,而某些特技是需要打坐升级的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
29
 楼主| 发表于 2008-3-31 20:56:46 | 只看该作者
以下引用stella于2008-3-31 8:51:37的发言:

之前我已经用了特技熟练度升级脚本,是根据击中敌人次数升级特技的,如果在已有的基础上添加这个打坐系统,会有冲突吗?原来的特技熟练度升级脚本需要改动哪里?也就是说某些特技是击中敌人升级的,而某些特技是需要打坐升级的

原来的特技熟练度升级脚本不需要更改,你只需要再添一个RTAB版血槽
只要勾上打坐这个属性,该特技的默认升级方式就被屏蔽掉,只能打坐升级
而不勾的不会受影响,还是默认的升级方式
不常在线,有事PM
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
231 小时
注册时间
2007-12-17
帖子
541
30
发表于 2008-3-31 21:32:31 | 只看该作者
那么特别技能的详细设定还有没有用?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-4-5 02:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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