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

l30P0H

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

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
  • Нравится
Реакции: 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
16
6
Хм, теперь кастомки нормально обновляются, а не через задницу.
Как бы еще так сделать, чтобы обычная дота без языкового параметра запускалась...

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

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
16
6
Где брать скиллы от героев(код) и партиклы из обычной доты?
 
Последнее редактирование:

DDSuper

Друзья CG
31 Май 2019
405
57
Код:
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
 

DDSuper

Друзья CG
31 Май 2019
405
57
Где брать скиллы от героев(код) и партиклы из обычной доты?
Какие полные. Полные в библиотеках например в 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
271
61
Кто-то пользовался этим апи? Что оно делает и работает ли вообще? За что отвечают параметры?
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
Ни один из этих параметров не работает, только руны нормально спавнятся. ЧЯДНТ?
 

DDSuper

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

LAPKI

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

А вообще проблемно что-то найти по скриптингу совсем с нуля. Я вот не знаю ни С, ни луа. Понятно, что для кастомок мне абсолютно не нужен первый, а второй нужен постольку-поскольку - всё на стандартных дотовских апи построено. Но практически нигде подробно, с примерами, доступным языком не рассказано, как именно использовать эти апи (типа почему у них вложенность иной раз по 3-4 уровня, когда точки а когда двоеточия использовать, можно ли свалить в одну функцию много разных апи и будут ли они там нормально работать и тд). Короче, тяжеловато идет...
ну C тут знать и не надо, си это процедурный язык программирования, который даже в исходниках доты не используется в чистом виде (ну или по большей части не используется) и он очень сложен для освоения без знаний базы программирования и практики на других языках.
" Если кто-то путается где ставить точку, а где двоеточие, правило следующее: если обращаемся к свойству — ставим точку (object.name), если к методу — ставим двоеточие (object:getName()). "
(c) https://habr.com/ru/post/259265/
По простому. У тебя есть машина:
у неё есть колёса, руль, корпус и т.п. - это свойства
она может ехать, остановиться, взорваться - это методы
фактически свойства - это любой параметр характеризующий непосредственно сущность, а методы - действия, которые эта сущность может совершать (в луа методы = функции)
 
Реклама: