Уровень героя = уровень абилки

Hexada

Пользователь
27 Апр 2018
18
0
Хочу сделать, чтобы каждый раз, когда герой поднимает уровень, автоматически (не тратя поинт прокачки) прокачивалась определенная абилка (иными словами, Уровень героя 12 = Уровень абилки 12).
помогите плс
 

muRLoc

Пользователь
25 Ноя 2018
39
11
https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/API.
UpgradeAbility прокачивает абилку, если тратит скиллпоинт, то можешь юзать GetAbilityPoints, SetAbilityPoints(получить значение количества поинтов и установить его, соответственно)
Смотря как именно тебе нужно, если только для определенной и при этом скилпоинты должны остаться неизменными, то этого будет достаточно:
Код:
function SetLevelAbility(hHero)
   local ability = hHero:GetAbilityByIndex(*индекс необходимой абилки*)
   ability:SetLevel(hHero:GetLevel())
end
Вызываешь каждый раз когда герой апает уровень, hHero = твой герой.
 
  • Нравится
Реакции: Hexada

LAPKI

Активный
26 Окт 2018
72
13
Смотря как именно тебе нужно, если только для определенной и при этом скилпоинты должны остаться неизменными, то этого будет достаточно:
Код:
function SetLevelAbility(hHero)
   local ability = hHero:GetAbilityByIndex(*индекс необходимой абилки*)
   ability:SetLevel(hHero:GetLevel())
end
Вызываешь каждый раз когда герой апает уровень, hHero = твой герой.
я думаю в случае UpgradeAbility скиллпоинт тратится. В вашем примере SetLevel на Ability, что фактически устанавливает лвл, и ваш вариант будет более правильным в данном случае.
 

muRLoc

Пользователь
25 Ноя 2018
39
11
Если исползуешь баребонес , то там в events.lua есть ивент OnPlayerLevelUp
в его тело засовываешь следующее:
Код:
local hHero = PlayerResource:GetSelectedHeroEntity(player:GetPlayerID())
local ability = hHero:GetAbilityByIndex(индекс необходимой абилки)
ability:SetLevel(hHero:GetLevel())
Это должно работать для всех героев в игре, если нужен определенный добавляй условия.
 
  • Нравится
Реакции: dEN5
Реклама: