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

Project1

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

[原创发布] ► 自动战斗 ◄ <<普通自动战斗 + AI 自动战斗>> 更新[13/10/02]

[复制链接]

Lv5.捕梦者

梦石
0
星屑
33524
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

跳转到指定楼层
发表于 2013-9-24 07:11:15 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 芯☆淡茹水 于 2013-10-18 18:39 编辑

   终于搞出了个算是比较有意思的东西了。其实写这个的脚本倒挺简单,就是繁琐 + 麻烦。完全自己写的
有 500 多行,再加上原默认脚本以及其中添加的,一共 1000 多一点。

  这个自动战斗简单的改一下,也可以作为“援助型 NPC“的行动判定。

  也可以反向改成敌人,提高敌人AI。(首先需要定义每个敌人能够使用的物品)


下面还是先介绍一下:


  自动战斗,顾名思义,就是角色选择“自动战斗”后,无需玩家给角色下达
指令,角色仍可自己行动。

   该自动战斗有 2 个模式:普通自动战斗 和 AI自动战斗。2 种模式的切换
使用脚本设置项设置的开关。

   角色在 普通自动战斗 时,只是普通攻击敌人。选择的敌人目标偏向血较少
者。

   角色在 AI自动战斗 时,判断角色行动类型的流程为:复活同伴 --》 恢复
同伴(HP和SP)--》攻击。
    如果队伍中有同伴死亡,有很大几率复活同伴(具体多大几率就不透露),
死亡的同伴个数越多,几率越大。复活同伴的前提条件是有复活类药品或特技。
    跳过复活同伴是恢复同伴,恢复同伴的几率以整体的剩余HP/SP的百分比来
算,百分比越小,几率越高。单体恢复同伴HP/SP的恢复对象,偏向HP/SP较少
者。恢复同伴的前提条件是有恢复类药品或特技。
   最后是攻击,攻击判断之前有一定的几率对同伴使用 增益特技。攻击分为
普通攻击和使用特技,几率以角色的不同而不同,如果是战士类型的角色,普通
攻击的几率高于使用特技的几率;法师类型的角色则相反。使用特技时有一定的
几率使用不良状态特技。所有使用特技都是以角色已习得的特技为基础。普通攻
击和使用单体攻击特技的对象目标,也是偏向血较少者。



截图看不出效果 —— 无

脚本太长,且会乱码。为方便新手,只发工程。

###########################################
更新[13/10/02]
● 优化自动AI,内容如下:
   
        ■ 恢复:     自动战斗者在恢复同伴时,首先确定恢复对象,根据对象需要恢复的
#               HP/SP 的多少,来确定使用的物品或特技。需要恢复的对象越多,使用
#               “己方全体”的物品或特技的几率越大,单个的恢复对象是不会使用
#               “己方全体”的物品或特技。
#              
#                比如确定了某个恢复对象,该对象需要回复 HP 100 ,所能使用的物品
#               或特技有 3 种:回复 HP 60 ;回复 HP 110 ;回复 HP 220 。那么自动
#               战斗者会选择 “回复 HP 110” 的这个物品或特技来恢复该对象。
#
#
#   ■ 特技攻击:  如果自动战斗者能够使用“敌全体”特技,并且敌人的数量是 2 个
#               或以上时,自动战斗者有几率使用“敌全体”特技,敌人数量越多,几
#               率越大。
#
#                  如果是单个攻击对象,首先确定对象,根据该对象剩余的 HP 来选择
#               特技。在这之前会先判断普通攻击能否打倒该对象,如果能打倒该对象,
#               就使用普通攻击,而不使用特技了。
#
#               比如:例1:攻击对象剩余HP:160 ,自动战斗者可使用的特技有:对该
#                          对象伤害 HP 180 和 伤害 HP 260 两个特技,但自动战斗者
#                          对该对象的普通攻击伤害为:HP 200 ,那么自动战斗者会
#                          选择普通攻击而不使用特技。
#
#                     例2:攻击对象剩余HP:2000 ,自动战斗者可使用的特技有:对该
#                          对象伤害 HP 200 ; 伤害 HP 600 ;伤害 HP 1000 三种,
#                          那么自动战斗者会选择 伤害 HP 1000 的这个特技来攻击该
#                          对象。(始终选择伤害最接近攻击对象剩余HP的特技)

############################################################

范例工程:
自动战斗.rar (196.34 KB, 下载次数: 1339)

最后,发现 BUG 或有更好的建议,请回复!

评分

参与人数 4星屑 +296 +1 收起 理由
cc610523 + 1 精品文章
feizhaodan + 210 奖赏条例
wingzeroplus + 20 精品文章
美丽晨露 + 66 精品文章

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制

Lv1.梦旅人

梦石
0
星屑
118
在线时间
34 小时
注册时间
2024-9-14
帖子
3
17
发表于 2024-9-24 07:15:11 | 只看该作者
大佬mz能用吗
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
504
在线时间
43 小时
注册时间
2018-2-19
帖子
66
16
发表于 2018-3-10 02:53:57 | 只看该作者
感谢楼主分享。
梦想是谁创造的,梦想是自己创造的。站起来吧。
                      梦想由我们自己来创造。
  无论未来有多么困难,在下都会尽全力走下去。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
24004
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

15
发表于 2018-3-7 13:00:53 | 只看该作者
本帖最后由 guoxiaomi 于 2018-3-7 13:04 编辑

脚本这里提到了一个 @active_battlers.auto_battle_targets,但是在战斗结束和战斗前都没有进行 clear。

在行动的第一回合,如果 @active_battler.restriction 不等于 2 或 3,auto_battler_targets 会成为上一次战斗中选取的 Game_Enemy 对象,理论上这个对象应该在战斗结束后就会被释放掉的。

这个地方会与全动画脚本冲突,因为全动画脚本要在 Game_Enemy 上播放动画,不会显示相应的动画内容。

不知道是不是开了AI战斗就能避免。

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   def make_basic_auto
  3.     case @active_battler.current_action.basic
  4.     when 0
  5.       @animation1_id = @active_battler.animation1_id
  6.       @animation2_id = @active_battler.animation2_id
  7.       if @active_battler.restriction == 3
  8.         target = $game_party.random_target_actor
  9.         @active_battler.auto_battle_targets = []
  10.         @active_battler.auto_battle_targets.push(target)
  11.       elsif @active_battler.restriction == 2
  12.         target = $game_troop.random_target_enemy
  13.         @active_battler.auto_battle_targets = []
  14.         @active_battler.auto_battle_targets.push(target)
  15.       end
  16.       @target_battlers = @active_battler.auto_battle_targets
  17.       for target in @target_battlers
  18.         target.attack_effect(@active_battler)
  19.       end
  20.       return
  21.     when 1
  22.       @help_window.set_text($data_system.words.guard, 1)
  23.       return
  24.     end
  25.   end
  26.   #--------------------------------------------------------------------------

点评

因为我的游戏里用到了这个脚本啊@_@  发表于 2018-3-7 20:47
这么老的东西你都能翻出来,是不是很闲呐!  发表于 2018-3-7 13:24
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2016-9-29
帖子
19
14
发表于 2017-1-12 21:32:02 | 只看该作者
谢谢 我学习脚本,正准备写个这样的脚本,下来学习学习,谢谢。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
94
在线时间
157 小时
注册时间
2006-7-2
帖子
299
13
发表于 2015-9-12 23:22:18 | 只看该作者
谢谢分享脚本。发现一个bug
自动战斗第一个人如果先选了“自动战斗”然后按Esc返回重新选择,然后再按一下Esc就必然死机。
这个问题能解决吗?
甘泉幻想物语 试玩版4.0
https://rpg.blue/forum.php?mod=viewthread&tid=369490&page=1&extra=#pid2534710
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2015-7-29
帖子
7
12
发表于 2015-7-29 23:10:25 | 只看该作者
好~学习了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
138 小时
注册时间
2015-6-9
帖子
30
11
发表于 2015-6-19 21:01:11 | 只看该作者
好,大神啊
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1743
在线时间
485 小时
注册时间
2006-1-7
帖子
1073
10
发表于 2015-6-3 15:00:21 | 只看该作者
请问,能不能添加功能,让某些角色职能自动战斗,其他角色可手动可自动?
初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
50 小时
注册时间
2014-12-12
帖子
16
9
发表于 2015-1-1 13:58:41 | 只看该作者
芯大 跪求整合熊式横版啊
不要迷恋哥,哥只是个传说
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
337
在线时间
824 小时
注册时间
2008-9-16
帖子
664
8
发表于 2014-3-18 07:23:10 手机端发表。 | 只看该作者
意思是不是一号角色交给自己控制二号交给电脑控制?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-5 03:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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