Как поменять местами улучшение от скипетра и шарда

shizik1_shizik2

Активный
5 Июн 2023
83
3
Помогите пожалуйста я не понимаю как сделать так чтобы улучшение от шарда давалось не шардом а скипетром
 
Помогите пожалуйста я не понимаю как сделать так чтобы улучшение от шарда давалось не шардом а скипетром
Для изменения местами шарда и аганима в DotA 2 без полного изменения способностей, вам потребуется использовать Lua-скриптинг и работать с соответствующими функциями и переменными.

Вот примерный алгоритм, который вы можете использовать:

1. Создайте новую переменную для хранения информации о шарде и аганиме. Например, вы можете использовать таблицу, где ключами будут идентификаторы героев, а значениями будут булевы переменные, указывающие, есть ли у героя шард или аганим.

Lua:
local heroShard = {}
local heroAghanim = {}


2. При создании героя или при изменении его инвентаря, проверьте, есть ли у него шард или аганим. Если есть, установите соответствующие значения в таблице.

Lua:
function OnHeroSpawned(event)
    local hero = event.hero
    local playerID = hero:GetPlayerID()

    -- Проверяем наличие шарда и аганима у героя
    if hero:HasModifier("modifier_item_aghanims_shard") then
        heroShard[playerID] = true
    else
        heroShard[playerID] = false
    end

    if hero:HasModifier("modifier_item_ultimate_scepter_consumed") then
        heroAghanim[playerID] = true
    else
        heroAghanim[playerID] = false
    end
end

3. Создайте функцию, которая будет менять местами шард и аганим для конкретного героя. В этой функции вы должны проверить текущее состояние героя (имеет ли он шард или аганим), а затем изменить его инвентарь и таблицу с соответствующими значениями.

Lua:
function SwapShardAndAghanim(playerID)
    local hero = PlayerResource:GetSelectedHeroEntity(playerID)

    -- Проверяем текущее состояние героя
    local hasShard = heroShard[playerID]
    local hasAghanim = heroAghanim[playerID]

    -- Меняем местами шард и аганим
    if hasShard then
        hero:RemoveModifierByName("modifier_item_aghanims_shard")
        hero:AddNewModifier(hero, nil, "modifier_item_ultimate_scepter_consumed", {})
        heroShard[playerID] = false
        heroAghanim[playerID] = true
    elseif hasAghanim then
        hero:RemoveModifierByName("modifier_item_ultimate_scepter_consumed")
        hero:AddNewModifier(hero, nil, "modifier_item_aghanims_shard", {})
        heroShard[playerID] = true
        heroAghanim[playerID] = false
    end
end

Вы можете вызывать функцию SwapShardAndAghanim для конкретного игрока, чтобы поменять местами шард и аганим у его героя.

Обратите внимание, что это только примерный алгоритм, и вам может потребоваться дополнительная настройка в зависимости от вашей конкретной игры и требований.

Полный код:
Lua:
local heroShard = {}
local heroAghanim = {}


function OnHeroSpawned(event)
    local hero = event.hero
    local playerID = hero:GetPlayerID()

    -- Проверяем наличие шарда и аганима у героя
    if hero:HasModifier("modifier_item_aghanims_shard") then
        heroShard[playerID] = true
    else
        heroShard[playerID] = false
    end

    if hero:HasModifier("modifier_item_ultimate_scepter_consumed") then
        heroAghanim[playerID] = true
    else
        heroAghanim[playerID] = false
    end
end

function SwapShardAndAghanim(playerID)
    local hero = PlayerResource:GetSelectedHeroEntity(playerID)

    -- Проверяем текущее состояние героя
    local hasShard = heroShard[playerID]
    local hasAghanim = heroAghanim[playerID]

    -- Меняем местами шард и аганим
    if hasShard then
        hero:RemoveModifierByName("modifier_item_aghanims_shard")
        hero:AddNewModifier(hero, nil, "modifier_item_ultimate_scepter_consumed", {})
        heroShard[playerID] = false
        heroAghanim[playerID] = true
    elseif hasAghanim then
        hero:RemoveModifierByName("modifier_item_ultimate_scepter_consumed")
        hero:AddNewModifier(hero, nil, "modifier_item_aghanims_shard", {})
        heroShard[playerID] = true
        heroAghanim[playerID] = false
    end
end

Пример сгенерирован ChatGPT , суть : свапнуть местами модификаторы шарда и аганима , нужно использовать слушатель наличия аганима или шарда у игрока и вызвать функцию свапа

Так же модификатор аганима выглядит:
HasScepter()
Пример:
if self:GetCaster():HasScepter() then
 
Реклама: