【内容简介】
-YGOPro 英文版/繁体版 使用的 AI-Cheating 模式 增强版 v2 代码提供
-基于 YGOPro 英文版 1033.0 v2.1 的AI代码
-大体上,AI 变得 比较(非常) 难
【AI科普】
-YGOPro 英文版/繁体版 第二个选项即为 AI
-ADS 日文版 老板本有AI 而新版本没有,倒数第三个选项可以打 “不存在” 的 AI,YGOCore 原版 没有AI
-YGOPro 英文版/繁体版 使用的AI和主机是同样的原理,但强制不能保存录像
-在进入 选卡组 界面是可以选择 AI 脚本,ai.lua 为正常AI,ai-exodialib 为很会但只会打老I 的AI,ai-template 为测试ai用,一般忽略之,ai-cheating即为作弊AI
-原本的作弊AI每次抽卡可以多抽1张卡,并且恢复1000LP
-特别的,作弊AI可以在使用心崩的时候直接看到我方手牌并作出合适选择
【功能介绍】
-本 增强版 提供/修改 了以下增强内容:
-去掉了每次 AI 作弊模式开始烦人的两句话(挡屏),增加了一些温馨提示
-在双方任意第一次抽卡阶段我方会选择AI作弊强度,0 1 2 3 4 或 255。0 1 2 3 4 强度逐渐上升,255 会进入 DEBUG 模式,然后重新选择 0 1 2 3 4 为难度,具体不做介绍
-默认的 AI 强度为 1,选 3 以上的强度无疑是作死
-AI 不会因为规则抽卡而抽死,AI 卡组卡不够抽的场合会回收墓地所有卡并多抽 作弊强度 的卡
-AI 每回合的通招次数额外增加 作弊强度 的数量
-AI 手牌上限额外增加 作弊强度×2 的数量
-如果 AI 作弊强度 超过2,AI 的卡组会发生一定的变化
-每次 AI 抽卡阶段,AI 额外抽 作弊强度×2 的卡,回复 作弊强度×1000 的LP,对我方造成 (作弊强度-1)×500 的规则烧血
-每次 我方 抽卡阶段,AI 抽 作弊强度 的卡
-根据 作弊强度, AI 会在强度超过 1 的场合开始印卡。卡可能印在 手牌/墓地/卡组 中。强度越高印的的卡越可怕
-每次 我方 抽卡阶段,如果 AI LP 低于我方的一半,且 作弊强度 超过1, AI 会进行额外的印卡
【代码内容】
function Duel.SafeDraw(tp,n)
local c=Duel.GetMatchingGroupCount(nil,tp,LOCATION_DECK,0,nil)
if c<n then Duel.Draw(tp,c,REASON_RULE) else Duel.Draw(tp,n,REASON_RULE) end
end
function EnableCheats()
AICheatLevel=255
AIDebug=false
local e1=Effect.GlobalEffect()
e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e1:SetCode(EVENT_PHASE+PHASE_DRAW)
e1:SetCountLimit(1)
e1:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
if AICheatLevel==255
then AI.Chat("===== SELECT AI CHEATING LEVEL, WARNING: DON'T SELECT 3 OR ABOVE =====")
AICheatLevel=Duel.AnnounceNumber(1-player_ai,1,0,2,3,4,255)
if AICheatLevel==255
then AIDebug=true
AI.Chat("===== AI DEBUG MODE ON, SELECT AI CHEATING LEVEL AGAIN ==============")
AICheatLevel=Duel.AnnounceNumber(1-player_ai,1,0,2,3,4)
AI.Chat("===== IN DEBUG MODE, YOU CAN: CLEAN CARDS, BECOME AI ================")
end
local e1=Effect.GlobalEffect()
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SET_SUMMON_COUNT_LIMIT)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(1,0)
e1:SetValue(AICheatLevel+1)
Duel.RegisterEffect(e1,0)
local e2=Effect.GlobalEffect()
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_HAND_LIMIT)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetTargetRange(1,0)
e2:SetValue(6+AICheatLevel*2)
Duel.RegisterEffect(e2,0)
if AICheatLevel>2
then AI.Chat("===== I WARNNED YOU NOT TO SELECT 3 OR ABOVE =========================")
local T=Duel.GetMatchingGroup(nil,player_ai,LOCATION_DECK,0,nil)
local A=Group.CreateGroup()
local B=Group.CreateGroup()
local N
c=T:GetFirst()
while c
do N=c:GetCode()
if N==97077563 then A:AddCard(c)
B:AddCard(Duel.CreateToken(player_ai,83764718))
elseif N==5318639 then A:AddCard(c)
B:AddCard(Duel.CreateToken(player_ai,19613556))
elseif N==32807846 then B:AddCard(Duel.CreateToken(player_ai,32807846))
elseif N==81439173 then B:AddCard(Duel.CreateToekn(player_ai,81439173))
end
c=T:GetNext()
end
Duel.Remove(A,POS_FACEDOWN,REASON_RULE)
Duel.SendtoDeck(B,nil,2,REASOM_RULE)
end
end
if AIDebug and Duel.GetMatchingGroupCount(nil,player_ai,255-32,0,nil)>80
then AI.Chat("===== YOU MIGHT WANT TO DO SOME CLEANING ... ===================DEBUG=")
if Duel.SelectYesNo(1-player_ai,Duel.GetDecktopGroup(player_ai,1))==true
then Duel.Remove(Duel.SelectMatchingCard(1-player_ai,nil,player_ai,255-32,0,nil),POS_FACEDOWN,REASON_RULE) end
end
if AIDebug then AI.Chat("===== DO YOU WANT TO BE THE AI? NON-AI HAVE THE CHANCE =========DEBUG=")
if Duel.SelectYesNo(1-player_ai,Duel.GetDecktopGroup(player_ai,1))==true then player_ai=1-player_ai end end
if Duel.GetTurnPlayer()==player_ai
then if Duel.GetMatchingGroupCount(nil,player_ai,LOCATION_DECK,0,nil)<AICheatLevel*2
then Duel.SendtoDeck(Duel.GetMatchingGroup(nil,player_ai,LOCATION_GRAVE,0,nil),nil,2,REASON_RULE)
Duel.SafeDraw(player_ai,AICheatLevel,REASON_RULE)
end
Duel.SafeDraw(player_ai,AICheatLevel*2,REASON_RULE)
Duel.Recover(player_ai,AICheatLevel*1000,REASON_RULE)
Duel.Damage(1-player_ai,(AICheatLevel-1)*500,REASON_RULE)
local G=Group.CreateGroup()
if AICheatLevel>1 then G:AddCard(Duel.CreateToken(player_ai,5318639)) end
if AICheatLevel>2 then G:AddCard(Duel.CreateToken(player_ai,27243130)) end
if AICheatLevel>3 then G:AddCard(Duel.CreateToken(player_ai,97169186)) end
Duel.SendtoHand(G,player_ai,REASON_RULE)
else Duel.SafeDraw(player_ai,AICheatLevel,REASON_RULE)
local G=Group.CreateGroup()
if AICheatLevel>1 then G:AddCard(Duel.CreateToken(player_ai,54512827)) end
if AICheatLevel>2 then G:AddCard(Duel.CreateToken(player_ai,81907872)) end
if AICheatLevel>3 then G:AddCard(Duel.CreateToken(player_ai,15721123)) end
if AICheatLevel>4 then G:AddCard(Duel.CreateToken(player_ai,44330098)) end
Duel.SendtoHand(G,player_ai,REASON_RULE)
G=Group.CreateGroup()
if AICheatLevel>1 then G:AddCard(Duel.CreateToken(player_ai,1833916)) end
if AICheatLevel>2 then G:AddCard(Duel.CreateToken(player_ai,2830693)) end
if AICheatLevel>3 then G:AddCard(Duel.CreateToken(player_ai,9411399)) end
Duel.SendtoGrave(G,REASON_RULE)
G=Group.CreateGroup()
if AICheatLevel>3 then G:AddCard(Duel.CreateToekn(player_ai,9411399)) end
Duel.SendtoDeck(G,player_ai,2,REASON_RULE)
if Duel.GetLP(player_ai)<Duel.GetLP(1-player_ai)/2
then Duel.SafeDraw(player_ai,AICheatLevel*2)
G=Group.CreateGroup()
if AICheatLevel>1 then G:AddCard(Duel.CreateToken(player_ai,1315120)) end
if AICheatLevel>2 then G:AddCard(Duel.CreateToken(player_ai,17626381)) end
if AICheatLevel>3 then G:AddCard(Duel.CreateToken(player_ai,98045062)) end
Duel.SendtoHand(G,player_ai,REASON_RULE)
end
end end)
Duel.RegisterEffect(e1,0)
end
【使用方法】
-将代码内容替换ai/decks/FireFist.lua 里面的 function EnableCheats()
-function EnableCheats 从此标题开始,到这个标题下方第一个end 结束,请不要多或少删除内容,否则 AI 模式将完全无法使用
【注意事项】
-因为AI改动第一条并不在代码范围内,请手动将 ai/al-cheating.lua 里面的 ai.chat 行删除来去掉烦人话
-请不要想着和AI打持久战,会身心疲惫最后还输掉的
-作弊等级为 1 的场合和原 AI 作弊模式差不多,作弊等级为 0 的场合和没作弊差不多
-YGOPro 英文版/繁体版 使用的 AI-Cheating 模式 增强版 v2 代码提供
-基于 YGOPro 英文版 1033.0 v2.1 的AI代码
-大体上,AI 变得 比较(非常) 难
【AI科普】
-YGOPro 英文版/繁体版 第二个选项即为 AI
-ADS 日文版 老板本有AI 而新版本没有,倒数第三个选项可以打 “不存在” 的 AI,YGOCore 原版 没有AI
-YGOPro 英文版/繁体版 使用的AI和主机是同样的原理,但强制不能保存录像
-在进入 选卡组 界面是可以选择 AI 脚本,ai.lua 为正常AI,ai-exodialib 为很会但只会打老I 的AI,ai-template 为测试ai用,一般忽略之,ai-cheating即为作弊AI
-原本的作弊AI每次抽卡可以多抽1张卡,并且恢复1000LP
-特别的,作弊AI可以在使用心崩的时候直接看到我方手牌并作出合适选择
【功能介绍】
-本 增强版 提供/修改 了以下增强内容:
-去掉了每次 AI 作弊模式开始烦人的两句话(挡屏),增加了一些温馨提示
-在双方任意第一次抽卡阶段我方会选择AI作弊强度,0 1 2 3 4 或 255。0 1 2 3 4 强度逐渐上升,255 会进入 DEBUG 模式,然后重新选择 0 1 2 3 4 为难度,具体不做介绍
-默认的 AI 强度为 1,选 3 以上的强度无疑是作死
-AI 不会因为规则抽卡而抽死,AI 卡组卡不够抽的场合会回收墓地所有卡并多抽 作弊强度 的卡
-AI 每回合的通招次数额外增加 作弊强度 的数量
-AI 手牌上限额外增加 作弊强度×2 的数量
-如果 AI 作弊强度 超过2,AI 的卡组会发生一定的变化
-每次 AI 抽卡阶段,AI 额外抽 作弊强度×2 的卡,回复 作弊强度×1000 的LP,对我方造成 (作弊强度-1)×500 的规则烧血
-每次 我方 抽卡阶段,AI 抽 作弊强度 的卡
-根据 作弊强度, AI 会在强度超过 1 的场合开始印卡。卡可能印在 手牌/墓地/卡组 中。强度越高印的的卡越可怕
-每次 我方 抽卡阶段,如果 AI LP 低于我方的一半,且 作弊强度 超过1, AI 会进行额外的印卡
【代码内容】
function Duel.SafeDraw(tp,n)
local c=Duel.GetMatchingGroupCount(nil,tp,LOCATION_DECK,0,nil)
if c<n then Duel.Draw(tp,c,REASON_RULE) else Duel.Draw(tp,n,REASON_RULE) end
end
function EnableCheats()
AICheatLevel=255
AIDebug=false
local e1=Effect.GlobalEffect()
e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e1:SetCode(EVENT_PHASE+PHASE_DRAW)
e1:SetCountLimit(1)
e1:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
if AICheatLevel==255
then AI.Chat("===== SELECT AI CHEATING LEVEL, WARNING: DON'T SELECT 3 OR ABOVE =====")
AICheatLevel=Duel.AnnounceNumber(1-player_ai,1,0,2,3,4,255)
if AICheatLevel==255
then AIDebug=true
AI.Chat("===== AI DEBUG MODE ON, SELECT AI CHEATING LEVEL AGAIN ==============")
AICheatLevel=Duel.AnnounceNumber(1-player_ai,1,0,2,3,4)
AI.Chat("===== IN DEBUG MODE, YOU CAN: CLEAN CARDS, BECOME AI ================")
end
local e1=Effect.GlobalEffect()
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SET_SUMMON_COUNT_LIMIT)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(1,0)
e1:SetValue(AICheatLevel+1)
Duel.RegisterEffect(e1,0)
local e2=Effect.GlobalEffect()
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_HAND_LIMIT)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetTargetRange(1,0)
e2:SetValue(6+AICheatLevel*2)
Duel.RegisterEffect(e2,0)
if AICheatLevel>2
then AI.Chat("===== I WARNNED YOU NOT TO SELECT 3 OR ABOVE =========================")
local T=Duel.GetMatchingGroup(nil,player_ai,LOCATION_DECK,0,nil)
local A=Group.CreateGroup()
local B=Group.CreateGroup()
local N
c=T:GetFirst()
while c
do N=c:GetCode()
if N==97077563 then A:AddCard(c)
B:AddCard(Duel.CreateToken(player_ai,83764718))
elseif N==5318639 then A:AddCard(c)
B:AddCard(Duel.CreateToken(player_ai,19613556))
elseif N==32807846 then B:AddCard(Duel.CreateToken(player_ai,32807846))
elseif N==81439173 then B:AddCard(Duel.CreateToekn(player_ai,81439173))
end
c=T:GetNext()
end
Duel.Remove(A,POS_FACEDOWN,REASON_RULE)
Duel.SendtoDeck(B,nil,2,REASOM_RULE)
end
end
if AIDebug and Duel.GetMatchingGroupCount(nil,player_ai,255-32,0,nil)>80
then AI.Chat("===== YOU MIGHT WANT TO DO SOME CLEANING ... ===================DEBUG=")
if Duel.SelectYesNo(1-player_ai,Duel.GetDecktopGroup(player_ai,1))==true
then Duel.Remove(Duel.SelectMatchingCard(1-player_ai,nil,player_ai,255-32,0,nil),POS_FACEDOWN,REASON_RULE) end
end
if AIDebug then AI.Chat("===== DO YOU WANT TO BE THE AI? NON-AI HAVE THE CHANCE =========DEBUG=")
if Duel.SelectYesNo(1-player_ai,Duel.GetDecktopGroup(player_ai,1))==true then player_ai=1-player_ai end end
if Duel.GetTurnPlayer()==player_ai
then if Duel.GetMatchingGroupCount(nil,player_ai,LOCATION_DECK,0,nil)<AICheatLevel*2
then Duel.SendtoDeck(Duel.GetMatchingGroup(nil,player_ai,LOCATION_GRAVE,0,nil),nil,2,REASON_RULE)
Duel.SafeDraw(player_ai,AICheatLevel,REASON_RULE)
end
Duel.SafeDraw(player_ai,AICheatLevel*2,REASON_RULE)
Duel.Recover(player_ai,AICheatLevel*1000,REASON_RULE)
Duel.Damage(1-player_ai,(AICheatLevel-1)*500,REASON_RULE)
local G=Group.CreateGroup()
if AICheatLevel>1 then G:AddCard(Duel.CreateToken(player_ai,5318639)) end
if AICheatLevel>2 then G:AddCard(Duel.CreateToken(player_ai,27243130)) end
if AICheatLevel>3 then G:AddCard(Duel.CreateToken(player_ai,97169186)) end
Duel.SendtoHand(G,player_ai,REASON_RULE)
else Duel.SafeDraw(player_ai,AICheatLevel,REASON_RULE)
local G=Group.CreateGroup()
if AICheatLevel>1 then G:AddCard(Duel.CreateToken(player_ai,54512827)) end
if AICheatLevel>2 then G:AddCard(Duel.CreateToken(player_ai,81907872)) end
if AICheatLevel>3 then G:AddCard(Duel.CreateToken(player_ai,15721123)) end
if AICheatLevel>4 then G:AddCard(Duel.CreateToken(player_ai,44330098)) end
Duel.SendtoHand(G,player_ai,REASON_RULE)
G=Group.CreateGroup()
if AICheatLevel>1 then G:AddCard(Duel.CreateToken(player_ai,1833916)) end
if AICheatLevel>2 then G:AddCard(Duel.CreateToken(player_ai,2830693)) end
if AICheatLevel>3 then G:AddCard(Duel.CreateToken(player_ai,9411399)) end
Duel.SendtoGrave(G,REASON_RULE)
G=Group.CreateGroup()
if AICheatLevel>3 then G:AddCard(Duel.CreateToekn(player_ai,9411399)) end
Duel.SendtoDeck(G,player_ai,2,REASON_RULE)
if Duel.GetLP(player_ai)<Duel.GetLP(1-player_ai)/2
then Duel.SafeDraw(player_ai,AICheatLevel*2)
G=Group.CreateGroup()
if AICheatLevel>1 then G:AddCard(Duel.CreateToken(player_ai,1315120)) end
if AICheatLevel>2 then G:AddCard(Duel.CreateToken(player_ai,17626381)) end
if AICheatLevel>3 then G:AddCard(Duel.CreateToken(player_ai,98045062)) end
Duel.SendtoHand(G,player_ai,REASON_RULE)
end
end end)
Duel.RegisterEffect(e1,0)
end
【使用方法】
-将代码内容替换ai/decks/FireFist.lua 里面的 function EnableCheats()
-function EnableCheats 从此标题开始,到这个标题下方第一个end 结束,请不要多或少删除内容,否则 AI 模式将完全无法使用
【注意事项】
-因为AI改动第一条并不在代码范围内,请手动将 ai/al-cheating.lua 里面的 ai.chat 行删除来去掉烦人话
-请不要想着和AI打持久战,会身心疲惫最后还输掉的
-作弊等级为 1 的场合和原 AI 作弊模式差不多,作弊等级为 0 的场合和没作弊差不多