找回密码
 点一下
查看: 1912|回复: 9

做了个最简单攻击移动AI

[复制链接]
发表于 2020-7-5 10:12:31 | 显示全部楼层 |阅读模式
globals  
unit  aihero                //记录玩家的英雄
unit  store
player aipag                   //记录AI玩家
boolean aitaopao=false          //设置是否逃跑,一开始false表示不在,如果ture表示在
boolean aiattack=false  //设置攻击状态,一开始false表示不在攻击,如果ture表示在攻击
boolean aigouwu=false       //设置是否在购买物品,一开始false表示不在,如果ture表示在
boolean aisfjn=false     //设置是否在使用技能,一开始false表示不在,如果ture表示在
boolean aibuxue=false         //判断英雄是否在补血
real ratio=1                //ratio是用于判断生命比的整数
integer count=0             //记录游戏开始秒数  
group bug=CreateGroup()         //用于记录AI玩家所有单位
timer t=CreateTimer()
endglobals

function xqyingx takes nothing returns nothing  //选取英雄
local unit u=null
call GroupEnumUnitsOfPlayer(bug,aipag,null)     //选取AI玩家的所有单位
loop
set u=FirstOfGroup(bug)                      //设置u是单位组的第一个单位
exitwhen u==null                              //当u为没有单位时
if IsUnitType(u,UNIT_TYPE_HERO)==true then      //如果单位u是英雄
set aihero=u                                //设置aihero就是英雄了
endif
call GroupRemoveUnit(bug,u)                    //移除单位u后,单位组内就没有u这个单位了
endloop
endfunction



function attackrpg takes nothing returns nothing      
local integer cmd
call Sleep(1)
set cmd = WaitForSignal()             // 得到命令被承认,让AI起作用
if cmd == 0 then
call xqyingx()  
endif         
loop                                    //开始进入循环
call IssuePointOrderById(aihero, 851983, -1671,-986)                        
call Sleep (1)
endloop
endfunction




function main takes nothing returns nothing
set  aipag=Player(GetAiPlayer())        //用变量记录当前的AI玩家为       ai_player                                 
call SetMeleeAI()                           //开始对战AI  
call SetHeroesBuyItems(false)                //设置英雄自动买物品  
call SetHeroesFlee(false)                    //设置英雄生命值少时自动逃跑  
call SetHeroesTakeItems(true)               //设置英雄自动捡物品  
call SetIgnoreInjured(true)                 //在集结部队进攻时,忽略生命值低于50%的单位   
call SetRandomPaths(true)                     //增加AI的选择目的地的随机性
call SetTargetHeroes(false)                          
call CreateCaptains()                       //创建攻击组  
call StartThread(function attackrpg)      // 开始线程,运行(function attack_loop)
call TimerStart(t,99999.,false,null)    //逆推技能CD 判断
endfunction

攻击移动目标点 只要改下坐标点就行了  ,至于修改 说下T转J 红色BJ不能 移植到AI里 ,单位组的 F开头的选取也不能

附带两个AI里能用的JASS 单位组 call GroupEnumUnitsInRangeOfLoc(g,Loc,Radius,null) 点选取  call  GroupEnumUnitsInRange(g,X,Y,Radius,null) 坐标选取 其实就是JASS的说.

rpgai.w3x

17.57 KB, 下载次数: 9

售价: 1 GA币  [记录]

 楼主| 发表于 2020-7-5 10:20:01 | 显示全部楼层
顺带问下 懂JASS的 大佬  , 我做的技能用户使用没有任何BUG ,但只要是电脑位置一用 就出BUG ,比如BUFF 添加出错,选取的单位 只有属性伤害,风暴只锤给不到,但是代码肯定没问题 施法马甲去掉蝗虫也一样 BUG 绝望了
回复

使用道具 举报

 楼主| 发表于 2020-7-5 10:24:12 | 显示全部楼层
刚开始以为是 调用JASS 选取问题, 换成BJ F开头的选取也一样出问题,最后 马甲的创建全部换成T里的函数 还是出错 ......... 但用户,玩家用 怎么都没BUG 怪事 有人碰到过这种事情么
回复

使用道具 举报

 楼主| 发表于 2020-7-5 21:15:29 | 显示全部楼层
蝗虫单位 玩家能选取到 ,电脑不行--------------     好像是老问题了 我吐了 好久没碰WE 忘了
回复

使用道具 举报

 楼主| 发表于 2020-7-5 21:21:17 | 显示全部楼层
解决方法是,设置召唤类型,须移动一次,再选取吐了呀
回复

使用道具 举报

 楼主| 发表于 2020-7-6 11:46:16 | 显示全部楼层
关于电脑施法   马甲 不施法的BUG 只能关掉AI 得用AI脚本关 .否则电脑能控制 ,造成不放技能,比如锤子 放不出 蜂群放不出 BUFF给不到,但玩家用又正常诡异BUG
回复

使用道具 举报

 楼主| 发表于 2020-7-6 12:38:05 | 显示全部楼层
研究出两种方法解决 电脑控制马甲 导致不放技能, 添加蝗虫 和设置工人 类型都会被控制 , (最直接的 就把种族 设置成  无,这样就不能认别,类型机械类,) 其次就是关闭AI 。 保险点而言 还是设置种族和 类型, 最后添加蝗虫
回复

使用道具 举报

发表于 2021-2-4 09:37:39 | 显示全部楼层
支持一下、、、、、、、、。
回复

使用道具 举报

发表于 2024-7-19 22:23:27 | 显示全部楼层
看不懂,这个AI的作用是什么呀?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-21 19:28 , Processed in 0.270804 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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