Project1

标题: 如何制作枪械与弹药的联系? [打印本页]

作者: MCCF    时间: 2018-5-27 15:42
标题: 如何制作枪械与弹药的联系?
最近在制作一个生存游戏,需要设置枪械普通攻击时消耗弹药,没有弹药时枪械无效的效果。
其实就是说:
可是武器不能设置公共事件,也不知道怎么做没有弹药枪械无效的效果,所以希望各位dalao不吝赐教,谢谢!

作者: MCCF    时间: 2018-5-27 18:50
标题: RE: 如何制作枪械与弹药的联系?
没人吗其实用不同装备对应不同攻击技能的脚本似乎也可以做到
只知道MV有这玩意儿,谁有VA版本的吗

作者: jgf1000    时间: 2018-5-28 10:09
本帖最后由 jgf1000 于 2018-5-29 18:26 编辑

我的也是类似的设定,不过是mv版本的= =
每个武器绑定一个技能,利用插件让技能消耗弹药(物品),以及在物品数量为0时技能不可用。
作者: MCCF    时间: 2018-5-28 19:58
jgf1000 发表于 2018-5-28 10:09
我的也是类似的设定,不过是mv版本的= =
每个武器绑定一个技能,利用插件让技能消耗弹药(物品),已经在物 ...

其实我也有一段时间用过mv。看到过mv自带个的这个插件,但是我不知道va有没有。
作者: 梦想家大魔王    时间: 2018-5-28 22:50
你只需要能实现以下两个功能的脚本:
1. 武器绑定技能替换默认1号技能;
2. 技能消耗指定物品。
不论哪个RM版本,只要能找到这样的两个扩展脚本或者插件,就可以达成你的需求。
作者: gamecapt    时间: 2018-5-29 10:56
公共事件试试
作者: soulsaga    时间: 2018-5-29 13:38
https://rpg.blue/thread-226207-1-1.html
作者: MCCF    时间: 2018-5-29 20:39
soulsaga 发表于 2018-5-29 13:38
https://rpg.blue/thread-226207-1-1.html

感谢,但是有无方法能让攻击的技能在装备枪械的时候更换为其他?这样会更好。
作者: xxyzx    时间: 2018-5-30 20:28
武器备注栏输入<攻撃スキル X>就能把该武器的普攻技能变为X号技能
  1. #------------------------------------------------------------------------------
  2. #  通常攻撃 攻撃時スキル変更
  3. #    バージョン:1.0
  4. #    RGSS3 (RPGツクールVX ACE)
  5. #    作成者:project j
  6. #    配布元:http://jsgamesfactory.web.fc2.com/
  7. #
  8. #  使い方:武器のメモ欄に <攻撃スキル 数値(スキルID)> を記述
  9. #      例: <攻撃スキル 2> → スキルID:2のスキルを使用
  10. #      ※ またアクターコマンドの名称もスキル名に変更されます
  11. #
  12. #------------------------------------------------------------------------------

  13. #==============================================================================
  14. # ■ Game_Actor
  15. #------------------------------------------------------------------------------
  16. #  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
  17. # の内部で使用され、Game_Party クラス($game_party)からも参照されます。
  18. #==============================================================================

  19. class Game_Actor < Game_Battler
  20.   #--------------------------------------------------------------------------
  21.   # ● 通常攻撃のスキル ID を取得
  22.   #--------------------------------------------------------------------------
  23.   alias :jscript_attack_skill_id :attack_skill_id
  24.   def attack_skill_id
  25.     return set_attack_skill
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ○ 通常攻撃の効果範囲を設定
  29.   #--------------------------------------------------------------------------
  30.   def set_attack_skill
  31.     for equip in weapons.compact
  32.       equip.note.dup.gsub!(/<(?:攻撃スキル)[ ]*(\d+)>/i){ return $1.to_i }
  33.     end

  34.     return 1
  35.   end
  36. end

  37. #==============================================================================
  38. # ■ Game_Enemy
  39. #------------------------------------------------------------------------------
  40. #  敵キャラを扱うクラスです。このクラスは Game_Troop クラス($game_troop)の
  41. # 内部で使用されます。
  42. #==============================================================================

  43. class Game_Enemy < Game_Battler
  44.   #--------------------------------------------------------------------------
  45.   # ● 通常攻撃のスキル ID を取得
  46.   #--------------------------------------------------------------------------
  47.   alias :jsscript_attack_skill_id :attack_skill_id
  48.   def attack_skill_id
  49.     return set_attack_skill
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ○ 通常攻撃の効果範囲を設定
  53.   #--------------------------------------------------------------------------
  54.   def set_attack_skill
  55.     enemy_data = $data_enemies[@enemy_id]
  56.     enemy_data.note.dup.gsub!(/<(?:攻撃スキル)[ ]*(\d+)>/i){ return $1.to_i }

  57.     return 1
  58.   end
  59. end

  60. #==============================================================================
  61. # ■ Window_ActorCommand
  62. #------------------------------------------------------------------------------
  63. #  バトル画面で、アクターの行動を選択するウィンドウです。
  64. #==============================================================================
  65. class Window_ActorCommand < Window_Command
  66.   #--------------------------------------------------------------------------
  67.   # ● [再]攻撃コマンドをリストに追加
  68.   #--------------------------------------------------------------------------
  69.   def add_attack_command
  70.     command_name = $data_skills[@actor.attack_skill_id].name
  71.     add_command(command_name, :attack, @actor.attack_usable?)
  72.   end
  73. end

  74. #==============================================================================
  75. # ■ Scene_Battle
  76. #------------------------------------------------------------------------------
  77. #  バトル画面の処理を行うクラスです。
  78. #==============================================================================
  79. class Scene_Battle < Scene_Base
  80.   #--------------------------------------------------------------------------
  81.   # ● 敵キャラ選択の開始
  82.   #--------------------------------------------------------------------------
  83.   alias :jsscript_attack_skill_select_enemy_selection :select_enemy_selection
  84.   def select_enemy_selection
  85.     action = BattleManager.actor.input

  86.     if action.attack?
  87.       # 対象選択不要
  88.       if !action.item.need_selection?
  89.         next_command
  90.         return
  91.       end
  92.       # 味方から選択
  93.       if action.item.for_friend?
  94.         select_actor_selection
  95.         return
  96.       end      
  97.     end
  98.    
  99.     # 敵から選択
  100.     jsscript_attack_skill_select_enemy_selection
  101.   end
  102. end
复制代码

作者: MCCF    时间: 2018-6-1 11:47
xxyzx 发表于 2018-5-30 20:28
武器备注栏输入就能把该武器的普攻技能变为X号技能

感谢!已解决
作者: MCCF    时间: 2018-6-2 12:41
呃……这些脚本都不互相兼容啊,只要普攻技能设置消耗物品,无论如何都会无效(即使拥有弹药),怎么办
作者: 真紅樂章    时间: 2018-6-2 20:45
武器不能设置公共事件但是技能可以喔


作者: MCCF    时间: 2018-6-4 22:22
真紅樂章 发表于 2018-6-2 20:45
武器不能设置公共事件但是技能可以喔

首先要感谢一下回复
然后并行处理事件是不会在战斗画面运行的,不过可以参考一下做成战斗事件;
不过这样就失去了战斗的自由,每回合只能攻击,怎样才能判定他下了什么指令?
作者: 真紅樂章    时间: 2018-6-5 12:52
MCCF 发表于 2018-6-4 22:22
首先要感谢一下回复
然后并行处理事件是不会在战斗画面运行的,不过可以参考一下做成战斗事件;
不过这样 ...

嘛小紅不是都说了是用技能了吗
技能效果里可以执行公共事件的说



顺便修改小许脚本来让纯事件技能效果不那麽奇怪好了
RUBY 代码复制
  1. class Window_BattleLog < Window_Selectable
  2.   #--------------------------------------------------------------------------
  3.   # ● 使用技能時跳過空白信息
  4.   #--------------------------------------------------------------------------
  5.   def display_use_item(subject, item)
  6.     if item.is_a?(RPG::Skill)
  7.       unless item.message1.empty?
  8.         add_text(subject.name + item.message1)
  9.       end
  10.       unless item.message2.empty?
  11.         wait
  12.         add_text(item.message2)
  13.       end
  14.     else
  15.       add_text(sprintf(Vocab::UseItem, subject.name, item.name))
  16.     end
  17.   end
  18. end
  19.  
  20. class Scene_Battle < Scene_Base
  21.   #--------------------------------------------------------------------------
  22.   # ● 取消行動前閃爍效果
  23.   #--------------------------------------------------------------------------
  24.   def execute_action
  25.     use_item
  26.     @log_window.wait_and_clear
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 技能訊息為空白時不顯示閃爍效果
  30.   #--------------------------------------------------------------------------
  31.   def use_item
  32.     item = @subject.current_action.item
  33.     if item.is_a?(RPG::Skill)
  34.       unless item.message1.empty?
  35.         @subject.sprite_effect_type = :whiten
  36.       end
  37.     end
  38.     @log_window.display_use_item(@subject, item)
  39.     @subject.use_item(item)
  40.     refresh_status
  41.     targets = @subject.current_action.make_targets.compact
  42.     show_animation(targets, item.animation_id)
  43.     targets.each {|target| item.repeats.times { invoke_item(target, item) } }
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 技能訊息為空白時不顯示訊息
  47.   #--------------------------------------------------------------------------
  48.   def apply_item_effects(target, item)
  49.     target.item_apply(@subject, item)
  50.     refresh_status
  51.     if item.is_a?(RPG::Skill)
  52.       unless item.message1.empty?
  53.         @log_window.display_action_results(target, item)
  54.       end
  55.     end
  56.   end
  57. end


Project1.zip (1.54 MB, 下载次数: 53)
作者: MCCF    时间: 2018-6-5 22:23
真紅樂章 发表于 2018-6-5 12:52
嘛小紅不是都说了是用技能了吗
技能效果里可以执行公共事件的说

非常感谢!
作者: suixinsua    时间: 2018-7-2 12:37
我用一个方法解决了这个问题!
用个一个公共事件。把公共事件分别放到1号技能攻击上和敌群事件里,判定为0合回。
公共事件是分歧角色是否装备枪支。
变量=物品ID数量。
分歧变量=>1
物品ID -= 1

子弟不足
增减装备 角色 = 【无】
结束
这样是,在角色装备枪支时,普通攻击则消耗物品ID,不装备就不消耗。
没有子弹,角色就没有武器用。只能用拳头!




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