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

AKaBe

Новичок
24 Июл 2020
4
0
Проект
Custom map in dota 2
как сделать каждого игрока сам за себя
 

l30P0H

Пользователь
9 Июл 2020
25
0
При попытке опубликовать кастомку вылезает такая бяка. Пока в кастомке был только addoninfo, всё ок было, а сейчас addon_game_mode.lua добавил - и никак.
Отчего такое может быть? 1595858374076.png
 

ZLOY

Администратор
Команда форума
27 Июн 2016
780
121
  • Нравится
Реакции: l30P0H

l30P0H

Пользователь
9 Июл 2020
25
0
Хм, теперь кастомки нормально обновляются, а не через задницу.
Как бы еще так сделать, чтобы обычная дота без языкового параметра запускалась...

На курьера плюнул, подглядел в другой кастомке универсальный магазин. Оказалось, всего одним параметром решается)
Теперь новая проблемка: нет пассивного золота. Куда копать?
 
Последнее редактирование:

l30P0H

Пользователь
9 Июл 2020
25
0
Код:
function Activate()
     GameRules.GameMode = GameMode()
     GameRules.GameMode:InitGameMode()
     GameRules:SetUseUniversalShopMode(true)
     GameRules.AddonTemplate.tickRate = 0.25
     GameRules.AddonTemplate.goldPerTick = 1
     GameRules.AddonTemplate.expBoost = 150
     GameRules:GetGameModeEntity():SetUseDefaultDOTARuneSpawnLogic(true)
     GameRules:GetGameModeEntity():SetTowerBackdoorProtectionEnabled(true)
     GameRules:SetShowcaseTime(0)
     GameRules.AddonTemplate = GameMode()
     GameRules.AddonTemplate:InitGameMode()
end

function Dota2ButVVV:OnEntityKilled(event)
    local killedUnit = EntIndexToHScript(event.entindex_killed)
    local hero = EntIndexToHScript(event.entindex_attacker)
        if KilledUnit:IsRealHero() then
            killedUnit:SetTimeUntilRespawn(20)
        end
end

ListenToGameEvent ("entity_killed", Dynamic_Wrap(Dota2ButVVV, 'OnEntityKilled'), self)

Пока получается такой скрипт. Тут он целиком. Метод научного тыка и плагиат процветают, но чувствую - что-то не по феншую, особенно в первой функции. В первую очередь непонятно, в чем разница между GameRules.GameMode и GameRules.AddonTemplate... И не работает возрождение за 20 секунд.
 

VortDyn

Пользователь
26 Ноя 2018
13
4
Хм, теперь кастомки нормально обновляются, а не через задницу.
Как бы еще так сделать, чтобы обычная дота без языкового параметра запускалась...

На курьера плюнул, подглядел в другой кастомке универсальный магазин. Оказалось, всего одним параметром решается)
Теперь новая проблемка: нет пассивного золота. Куда копать?
GameRules:SetGoldTickTime
GameRules:SetGoldPerTick
вроде-бы не работают с 24.02.2020, может быть исправлено, но я не пробовал
 

l30P0H

Пользователь
9 Июл 2020
25
0
GameRules:SetGoldTickTime
GameRules:SetGoldPerTick
вроде-бы не работают с 24.02.2020, может быть исправлено, но я не пробовал
Пробовал это удалить, ибо уже сам понял, что не работает. Так после этого отвалилась универсальная лавка.
 

l30P0H

Пользователь
9 Июл 2020
25
0
Да вроде работает.
Не знаю, что я там сломать вообще мог, но после пары обновлений не работате уже этот блок команд целиком
GameRules:SetUseUniversalShopMode(true)
GameRules.AddonTemplate.tickRate = 0.25
GameRules.AddonTemplate.goldPerTick = 1
GameRules.AddonTemplate.expBoost = 150
 

VortDyn

Пользователь
26 Ноя 2018
13
4
Где брать скиллы от героев(код) и партиклы из обычной доты?
 
Последнее редактирование:

CrySidingWorld

Друзья CG
31 Май 2019
306
33
Код:
function Activate()
     GameRules.GameMode = GameMode()
     GameRules.GameMode:InitGameMode()
     GameRules:SetUseUniversalShopMode(true)
     GameRules.AddonTemplate.tickRate = 0.25
     GameRules.AddonTemplate.goldPerTick = 1
     GameRules.AddonTemplate.expBoost = 150
     GameRules:GetGameModeEntity():SetUseDefaultDOTARuneSpawnLogic(true)
     GameRules:GetGameModeEntity():SetTowerBackdoorProtectionEnabled(true)
     GameRules:SetShowcaseTime(0)
     GameRules.AddonTemplate = GameMode()
     GameRules.AddonTemplate:InitGameMode()
end

function Dota2ButVVV:OnEntityKilled(event)
    local killedUnit = EntIndexToHScript(event.entindex_killed)
    local hero = EntIndexToHScript(event.entindex_attacker)
        if KilledUnit:IsRealHero() then
            killedUnit:SetTimeUntilRespawn(20)
        end
end

ListenToGameEvent ("entity_killed", Dynamic_Wrap(Dota2ButVVV, 'OnEntityKilled'), self)

Пока получается такой скрипт. Тут он целиком. Метод научного тыка и плагиат процветают, но чувствую - что-то не по феншую, особенно в первой функции. В первую очередь непонятно, в чем разница между GameRules.GameMode и GameRules.AddonTemplate... И не работает возрождение за 20 секунд.
Да тут
Не знаю, что я там сломать вообще мог, но после пары обновлений не работате уже этот блок команд целиком
GameRules:SetUseUniversalShopMode(true)
GameRules.AddonTemplate.tickRate = 0.25
GameRules.AddonTemplate.goldPerTick = 1
GameRules.AddonTemplate.expBoost = 150
Так где здесь это

GameRules:SetGoldPerTick( 5 )
GameRules:SetGoldTickTime( 0.5 )

Надо добавить их и просто так пишешь.

GameRules:SetGoldTickTime( GameRules.AddonTemplate.tickRate ) -- Вместо этого можно просто указать например 0.25
GameRules:SetGoldPerTick( GameRules.AddonTemplate.goldPerTick ) -- 1
 

CrySidingWorld

Друзья CG
31 Май 2019
306
33
Где брать скиллы от героев(код) и партиклы из обычной доты?
Какие полные. Полные в библиотеках например в DotaIMBA или в более старом SpellLibrary. Не полные, можно найти в dota 2 beta/game/dota/scripts/npc/npc_abilities.txt
Партиклы? Их можно найти в папке content/dota/particles/units/heroes/здесьвсе партиклыгероев.
 
  • Вооу
Реакции: VortDyn

l30P0H

Пользователь
9 Июл 2020
25
0
Кто-то пользовался этим апи? Что оно делает и работает ли вообще? За что отвечают параметры?
ExpensiveInstantRayCast(Vector Vector_1, Vector Vector_2, handle handle_3)
 

LAPKI

Продвинутый
26 Окт 2018
254
55
Кто-то пользовался этим апи? Что оно делает и работает ли вообще? За что отвечают параметры?
ExpensiveInstantRayCast(Vector Vector_1, Vector Vector_2, handle handle_3)
Я конечно не эксперт, но вроде как это работает так:
1. Название ExpensiveInstantRayCast - говорит о том что происходит raycast при этом это является дорогой(относительно производительности) операцией, Instant - перевод гугла "Мгновенное"
2. ну тут 3 параметра, как можно подумать - чтобы скастовать луч тебе надо: координаты начала и (нормализированный вектор направления либо координаты конца).
3. ну handle скорей всего callback при пересечении с объектом
Это из того что по сабжу.
Не по сабжу:
Исходя из вопросов выше вам лучше сначала ознакомится с базой, а не лезть в рейкаст в доте)
 

l30P0H

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

А вообще проблемно что-то найти по скриптингу совсем с нуля. Я вот не знаю ни С, ни луа. Понятно, что для кастомок мне абсолютно не нужен первый, а второй нужен постольку-поскольку - всё на стандартных дотовских апи построено. Но практически нигде подробно, с примерами, доступным языком не рассказано, как именно использовать эти апи (типа почему у них вложенность иной раз по 3-4 уровня, когда точки а когда двоеточия использовать, можно ли свалить в одну функцию много разных апи и будут ли они там нормально работать и тд). Короче, тяжеловато идет...
 

l30P0H

Пользователь
9 Июл 2020
25
0
Так выглядит функция.
Код:
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
Ни один из этих параметров не работает, только руны нормально спавнятся. ЧЯДНТ?
 

CrySidingWorld

Друзья CG
31 Май 2019
306
33
Так выглядит функция.
Код:
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 оно должно работать?

В InitGameMode пиши
 
Реклама: