Делаешь обычную команду дополнительную и героев зрителей удаляешь, давая им фоввиевер над всей картойЗдравствуйте, как сделать команду "Зрителей", которую можно выбрать в начале игры, при выборе сторон.
А можно по подробнее?Делаешь обычную команду дополнительную и героев зрителей удаляешь, давая им фоввиевер над всей картой
1. Создание более двух командЯ очень ленивый, сделайте все за меня пжлста.
Последняя ссылка не работает, и меня интересует, как пропускать стадию пика для Зрителей, или сделать, как в обычной доте, на фоне драфт героев.1. Создание более двух команд
2. Удаление героя. Не уверен, что будет работать. На крайняк можно давать вечный стан, инвиз и неуязвимость.
3. Обеспечение обзора.
До этого момента не был знаком ни с одной из вышеуказанных конструкций. При этом на их поиск ушло от силы минут пятнадцать. Думаю, ты бы и сам справился за такое же время. И не пришлось бы ждать ответа несколько часов.
Пропустить стадию пика для одной команды стандартными средствами не получится. Вариант, который предложил тебе I_GRIN_I просто сделает стадию пика незначимой для спектраторов. Драфт при этом отображается в верхней строке, чего могло бы хватить для многих разработчиков, если бы они поставили перед собой твою задачу.Последняя ссылка не работает, и меня интересует, как пропускать стадию пика для Зрителей, или сделать, как в обычной доте, на фоне драфт героев.
Хорошо, а можно подробнее написать, это все, что я прошу.Пропустить стадию пика для одной команды стандартными средствами не получится. Вариант, который предложил тебе I_GRIN_I просто сделает стадию пика незначимой для спектраторов. Драфт при этом отображается в верхней строке, чего могло бы хватить для многих разработчиков, если бы они поставили перед собой твою задачу.
Ну а если ты хочешь сделать все красиво, то пиши свой пик.
А еще лучше - пиши свою доту. Немного сложнее, зато без ограничений и без вальвовских багов.
Это не команда. Это просто зрители. Они беспоследственоо могут подключиться и отключиться от просмотра игры в любой момент. Не знаю как сейчас, но раньше спектраторы могли даже смотреть как люди играют в кастомки. Значит эта структура вынесена за игровой процесс, и обращаться к ней в адоне нельзя (но это не точно).Так в доте же есть команда спектаторов, мб можно как нибудь перекидывать за неё?
Тогда нужно становиться сильнее (в своя время я стал сильнее просто читая все темы форума подряд, пытаясь разобраться в каждой, независимо от того, нужна она мне или нет), потому что даже эти 3 шага можно реализовать разными способами, и какой из них больше подходит лучше выбирать тебе самому. Конечно можно постоянно просить "чуть подробнее", до того момента, пока кто-нибудь не скинет готовый код. Но когда-нибудь тебе просто перестанут отвечать.Хорошо, а можно подробнее написать, это все, что я прошу.
Я не силен в этой сфере на столько, что бы так легко все понимать.
if GameRules:State_Get() == DOTA_GAMERULES_STATE_PRE_GAME then
for playerID = 0, PlayerResource:GetPlayerCount() - 1 do --Перебираем ИД всех игроков, подключенных к серверу
if PlayerResource:IsValidPlayerID(playerID) then --Перестраховка на всякий случай
if PlayerResource:GetTeam(playerID) == 42 --Принадлежит ли игрок с текущим ИД к команде с ИД 42. Замени 42 на ИД своей команды спектраторов
--Сюда пройдут только ИД интересующих нас плейеров в момент, когда начнется сама игра.
local hero = PlayerResource:GetPlayer(playerID):GetAssignedHero() --А вот и герой нашего игрока. Делаем с этим парнем все, что захотим.
if hero then
UTIL_Remove( hero )
end
end
end
end
end
AddFOWViewer( 42, Vector(0,0,0), OVER 9999, OVER 9999, false )
Я помню, что в хаммере можно за команду спектаторов юнитов назначатьЭто не команда. Это просто зрители. Они беспоследственоо могут подключиться и отключиться от просмотра игры в любой момент. Не знаю как сейчас, но раньше спектраторы могли даже смотреть как люди играют в кастомки. Значит эта структура вынесена за игровой процесс, и обращаться к ней в адоне нельзя (но это не точно).
На счет хаммера ничего не могу сказать.Я помню, что в хаммере можно за команду спектаторов юнитов назначать
DOTA_MAX_SPECTATOR_TEAM_SIZE
Либо я чего то не понял, либо это не работает я сделал все как ты написал, но во первых, перестает работатьТогда нужно становиться сильнее (в своя время я стал сильнее просто читая все темы форума подряд, пытаясь разобраться в каждой, независимо от того, нужна она мне или нет), потому что даже эти 3 шага можно реализовать разными способами, и какой из них больше подходит лучше выбирать тебе самому. Конечно можно постоянно просить "чуть подробнее", до того момента, пока кто-нибудь не скинет готовый код. Но когда-нибудь тебе просто перестанут отвечать.
С дополнительной командой сам разберешься, если еще не разобрался.
По-моему удалять героя лучше всего, когда стадия игры меняется на DOTA_GAMERULES_STATE_PRE_GAME. Подключаешь слушателя, реагирующего на смену стадии игры, а в вызываемой функции делаешь проверку
Потом перебираешь всех героев игроков нужной команды.Код:if GameRules:State_Get() == DOTA_GAMERULES_STATE_PRE_GAME then
Ну а дальше либо удаляешь герояКод:for playerID = 0, PlayerResource:GetPlayerCount() - 1 do --Перебираем ИД всех игроков, подключенных к серверу if PlayerResource:IsValidPlayerID(playerID) then --Перестраховка на всякий случай if PlayerResource:GetTeam(playerID) == 42 --Принадлежит ли игрок с текущим ИД к команде с ИД 42. Замени 42 на ИД своей команды спектраторов --Сюда пройдут только ИД интересующих нас плейеров в момент, когда начнется сама игра. local hero = PlayerResource:GetPlayer(playerID):GetAssignedHero() --А вот и герой нашего игрока. Делаем с этим парнем все, что захотим.
Либо накладываешь на него модификатор со следующими состояниями:Код:if hero then UTIL_Remove( hero ) end
MODIFIER_STATE_STUNNED
MODIFIER_STATE_INVULNERABLE
MODIFIER_STATE_UNSELECTABLE
MODIFIER_STATE_NOT_ON_MINIMAP
MODIFIER_STATE_NO_UNIT_COLLISION
MODIFIER_STATE_INVISIBLE
MODIFIER_STATE_TRUESIGHT_IMMUNE
Не забудь после всего этого проставить энды.
Код:end end end end
В той же функции после проверки на стадию игры пишешь
Надеюсь, догадался, что некоторые значения нужно поменять.Код:AddFOWViewer( 42, Vector(0,0,0), OVER 9999, OVER 9999, false )
На всякий случай вот
GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_GOODGUYS, 2 )
GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_BADGUYS, 2 )
Подключаешь слушателя, реагирующего на смену стадии игры, а в вызываемой функции делаешь проверку
о какой функции ты говоришь?
function ...:InitGameMode()
ListenToGameEvent( "game_rules_state_change", Dynamic_Wrap(GameMode, "Напиши_здесь_что_хочешь" ), self )
end
function ...:Напиши_здесь_что_хочешь( здесь_тоже_что_нибудь_напиши )
.
.
.
end
И по поводу обратной совместимости (или как там это умные люди называют) ничем не могу помочь. Вообще тот код кроме геттеров использует только UTIL_Remove, если ты через него делаешь. Так что скорее всего это подарочек от габена, а не проблема кода.команды опять становятся по 5 человек
Хорошо, тогда другой вопрос, Valve во время выхода Reborn'а писали такую вещь, что можно смотреть за кастомной игрой таким образом:Код:function ...:InitGameMode() ListenToGameEvent( "game_rules_state_change", Dynamic_Wrap(GameMode, "Напиши_здесь_что_хочешь" ), self ) end function ...:Напиши_здесь_что_хочешь( здесь_тоже_что_нибудь_напиши ) . . . end
И по поводу обратной совместимости (или как там это умные люди называют) ничем не могу помочь. Вообще тот код кроме геттеров использует только UTIL_Remove, если ты через него делаешь. Так что скорее всего это подарочек от габена, а не проблема кода.