太阳神三国杀lua吧 关注:2,627贴子:73,373
  • 11回复贴,共1

【新人求教】触发技+技能卡的AI要怎么写

只看楼主收藏回复

请教各位大神,我现在写了一个回合结束阶段可以拼点的技能,

然后我在AI里写如果写(sgs.ai_skill_invoke.LuaExcalibur = true)这种方式触发不了技能,但是如果用下图的方法写,AI就会在出牌阶段用这个技能

所以我想问一下这种触发技+技能卡的应该怎么写


IP属地:浙江1楼2017-01-01 19:18回复
    参考学科杀拉瓦锡的AI


    IP属地:北京来自Android客户端2楼2017-01-01 19:24
    收起回复
      我觉得LZ提到的两种写法都是错的。
      sgs.ai_skill_invoke 表里面写的是询问技能发动的AI,针对的是 Room::askForSkillInvoke 函数。
      sgs.ai_skill_use_func 表里面写的是出牌阶段主动使用卡牌的AI。
      但是根据LZ给出的技能代码,
      视为技的 enabled_at_play 部分 return false 表示这个技能不能在出牌阶段主动使用,
      因此 AI 里面不能用 sgs.ai_skill_use_func 表。
      触发技里面用的是 Room::askForUseCard 函数,所以 AI 里面要用 sgs.ai_skill_use 表。
      参考代码:
      sgs.ai_skill_use["@@LuaExcalibur"] = function(self, prompt, pattern)
      ____self:sort(self.enemies, "hp")
      ____local target = nil
      ____for _, enemy in ipairs(self.enemies) do
      ________if not enemy:isKongcheng() then
      ____________target = enemy
      ____________break
      ________end
      ____end
      ____local card = self:getMaxCard()
      ____if target and card then
      ________return "#LuaExcaliburCard:"..card:getEffectiveId()..":->"..target:objectName()
      ____end
      end


      IP属地:北京3楼2017-01-01 20:07
      收起回复