- 25 Сен 2015
- 2,348
- 41
Значит, есть код:
Что он делает: добавляет на определенном уровне героя рандомную абилку из константной таблицы ABILITY_TABLE. Проблема в чем: герой на мод один, т.е. на карте бегает 6 игроков с одинаковыми героями. И, после отработки этого кода, абилка может улететь не обязательно тому герою, который принадлежит игроку, что апнул уровень своему герою. Например, первый игрок апнул уровень своему герою, а абилка уходит не ему, а второму игроку.
На данный момент я другим путем решил эту проблему (через пассивку), но хотелось бы узнать, как граматно подправить этот кусок кода, чтобы вышло то, что задуманно.
Код:
function dungeon:OnPlayerGainedLevel(data)
local hero = PlayerResource:GetSelectedHeroEntity(data.player-1)
local level = hero:GetLevel()
if level == 3 or level == 5 or level == 7 then
local abilityName = ABILITY_TABLE[RandomInt(1,#ABILITY_TABLE)]
while hero:HasAbility(abilityName) do
abilityName = ABILITY_TABLE[RandomInt(1,#ABILITY_TABLE)]
end
local ability = hero:AddAbility(abilityName)
if ability == nil then
hero:AddAbility("sven_storm_bolt")
end
end
end
Что он делает: добавляет на определенном уровне героя рандомную абилку из константной таблицы ABILITY_TABLE. Проблема в чем: герой на мод один, т.е. на карте бегает 6 игроков с одинаковыми героями. И, после отработки этого кода, абилка может улететь не обязательно тому герою, который принадлежит игроку, что апнул уровень своему герою. Например, первый игрок апнул уровень своему герою, а абилка уходит не ему, а второму игроку.
На данный момент я другим путем решил эту проблему (через пассивку), но хотелось бы узнать, как граматно подправить этот кусок кода, чтобы вышло то, что задуманно.
Последнее редактирование модератором: