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

LAPKI

Продвинутый
26 Окт 2018
271
61
Так выглядит функция.
Код:
function Activate()
     GameRules.GameMode = GameMode()
     GameRules.GameMode:InitGameMode()
     GameRules:SetUseUniversalShopMode(true)
     GameRules:SetGoldTickTime(0.25)
     GameRules:SetGoldPerTick(1)
     GameRules:GetGameModeEntity():SetUseDefaultDOTARuneSpawnLogic(true)
     GameRules:SetShowcaseTime(1)
     GameRules:SetRuneSpawnTime(1)
     GameRules:SetStartingGold(1000)
     CDOTABaseGameMode:SetCustomHeroMaxLevel(100)
     CDOTABaseGameMode:SetFixedRespawnTime(15)
     CDOTABaseGameMode:SetTowerBackdoorProtectionEnabled(true)
end
Ни один из этих параметров не работает, только руны нормально спавнятся. ЧЯДНТ?
у тебя activate где-нибудь вызывается?
 

l30P0H

Пользователь
9 Июл 2020
25
0
у тебя activate где-нибудь вызывается?
Мне казалось, что её не надо вызывать, она сама выполняется. Причем сейчас потестил более внимательно - как минимум время возрождения работает, но только на первую смерть. Так понимаю, конкретно этот фукционал надо в отдельную функцию и на лиссенер вешать, чтобы перезапускалось после каждой смерти.

UPD. А не, не работает ничего... Кроме шоукейса. Его и вправду нет. Но тут хз, это из-за функции или ещё почему.
Пишут:
Activate , создает основу пользовательской игры и вызывает функцию инициализации.
После того как выполнится Precache и Activate, первая функция, которая выполнится в файле lua — GameMode: InitGameMode ().
Выполнится. То есть сама, автоматически.
 
Последнее редактирование:

l30P0H

Пользователь
9 Июл 2020
25
0
Lua:
function Activate()
     GameRules.GameMode = GameMode()
     GameRules.GameMode:InitGameMode()
     GameRules:SetUseUniversalShopMode(true)
     GameRules:SetGoldTickTime(0.25)
     GameRules:SetGoldPerTick(1)
     GameRules:SetShowcaseTime(1)
     GameRules:SetRuneSpawnTime(1)
     GameRules:SetStartingGold(1000)
     CDOTABaseGameMode:SetCustomHeroMaxLevel(100)
     CDOTABaseGameMode:SetFixedRespawnTime(1)
     CDOTABaseGameMode:SetTowerBackdoorProtectionEnabled(true)
end

ListenToGameEvent('dota_player_killed', Dynamic_Wrap(GameMode, 'OnPlayerKilled'), self)

function OnPlayerKilled()
    CDOTABaseGameMode:SetFixedRespawnTime(1)
end
Так сейчас выглядит единственный скрипт кастомки. Он плюс-минус не работает. Чего-то я не понимаю... :confused:
 

LAPKI

Продвинутый
26 Окт 2018
271
61
Мне казалось, что её не надо вызывать, она сама выполняется. Причем сейчас потестил более внимательно - как минимум время возрождения работает, но только на первую смерть. Так понимаю, конкретно этот фукционал надо в отдельную функцию и на лиссенер вешать, чтобы перезапускалось после каждой смерти.

UPD. А не, не работает ничего... Кроме шоукейса. Его и вправду нет. Но тут хз, это из-за функции или ещё почему.
Пишут:
Activate , создает основу пользовательской игры и вызывает функцию инициализации.
После того как выполнится Precache и Activate, первая функция, которая выполнится в файле lua — GameMode: InitGameMode ().
Выполнится. То есть сама, автоматически.
Ну я кастомки не пишу, так что я вполне могу быть не прав и activate выполняется сама. Чтобы проверить работает или нет - выведи сообщение в консоль прямо в функции. Если выведет - функция отрабатывает, нет - нет
 

Memory

Новичок
14 Июн 2020
4
1
Проект
Dota but
Здравствуйте, вопрос простой, но сам до решения допетрить не могу... Нужно сделать вард вд направленным не прерываемым скиллом (как томба). Я попытался это реализовать, поставил в AbilityBehavior DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING - ничего не изменилось
//=================================================================================================================
// Witch Doctor: Death Ward
//=================================================================================================================
"witch_doctor_death_ward"
{
// General
//-------------------------------------------------------------------------------------------------------------
"ID" "5141" // unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING"
"AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE"
"AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL"
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP"
"AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NO_INVIS | DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE | DOTA_UNIT_TARGET_FLAG_NOT_ATTACK_IMMUNE | DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_CREEP_HERO"
"SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES"
"FightRecapLevel" "2"
"AbilitySound" "Hero_WitchDoctor.Death_WardBuild"

"HasScepterUpgrade" "1"

// Casting
//-------------------------------------------------------------------------------------------------------------
"AbilityCastRange" "600"
"AbilityCastPoint" "0.35 0.35 0.35"
"AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4"
"AbilityChannelAnimation" "ACT_DOTA_CHANNEL_ABILITY_4"

// Time
//-------------------------------------------------------------------------------------------------------------
"AbilityCooldown" "90"
"AbilityChannelTime" "100 230 500"

// Cost
//-------------------------------------------------------------------------------------------------------------
"AbilityManaCost" "200 200 200"

// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"damage" "30 50 90"
"LinkedSpecialBonus" "special_bonus_unique_witch_doctor_5"
"CalculateSpellDamageTooltip" "0"
}
"02"
{
"var_type" "FIELD_INTEGER"
"attack_range_tooltip" "500 600 700"
"LinkedSpecialBonus" "special_bonus_unique_witch_doctor_1"
}
"03"
{
"var_type" "FIELD_INTEGER"
"bounce_radius" "300"
"RequiresScepter" "1"
}
}
}
Можете тыкнуть, что нужно поменять и на что, буду благодарен, всем спасибо.
 

