Nesag 1 Report post Posted August 25, 2017 Доброго времени суток, уважаемые форумчане! Собственно сабж, имеется скилл "Луч Ксерея", вот его функция из skilleffect.lua Код старался максимально закоментить function SkillArea_Line_Ks_Ray ( sklv ) --"Kcerays ray" local lenth = 500 + sklv * 30 --length (more) local width = 100 + sklv * 10 --width (a bit more) SetSkillRange ( 1 , lenth , width ) end function SkillCooldown_Ks_Ray( sklv ) local Cooldown = 45000 --cd 45sec return Cooldown end function SkillSp_Ks_Ray ( sklv ) local sp_reduce = 150+ sklv * 15 --10lvl req 300sp return sp_reduce end function SkillEnergy_Ks_Ray ( sklv ) local energy_reduce = math.floor ( 30 + sklv * 3 ) --corall eng req, rand*(60) at 10lvl return energy_reduce end function Skill_Ks_Ray_Begin ( role , sklv ) local sp = Sp(role) local sp_reduce = SkillSp_Ks_Ray ( sklv ) if sp - sp_reduce < 0 then SkillUnable(role) return end Sp_Red (role , sp_reduce ) end function Skill_Ks_Ray_End ( ATKER , DEFER , sklv ) local sta_atk= Sta ( ATKER ) local sta_def = Sta ( DEFER ) local AddStateLv = 0 AddStateLv = GetChaStateLv ( ATKER , STATE_MLCH ) local dmg = math.floor( 200 + sklv*3 +sta_atk*2 ) --dmg --local map_name_DEFER = GetChaMapName ( DEFER ) возможно допилю интересные проверки, но лень --local agi_atker = Agi(ATKER) --local Can_Pk_Garner2 = Is_NormalMonster (DEFER) local statelv = sklv local statetime = 10 AddState ( ATKER , DEFER , STATE_ZD , statelv , statetime ) -- эффект ядовитого дротика, просто для примера local hpdmg = 100 + statelv * 5 -- переменная, в которой лежит наносимый урон AddState ( ATKER , DEFER , STATE_GJJZ , statelv , statetime ) -- тут добавляется эффект как у skill_ayzz, собственно росчерк тени local dmg_fin = hpdmg -- просто потому что я захотел много переменных и это дебаг версия :))) Hp_Endure_Dmg ( DEFER , dmg_fin ) -- здесь, как я понимаю, вызывается функция Hp_Endure_Dmg AddState ( ATKER , DEFER , STATE_PJ , statelv , statetime ) --добавляется эффект как у скила бронелом end function State_Ks_Ray_Add ( role , statelv ) local defsa_dif = (-1) * ( 10 + 20 * statelv ) -- здесь величина отнимаемого дефа local defsa = math.floor ( (DefSa(role) + defsa_dif ) * ATTR_RADIX ) -- собственно переменная с будущим дефом SetCharaAttr( defsa , role , ATTR_STATEC_DEF ) ALLExAttrSet(role) Check_Ys_Rem ( ATKER , DEFER ) local hpdmg = 100 + statelv * 5 -- по аналогии делал с печатями ALLExAttrSet(role) RefreshCha(role) end function State_Ks_Ray_Rem ( role , statelv ) -- возврат исходных значений дефа local defsa_dif = (-1) * ( 10 + 20 * statelv ) local defsa = math.floor ( (DefSa(role) - defsa_dif ) * ATTR_RADIX ) SetCharaAttr( defsa , role , ATTR_STATEC_DEF ) ALLExAttrSet(role) end Он должен наносить урон активный, отнимать деф, наносить урон пассивный. Вопрос вот в чем - деф отнимает, но точно так же как и навык бронелом. Мои предположения - это как-то связано с AddState, но я к сожалению не знаю как. То же самое и с уроном, наносится урон как у дротика. Визуально все эффекты добавляются. Про AddState - STATE_PJ, STATE_GJJZ - это, как я понимаю, из массива variable.lua и просто добавляют визуальный эффект. Очень хотелось бы, чтобы кто-нибудь помог разобраться как адекватно добавлять нужные эффекты к скилам, а не методом научного тыка Share this post Link to post Share on other sites
Nesag 1 Report post Posted August 25, 2017 Разобрался, тем можно закрыть) P.s. тут все написано Цитата https://pkodev.net/index.php?/topic/698-зельесвиток-с-временным-эффектом/ 1 Share this post Link to post Share on other sites