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

Project1

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

[原创发布] 自动普攻脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
180
在线时间
6 小时
注册时间
2014-2-23
帖子
1
跳转到指定楼层
1
发表于 前天 19:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 淡月流萤 于 2025-7-16 19:18 编辑

最近开始重温以前的老游戏,在刮痧过程中,总想着要是有一键攻击就好了。刚好前段时间RPG Maker喜加一了,研究了几天,连蒙带猜,整了个脚本,大致达到了预期的效果。

在战斗中选指令时,按 A 对应的键(键盘上默认是 Z),就开启自动普攻,选择下一个行动的敌人为目标(适用于CP战斗);
如果角色血量百分比低于指定值,就停止自动普攻。

RUBY 代码复制
  1. class Scene_Battle
  2.  
  3.   STOP_AUTO_HP = 10
  4.  
  5.   #--------------------------------------------------------------------------
  6.   # ● 刷新画面 (角色命令回合 : 基本命令)
  7.   #--------------------------------------------------------------------------
  8.   alias super_update_phase3_basic_command update_phase3_basic_command
  9.   def update_phase3_basic_command
  10.     # 按下 A 键的情况下
  11.     if Input.trigger?(Input::A)
  12.       # 演奏确定 SE
  13.       $game_system.se_play($data_system.decision_se)
  14.       # 设置默认攻击目标,启用自动普攻
  15.       @auto_enemy_index = 0
  16.       auto
  17.       return
  18.     end
  19.     super_update_phase3_basic_command
  20.   end
  21.  
  22.   #--------------------------------------------------------------------------
  23.   # ● 设置角色指令窗口
  24.   #--------------------------------------------------------------------------
  25.   alias super_phase3_setup_command_window phase3_setup_command_window
  26.   def phase3_setup_command_window
  27.     # 如果启用自动普攻
  28.     if @auto_enemy_index != nil
  29.       auto
  30.       return  
  31.     end
  32.     super_phase3_setup_command_window
  33.   end
  34.  
  35.   ##########################
  36.  
  37.   def auto
  38.     # 如果角色的血量小于指定比例, 停止自动普攻
  39.     for actor in $game_party.actors
  40.       if actor.hp * 100.0 / actor.maxhp <= STOP_AUTO_HP
  41.         # 演奏取消 SE
  42.         $game_system.se_play($data_system.cancel_se)
  43.         @auto_enemy_index = nil
  44.         # 设置角色的命令窗口
  45.         phase3_setup_command_window
  46.         return
  47.       end
  48.     end
  49.  
  50.     # 找下个行动的敌人,作为攻击目标(如果不是CP战斗,可以删掉这段)
  51.     fast = nil
  52.     for enemy in $game_troop.enemies
  53.       if enemy.exist?
  54.         if fast == nil
  55.           fast = enemy
  56.         elsif fast.cp < enemy.cp
  57.           fast = enemy
  58.         end
  59.       end
  60.     end
  61.     @auto_enemy_index = fast.index
  62.  
  63.     # 普攻行动
  64.     @active_battler.current_action.kind = 0
  65.     @active_battler.current_action.basic = 0
  66.     # 选择敌人
  67.     @active_battler.current_action.target_index = @auto_enemy_index
  68.     # 无效化角色指令窗口
  69.     @actor_command_window.active = false
  70.     @actor_command_window.visible = false
  71.     phase3_next_actor     
  72.   end
  73.  
  74. end


本来想实现一键停止自动普攻,但好像需要用到多线程。额,我只是想玩游戏,并不想花太多时间学习脚本,所以就用了简单的自动停止。

Project1.rar

915.45 KB, 下载次数: 1

demo

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

本版积分规则

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

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

GMT+8, 2025-7-18 10:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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