太阳神三国杀lua吧 关注:2,632贴子:73,372
  • 4回复贴,共1

一个关于自制延时锦囊卡牌的问题

只看楼主收藏回复

简答来说就是自制的对自己使用的targetfixed的延时锦囊,如闪电到底怎么写on_use,才能正确的置入自己的判定区
大神的教程,看了好多遍发现只有写非fixed的延时锦囊或者对自己使用的非延时锦囊的写法
可能这个问题有点简单的出奇了,大神不屑于说,但是新人表示反而卡住了


IP属地:湖北1楼2023-03-23 20:33回复
    去翻源码就清楚了。target_fixed写成true,on_use里把目标定成自己就行了。


    IP属地:江苏来自Android客户端2楼2023-03-24 00:57
    收起回复
      spLightning=sgs.CreateTrickCard{
      name="spLightning",
      className="spLightning",
      target_fixed = true,
      subtype="delayed_trick",
      subclass=sgs.LuaTrickCard_TypeDelayedTrick,
      movable=true,
      available=function(self,player)
      return not player:isCardLimited(self,sgs.Card_MethodUse, true) and not player:containsTrick(self:objectName())
      end,
      about_to_use=function(self,room,card_use)
      local use=card_use
      local wrapped = sgs.Sanguosha:getWrappedCard(self:getEffectiveId())
      use.card = wrapped
      local data = sgs.QVariant()
      data:setValue(use)
      local thread = room:getThread()
      thread:trigger(sgs.PreCardUsed, room, use.from, data)
      use = data:toCardUse()
      local logm = sgs.LogMessage()
      logm.from = use.from
      logm.to:append(use.from)
      logm.type = "#UseCard"
      logm.card_str = self:toString()
      room:sendLog(logm)
      local reason = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_USE, use.from:objectName(), use.from:objectName(), self:getSkillName(), "")
      room:moveCardTo(self, use.from, use.from, sgs.Player_PlaceDelayedTrick, reason, true)
      thread:trigger(sgs.CardUsed, room, use.from, data)
      use = data:toCardUse()
      thread:trigger(sgs.CardFinished, room, use.from, data)
      end,
      on_effect=function(self,effect)
      local room=effect.to:getRoom()
      local log=sgs.LogMessage()
      log.from=effect.to
      log.arg=self:objectName()
      log.type="#DelayedTrick"
      room:sendLog(log)
      local judge=sgs.JudgeStruct()
      judge.who=effect.to
      judge.pattern=".|spade"
      judge.good=false
      judge.reason=self:objectName()
      judge.play_animation=true
      room:judge(judge)
      if not judge:isGood() then
      log.type="#spLightning"
      room:sendLog(log)
      local damage=sgs.DamageStruct(self,nil,effect.to,1,sgs.DamageStruct_Thunder)
      room:damage(damage)
      local reason = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_NATURAL_ENTER, effect.to:objectName())
      room:throwCard(self, reason, nil)
      else
      self:on_nullified(effect.to)
      end
      end,
      }
      写了个SP闪电,效果基本同闪电,判定为黑桃的伤害受到1点伤害,效果要改就改on_effect的部分就行了,参考的是\lua\sgs_ex.lua里面的


      IP属地:江苏3楼2023-03-24 20:01
      收起回复