棺材还没买 棺材还没买
关注数: 4 粉丝数: 68 发帖数: 1,508 关注贴吧数: 8
国战 1.1.0 回收卡牌的问题 @Fsu0413 我在写 燕语 技能的时候碰到问题,如果回收当前回合角色因“使用”或者“响应” 而进入弃牌堆的牌,在技能结算完毕后游戏就闪退,技能代码如下 经过我自己检查,主要是因为以下两条语句,可能新版国战有所变动,请问如何解决? move.from_places:removeAt(index) move.card_ids:removeOne(card_id) 技能: jyyanyugetcard = sgs.CreateTriggerSkill{ name = "#jyyanyu" , events = {sgs.BeforeCardsMove}, can_preshow = true, can_trigger = function(self, event, room, player, data) local room = player:getRoom() local move = data:toMoveOneTime() local current = room:getCurrent() if not player or player:isDead() or not player:hasSkill(self:objectName()) then return "" end if not current or (current:getPhase() ~= sgs.Player_Play) then return false end if move.to_place == sgs.Player_DiscardPile then local ids = sgs.IntList() for _, id in sgs.qlist(move.card_ids) do local cardtype = sgs.Sanguosha:getCard(id) if (cardtype:isKindOf("BasicCard") and player:getMark("@jyyanyuDiscard1") > 0) or (cardtype:isKindOf("EquipCard") and player:getMark("@jyyanyuDiscard2") > 0) or (cardtype:isKindOf("TrickCard") and player:getMark("@jyyanyuDiscard3") > 0) then ids:append(id) end end if not ids:isEmpty() then return self:objectName() end end return "" end, on_cost = function(self, event, room, player, data) if player:askForSkillInvoke(self:objectName(), data) then room:broadcastSkillInvoke(self:objectName()) return true end return false end , on_effect = function(self, event, room, player, data ,card) local room = player:getRoom() local move = data:toMoveOneTime() local ids = sgs.IntList() for _, id in sgs.qlist(move.card_ids) do local cardtype = sgs.Sanguosha:getCard(id) if (cardtype:isKindOf("BasicCard") and player:getMark("@jyyanyuDiscard1") > 0) or (cardtype:isKindOf("EquipCard") and player:getMark("@jyyanyuDiscard2") > 0) or (cardtype:isKindOf("TrickCard") and player:getMark("@jyyanyuDiscard3") > 0) then ids:append(id) end end while not ids:isEmpty() do local gotcard = player:getMark("gotcard") if gotcard >= 3 then for _, id in sgs.qlist(ids) do local card = sgs.Sanguosha:getCard(id) ids:removeOne(id) end player:loseMark("@jyyanyuDiscard1") player:loseMark("@jyyanyuDiscard2") player:loseMark("@jyyanyuDiscard3") return false end room:fillAG(ids, player) local only = (ids:length() == 1) local card_id = -1 if only then card_id = ids:first() room:getThread():delay(600) else card_id = room:askForAG(player, ids, true, self:objectName()) end room:clearAG(player) if card_id == -1 then break end local card = sgs.Sanguosha:getCard(card_id) local target = room:askForPlayerChosen(player, room:getAlivePlayers(), "jyyanyu" , "@yanyu-give", true) if target then local index = move.card_ids:indexOf(card_id) local place = move.from_places:at(index) move.from_places:removeAt(index) move.card_ids:removeOne(card_id) data:setValue(move) ids:removeOne(card_id) target:obtainCard(card) player:setMark("gotcard", gotcard + 1) else break end end return false end , }
1 下一页