Решено Как сменить персонажа во время игры?

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

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

fabio_longo

Продвинутый
13 Июн 2021
182
28
steamcommunity.com
Проект
Chen's Training, Creep Stacking Training
Есть ли команда, которая меняет уже выбранного персонажа на другого?
 
Есть ли команда, которая меняет уже выбранного персонажа на другого?
PlayerResource:ReplaceHeroWith(playerID, newHeroName, 0, 0)
newHero:RespawnHero(false, false)

Код:
function GiveNewHero(keys)
    local caster = keys.caster
    local playerID = caster:GetPlayerID()
    local oldHero = caster--PlayerResource:GetSelectedHeroEntity(playerID)   
    local newHeroName = keys.hero_name
    local gold = oldHero:GetGold()
    local experience = oldHero:GetCurrentXP()
    print("gold = "..gold.." exp = "..experience)
    if not PlayerResource:IsValidPlayer(playerID) or not PlayerResource:GetPlayer(playerID) then
        return
    end
    
    if playerID ~= nil and playerID ~= -1 then
        caster:ForceKill(false)
        items_table = {}
        for i = 0, 23 do
            local item = oldHero:GetItemInSlot( i )
            if item ~= nil then
                items_table[item:GetName()] = item:GetCurrentCharges()
                item:RemoveSelf()
            end
        end
        local newHero = PlayerResource:ReplaceHeroWith(playerID, newHeroName, 0, 0)
        newHero:RespawnHero(false, false)
        
        newHero:SetGold(gold, false)
        newHero:AddExperience(experience, 0, false, true)
        for item,stacks in pairs(items_table) do
            local item = newHero:AddItemByName(item)
            item:UseResources(false, false, true)
            item:SetCurrentCharges(stacks)
        end
    end
end
 
  • Нравится
Реакции: fabio_longo
PlayerResource:ReplaceHeroWith(playerID, newHeroName, 0, 0)
newHero:RespawnHero(false, false)

Код:
function GiveNewHero(keys)
    local caster = keys.caster
    local playerID = caster:GetPlayerID()
    local oldHero = caster--PlayerResource:GetSelectedHeroEntity(playerID)  
    local newHeroName = keys.hero_name
    local gold = oldHero:GetGold()
    local experience = oldHero:GetCurrentXP()
    print("gold = "..gold.." exp = "..experience)
    if not PlayerResource:IsValidPlayer(playerID) or not PlayerResource:GetPlayer(playerID) then
        return
    end
   
    if playerID ~= nil and playerID ~= -1 then
        caster:ForceKill(false)
        items_table = {}
        for i = 0, 23 do
            local item = oldHero:GetItemInSlot( i )
            if item ~= nil then
                items_table[item:GetName()] = item:GetCurrentCharges()
                item:RemoveSelf()
            end
        end
        local newHero = PlayerResource:ReplaceHeroWith(playerID, newHeroName, 0, 0)
        newHero:RespawnHero(false, false)
       
        newHero:SetGold(gold, false)
        newHero:AddExperience(experience, 0, false, true)
        for item,stacks in pairs(items_table) do
            local item = newHero:AddItemByName(item)
            item:UseResources(false, false, true)
            item:SetCurrentCharges(stacks)
        end
    end
end
Спасибо огромное!
 
Реклама: