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

Project1

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

[已经过期] 关于AI战斗,怎修改战斗的对象

[复制链接]

Lv1.梦旅人

梦石
0
星屑
65
在线时间
145 小时
注册时间
2011-7-14
帖子
43
跳转到指定楼层
1
发表于 2013-11-6 16:17:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 woshinide951 于 2013-11-6 16:19 编辑

此脚本自动战斗对象为角色的编号
如何设置成在几号战斗位置的角色进行自动战斗
我试着修改好多次 ,但是没用
跪谢...
  1. #==============================================================================
  2. # ■ Game_Actor
  3. #------------------------------------------------------------------------------
  4. #  AI模块
  5. #==============================================================================

  6. class  Game_Battler
  7.   attr_accessor :marks
  8. end
  9. class Game_Actor < Game_Battler
  10.   AI = [10] # 需要自动攻击的角色编号
  11.   
  12.            # 物理攻击倾向指数 魔法攻击倾向指数 防御指数 什么都不做指数
  13.   Action_Index = [50,  60, 20]
  14.   
  15.   IQ = 80 # 智商设定,90为标准值,IQ越高,越优先攻击生命值少,防御力小的
  16.   Hp_Mark = [30,-10] # 生命值评分标准,[生命值最低的得分,步进值(负)]
  17.   Df_Mark = [20,-10] # 防御值评分标准,[防御值最低的得分,步进值(负)]
  18.   
  19.   EQ = 80 # 情商设定,90为标准值,EQ越高,越优先使用对应魔法(属性有效度为准),
  20.   def make_action
  21.     $game_troop.enemies.each{|i|i.marks=50}
  22.     $game_party.actors.each{|i|i.marks=50}
  23.     # 先确认动作
  24.     index = Action_Index
  25.     skills = self.skills.inject([]){|a,b|a<<b if skill_can_use?(b);a}
  26.     index[1] = 0 if skills == []
  27.     index[0] *= IQ/90.0;index[1] *= IQ/90.0;index[1] *= EQ/90.0
  28.      index[0].to_i;index[1].to_i
  29.      all = index.inject(0){|a,b|a+b}.to_i
  30.      value = rand(all)
  31.       action = 0 # 默认攻击
  32.        for i in 0...index.size
  33.          if i > value
  34.      action = i
  35.         break
  36.         else
  37.         value -= index[i]
  38.       end
  39.     end
  40.     # 目前动作为 action
  41.     case action
  42.     when 0 # 攻击
  43.       # 智商检查
  44.       enemies = $game_troop.enemies.inject([]){|a,b|a<b.hp}
  45.       for i in 0...enemies.size
  46.         enemies[i].marks += (Hp_Mark[0] + i*Hp_Mark[1])*IQ/90
  47.       end
  48.       # 防御检查
  49.       enemies.sort!{|a,b|a.pdef<=>b.pdef}
  50.       for i in 0...enemies.size
  51.         enemies[i].marks += (Df_Mark[0] + i*Df_Mark[1])*IQ/90
  52.       end
  53.       # 确认目标
  54.       value = rand(enemies.inject(0){|a,b|a+b.marks})
  55.       tag = nil
  56.       for i in enemies
  57.         if i.marks > value
  58.           tag = i
  59.           break
  60.         else
  61.           value -= i.marks
  62.         end
  63.       end
  64.       # 目标确认 tag
  65.       @current_action.kind = 0
  66.       @current_action.basic = 0
  67.       return @current_action.target_index = 0 unless tag
  68.       @current_action.target_index = $game_troop.enemies.index(tag)
  69.     when 1 # 魔法
  70.       # 魔法分类,对敌/对己(加持)/附着状态/解除状态
  71.       @current_action.kind = 0
  72.       return @current_action.basic = 1 if skills == []
  73.       @current_action.kind = 1
  74.       # 随机技能
  75.       @current_action.skill_id = skills[rand(skills.size)]
  76.       # 确认对象
  77.       scope = $data_skills[@current_action.skill_id].scope
  78.       @current_action.target_index = 0
  79.       case @scope
  80.       when 1 # 敌单体
  81.         # 智商检查
  82.         enemies = $game_troop.enemies.inject([]){|a,b|a<<b if !b.hp0?;a}
  83.         # 属性有效度评分
  84.         table = [0,50,25,10,0,-10,-20]
  85.          for i in 0...enemies.size
  86.            enemies[i].marks += enemies[i].element_ranks[@current_action.skill_id]
  87.          end
  88.            # 确认目标
  89.             value = rand(enemies.inject(0){|a,b|a+b.marks})
  90.             tag = nil
  91.              for i in enemies
  92.                 if i.marks > value
  93.             tag = i
  94.             break
  95.           else
  96.             value -= i.marks
  97.           end
  98.         end
  99.         @current_action.target_index = $game_troop.enemies.index(tag) if tag
  100.       when 3
  101.         # 智商检查
  102.         enemies = game_party.actors.inject([]){|a,b|a<<b if !b.hp0?;a}
  103.         table = [0,50,25,10,0,-10,-20]
  104.          for i in 0...enemies.size
  105.              enemies[i].marks += enemies[i].element_ranks[@current_action.skill_id]
  106.            end
  107.             value = rand(enemies.inject(0){|a,b|a+b.marks})
  108.              tag = nil
  109.                for i in enemies
  110.                   if i.marks > value
  111.                     
  112.             tag = i
  113.             break
  114.           else
  115.             value -= i.marks
  116.           end
  117.         end
  118.         @current_action.target_index = game_party.actors.index(tag) if tag
  119.       end
  120.     when 2 # 防御
  121.       @current_action.basic = 0
  122.       @current_action.basic = 1
  123.     end
  124.   end
  125. end
  126. class Scene_Battle
  127.   #--------------------------------------------------------------------------
  128.   # ● 转到输入下一个角色的命令
  129.   #--------------------------------------------------------------------------
  130.   def phase3_next_actor
  131.     # 循环
  132.     begin
  133.       # 角色的明灭效果 OFF
  134.       if @active_battler != nil
  135.         @active_battler.blink = false
  136.       end
  137.       # 最后的角色的情况
  138.       if @actor_index == $game_party.actors.size-1
  139.         # 开始主回合
  140.         start_phase4
  141.         return
  142.       end
  143.       # 推进角色索引
  144.       @actor_index += 1
  145.       @active_battler = $game_party.actors[@actor_index]
  146.       @active_battler.blink = true
  147.     # 如果角色是在无法接受指令的状态就再试
  148.   end until @active_battler.inputable?
  149.   # $$$$$$$$$$$$$$
  150.     if Game_Actor::AI.include?(@active_states.id)
  151.       #AI同伴
  152.       @actor_command_window.active = false
  153.       @actor_command_window.visible = false
  154.       @active_battler.make_action
  155.       phase3_next_actor
  156.     else
  157.       # 设置角色的命令窗口
  158.       phase3_setup_command_window
  159.     end
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 转向前一个角色的命令输入
  163.   #--------------------------------------------------------------------------
  164.   def phase3_prior_actor
  165.     # 循环
  166.     begin
  167.       # 角色的明灭效果 OFF
  168.       if @active_battler != nil
  169.         @active_battler.blink = false
  170.       end
  171.       # 最初的角色的情况下
  172.       if @actor_index == 0
  173.         # 开始同伴指令回合
  174.         start_phase2
  175.         return
  176.       end
  177.       # 返回角色索引
  178.       @actor_index -= 1
  179.       @active_battler = $game_party.actors[@actor_index]
  180.       @active_battler.blink = true
  181.     # 如果角色是在无法接受指令的状态就再试
  182.     end until @active_battler.inputable?
  183.     # 设置角色的命令窗口
  184.     if Game_Actor::AI.include?(@active_battler.id)
  185.       #AI同伴
  186.       phase3_prior_actor
  187.     else
  188.       phase3_setup_command_window
  189.     end
  190.   end
  191. end
复制代码
只想完成自己所梦想的游戏!
只要自己努力

Lv2.观梦者

梦石
0
星屑
315
在线时间
166 小时
注册时间
2012-1-21
帖子
53
7
发表于 2014-2-2 12:40:07 | 只看该作者
  AI = [10] # 需要自动攻击的角色编号             楼主请看11行。。。

评分

参与人数 1星屑 -10 收起 理由
myownroc -10 挖坟

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
291 小时
注册时间
2011-12-23
帖子
106
6
发表于 2013-11-21 16:38:04 | 只看该作者
本帖最后由 大宇宙时代 于 2013-11-21 22:10 编辑

【】编号?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
47 小时
注册时间
2013-11-7
帖子
15
5
发表于 2013-11-8 15:13:05 | 只看该作者
上面的脚本是设定角色ID进行AI战斗  他想改成在几号战斗位置对应的角色进行AI战斗
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
100
在线时间
211 小时
注册时间
2011-8-16
帖子
300
4
发表于 2013-11-8 08:45:30 | 只看该作者
不明楼主想要做什么
RPGMaker 脚本/学习交流群:143356012
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
47 小时
注册时间
2013-11-7
帖子
15
3
发表于 2013-11-8 00:45:16 | 只看该作者
无语了  谁来帮我解决下这个问题  
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
145 小时
注册时间
2011-7-14
帖子
43
2
 楼主| 发表于 2013-11-7 00:36:03 | 只看该作者
a等了一晚上 没人回答 桑心啊
只想完成自己所梦想的游戏!
只要自己努力
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 09:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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