Простые вопросы #2

Статус
В этой теме нельзя размещать новые ответы.

Pancer

Активный
30 Мар 2017
127
5
steamcommunity.com
Проект
MARVEL Heroes
Как можно заглушить определённую способность и потом её активировать? (Как крутилка Джаггера блокирует использование ульты)
 
Последнее редактирование:
20 Дек 2016
892
170
Как можно заглушить определённую способность и потом её активировать? (Как ульт Джаггера блокирует использование омнислеша)
Скорее всего это прописано в коде конкретно для омнислеша, варда и крутилки, так как остальные способности можно использовать прямо в ульте.
Прописываешь в OnSpellStart способности нужную проверку и если ее нужно блокировать, то записываешь куда-то, что ее нужно потом вызвать, а также:
Lua:
self:RefundManaCost()
self:EndCooldown()
А затем активируешь
Lua:
CDOTA_BaseNPC:CastAbilityNoTarget(handle ability, int playerIndex)
--либо так, если нужно кастовать прям мгновенно.
CDOTABaseAbility:CastAbility()
 

HappyFeedFriends

Друзья CG
14 Авг 2017
540
32
Проект
Battle Heroes Arena
Скорее всего это прописано в коде конкретно для омнислеша, варда и крутилки, так как остальные способности можно использовать прямо в ульте.
Прописываешь в OnSpellStart способности нужную проверку и если ее нужно блокировать, то записываешь куда-то, что ее нужно потом вызвать, а также:
Lua:
self:RefundManaCost()
self:EndCooldown()
А затем активируешь
Lua:
CDOTA_BaseNPC:CastAbilityNoTarget(handle ability, int playerIndex)
--либо так, если нужно кастовать прям мгновенно.
CDOTABaseAbility:CastAbility()
Может он имеет ввиду как топоры у тролля?
 

Tekerey

Пользователь
15 Июл 2016
11
0
что делать если кастомка бесконечно публикуется или обновляется?
 

xDes

Продвинутый
8 Ноя 2018
232
34
Проект
Boss Survival Adventure
Подскажите пожалуйста, вот я выдрал в недрах форума вот такой код:
Код:
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 )
            end
        end
    end
end
он дает 322 голды за убийство крипа всей команде, не важно как далеко от крипа ты находился и был ли мертв.
Я был бы очень благодарен если бы вы мне помогли понять или подправить этот код, чтобы голду давало только живым героям и в определенном радиусе от крипа.
И еще вопрос, если у меня 20 видов крипов и я хочу чтобы за каждого из них давало по разному, то мне надо 20 таких функций?
И что делать с опытом, сейчас он работает как надо, но из npc_units_custom. Т.е. там например 200 опыта за крипа делится между героями в определенном радиусе. или это не правильно?
 

Дикий Пёс

Друзья CG
28 Июн 2017
411
96
Проект
Petri Reborn
Подскажите пожалуйста, вот я выдрал в недрах форума вот такой код:
Код:
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 )
            end
        end
    end
end
он дает 322 голды за убийство крипа всей команде, не важно как далеко от крипа ты находился и был ли мертв.
Я был бы очень благодарен если бы вы мне помогли понять или подправить этот код, чтобы голду давало только живым героям и в определенном радиусе от крипа.
И еще вопрос, если у меня 20 видов крипов и я хочу чтобы за каждого из них давало по разному, то мне надо 20 таких функций?
И что делать с опытом, сейчас он работает как надо, но из npc_units_custom. Т.е. там например 200 опыта за крипа делится между героями в определенном радиусе. или это не правильно?
1)FindUnitsInRadius() IsAlive()
2)нет, тебе нужно 20 проверок на имена юнитов, или через массив сделай... то есть таблицу, как её тут
3)?????
 

xDes

Продвинутый
8 Ноя 2018
232
34
Проект
Boss Survival Adventure
1)FindUnitsInRadius() IsAlive()
2)нет, тебе нужно 20 проверок на имена юнитов, или через массив сделай... то есть таблицу, как её тут
3)?????

Я пока только учусь, так что был бы рад более развернутой помощи) вот глянь я хоть на верном пути?
Код:
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
    local enemies = FindUnitsInRadius( DOTA_TEAM_NEUTRALS, tpoint, FIND_UNITS_EVERYWHERE, 300, DOTA_UNIT_TARGET_TEAM_NONE, DOTA_UNIT_TARGET_ALL, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false )
    if #enemies > 0 then
    for _,enemy in pairs( enemies ) do
            local gold = 322 -- кол-во голды
            local player = PlayerResource:GetSelectedHeroEntity(i)
            if player:GetTeam() == killer:GetTeam() then
                player:ModifyGold( gold, true, 0 )
            end
        end
    end
end

а 3-й пункт вот в чем состоит: в файле npc_units_custom, есть строка которая отвечает за эксп и год у крипа, и вот там эксп при смерти крипа дается всем кто рядом, а голд естественно только добившему. Поэтому я и спрашиваю, правильно ли я делаю что эксп задаю только там и нигде больше, а голд в ЛУА пишу
 

GWS

Новичок
12 Сен 2018
7
0
Как задать минимальную скорость передвижения или запретить некоторым героям и юнитам передвигаться? Дота позволяет только 100 мса сделать, не меньше. А нужно, чтобы скорость была равна 0, но при этом все функции героя сохранялись.
 
20 Дек 2016
892
170
Как задать минимальную скорость передвижения или запретить некоторым героям и юнитам передвигаться? Дота позволяет только 100 мса сделать, не меньше. А нужно, чтобы скорость была равна 0, но при этом все функции героя сохранялись.
MODIFIER_PROPERTY_MOVESPEED_LIMIT
на 1 либо на -1 установи
 

Pancer

Активный
30 Мар 2017
127
5
steamcommunity.com
Проект
MARVEL Heroes
Как работает блокирование снарядов у 1 скилла клинка? И можно их отражать обратно во врагов?
 

HealTop

Новичок
8 Ноя 2018
2
0
Здравствуйте у меня вопрос, как сделать что бы через определенное время менялась карта
Например: Была карта номер 1 прошло 5 минут и карта поменялась на 2?
 
20 Дек 2016
892
170
Как работает блокирование снарядов у 1 скилла клинка? И можно их отражать обратно во врагов?
Скорее всего только делать каждые 0.03 ProjectileManager:ProjectileDodge( unit )
Отразить снаряд в валвовской системе снарядов нельзя. Можно только отразить таргетную способность MODIFIER_PROPERTY_REFLECT_SPELL
 

HappyFeedFriends

Друзья CG
14 Авг 2017
540
32
Проект
Battle Heroes Arena
Здравствуйте у меня вопрос, как сделать что бы через определенное время менялась карта
Например: Была карта номер 1 прошло 5 минут и карта поменялась на 2?
Саму карту вроде нельзя, но это тебе к разрыву crumbling island arena или чека на его гитхабе. У него вроде что-то с островам там.
 
20 Дек 2016
892
170
к разрыву..
Здравствуйте у меня вопрос, как сделать что бы через определенное время менялась карта
Например: Была карта номер 1 прошло 5 минут и карта поменялась на 2?
Делаешь несколько локаций в одной карте, а потом ограничиваешь движение камеры при смене раундов
Код:
SpawnEntityFromTableSynchronous( "world_bounds", { Min = Vector( 2, 2, 8 ), Max = Vector( 3, 2, 2) } )
 
Статус
В этой теме нельзя размещать новые ответы.
Реклама: