CustomGames.ru - Dota 2 пользовательские игры

Создать абилку

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн I_Explorer

  • 206
  • Мощь: 3
Создать абилку
« : 09-02-2017, 12:31:03 »
Кому не сложно помогите сделать абилку (пассивную).
1)На крипе висит постоянный дебаф обезоруживание.
Дебаф снимается если:
1) наступил день ( дебаф возвращается когда наступает ночь)
2) крип был атакован (после 45 секунд дебаф восстанавливается)
--[[3) союзного крипа|героя в радиусе 1000 атаковали (после 45 секунд дебаф восстанавливается)
]]
Невозможно развеять: диффузами,пуржами, думом, смертью.
Мой недо-мод для ДотА2 - steamcommunity.com/...ils/?id=765024602

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: Создать абилку
« Ответ #1 : 09-02-2017, 13:21:00 »
Кому не сложно помогите сделать абилку (пассивную).
1)На крипе висит постоянный дебаф обезоруживание.
Дебаф снимается если:
1) наступил день ( дебаф возвращается когда наступает ночь)
2) крип был атакован (после 45 секунд дебаф восстанавливается)
--[[3) союзного крипа|героя в радиусе 1000 атаковали (после 45 секунд дебаф восстанавливается)
]]
Невозможно развеять: диффузами,пуржами, думом, смертью.
Тебе в вакансии нужно идти.

Оффлайн I_Explorer

  • 206
  • Мощь: 3
Re: Создать абилку
« Ответ #2 : 09-02-2017, 15:10:30 »
Тебе в вакансии нужно идти.
типо платить надо?((
Мой недо-мод для ДотА2 - steamcommunity.com/...ils/?id=765024602

Оффлайн Adam Smith

  • Друзья CG
  • 476
  • Мощь: 6
  • жрять жри его
Re: Создать абилку
« Ответ #3 : 09-02-2017, 15:24:10 »
типо платить надо?((
Ну такой за 150 сделают.
By PG.Freeman

Оффлайн Danis

  • Продвинутый
  • 268
  • Мощь: 2
Re: Создать абилку
« Ответ #4 : 09-02-2017, 15:29:32 »
Ну такой за 150 сделают.

Скорее за 120.
Создай Героя
Мод  - steamcommunity.com/...ils/?id=750146414
[свернуть]

Оффлайн Adam Smith

  • Друзья CG
  • 476
  • Мощь: 6
  • жрять жри его
Re: Создать абилку
« Ответ #5 : 09-02-2017, 15:38:02 »
Скорее за 120.
Ну за 120 будет говнокод на датадрайвене, а не динамический код на луа
By PG.Freeman

Оффлайн I_Explorer

  • 206
  • Мощь: 3
Re: Создать абилку
« Ответ #6 : 09-02-2017, 15:49:12 »
Ну такой за 150 сделают.
лан, пойду на завтраках копить((
Мой недо-мод для ДотА2 - steamcommunity.com/...ils/?id=765024602

Оффлайн ZLOY

  • Супермодератор
  • 396
  • Мощь: 5
Re: Создать абилку
« Ответ #7 : 09-02-2017, 16:06:43 »
Код
GameRules:IsDaytime()
MODIFIER_EVENT_ON_ATTACK_LANDED
CDOTA_BaseNPC:AddNewModifier(handle caster, handle optionalSourceAbility, string modifierName, handle modifierData)
CDOTA_BaseNPC:RemoveModifierByName(string pszScriptName)
Тебе осталось собрать это в одну кучу

Оффлайн Adam Smith

  • Друзья CG
  • 476
  • Мощь: 6
  • жрять жри его
Re: Создать абилку
« Ответ #8 : 09-02-2017, 16:16:28 »
Код
GameRules:IsDaytime()
MODIFIER_EVENT_ON_ATTACK_LANDED
CDOTA_BaseNPC:AddNewModifier(handle caster, handle optionalSourceAbility, string modifierName, handle modifierData)
CDOTA_BaseNPC:RemoveModifierByName(string pszScriptName)
Тебе осталось собрать это в одну кучу
Ну чего ты людей дохода то лишаешь :DD
By PG.Freeman

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: Создать абилку
« Ответ #9 : 09-02-2017, 18:52:32 »
Ну чего ты людей дохода то лишаешь :DD
Ну он же злой :D

Оффлайн gameizeazy

  • 106
  • Мощь: 1
Re: Создать абилку
« Ответ #10 : 10-02-2017, 05:17:20 »
Кому не сложно помогите сделать абилку (пассивную).
1)На крипе висит постоянный дебаф обезоруживание.
Дебаф снимается если:
1) наступил день ( дебаф возвращается когда наступает ночь)
2) крип был атакован (после 45 секунд дебаф восстанавливается)
Невозможно развеять: диффузами,пуржами, думом, смертью.
Нуууу, вобщем, кидаем при спавне Баф обезаруживание
1.Таймер, иф ла ла лала время ща > началаДня && время ща < ночи тада Снять модифиер
2. ла ла ла абилка, евент, и прочую хуни, одно разовый таймер на 45, и снова вешаем, ла ла ла
3.  Ну бля че так сложно, 

Оффлайн I_Explorer

  • 206
  • Мощь: 3
Re: Создать абилку
« Ответ #11 : 13-02-2017, 11:55:20 »
Не особо понял о чем написали выше.
Попробовал сделать по-своему (заменил обезоруживание на рут), предварительно спиздив из библиотеки 2скил цм-ки, 3-ий кентавра и 3-ий баланара.
Скил вроде работает (1-ый и 2-ой пункт) но при атаке юнита он выходит из рута только на 0.1 сек (надо 45).
Что нужно поменять? Я думаю нужно прибавить к  "ThinkInterval"   "0.1" ещё 44.9, но буду благодарен если скажете как сделать это с помощь таймера.
Код
"frostbite_datadriven"
{
// General
//-------------------------------------------------------------------------------------------------------------
"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE"
"AbilityTextureName" "crystal_maiden_frostbite"

// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_FLOAT"
"creep_duration" "360.0"
}

}

// Data driven
//-------------------------------------------------------------------------------------------------------------
"precache"
{
"particle" "particles/units/heroes/hero_crystalmaiden/maiden_frostbite_buff.vpcf"
"particle" "particles/units/heroes/hero_crystalmaiden/maiden_frostbite.vpcf"
}

"Modifiers"
{
"modifier_hunter_in_the_night_datadriven"
{
"Passive" "1"
"IsHidden" "1"

"AllowIllusionDuplicate" "1"

"ThinkInterval" "0.1"
"OnIntervalThink"
{
"RunScript"
{
"ScriptFile" "night.lua"
"Function" "HunterInTheNight"
"modifier" "modifier_frost_bite_root_datadriven"
}
}
}

"modifier_return"
{
"Passive" "1"
"OnAttacked"
{
"RunScript"
{
"ScriptFile" "day.lua"
"Function" "Return"
"modifier" "modifier_frost_bite_root_datadriven"
}
}
}

"modifier_frost_bite_root_datadriven"
{
"IsPurgable" "1"

"EffectName" "particles/units/heroes/hero_crystalmaiden/maiden_frostbite_buff.vpcf"

"States"
{
"MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED"
"MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_DISABLED"
}
}
}
}
Код
function Return( keys )
local caster = keys.caster
local attacker = keys.attacker
local ability = keys.ability
local modifier = keys.modifier

if attacker:GetTeamNumber() ~= caster:GetTeamNumber() and caster:HasModifier(modifier) then
caster:RemoveModifierByName(modifier)

end

end
Код
function HunterInTheNight( keys )
local caster = keys.caster
local ability = keys.ability
local modifier = keys.modifier

if GameRules:IsDaytime() then
ability:ApplyDataDrivenModifier(caster, caster, modifier, {})
else
if caster:HasModifier(modifier) then caster:RemoveModifierByName(modifier) end
end
end
p.s. сорри за говнокод
p.p.s как 3-ий пункт сделать? я думал поискать что-то похожее в ульте абаддона с аганимом, но там ничего не нашел(
Мой недо-мод для ДотА2 - steamcommunity.com/...ils/?id=765024602

Оффлайн Илья

  • Супермодератор
  • 2041
  • Мощь: 19
Re: Создать абилку
« Ответ #12 : 13-02-2017, 12:08:00 »
Молодец, что сумел-таки подумать головой и что-то сделать, хоть и неопрятное, но зато свое.

Теперь давай, разберем твою механику и ты сам найдешь ошибку (ну, недоработанную логику):

1)У тебя на крипе весит пассивный модификатор, который каждые 0,1 секунды проверяет время в игре. Если это день, то вешает "бафф" на носителя. Иначе снимает этот баф.

2)Так же у тебя на крипе висит пассивный модификатор, который при атаке этого крипа снимает этот же "баф", если он на нем висел.

Теперь объедини в голове эти два предложения. В особенности обрати внимание на первое: каждые 0,1 сек идет проверка и накидывание...


А насчет таймера: thinker - это тот же самый таймер, только в dd (data driven). Зачем тебе его в луа переносить, если ничего не поменяется?

Оффлайн Илья

  • Супермодератор
  • 2041
  • Мощь: 19
Re: Создать абилку
« Ответ #13 : 13-02-2017, 12:12:40 »
Еще интересный момент:

Цитировать
Скил вроде работает (1-ый и 2-ой пункт)

Цитировать
Дебаф снимается если:
1) наступил день ( дебаф возвращается когда наступает ночь)

Цитировать
if GameRules:IsDaytime() then
      ability:ApplyDataDrivenModifier(caster, caster, modifier, {})
   else


Ты решил все же днем накидывать?)

Оффлайн I_Explorer

  • 206
  • Мощь: 3
Re: Создать абилку
« Ответ #14 : 13-02-2017, 12:28:53 »
Еще интересный момент:


Ты решил все же днем накидывать?)
да, мне так и надо было, я прост вначале затупил.
Мой недо-мод для ДотА2 - steamcommunity.com/...ils/?id=765024602