Project1

标题: 技术 技术求教I [打印本页]

作者: bksy    时间: 2014-3-22 14:11
标题: 技术 技术求教I
问题会有的,大神们稍安勿躁。。。
1.如何使装备附带某技能
2.如何在战斗后回血
还有的。。。暂时没遇到,迟早都会来的
作者: 芯☆淡茹水    时间: 2014-3-24 18:55
以上功能网站上都有。
如果网站上找不到的,大家帮忙做一个,那也不算什么。
但网站上本来就有,而且很容易找到,却还要,,,,。那就是 100% 伸手党了。
作者: guoyq1988    时间: 2014-3-24 19:08
战斗结束回复
  1. #战斗后定量恢复HP/MP
  2. #收集,修改 BY 玄天
  3. #原作者:日站。其版权由其原作者拥有,任何人不得非法使用。


  4. #HP回復量(百分率)
  5. HP_DAMAGE_POINT = 10

  6. #SP回復量(百分率)
  7. SP_DAMAGE_POINT = 10

  8. #HP分散量 0为不散乱(100回復量、分散度15 = 85~115)
  9. HP_DAMAGE_UNEVEN = 0

  10. #SP分散量 0为不散乱(100回復量、分散度15 = 85~115)
  11. SP_DAMAGE_UNEVEN = 0

  12. #是否演示动画。false为不使用;true为使用
  13. ANIMATION_POP = true

  14. #动画号码,即资料库『动画』中的动画代码
  15. ANIMATION_ID = 15

  16. #损坏表示
  17. DAMAGE_POP = true


  18. #========================下面基本不用修改==============================


  19. #==============================================================================
  20. # ■ Game_Battler (分割定義 3)
  21. #------------------------------------------------------------------------------
  22. #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
  23. # スのスーパークラスとして使用されます。
  24. #==============================================================================

  25. class Game_Battler
  26.   #--------------------------------------------------------------------------
  27.   # ● 戦闘後HP回復
  28.   #--------------------------------------------------------------------------
  29.   def hp_recover
  30.     # SP回復量を設定
  31.     self.damage = self.maxhp * SP_DAMAGE_POINT / 100
  32.     if SP_DAMAGE_UNEVEN > 0
  33.       amp = [self.damage.abs * SP_DAMAGE_UNEVEN / 100, 1].max
  34.       self.damage += rand(amp+1) + rand(amp+1) - amp
  35.     end
  36.     self.sp += self.damage
  37.     # HP回復量を設定
  38.     self.damage = self.maxhp * HP_DAMAGE_POINT / 100
  39.     if HP_DAMAGE_UNEVEN > 0
  40.       amp = [self.damage.abs * HP_DAMAGE_UNEVEN / 100, 1].max
  41.       self.damage += rand(amp+1) + rand(amp+1) - amp
  42.     end
  43.     self.damage = -self.damage
  44.     # HP に回復量を加算
  45.     self.hp -= self.damage
  46.     # メソッド終了
  47.     return
  48.   end
  49. end

  50. #-------------------------------------------------------------------------------

  51. #==============================================================================
  52. # ■ Scene_Battle (分割定義 2)
  53. #------------------------------------------------------------------------------
  54. #  バトル画面の処理を行うクラスです。
  55. #==============================================================================

  56. class Scene_Battle
  57.   #--------------------------------------------------------------------------
  58.   # ● アフターバトルフェーズ開始
  59.   #--------------------------------------------------------------------------
  60.   alias start_phase5_battler_recover start_phase5
  61.   def start_phase5
  62.     for i in 0...$game_party.actors.size
  63.       actor = $game_party.actors[i]
  64.       next if actor.dead?
  65.       actor.hp_recover
  66.       if DAMAGE_POP
  67.         actor.damage_pop = true
  68.       end
  69.       if ANIMATION_POP
  70.         actor.animation_id = ANIMATION_ID
  71.       end
  72.     end
  73.     # 元の処理を実行
  74.     start_phase5_battler_recover
  75.   end
  76. end
复制代码
装备绑定技能


  1. #219-249已修改



  2. #==============================================================================
  3. # ■ Scene_Equip
  4. #------------------------------------------------------------------------------
  5. #  处理装备画面的类。
  6. #==============================================================================

  7. class Scene_Equip
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #     actor_index : 角色索引
  11.   #     equip_index : 装备索引
  12.   #--------------------------------------------------------------------------
  13.   def initialize(actor_index = 0, equip_index = 0)
  14.     @actor_index = actor_index
  15.     @equip_index = equip_index
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 主处理
  19.   #--------------------------------------------------------------------------
  20.   def main
  21.     # 获取角色
  22.     [url=home.php?mod=space&uid=95897]@actor[/url] = $game_party.actors[@actor_index]
  23.     # 生成窗口
  24.     @help_window = Window_Help.new
  25.     @left_window = Window_EquipLeft.new(@actor)
  26.     @right_window = Window_EquipRight.new(@actor)
  27.     @item_window1 = Window_EquipItem.new(@actor, 0)
  28.     @item_window2 = Window_EquipItem.new(@actor, 1)
  29.     @item_window3 = Window_EquipItem.new(@actor, 2)
  30.     @item_window4 = Window_EquipItem.new(@actor, 3)
  31.     @item_window5 = Window_EquipItem.new(@actor, 4)
  32.     # 关联帮助窗口
  33.     @right_window.help_window = @help_window
  34.     @item_window1.help_window = @help_window
  35.     @item_window2.help_window = @help_window
  36.     @item_window3.help_window = @help_window
  37.     @item_window4.help_window = @help_window
  38.     @item_window5.help_window = @help_window
  39.     # 设置光标位置
  40.     @right_window.index = @equip_index
  41.     refresh
  42.     # 执行过渡
  43.     Graphics.transition
  44.     # 主循环
  45.     loop do
  46.       # 刷新游戏画面
  47.       Graphics.update
  48.       # 刷新输入信息
  49.       Input.update
  50.       # 刷新画面
  51.       update
  52.       # 如果画面切换的话的就中断循环
  53.       if $scene != self
  54.         break
  55.       end
  56.     end
  57.     # 准备过渡
  58.     Graphics.freeze
  59.     # 释放窗口
  60.     @help_window.dispose
  61.     @left_window.dispose
  62.     @right_window.dispose
  63.     @item_window1.dispose
  64.     @item_window2.dispose
  65.     @item_window3.dispose
  66.     @item_window4.dispose
  67.     @item_window5.dispose
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 刷新
  71.   #--------------------------------------------------------------------------
  72.   def refresh
  73.     # 设置物品窗口的可视状态
  74.     @item_window1.visible = (@right_window.index == 0)
  75.     @item_window2.visible = (@right_window.index == 1)
  76.     @item_window3.visible = (@right_window.index == 2)
  77.     @item_window4.visible = (@right_window.index == 3)
  78.     @item_window5.visible = (@right_window.index == 4)
  79.     # 获取当前装备中的物品
  80.     item1 = @right_window.item
  81.     # 设置当前的物品窗口到 @item_window
  82.     case @right_window.index
  83.     when 0
  84.       @item_window = @item_window1
  85.     when 1
  86.       @item_window = @item_window2
  87.     when 2
  88.       @item_window = @item_window3
  89.     when 3
  90.       @item_window = @item_window4
  91.     when 4
  92.       @item_window = @item_window5
  93.     end
  94.     # 右窗口被激活的情况下
  95.     if @right_window.active
  96.       # 删除变更装备后的能力
  97.       @left_window.set_new_parameters(nil, nil, nil)
  98.     end
  99.     # 物品窗口被激活的情况下
  100.     if @item_window.active
  101.       # 获取现在选中的物品
  102.       item2 = @item_window.item
  103.       # 变更装备
  104.       last_hp = @actor.hp
  105.       last_sp = @actor.sp
  106.       @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
  107.       # 获取变更装备后的能力值
  108.       new_atk = @actor.atk
  109.       new_pdef = @actor.pdef
  110.       new_mdef = @actor.mdef
  111.       # 返回到装备
  112.       @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
  113.       @actor.hp = last_hp
  114.       @actor.sp = last_sp
  115.       # 描画左窗口
  116.       @left_window.set_new_parameters(new_atk, new_pdef, new_mdef)
  117.     end
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● 刷新画面
  121.   #--------------------------------------------------------------------------
  122.   def update
  123.     # 刷新窗口
  124.     @left_window.update
  125.     @right_window.update
  126.     @item_window.update
  127.     refresh
  128.     # 右侧窗口被激活的情况下: 调用 update_right
  129.     if @right_window.active
  130.       update_right
  131.       return
  132.     end
  133.     # 物品窗口被激活的情况下: 调用 update_item
  134.     if @item_window.active
  135.       update_item
  136.       return
  137.     end
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 刷新画面 (右侧窗口被激活的情况下)
  141.   #--------------------------------------------------------------------------
  142.   def update_right
  143.     # 按下 B 键的情况下
  144.     if Input.trigger?(Input::B)
  145.       # 演奏取消 SE
  146.       $game_system.se_play($data_system.cancel_se)
  147.       # 切换到菜单画面
  148.       $scene = Scene_Menu.new(2)
  149.       return
  150.     end
  151.     # 按下 C 键的情况下
  152.     if Input.trigger?(Input::C)
  153.       # 固定装备的情况下
  154.       if @actor.equip_fix?(@right_window.index)
  155.         # 演奏冻结 SE
  156.         $game_system.se_play($data_system.buzzer_se)
  157.         return
  158.       end
  159.       # 演奏确定 SE
  160.       $game_system.se_play($data_system.decision_se)
  161.       # 激活物品窗口
  162.       @right_window.active = false
  163.       @item_window.active = true
  164.       @item_window.index = 0
  165.       return
  166.     end
  167.     # 按下 R 键的情况下
  168.     if Input.trigger?(Input::R)
  169.       # 演奏光标 SE
  170.       $game_system.se_play($data_system.cursor_se)
  171.       # 移至下一位角色
  172.       @actor_index += 1
  173.       @actor_index %= $game_party.actors.size
  174.       # 切换到别的装备画面
  175.       $scene = Scene_Equip.new(@actor_index, @right_window.index)
  176.       return
  177.     end
  178.     # 按下 L 键的情况下
  179.     if Input.trigger?(Input::L)
  180.       # 演奏光标 SE
  181.       $game_system.se_play($data_system.cursor_se)
  182.       # 移至上一位角色
  183.       @actor_index += $game_party.actors.size - 1
  184.       @actor_index %= $game_party.actors.size
  185.       # 切换到别的装备画面
  186.       $scene = Scene_Equip.new(@actor_index, @right_window.index)
  187.       return
  188.     end
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 刷新画面 (物品窗口被激活的情况下)
  192.   #--------------------------------------------------------------------------
  193.   def update_item
  194.     # 按下 B 键的情况下
  195.     if Input.trigger?(Input::B)
  196.       # 演奏取消 SE
  197.       $game_system.se_play($data_system.cancel_se)
  198.       # 激活右侧窗口
  199.       @right_window.active = true
  200.       @item_window.active = false
  201.       @item_window.index = -1
  202.       return
  203.     end
  204.     # 按下 C 键的情况下
  205.     if Input.trigger?(Input::C)
  206.       # 演奏装备 SE
  207.       $game_system.se_play($data_system.equip_se)
  208.       # 获取物品窗口现在选择的装备数据
  209.       item = @item_window.item
  210.       # 变更装备
  211.       
  212.       
  213. ######################################################################
  214.       [url=home.php?mod=space&uid=79836]@jineng[/url] = $game_actors[@actor_index+1]
  215.       #获得人物
  216.       if @jineng.weapon_id == 1
  217.       #上面一行是更换装备前,判定该人物是否穿上的是特殊装备(即武器ID是否是1)
  218.       #武器ID:@jineng.weapon_id
  219.       #防具ID:@jineng.armor1_id,@jineng.armor2_id,@jineng.armor3_id,@jineng.armor4_id
  220.         @jineng.forget_skill(23)
  221.         #失去技能23
  222.       end
  223.       if @jineng.armor1_id == 1
  224.         @jineng.forget_skill(15)
  225.       end
  226.       @jineng = $game_actors[@actor_index+1]
  227.       #获得人物
  228.       if @jineng.weapon_id == 4
  229.       #上面一行是更换装备前,判定该人物是否穿上的是特殊装备(即武器ID是否是1)
  230.       #武器ID:@jineng.weapon_id
  231.       #防具ID:@jineng.armor1_id,@jineng.armor2_id,@jineng.armor3_id,@jineng.armor4_id
  232.         @jineng.forget_skill(12)
  233.         #失去技能23
  234.       end
  235.       @jineng = $game_actors[@actor_index+1]
  236.       #获得人物
  237.       if @jineng.weapon_id == 8
  238.       #上面一行是更换装备前,判定该人物是否穿上的是特殊装备(即武器ID是否是1)
  239.       #武器ID:@jineng.weapon_id
  240.       #防具ID:@jineng.armor1_id,@jineng.armor2_id,@jineng.armor3_id,@jineng.armor4_id
  241.         @jineng.forget_skill(21)
  242.         #失去技能23
  243.       end
  244. #————————————————————
  245. #下面一行是更换装备的脚本【原本就有的】
  246.       @actor.equip(@right_window.index, item == nil ? 0 : item.id)
  247. #-----------------------------------------
  248.       #更换完装备,判定该人物现在的装备是否是特殊装备
  249.       if @jineng.weapon_id == 1#同上
  250.         @jineng.learn_skill(23)#得到技能23
  251.       end
  252.       if @jineng.armor1_id == 1
  253.         @jineng.learn_skill(15)
  254.       end
  255.       if @jineng.weapon_id == 4#同上
  256.         @jineng.learn_skill(12)#得到技能23
  257.       end
  258.       if @jineng.weapon_id == 8#同上
  259.         @jineng.learn_skill(21)#得到技能23
  260.       end
  261.      

  262. #需要更多的特定装备就像上面一样在
  263. #@actor.equip(@right_window.index, item == nil ? 0 : item.id)
  264. #前面添加失去技能的判定,,,在后面添加得到技能的判定


  265. #######################################################################


  266.       # 激活右侧窗口
  267.       @right_window.active = true
  268.       @item_window.active = false
  269.       @item_window.index = -1
  270.       # 再生成右侧窗口、物品窗口的内容
  271.       @right_window.refresh
  272.       @item_window.refresh
  273.       return
  274.     end
  275.   end
  276. end
复制代码
这些都可以搜到的。。。。
⊙﹏⊙b汗




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1