太阳神三国杀lua吧 关注:2,645贴子:73,397
  • 9回复贴,共1

新手提问,为什么技能无效

只看楼主收藏回复

刚开始学,想了一个简单的技能:【装逼】摸牌阶段,你可以多摸两张牌,若如此做,你在弃牌阶段要额外弃一张牌。代码如下:
zhuangbi=sgs.CreateTriggerSkill{
name="zhuangbi",
frequency=sgs.Skill_NotFrequent,
events={sgs.DrawNCards},
on_trigger=function(self,event,player,data)
local room=player:getRoom()
if room:askForSkillInvoke(player,"zhuangbi") then
data:setValue(data:toInt()+2)
if not player:hasSkill("zhuangbi_discard") then room:acquireSkill(player,zhuangbi_discard,true) end
end
end
}
zhuangbi_discard=sgs.CreateTriggerSkill{
name="zhuangbi_discard",
frequency=sgs.Skill_Compulsory,
events={sgs.EventPhaseStart},
on_trigger=function(self,event,player,data)
local room=player:getRoom()
if player:getPhase()==sgs.Player_Discard then
room:askForDiscard(player,"zhuangbi_discard",1,false,true)
room:detachSkillFromPlayer(player,zhuangbi_discard)
end
end
}
local skill = sgs.Sanguosha:getSkill("zhuangbi_discard")
if not skill then
local skillList = sgs.SkillList()
skillList:append(zhuangbi_discard)
sgs.Sanguosha:addSkills(skillList)
end
运行结果是能多摸牌,但是不用多弃牌,请大神看一下哪里错了。另外想问一下有没有什么debug手段


IP属地:上海1楼2016-10-09 18:38回复
    askForDiscard那行的1改成1,1,这里需要两个数值,一个是弃牌数最大值一个是最小值。
    调试方面,启动的时候别点单机启动,点启动服务器,然后再开一个游戏窗口点加入游戏,这样lua出错的话,在服务器窗口就会有错误提示了。
    另外弃牌效果的实现不需要acquireSkill,用个flag就行


    IP属地:美国来自iPhone客户端2楼2016-10-09 20:23
    收起回复