新手想编这么一个技能:你的回合开始时,可以选择场上一名角色交给其两张牌并获得该角色的一个技能(非主公,限定)直到回合结束…
然后想尝试把仁德和夏侯石孝德直接融合起来- -失败了
最后觉得还是循序渐进 先用孝德改出来这样的技能:你的回合开始时,可以选择场上一名角色获得该角色的一个技能(非主公,限定)直到回合结束…
这个代码是这样的(其实和孝德基本一样
)
function addSkillList(general)
if not general then return nil end
local skill_list = {}
for _, skill in sgs.qlist(general:getSkillList()) do
if skill:isVisible() and not skill:isLordSkill() and skill:getFrequency() ~= sgs.Skill_Wake then
table.insert(skill_list, skill:objectName())
end
end
return table.concat(skill_list, "+")
end
luatieqian = sgs.CreateTriggerSkill{
name = "luatieqian" ,
events = {sgs.EventPhaseStart} ,
frequency = sgs.Skill_NotFrequent,
on_trigger = function(self, event, player, data)
if player:getPhase() == sgs.Player_Start then
local room = player:getRoom()
local caogang = room:findPlayerBySkillName(self:objectName())
if not caogang or caogang:getTag("luatieqianSkill"):toString() ~= "" then return false end
local skill_list = caogang:getTag("luatieqianVictimSkills"):toString():split("+")
if #skill_list == 0 then return false end
if not room:askForSkillInvoke(caogang, self:objectName()) then return false end
local skill_name = room:askForChoice(caogang, self:objectName(), table.concat(skill_list, "+"))
caogang:setTag("luatieqianSkill", sgs.QVariant(skill_name))
room:acquireSkill(caogang, skill_name)
return false
elsereturn false end
end ,
can_trigger = function(self, target)
return target ~= nil
end ,
}
luatieqianEx = sgs.CreateTriggerSkill{
name = "#luatieqian" ,
events = {sgs.EventPhaseChanging, sgs.EventLoseSkill, sgs.TurnStart} ,
on_trigger = function(self, event, player, data)
local room = player:getRoom()
if event == sgs.EventPhaseChanging then
local change = data:toPhaseChange()
if change.to == sgs.Player_NotActive then
local skill_name = player:getTag("luatieqianSkill"):toString()
if skill_name ~= "" then
room:detachSkillFromPlayer(player, skill_name, false, true)
player:setTag("luatieqianSkill", sgs.QVariant())
end
end
elseif event == sgs.EventLoseSkill and data:toString() == sef:objectName() then
local skill_name = player:getTag("luatieqianSkill"):toString()
if skill_name ~= "" then
room:detachSkillFromPlayer(player, skill_name, false, true)
player:setTag("luatieqianSkill", sgs.QVariant())
end
elseif event == sgs.TurnStart then
local room = player:getRoom()
targets = room:getAlivePlayers()
local to = room:askForPlayerChosen(player, targets, self:objectName(), "LuaZhiyan-invoke", true, true)--这句指定角色的代码是我从虞翻的直言技能里直接copy来的..虽然能用但是我还是不理解里面的"LuaZhiyan-invoke"是起什么作用..求大神顺便解释解释..
local skill_list = {}
table.insert(skill_list, addSkillList(to:getGeneral()))
table.insert(skill_list, addSkillList(to:getGeneral2()))
player:setTag("luatieqianVictimSkills", sgs.QVariant(table.concat(skill_list, "+")))
end
return false
end ,
can_trigger = function(self, target)
return target ~= nil
end,
}
caogang:addSkill(luatieqian)
caogang:addSkill(luatieqianEx)
extension:insertRelatedSkills("luacaoge", "#luatieqian")
的确能够指定角色获得他的技能了....
然后发现问题来了- -
...指定角色的luatieqianEx技能部分的确是只在自己的回合发动...
但是获得技能的luatieqian技能部分就在所有角色的回合开始都会询问我一遍..除非我选择了一个技能获得后才不会继续询问我....
这样子这个技能效果就变成了(你的回合开始前可以指定一名角色 ;场上一名角色回合开始时,你可以获得指定角色的一个技能指定你的回合结束)
求指导如何让这个技能只在自己的回合发动..求大神教育....
@NonesXX @最高最帅的65
然后想尝试把仁德和夏侯石孝德直接融合起来- -失败了
最后觉得还是循序渐进 先用孝德改出来这样的技能:你的回合开始时,可以选择场上一名角色获得该角色的一个技能(非主公,限定)直到回合结束…
这个代码是这样的(其实和孝德基本一样
function addSkillList(general)
if not general then return nil end
local skill_list = {}
for _, skill in sgs.qlist(general:getSkillList()) do
if skill:isVisible() and not skill:isLordSkill() and skill:getFrequency() ~= sgs.Skill_Wake then
table.insert(skill_list, skill:objectName())
end
end
return table.concat(skill_list, "+")
end
luatieqian = sgs.CreateTriggerSkill{
name = "luatieqian" ,
events = {sgs.EventPhaseStart} ,
frequency = sgs.Skill_NotFrequent,
on_trigger = function(self, event, player, data)
if player:getPhase() == sgs.Player_Start then
local room = player:getRoom()
local caogang = room:findPlayerBySkillName(self:objectName())
if not caogang or caogang:getTag("luatieqianSkill"):toString() ~= "" then return false end
local skill_list = caogang:getTag("luatieqianVictimSkills"):toString():split("+")
if #skill_list == 0 then return false end
if not room:askForSkillInvoke(caogang, self:objectName()) then return false end
local skill_name = room:askForChoice(caogang, self:objectName(), table.concat(skill_list, "+"))
caogang:setTag("luatieqianSkill", sgs.QVariant(skill_name))
room:acquireSkill(caogang, skill_name)
return false
elsereturn false end
end ,
can_trigger = function(self, target)
return target ~= nil
end ,
}
luatieqianEx = sgs.CreateTriggerSkill{
name = "#luatieqian" ,
events = {sgs.EventPhaseChanging, sgs.EventLoseSkill, sgs.TurnStart} ,
on_trigger = function(self, event, player, data)
local room = player:getRoom()
if event == sgs.EventPhaseChanging then
local change = data:toPhaseChange()
if change.to == sgs.Player_NotActive then
local skill_name = player:getTag("luatieqianSkill"):toString()
if skill_name ~= "" then
room:detachSkillFromPlayer(player, skill_name, false, true)
player:setTag("luatieqianSkill", sgs.QVariant())
end
end
elseif event == sgs.EventLoseSkill and data:toString() == sef:objectName() then
local skill_name = player:getTag("luatieqianSkill"):toString()
if skill_name ~= "" then
room:detachSkillFromPlayer(player, skill_name, false, true)
player:setTag("luatieqianSkill", sgs.QVariant())
end
elseif event == sgs.TurnStart then
local room = player:getRoom()
targets = room:getAlivePlayers()
local to = room:askForPlayerChosen(player, targets, self:objectName(), "LuaZhiyan-invoke", true, true)--这句指定角色的代码是我从虞翻的直言技能里直接copy来的..虽然能用但是我还是不理解里面的"LuaZhiyan-invoke"是起什么作用..求大神顺便解释解释..
local skill_list = {}
table.insert(skill_list, addSkillList(to:getGeneral()))
table.insert(skill_list, addSkillList(to:getGeneral2()))
player:setTag("luatieqianVictimSkills", sgs.QVariant(table.concat(skill_list, "+")))
end
return false
end ,
can_trigger = function(self, target)
return target ~= nil
end,
}
caogang:addSkill(luatieqian)
caogang:addSkill(luatieqianEx)
extension:insertRelatedSkills("luacaoge", "#luatieqian")
的确能够指定角色获得他的技能了....
然后发现问题来了- -
...指定角色的luatieqianEx技能部分的确是只在自己的回合发动...
但是获得技能的luatieqian技能部分就在所有角色的回合开始都会询问我一遍..除非我选择了一个技能获得后才不会继续询问我....
这样子这个技能效果就变成了(你的回合开始前可以指定一名角色 ;场上一名角色回合开始时,你可以获得指定角色的一个技能指定你的回合结束)
求指导如何让这个技能只在自己的回合发动..求大神教育....
@NonesXX @最高最帅的65











