level 11
小弟刚开始接触LUA的编写,想写出这个一个技能的效果
但是完全没有头绪,请各位大能指教一番
2012年09月16日 04点09分
1
level 13
时机使用杀
检测自己是否有武器,是则end
检测对方是否有手牌,是则end
伤害+1
2012年09月16日 04点09分
2
回复
@leowebber :没太注意看……瞎了……还以为是没武器就获得古锭的效果……
2012年09月17日 00点09分
level 11
嗯,感谢,主要是不知道要用哪种,现在知道是触发技了
2012年09月16日 04点09分
3
level 11
刚才怎么被吃掉了,再发一次好了
小弟研究了半天,参考了各种教程,目前写出了伤害永久+1的代码,放到神杀客户端里会造成崩溃,目前纠结错误中,请各位大侠指正
另:对于如何判断是否装备武器和如何判断目标是否没有手牌两项完全没有头绪,请各位大侠指教
下面是小弟的代码,哪里有错实在是疑惑中...
newskill = sgs.CreateTriggerSkill
{
name="newskill",
frequency=sgs.Skill_Compulsory; event=sgs.Predamage,
on_trigger=function(target,event,player,data)
local room = player:getRoom()
local damage = data:toDamage()
local reason = damage.card if(reason:inherits("Slash")) then
local log = sgs.LogMessage()
log.type = "#newskill"
log.from = player
log.to:append(damage.to)
log.arg = tonumber(damage.damage)
log.arg2 = log.arg+1
room:sendLog(log)
damage.damage = damage.damage+1
data:setValue(damage)
return false
end
end,
}
2012年09月16日 14点09分
5
level 13
--lua是逗号
frequency = sgs.Skill_Compulsory
,
--若武器区是空
if player:getWeapon() == nil then
--若对方没有手牌
if damage.to:isKongcheng() then
2012年09月16日 14点09分
6
谢谢指正,可是还是不行,我把改好的代码贴在下面,请帮忙再看下
2012年09月16日 14点09分
level 11
根据6楼大侠的意见修正后无效,请6楼大侠再帮忙看下吧~~
newskill = sgs.CreateTriggerSkill
{
name="newskill",
frequency=sgs.Skill_Compulsory, event=sgs.SlashProceed,
on_trigger=function(self,event,player,data)
local room = player:getRoom()
local damage = data:toDamage()
local reason = damage.card if(reason:inherits("Slash")) then
if player:getWeapon() ~= nil then return false end
if not damage.to:isKongcheng() then return false end
damage.damage = damage.damage+1
data:setValue(damage)
end
end,
}
2012年09月16日 14点09分
8
最最后也得瑞ten个false
2012年09月16日 14点09分
回复 09113621 :data:setValue(damage)后面加了return false还是无效
2012年09月16日 15点09分
为什么把sgs.Predamage改成了sgs.SlashProceed,这个data就不对了
2012年09月16日 15点09分
回复 killerluxp :中间有啥问题我看不懂,但是我知道最最后面,我才是倒数第一个end前得加个return false
2012年09月16日 15点09分
level 12
楼主神杀版本是哪个?新神杀貌似得用iskindof而不是inherits
2012年09月16日 15点09分
11
我的神杀是9/10号的版本,可是我之前用的其他吧友的技能代码,里面也是用Inherits的,也可以用呀~~
2012年09月16日 15点09分
回复 killerluxp :...就要用isKindOf("Slash")
2012年09月16日 16点09分
回复 brianvong :试过了,无效,神杀可以进,但是一启动游戏就崩溃
2012年09月16日 16点09分
isKindOf 或 inherits 都可以
2012年09月17日 08点09分
level 11
根据大家的意见修改的代码如下,但是神杀不认,郁闷~~
newskill = sgs.CreateTriggerSkill
{
name="newskill",
frequency=sgs.Skill_Compulsory,
event={sgs.Predamage},
on_trigger=function(slef,event,player,data)
local room = player:getRoom()
local damage = data:toDamage()
local reason = damage.card if(not reason) then return false end
if reason:inherits("Slash") then
if player:getWeapon() ~= nil then return false end
if not damage.to:isKongcheng() then return false end
damage.damage = damage.damage + 1
data:setValue(damage)
return false
end
end,
}
2012年09月16日 15点09分
14
level 11
qiangli = sgs.CreateTriggerSkill{
frequency = sgs.Skill_NotFrequent,
name = "qiangli",
events = {sgs.Predamage},
on_trigger = function(self, event, player, data)
local room = player:getRoom()
local damage = data:toDamage()
local card = data:toDamage().card
if card==nil then return end
if player:getWeapon()~=nil then return end
if damage.to:getHandcardNum()>0 then return end
if card:inherits("Slash") then
if (room:askForSkillInvoke(player,self:objectName(),data)~=true) then return end
damage.damage = damage.damage+1
data:setValue(damage)
end
end,
}
我把他改成非锁定就可以了,只是不知道攻击范围的函数是什么?
2012年09月17日 04点09分
17
12点多发的就是没人知道,刚刚上了论坛15点多,还再问,明明有答案摆在这儿,居然视而不见
2012年09月17日 08点09分
居然还在问,你自己发的贴有时也应该看看啊?不然别人白白谢了这么多
2012年09月17日 08点09分
回复 元嘉体 :写了这么多
2012年09月17日 08点09分
如果这个放到0910里,槽点数不胜数。。。
2012年09月17日 08点09分
level 11
刚刚试过了, 锁定了也可以, 另外用DamageCaused好像也可以,不过我还是倾向于
sgs.Predamage
2012年09月17日 09点09分
18
alpha版的话ConfirmDamage 也是行的
2012年09月17日 10点09分
刚刚 在论坛上我看到你写的了,是可以的。新的时机哪里有啊?moligaloo里的是涅盘版的吗?
2012年09月17日 10点09分
回复 brianvong :该是什么就是什么。。。单将看不出的问题双将就有了。。。
2012年09月17日 10点09分
ConfirmDamage, // confirm the damage's count and damage's nature Predamage, // trigger the certain skill -- jueqing DamageCaused, // the moment for -- qianxi.. 是ConfirmDamage吧
2012年09月17日 10点09分