Решено Повышение уровня способности при убийстве определённого юнита

  • Официальное уведомление администрации CustomGames.RU
    В связи с масштабным техническим сбоем в инфраструктуре прежнего хостинг-провайдера (Beget), работа форума CustomGames.RU была оперативно перенесена на новую серверную площадку и развёрнута из резервной копии базы данных.

    • Безопасность данных: учётные записи и данные пользователей находятся в полной безопасности. Все пароли и защищаемые параметры хранятся исключительно в криптографически зашифрованном (хэшированном) виде — никаких критических инцидентов для аккаунтов пользователей не произошло.
    • Временные технические ограничения: на этапе синхронизации файлового хранилища часть статических материалов (пользовательские аватары и архивные вложения) временно недоступна. По мере получения доступа к файловым архивам все материалы будут восстановлены в полном объёме.

Den13337

Новичок
13 Сен 2023
7
0
Помогите написать код, который при убийстве определённого юнита, повышал уровень способности.
Есть начало, не могу никак понять как сделать дальше
Lua:
function CAddonTemplateGameMode:PlayerDied(data)

    local killer = EntIndexToHScript(data.entindex_attacker)
    local killed = EntIndexToHScript(data.entindex_killed)

    if killed:GetUnitName() == "npc_sphere" then
        
    end
end
 
Я так полагаю это код после слушателя entity_killed ты получил убитого в переменную и убийцу , так же проверил что убитый npc_sphare

Теперь тебе надо
Lua:
if killed:GetUnitName() == "npc_sphere" then
       
          -- Повышение выбранной способности у игрока найдем ее у убийцы
                local ability = killer:FindAbilityByName("ability_name")
-- Если у убийцы есть такая абилка то получаем ее текущий уровень и делаем +1

                if ability then
                    ability:SetLevel(ability:GetLevel() + 1)
             end
   end
 
  • Нравится
Реакции: Den13337
Это если хочешь массивом сделать
Lua:
-- Массив способностей
                local abilities = {
                    "ability_name_1",
                    "ability_name_2",
                    "ability_name_3"
      }          
-- Повышение первой доступной способности у игрока
for _, abilityName in ipairs(abilities) do
                    local ability = killer:FindAbilityByName(abilityName)
                    if ability then
                       ability:SetLevel(ability:GetLevel() + 1)
                        break
                    end
 
  • Нравится
Реакции: vulkantsk и Den13337
Реклама: