- 7 Окт 2024
- 5
- 0
Сори за дубликаты темы но те темы очень старые по годкам и ответа я в них не нашел. Собсна мой скрипт и ниже будут пару вопросов
Что хотелось бы узнать:
1. Какого нафигафига метод GetAbilityTextureName() запускается по тику в отличии от других методов и тех что я делаю самостоятельно?
2. Каким образом этот метод вообще работает? В коде я определяю переменную current_state. print в блоке GetAbilityTextureName() благополучно выводит эту переменную но походу не саму переменную я какую то свою копию, т.к. после изменений этой самой переменной - выводиться всегда 1. Ессесно текстурка абилки всегда будет одна и таже.
3. Как передать в метод GetAbilityTextureName() новое значение переменной?
4. Как вообще еще можно реализовать смену иконки абилки как это выглядит у троля на переключении ближний-дальний?
5. Как можно сделать эффект автоюза на абилке (когда видет крутящийся эффект на иконке к примеру сплитшот у мидузы)?
Сори если чет не так описал. Сам недавно заинтересовался модингом в доте и если честно это просто жопараздирающая боль. Проще разобраться в UE и наклепать там свю логику чем тут))
dk_aura = class ({})
LinkLuaModifier( "dk_aura_modifier", "modifiers/dk_aura_modifier", LUA_MODIFIER_MOTION_NONE )
function dk_aura:Init()
if self.current_state == nil then
self.current_state = 1
end
end
function dk_aura:OnUpgrade()
if self:GetLevel() == 1 then
self:ToggleAbility()
end
end
function dk_aura:GetAbilityTextureName()
print(self.current_state)
local textures = {
[1] = "texture_01",
[2] = "texture_02",
[3] = "texture_03"
}
return textures[self.current_state]
end
function dk_aura:OnToggle()
local caster = self:GetCaster()
if self:GetToggleState() then
caster:AddNewModifier(caster, self, "dk_aura_modifier", { current_state = self.current_state })
else
caster:RemoveModifierByName("dk_aura_modifier")
if self.current_state <= 3 then
self.current_state = self.current_state + 1
else
self.current_state = 1
end
self:ToggleAbility()
end
end
LinkLuaModifier( "dk_aura_modifier", "modifiers/dk_aura_modifier", LUA_MODIFIER_MOTION_NONE )
function dk_aura:Init()
if self.current_state == nil then
self.current_state = 1
end
end
function dk_aura:OnUpgrade()
if self:GetLevel() == 1 then
self:ToggleAbility()
end
end
function dk_aura:GetAbilityTextureName()
print(self.current_state)
local textures = {
[1] = "texture_01",
[2] = "texture_02",
[3] = "texture_03"
}
return textures[self.current_state]
end
function dk_aura:OnToggle()
local caster = self:GetCaster()
if self:GetToggleState() then
caster:AddNewModifier(caster, self, "dk_aura_modifier", { current_state = self.current_state })
else
caster:RemoveModifierByName("dk_aura_modifier")
if self.current_state <= 3 then
self.current_state = self.current_state + 1
else
self.current_state = 1
end
self:ToggleAbility()
end
end
1. Какого нафигафига метод GetAbilityTextureName() запускается по тику в отличии от других методов и тех что я делаю самостоятельно?
2. Каким образом этот метод вообще работает? В коде я определяю переменную current_state. print в блоке GetAbilityTextureName() благополучно выводит эту переменную но походу не саму переменную я какую то свою копию, т.к. после изменений этой самой переменной - выводиться всегда 1. Ессесно текстурка абилки всегда будет одна и таже.
3. Как передать в метод GetAbilityTextureName() новое значение переменной?
4. Как вообще еще можно реализовать смену иконки абилки как это выглядит у троля на переключении ближний-дальний?
5. Как можно сделать эффект автоюза на абилке (когда видет крутящийся эффект на иконке к примеру сплитшот у мидузы)?
Сори если чет не так описал. Сам недавно заинтересовался модингом в доте и если честно это просто жопараздирающая боль. Проще разобраться в UE и наклепать там свю логику чем тут))