VortDyn

Пользователь
26 Ноя 2018
16
6
Как сделать так, чтобы при применении скилла на персонаже менять предметы, которые на него одеты (менять модельку, скин)
 

ION

Активный
10 Ноя 2019
88
7
Проект
Memethrow
Драсьте, сделал талант на кд способности, и с описания пропал квадратик с текущими значениями перезарядки.
1.png
ДД :
C++:
          "AbilityCooldown"                "%cooldown"
        
          "AbilityManaCost"                "90"

          // Time Cast
          //-------------------------------------------------------------------------------------------------------------------

          "AbilityCastRange"                "500"
          "AbilityCastPoint"                "0"
          "AbilityCastAnimation"            "ACT_DOTA_IDLE"

          // Special
          //-------------------------------------------------------------------------------------------------------------------
          "AbilitySpecial"
          {
              "01"
              {
                  "var_type"            "FIELD_FLOAT"
                  "scream_duration"     "1.5 2 2.5 3"
              }
              "02"
              {
                  "var_type"            "FIELD_INTEGER"
                  "scream_damage"        "100 150 200 250"
              }
              "03"
              {
                  "var_type"        "FIELD_INTEGER"
                  "scream_radius"    "500"
              }
            "04"
            {
                "var_type"                    "FIELD_FLOAT"
                "cooldown"                    "15 13 11 9"
            }
            "05"
            {
                "var_type"                    "FIELD_FLOAT"
                "cooldown_talent"            "14 12 10 8"
            }
          }
Lua :
Lua:
function my_ability:GetCooldown()

        local caster = self:GetCaster()
        local cooldown = self:GetSpecialValueFor("cooldown")
        local cooldown_talent = self:GetSpecialValueFor("cooldown_talent")
        local talent = caster:FindAbilityByName("special_bonus_unique_mirana_1")
        
        if talent:GetLevel() == 1 then
            return cooldown_talent
            else return cooldown
        end
end
Пробовал в дд менять ключи, - максимум отображало на стадии пика. Пытался менять формулы в луа, что бы оно отнимало значения - нет разницы, я так понимаю оно выводит ключ перезардки с дд, а так как я меняю кд через луа то ничего и не показует. Что делать?
 

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
Вот пример правильного использования метода
Код:
function archmage_shooting_star:GetCooldown(iLevel)
    if self:GetCaster():HasScepter() then
        return self:GetLevelSpecialValueFor( "cooldown_scepter" , iLevel)
    end

    return self.BaseClass.GetCooldown( self, iLevel )
end
 

DDSuper

Друзья CG
31 Май 2019
405
57
Вот пример правильного использования метода
Код:
function archmage_shooting_star:GetCooldown(iLevel)
    if self:GetCaster():HasScepter() then
        return self:GetLevelSpecialValueFor( "cooldown_scepter" , iLevel)
    end

    return self.BaseClass.GetCooldown( self, iLevel )
end
Ты немного не так сказал у него талант
 

l30P0H

Пользователь
9 Июл 2020
25
0
Блин, еще немного - и брошу нафиг это дело. Вообще не могу понять, в чем косяк. Я сейчас взял чужую кастомку, простейшую (Dota 2 But Attacking Casts Decay), залил её заместо своей - а она все равно не работает! :mad:
 

VortDyn

Пользователь
26 Ноя 2018
16
6
Блин, еще немного - и брошу нафиг это дело. Вообще не могу понять, в чем косяк. Я сейчас взял чужую кастомку, простейшую (Dota 2 But Attacking Casts Decay), залил её заместо своей - а она все равно не работает! :mad:
1596200741382.png
 
  • Нравится
Реакции: l30P0H и xDes

VortDyn

Пользователь
26 Ноя 2018
16
6
Как сделать скилл, который будет сразу вкачан? Есть какая-то переменная или через скрипты писать?
 

VortDyn

Пользователь
26 Ноя 2018
16
6
При помощи события "OnHeroInGame" из ядра barebones(для кастомок)
сделал задуманное


Lua:
local innate_abilities = {
    "ability_sven_unique",
    "innate_ability2"
}

-- Создает цикл, ищет способность из списка "innate_abilities", делает им уровень 1
for i = 1, #innate_abilities do
    local current_ability = hero:FindAbilityByName(innate_abilities[i])
    if current_ability then
        current_ability:SetLevel(1)
    end
end
 

l30P0H

Пользователь
9 Июл 2020
25
0
Это всё, конечно, весело, но я хз, что делать... Тупо ничего не работает и всё тут.
 

DDSuper

Друзья CG
31 Май 2019
405
57
  • Нравится
Реакции: Zachary Greenburg

AKaBe

Новичок
24 Июл 2020
5
0
Проект
Custom map in dota 2
Как создать сужаемый круг как в PUBG, сужение каждые 5 минут до 30, в 30 игра закончится
 
Реклама: