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

恩……关于谋害死人的问题。

只看楼主收藏回复

是这样的……做了一个在别人丢掉最后一张牌时给予1点伤害的技能,然后这个技能的问题在于,如果别人在濒死的时候吃桃喝酒,丢了最后一张手牌,我造成了1点伤害,那个人死了,就会无限吃桃喝酒然后崩溃。就算我这种情况下将伤害时机延后到cardfinished,还是会有这样的问题……想问下有办法解决么……v2版


IP属地:江苏1楼2013-03-06 03:42回复
    求桃结束后?


    来自iPhone客户端2楼2013-03-06 03:55
    回复
      源代码有问题。。。


      IP属地:上海来自手机贴吧3楼2013-03-06 09:41
      收起回复
        简单测试了一下没详细测试过不知道有没有错误或者bug
        --[[某技能:锁定技,你失去最后一张手牌后立刻受到一点伤害]]
        luatrigger2 = sgs.CreateTriggerSkill
        {
        name = "skill2",
        events = sgs.CardsMoveOneTime,
        frequency = sgs.Skill_Compulsory,
        on_trigger = function(self,event,player,data)
        local room = player:getRoom()
        local move = data:toMoveOneTime()
        local flag = false
        if not (move.from:objectName() == player:objectName() and player:isKongcheng()) then return false end
        for _,place in sgs.qlist(move.from_places) do
        if place == sgs.Player_PlaceHand then flag = true end
        end
        --if not room:askForSkillInvoke(player, self:objectName()) then return false end
        local damage = sgs.DamageStruct()
        damage.damage = 1
        damage.to = player
        if flag then room:damage(damage) end
        end
        }


        IP属地:江苏4楼2013-03-06 10:05
        收起回复
          改成对方的回合外好了


          IP属地:江苏5楼2013-03-06 12:03
          回复
            luatrigger2 = sgs.CreateTriggerSkill
            {
            name = "skill2",
            events = sgs.CardsMoveOneTime,
            frequency = sgs.Skill_Compulsory,
            can_trigger = function(self,player)
            return true end,
            on_trigger = function(self,event,player,data) local room = player:getRoom()
            local move = data:toMoveOneTime()
            local flag = false
            if not (move.from:objectName() == player:objectName() and player:isKongcheng()) then return false end
            for _,place in sgs.qlist(move.from_places) do
            if place == sgs.Player_PlaceHand then flag = true end
            end
            local selfplayer = room:findPlayerBySkillName(self:objectName())
            if not room:askForSkillInvoke(selfplayer, self:objectName()) then return false end
            local damage = sgs.DamageStruct()
            damage.damage = 1
            damage.to = player
            if flag then room:damage(damage) end
            end
            }
            以上。当任何人失去最后一张手牌时你可以给予他一点伤害。不会有濒死无限桃酒bug。


            IP属地:江苏6楼2013-03-06 12:58
            收起回复
              对啊!我也遇到了!濒死时吃桃倒扣血会无线循环的bug,在1221版就有,224版似乎没解决啊…


              来自Android客户端7楼2013-03-06 15:29
              回复
                时机改成PreCardUsed之后加第一个FLAG,然后CardsMoveOneTime的时候判断第一个FLAG再加第二个FLAG,最后伤害时机改成AskForPeachDone就好了。另外move.from_places:contains(sgs.Player_PlaceHand)就好,不用遍历的……


                IP属地:江苏9楼2013-03-06 16:23
                回复