拷贝自教程的改判技能,为什么改判牌无法生效??求指点
太阳神三国杀吧
全部回复
仅看楼主
level 11
御神光 楼主
从标准全武将标准包里把鬼才的技能拷贝出来,稍作修改后进到神杀09/10版本进行试验,结果发现牌可以正常替换,但是实际判定牌是原来的判定牌,改判定无效,求各位指点
代码如下:
luatianming_card = sgs.CreateSkillCard{--天命技能卡 name = "luatianming_card", target_fixed = true, will_throw = false,}
luatianming_cardvs = sgs.CreateViewAsSkill{--天命Viewas name = "luatianming_cardvs", n = 1, view_filter = function(self, selected, to_select)return true end, view_filter = function(self, selected, to_select) return trueend, view_as = function(self, cards) if #cards == 1 then local acard = luatianming_card:clone() acard:addSubcard(cards[1]) acard:setSkillName("luatianming") return acard end end, enabled_at_play = function() return false end, enabled_at_response = function(self, player, pattern) return pattern == "@@luatianming" --仅响应 要求一张luaguicai_card end}
luatianming=sgs.CreateTriggerSkill{--天命主技能name="luatianming",events=sgs.AskForRetrial,view_as_skill=luatianming_cardvs,on_trigger=function(self,event,player,data)local room=player:getRoom()local simashi=room:findPlayerBySkillName(self:objectName())local judge=data:toJudge() --获取判定结构体 simashi:setTag("Judge",data) --SET技能拥有者TAG--room:playSkillEffect("luatianming", 1)local card=room:askForCard(simashi,"@luatianming","@luatianming",data) if card~=nil then -- 如果打出了simashi:obtainCard(judge.card)judge.card = sgs.Sanguosha:getCard(card:getEffectiveId()) --判定牌更改room:moveCardTo(judge.card, nil, sgs.Player_Special) --移动到判定区local log=sgs.LogMessage() --LOG 以下是改判定专用的TYPElog.type = "$ChangedJudge"log.from = playerlog.to:append(judge.who)log.card_str = card:getEffectIdString()room:sendLog(log)room:sendJudgeResult(judge) endreturn falseend, }
2012年09月22日 14点09分 1
level 11
御神光 楼主
上面代码不太好看,我稍微整理了下
luatianming_card = sgs.CreateSkillCard
{--天命技能卡
name = "luatianming_card",
target_fixed = true,
will_throw = false,
}
luatianming_cardvs = sgs.CreateViewAsSkill
{--天命Viewas
name = "luatianming_cardvs",
n = 1,
view_filter = function(self, selected, to_select)return true end,
view_filter = function(self, selected, to_select)
return true
end,
view_as = function(self, cards)
if #cards == 1 then
local acard = luatianming_card:clone()
acard:addSubcard(cards[1])
acard:setSkillName("luatianming")
return acard
end
end,
enabled_at_play = function()
return false
end,
enabled_at_response = function(self, player, pattern)
return pattern == "@@luatianming" --仅响应 要求一张luaguicai_card
end
}
luatianming=sgs.CreateTriggerSkill
{--天命主技能
name="luatianming",
events=sgs.AskForRetrial,
view_as_skill=luatianming_cardvs,
on_trigger=function(self,event,player,data)
local room=player:getRoom()
local simashi=room:findPlayerBySkillName(self:objectName())
local judge=data:toJudge() --获取判定结构体
simashi:setTag("Judge",data) --SET技能拥有者TAG
--room:playSkillEffect("luatianming", 1)
local card=room:askForCard(simashi,"@luatianming","@luatianming",data)
if card~=nil then -- 如果打出了
simashi:obtainCard(judge.card)
judge.card = sgs.Sanguosha:getCard(card:getEffectiveId()) --判定牌更改
room:moveCardTo(judge.card, nil, sgs.Player_Special) --移动到判定区
local log=sgs.LogMessage() --LOG 以下是改判定专用的TYPE
log.type = "$ChangedJudge"
log.from = player
log.to:append(judge.who)
log.card_str = card:getEffectIdString()
room:sendLog(log)room:sendJudgeResult(judge)
endreturn false
end,
}
2012年09月22日 14点09分 2
level 12
帮顶
2012年09月22日 14点09分 3
感谢[Love]
2012年09月22日 14点09分
level 11
好像是因为代码不同了
2012年09月23日 09点09分 6
level 13
接口不同了...
alpha版是
void retrial(const Card *card, ServerPlayer *player, JudgeStar judge, const char *skill_name, bool exchange = false)
2012年09月23日 09点09分 7
level 11
御神光 楼主
搞定
room:sendJudgeResult(judge)前加一句data:toJudge():setValue(judge)就可以了
值没赋上去的关系
2012年09月23日 14点09分 8
你确定这个可以吗?貌似是有句函数失效了,我反正是可以响应改判,但是无法扔判定牌改
2012年09月25日 02点09分
回复 43833344 :改完的时候跑过,判定结果却是被改变了,可是之前去试了下好像又不行了
2012年09月25日 11点09分
1