Золото и опыт за крипов всем

xDes

Пользователь
8 Ноя 2018
27
1
3
30
Реакции
1 0 0
#1
Подскажите пожалуйста, вот я выдрал в недрах форума вот такой код:
Код:
function CAddonTemplateGameMode:OnEntityKilled( keys )
    local killed_unit = EntIndexToHScript( keys.entindex_killed )
    local killer = EntIndexToHScript( keys.entindex_attacker )

    if killed_unit:GetUnitName() == "npc_dota_neutral_kobold" then
        for i = 0, PlayerResource:GetPlayerCount() - 1 do
            local gold = 322 -- кол-во голды
            local player = PlayerResource:GetSelectedHeroEntity(i)
            if player:GetTeam() == killer:GetTeam() then
                player:ModifyGold( gold, true, 0 )
                SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, player, gold, nil)
            end
        end
    end
end
этот код дает 322 голды за убийство крипа всей команде, не важно как далеко от крипа ты находился и был ли мертв(как за тавера в обычной доте)
Я был бы очень благодарен если бы вы мне помогли понять и подправить этот код, чтобы голду давало только живым героям и в определенном радиусе от крипа. Знаю есть FindUnitsInRadius, но как их подружить не пойму...
И еще вопрос, если у меня 20 видов крипов и я хочу чтобы за каждого из них давало по разному, то мне надо 20 таких функций? или мне подсказали про какой-то массив, как это?
И еще в файле npc_units_custom, есть строка которая отвечает за эксп и год у крипа, и вот там эксп при смерти крипа дается всем кто рядом, а голд естественно только добившему. Правильно ли я делаю что эксп задаю только там и нигде больше, а голд в ЛУА пишу.
 

xDes

Пользователь
8 Ноя 2018
27
1
3
30
Реакции
1 0 0
#2
никто не знает или не хочет помочь?
 
14 Авг 2017
505
43
28
18
Проект
Battle Heroes Arena
Реакции
42 0 1
#4
Фильтры опыта/золота. Отключает золотои опыт за убийство крипа, при убийстве героем находишь его команду и выдаёшь золото. KilledUnit:GetGoldBounty() каждому. Всё.
 

xDes

Пользователь
8 Ноя 2018
27
1
3
30
Реакции
1 0 0
#5
Я не проверял , если не работает то отпишися...
Привет твой код мне когда-то очень помог и выручил!! Спасибо! Но сейчас осмелюсь тебя попросить... а как сделать чтобы допустим эти 322 голды делились на то кол-во героев что в радиусе? Например если один герой значит ему все 322, два героя значит 322/2 и и.д.
 
Реклама:

xDes

Пользователь
8 Ноя 2018
27
1
3
30
Реакции
1 0 0
#6
и еще вот таким способом у меня проигрывают люди. т.е. когда все умерли победа сил тьмы :
Код:
    local bAllPlayersDead = true
        for nPlayerID = 0, DOTA_MAX_TEAM_PLAYERS-1 do
        if PlayerResource:GetTeam( nPlayerID ) == DOTA_TEAM_GOODGUYS then
            if not PlayerResource:HasSelectedHero( nPlayerID ) then
                bAllPlayersDead = false
            else
                local hero = PlayerResource:GetSelectedHeroEntity( nPlayerID )
                if hero and hero:IsAlive() then
                    bAllPlayersDead = false
                end
            end
        end
    end

    if bAllPlayersDead then
        GameRules:MakeTeamLose( DOTA_TEAM_GOODGUYS )
        return
    end
но есть у меня Wraith King который например остался один и у него есть ульт, так вот если его убить он начинает перерождаться, но победа все равно сил тьмы.. как исправить?
 

.фи

Пользователь
21 Мар 2018
58
2
8
27
Реакции
2 0 0
#7
но есть у меня Wraith King который например остался один и у него есть ульт, так вот если его убить он начинает перерождаться, но победа все равно сил тьмы.. как исправить?
Писать фильтры по-прочнее.

Как видишь у тебя "bAllPlayersDead" проверяет только живых, а нужно чтоб проверяло и мёртвых с определённым свойством ( ~= nil — не отсутствующим ).
В данном случае, возрождение через 3 сек. Попробуй так:

if hero and hero:IsAlive() and hero:FindModifierByName( "modifier_skeleton_king_reincarnation" ) ~= nil then
bAllPlayersDead = false
end

А вообще, пройдись хотя бы взглядом по списку.
 

xDes

Пользователь
8 Ноя 2018
27
1
3
30
Реакции
1 0 0
#8
Писать фильтры по-прочнее.

Как видишь у тебя "bAllPlayersDead" проверяет только живых, а нужно чтоб проверяло и мёртвых с определённым свойством ( ~= nil — не отсутствующим ).
В данном случае, возрождение через 3 сек. Попробуй так:

if hero and hero:IsAlive() and hero:FindModifierByName( "modifier_skeleton_king_reincarnation" ) ~= nil then
bAllPlayersDead = false
end

А вообще, пройдись хотя бы взглядом по списку.
спасибо, но как я понимаю сейчас он проверяет так (герой)-(живой герой)-(у героя есть реинкарнация) , т.е. заменить тупо строчку if hero and hero:IsAlive() then на if hero and hero:IsAlive() and hero:FindModifierByName( "modifier_skeleton_king_reincarnation" ) ~= nil then это не выход?
спасибо за список)) я просто только начинаю и мне много не понятно
 

xDes

Пользователь
8 Ноя 2018
27
1
3
30
Реакции
1 0 0
#9
может как-то так?
Код:
 CAddonTemplateGameMode:OnEntityKilled( keys )
    local killed_unit = EntIndexToHScript( keys.entindex_killed )
    local killer = EntIndexToHScript( keys.entindex_attacker )

    if killed_unit:GetUnitName() == "npc_dota_neutral_kobold" then
  local heroes = FindUnitsInRadius(killer:GetTeamNumber(), killed_unit:GetAbsOrigin(), nil, 1000, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false )
        for _,unit in pairs(heroes) do
            local gold = 322 -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(i)
            if player:GetTeam() == killer:GetTeam() then
                player:ModifyGold(playerID, gold / heroes, true, 0 )
            end
        end
    end
end
я уже понял что не так.... помогите пожалуйста
 
Последнее редактирование:
14 Авг 2017
505
43
28
18
Проект
Battle Heroes Arena
Реакции
42 0 1
#10
может как-то так?
Код:
 CAddonTemplateGameMode:OnEntityKilled( keys )
    local killed_unit = EntIndexToHScript( keys.entindex_killed )
    local killer = EntIndexToHScript( keys.entindex_attacker )

    if killed_unit:GetUnitName() == "npc_dota_neutral_kobold" then
  local heroes = FindUnitsInRadius(killer:GetTeamNumber(), killed_unit:GetAbsOrigin(), nil, 1000, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false )
        for _,unit in pairs(heroes) do
            local gold = 322 -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(i)
            if player:GetTea7m() == killer:GetTeam() then
                player:ModifyGold(playerID, gold / heroes, true, 0 )
            end
        end
    end
end
я уже понял что не так.... помогите пожалуйста
local gold = 322/#heroes
gold / heroes -> gold
 
Реклама:

.фи

Пользователь
21 Мар 2018
58
2
8
27
Реакции
2 0 0
#11

xDes

Пользователь
8 Ноя 2018
27
1
3
30
Реакции
1 0 0
#12
по твоему коду должно быть так?
Код:
 CAddonTemplateGameMode:OnEntityKilled( keys )
    local killed_unit = EntIndexToHScript( keys.entindex_killed )
    local killer = EntIndexToHScript( keys.entindex_attacker )

    if killed_unit:GetUnitName() == "npc_dota_neutral_kobold" then
  local heroes = FindUnitsInRadius(killer:GetTeamNumber(), killed_unit:GetAbsOrigin(), nil, 1000, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false )
        for _,unit in pairs(heroes) do
            local gold = 322/#heroes -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(i)
            if player:GetTeam() == killer:GetTeam() then
                player:ModifyGold(playerID, gold, true, 0 )
            end
        end
    end
end
в любом случае спасибо, попробую вечером, а то я пошел длинным способом, будете ржать наверное, но как получилось ..
Код:
if killed_unit:GetUnitName() == "npc_dota_creature_dire_hound" then
        local heroes = FindUnitsInRadius(killer:GetTeamNumber(), killed_unit:GetAbsOrigin(), nil, 1100, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false )
        if #heroes == 1     then  
        for i = 1, #heroes do
            local gold = 125 -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(playerID )
            player:ModifyGold( gold, true, 0 )
            SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, player, gold, nil)
        end
        return 0.5
        end
        if #heroes == 2     then  
        for i = 1, #heroes do
            local gold = 62 -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(playerID )
            player:ModifyGold( gold, true, 0 )
            SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, player, gold, nil)
        end
        return 0.5
        end
        if #heroes == 3     then  
        for i = 1, #heroes do
            local gold = 42 -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(playerID )
            player:ModifyGold( gold, true, 0 )
            SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, player, gold, nil)
        end
        return 0.5
        end
        if #heroes == 4     then  
        for i = 1, #heroes do
            local gold = 31 -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(playerID )
            player:ModifyGold( gold, true, 0 )
            SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, player, gold, nil)
        end
        return 0.5
        end
        if #heroes == 5     then  
        for i = 1, #heroes do
            local gold = 25 -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(playerID )
            player:ModifyGold( gold, true, 0 )
            SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, player, gold, nil)
        end
        return 0.5
        end
        end
 
Последнее редактирование:

I_GRIN_I

Друзья CG
15 Мар 2016
1,034
70
48
20
Реакции
69 0 1
#13
Что за чушь IsReincarnating()
Писать фильтры по-прочнее.

Как видишь у тебя "bAllPlayersDead" проверяет только живых, а нужно чтоб проверяло и мёртвых с определённым свойством ( ~= nil — не отсутствующим ).
В данном случае, возрождение через 3 сек. Попробуй так:

if hero and hero:IsAlive() and hero:FindModifierByName( "modifier_skeleton_king_reincarnation" ) ~= nil then
bAllPlayersDead = false
end

А вообще, пройдись хотя бы взглядом по списку.
 

I_GRIN_I

Друзья CG
15 Мар 2016
1,034
70
48
20
Реакции
69 0 1
#14
по твоему коду должно быть так?
Код:
 CAddonTemplateGameMode:OnEntityKilled( keys )
    local killed_unit = EntIndexToHScript( keys.entindex_killed )
    local killer = EntIndexToHScript( keys.entindex_attacker )

    if killed_unit:GetUnitName() == "npc_dota_neutral_kobold" then
  local heroes = FindUnitsInRadius(killer:GetTeamNumber(), killed_unit:GetAbsOrigin(), nil, 1000, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false )
        for _,unit in pairs(heroes) do
            local gold = 322/#heroes -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(i)
            if player:GetTeam() == killer:GetTeam() then
                player:ModifyGold(playerID, gold, true, 0 )
            end
        end
    end
end
в любом случае спасибо, попробую вечером, а то я пошел длинным способом, будете ржать наверное, но как получилось ..
Код:
if killed_unit:GetUnitName() == "npc_dota_creature_dire_hound" then
        local heroes = FindUnitsInRadius(killer:GetTeamNumber(), killed_unit:GetAbsOrigin(), nil, 1100, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false )
        if #heroes == 1     then 
        for i = 1, #heroes do
            local gold = 125 -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(playerID )
            player:ModifyGold( gold, true, 0 )
            SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, player, gold, nil)
        end
        return 0.5
        end
        if #heroes == 2     then 
        for i = 1, #heroes do
            local gold = 62 -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(playerID )
            player:ModifyGold( gold, true, 0 )
            SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, player, gold, nil)
        end
        return 0.5
        end
        if #heroes == 3     then 
        for i = 1, #heroes do
            local gold = 42 -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(playerID )
            player:ModifyGold( gold, true, 0 )
            SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, player, gold, nil)
        end
        return 0.5
        end
        if #heroes == 4     then 
        for i = 1, #heroes do
            local gold = 31 -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(playerID )
            player:ModifyGold( gold, true, 0 )
            SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, player, gold, nil)
        end
        return 0.5
        end
        if #heroes == 5     then 
        for i = 1, #heroes do
            local gold = 25 -- кол-во голды
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(playerID )
            player:ModifyGold( gold, true, 0 )
            SendOverheadEventMessage(player, OVERHEAD_ALERT_GOLD, player, gold, nil)
        end
        return 0.5
        end
        end
Чел, у тебя по математике в школе 2 была?
 

I_GRIN_I

Друзья CG
15 Мар 2016
1,034
70
48
20
Реакции
69 0 1
#15
Типо делишь на #длину списка героев радиусе?
А в конце просто выдаёшь голду по циклу от _ до последнего. Интересный тип распределения :)
А как ты собрался по другому делить? Как тс в последнем ответе?
 
Реклама:

xDes

Пользователь
8 Ноя 2018
27
1
3
30
Реакции
1 0 0
#16
Чел, у тебя по математике в школе 2 была?
при чем тут 2 по математике? или ты про 322голды в первом коде и 125-62-31 и т.д. во втором? эти цифры не важны хоть 1000 и 100000, важна сама реализация я ее не могу понять и прошу у вас совета.
вот поправлю чтобы никого не путать..
Код:
 CAddonTemplateGameMode:OnEntityKilled( keys )
    local killed_unit = EntIndexToHScript( keys.entindex_killed )
    local killer = EntIndexToHScript( keys.entindex_attacker )

    if killed_unit:GetUnitName() == "npc_dota_neutral_kobold" then
  local heroes = FindUnitsInRadius(killer:GetTeamNumber(), killed_unit:GetAbsOrigin(), nil, 1000, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false )
        for _,unit in pairs(heroes) do
            local gold = 125/#heroes -- всего 125 голды выдается в радиусе 1000 на всех героев поровну т.е. если героев 5 то каждому по 25, если 2 героя, то по 62,5, если один герой, то все 125 голды ему
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(i)
            if player:GetTeam() == killer:GetTeam() then
                player:ModifyGold(playerID, gold, true, 0 )
            end
        end
    end
end

прости а по поводу леорика насколько я понял, вот так?

Код:
local bAllPlayersDead = true
        for nPlayerID = 0, DOTA_MAX_TEAM_PLAYERS-1 do
        if PlayerResource:GetTeam( nPlayerID ) == DOTA_TEAM_GOODGUYS then
            if not PlayerResource:HasSelectedHero( nPlayerID ) then
                bAllPlayersDead = false
            else
          local hero = PlayerResource:GetSelectedHeroEntity( nPlayerID )
                if hero and hero:IsAlive() then
                    bAllPlayersDead = false
else
if hero and hero:IsReincarnating() then
        bAllPlayersDead = false
                end
            end
        end
    end

    if bAllPlayersDead then
        GameRules:MakeTeamLose( DOTA_TEAM_GOODGUYS )
        return
    end
end
end
 
Последнее редактирование:

I_GRIN_I

Друзья CG
15 Мар 2016
1,034
70
48
20
Реакции
69 0 1
#17
при чем тут 2 по математике? или ты про 322голды в первом коде и 125-62-31 и т.д. во втором? эти цифры не важны хоть 1000 и 100000, важна сама реализация я ее не могу понять и прошу у вас совета.
вот поправлю чтобы никого не путать..
Код:
 CAddonTemplateGameMode:OnEntityKilled( keys )
    local killed_unit = EntIndexToHScript( keys.entindex_killed )
    local killer = EntIndexToHScript( keys.entindex_attacker )

    if killed_unit:GetUnitName() == "npc_dota_neutral_kobold" then
  local heroes = FindUnitsInRadius(killer:GetTeamNumber(), killed_unit:GetAbsOrigin(), nil, 1000, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false )
        for _,unit in pairs(heroes) do
            local gold = 125/#heroes -- всего 125 голды выдается в радиусе 1000 на всех героев поровну т.е. если героев 5 то каждому по 25, если 2 героя, то по 62,5, если один герой, то все 125 голды ему
            local playerID = heroes[i]:GetPlayerID()
            local player = PlayerResource:GetSelectedHeroEntity(i)
            if player:GetTeam() == killer:GetTeam() then
                player:ModifyGold(playerID, gold, true, 0 )
            end
        end
    end
end
#heroes - это переменная, в которой содержится количество элементов в таблице heroes. Если героев в радиусе 4, то #heroes == 4, если их 5, то #heroes == 5 и т.д. Таким образом тебе нужно просто поделить количество общего золота на количество героев в радиусе - gold/#heroes, у тебя сверху была полная дичь с хардкодом голды для количества героев.
прости а по поводу леорика насколько я понял, вот так?
Код:
local bAllPlayersDead = true
        for nPlayerID = 0, DOTA_MAX_TEAM_PLAYERS-1 do
        if PlayerResource:GetTeam( nPlayerID ) == DOTA_TEAM_GOODGUYS then
            if not PlayerResource:HasSelectedHero( nPlayerID ) then
                bAllPlayersDead = false
            else
          local hero = PlayerResource:GetSelectedHeroEntity( nPlayerID )
                if hero and hero:IsAlive() then
                    bAllPlayersDead = false
else
if hero and hero:IsReincarnating() then
        bAllPlayersDead = false
                end
            end
        end
    end

    if bAllPlayersDead then
        GameRules:MakeTeamLose( DOTA_TEAM_GOODGUYS )
        return
    end
end
end
Просто строку if hero and hero:IsAlive() then немного отредачить: if hero and hero:IsAlive() or hero:IsReincarnating() then
 
Последнее редактирование:

xDes

Пользователь
8 Ноя 2018
27
1
3
30
Реакции
1 0 0
#18
#heroes - это переменная? в которой содержится количество элементов в таблице heroes. Если героев в радиусе 4, то #heroes == 4, если их 5, то #heroes == 5 и т.д. Таким образом тебе нужно просто поделить количество общего золота на количество героев в радиусе - gold/#heroes, у тебя сверху была полная дичь с хардкодом голды для количества героев.

Просто строку if hero and hero:IsAlive() then немного отредачить: if hero and hero:IsAlive() or hero:IsReincarnating() then
Во первых большое тебе Спасибо!
Про #heroes я понял что это переменная, мне просто было не понятно как из нее выдрать кол-во героев=)
Вот у меня назрел вопрос по поводу моего "дичь кода". Смотри в нем я могу реализовать выдачу определенного кол-ва голды в зависимости от кол-ва игроков, т.е одному герою выдать 1000, а двум по 900 например, а не по 500 если бы я делил на #heroes, так вот можно ли как-то это упростить или же придется писать вот такой дичь код?)
И про Леорика, спасибо огромное, но скажи мое решение было не правильным? или же можно было сделать как я сделал?
 

I_GRIN_I

Друзья CG
15 Мар 2016
1,034
70
48
20
Реакции
69 0 1
#19
Во первых большое тебе Спасибо!
Про #heroes я понял что это переменная, мне просто было не понятно как из нее выдрать кол-во героев=)
Вот у меня назрел вопрос по поводу моего "дичь кода". Смотри в нем я могу реализовать выдачу определенного кол-ва голды в зависимости от кол-ва игроков, т.е одному герою выдать 1000, а двум по 900 например, а не по 500 если бы я делил на #heroes, так вот можно ли как-то это упростить или же придется писать вот такой дичь код?)
И про Леорика, спасибо огромное, но скажи мое решение было не правильным? или же можно было сделать как я сделал?
Вроде как правильно, хз, у тебя съехал код, а разбираться в end'ах я не хочу.
К 1 вопросу - придумать формулу лул, ну или хотябы просто через массив выдавать, а не через проверки. Типо есть массив: ключи - кол-во героев, значения - кол-во золота герою. Еще для удобности это все можно вынести в дд файл, крипов же много, и писать там, а в луа грузить через LoadKeyValues, либо свой файл для этого написать, либо прям в валвовском npc_units_custom и его грузить, а через имя юнита находить массив, например
KV:
"npc_unit_cobold"
{
       "GoldBounty"
       {
              "1"              "1000"
              "2"              "900"
              "3"              "600"
       }
}
В луа этот массив после LoadKeyValues будет выглядеть так:
Lua:
local array = LoadKeyValues("script/npc/npc_units_custom.txt")
array = {
    "npc_unit_kobold" = {
        //Тут всякие статы кобольда из файла, кстати
        //...
        
        "GoldBounty" = {
            "1" = "1000",
            "2" = "900",
            "3" = "600"
        }
    }
}
Просто обращаешься к массиву array[killed_unit:GetUnitName()]['GoldBounty'][tostring(#heroes)] и получаешь значение после этого: 1 - 1000, 2 - 900, 3 - 600
 
14 Авг 2017
505
43
28
18
Проект
Battle Heroes Arena
Реакции
42 0 1
#20
#heroes - это переменная, в которой содержится количество элементов в таблице heroes. Если героев в радиусе 4, то #heroes == 4, если их 5, то #heroes == 5 и т.д. Таким образом тебе нужно просто поделить количество общего золота на количество героев в радиусе - gold/#heroes, у тебя сверху была полная дичь с хардкодом голды для количества героев.

Просто строку if hero and hero:IsAlive() then немного отредачить: if hero and hero:IsAlive() or hero:IsReincarnating() then
Если точней: if hero and ( hero:IsAlive() or hero:IsReincarnating() ) then
 
Реклама:
Реклама:
//SNOW CHRISTMAS