Направление эффекта

Моя сейчас идея в том, чтобы при включении (переключаемой) ульты менялся скилл на другой
Я добавил на этот раз скилл в папку с героями, добавил скрипты на повышение уровня одного при вкачивании другого и наоборот, сейчас проблема в том, что все скиллы объединились на одной панели скиллов снизу. Как заставить их скрыться вообще и не использоваться на клавиши?
img
 
[quote author=EnDronist link=topic=872.msg4169#msg4169 date=1462699317]
Моя сейчас идея в том, чтобы при включении (переключаемой) ульты менялся скилл на другой
Я добавил на этот раз скилл в папку с героями, добавил скрипты на повышение уровня одного при вкачивании другого и наоборот, сейчас проблема в том, что все скиллы объединились на одной панели скиллов снизу. Как заставить их скрыться вообще и не использоваться на клавиши?
img

[/quote]
DOTA_ABILITY_BEHAVIOR_HIDDEN
 
CryDeS, Как тогда прописать в lua, либо в самомnpc_abilities_custom.txt команду на смену значенийDOTA_ABILITY_BEHAVIOR_HIDDEN у скиллов, которые должны свапаться?
 
Все, наконец то ты выразил то, что хочешь сделать и я тебя понял.

Нафиг не сдалась тебе функция swap. Ее не для этого используют, на сколько я знаю.


Тебе надо делать так:
1)создаешь свою toogle ульту в npc_abilities_custom.txt и реализуешь ее через lua
2)создаешь те две абилки в npc_abilities_custom.txt
3)персонажу даешь только ульт и одну абилку в npc_heroes_custom.txt (вторую ему давать не надо)
4)в ульте реализуешь такой код, который по ее активации:
* запоминал уровень твоей первой абилки (через глобальные переменные или еще что придумай)
* удалял её
* добавлял через AddAbility() вторую абилку
* делал ей нужный уровень
5) По дезактивации реализуешь у ульты:
* удаление второй абилки
* добавление через AddAbility() первой
* возврат ее характеристик

Вот так это делается.


Насчет панели абилок: если у тебя более 4х на панели, то надо "AbilityLayout" у героя выставлять в значение более 4х.
 
Последнее редактирование модератором:
Поправьте, он не может поймать название скиллов (ивент - это же не кейс)
Код:
function swap(event)
  local caster = event.caster
  local normal = event.phantom_assassin_stifling_dagger
  local ult = event.phantom_assassin_stifling_dagger_ult
  _G.level_pa_dagger = normal:GetLevel() - 1
  caster:SwapAbilities(skill_normal, skill_ult, false, true)
end
function ult_swap(event)
  local caster = event.caster
  local normal = event.phantom_assassin_stifling_dagger
  local ult = event.phantom_assassin_stifling_dagger_ult
  _G.level_pa_dagger_ult = ult:GetLevel() - 1
  caster:SwapAbilities(skill_ult, skill_normal, false, true)
end
 
Тебе и не надо их никаким образом передавать. И ты опять используешь функцию swap. Я же тебе написал, что делать ( AddAbility("ability_name") )
 
Последнее редактирование модератором:
И keys и event это все одно и то же - таблица. Различны только те функции, что ими орудуют и их создают.
 
Тебе и не надо их никаким образом передавать. И ты опять используешь функцию swap. Я же тебе написал, что делать ( AddAbility("ability_name") )
А, ну да, забыл. Я вообще сейчас немного всё уже надо идти в свои хоромы дрыхнуть
 
Последнее редактирование модератором:
Илья,
Код:
function swap(event)
  _G.level_pa_dagger = event.phantom_assassin_stifling_dagger:GetLevel() - 1
  print (_G.level_pa_dagger)
end
function ult_swap(event)
  _G.level_pa_dagger_ult = event.phantom_assassin_stifling_dagger_ult:GetLevel() - 1
  print (_G.level_pa_dagger_ult)
end
Код:
[  Developer      ]: ...st1\scripts\vscripts\heroes\modifier_coup_de_grace_1.lua:33: attempt to index field 'phantom_assassin_stifling_dagger_ult' (a nil value)
[  Developer      ]: stack traceback:
[  Developer      ]:  ...st1\scripts\vscripts\heroes\modifier_coup_de_grace_1.lua:33: in function <...st1\scripts\vscripts\heroes\modifier_coup_de_grace_1.lua:32>
[ W VScript       ]: Script Runtime Error: ...st1\scripts\vscripts\heroes\modifier_coup_de_grace_1.lua:33: attempt to index field 'phantom_assassin_stifling_dagger_ult' (a nil value)
[ W VScript       ]: stack traceback:
[ W VScript       ]:  ...st1\scripts\vscripts\heroes\modifier_coup_de_grace_1.lua:33: in function <...st1\scripts\vscripts\heroes\modifier_coup_de_grace_1.lua:32>
 
Последнее редактирование модератором:
Я же говорю: не надо тебе их передавать (да и передаешь ты, как тебе консоль показывает, неверно).

Делаешь что-то в духе:

Код:
function swap(data)
  local caster = data.caster
  local ability = caster:FindAbilityByName("phantom_assassin_stifling_dagger")
  local level = ability:GetLevel()
  caster:RemoveAbility("phantom_assassin_stifling_dagger")
  ability = caster:AddAbility("phantom_assassin_stifling_dagger_ult")
  ability:SetLevel(level)
end

function ult_swap(data)
  local caster = data.caster
  local ability = caster:FindAbilityByName("phantom_assassin_stifling_dagger_ult")
  local level = ability:GetLevel()
  caster:RemoveAbility("phantom_assassin_stifling_dagger_ult")
  ability = caster:AddAbility("phantom_assassin_stifling_dagger")
  ability:SetLevel(level)
end
 
Последнее редактирование модератором:
Реклама: