Я решил сделать систему выбора персонажа таким образом: Из домика выбирается герой стандартным варкрафтовским способом. Есть две таверны, своя и вражеская. Из вражеской пикать нельзя пока не напишется мод -ap.
Реализовал я это так: У таверн нет способности "Выбрать героя". Для таверны команды 1 добавляется локально способность "Выбрать героя" только для игроков этой команды, для врагов аналогично. При моде -ap эта способность добавляется и для врагов для каждой таверны. При выборе персонажа способность "Выбрать героя" сразу удаляется для пикнувнего игрока из всех таверн, чтобы лишний раз не пикал.
Но вот беда, при выборе персонажа мгновенный кик из игры из-за десинхронизации.
Почему так? И как тогда организовать выбор героя? По-моему её не должно быть, так как выбор героя обрабатывают все одинаково, просто возможности должны быть ограничены для каждого отдельно.

Нельзя удалить способность у юнита для конкретного игрока и не вызвать при этом десинк.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
32
Drulia_san, уж точно без локал плеера, ну вопервых можно для каждого игрока сделать лимит найма любых юнитов, во вторых - чтобы нанять в таверне героя, нужно чтобы рядом был юнит игрока - понимаете? Создается даммик, ему приказывают отдать приказ smart на таверту, а таверне на даммика, после ему вручаются москиты, дамик расположен так что не может выбрать из чужих таверн. Просто? Проще простого...
24
А еще можно попробовать по играться с параметрами союза и общими магазинами работающими только на союзников - возможно параметр союза "заклинания действуют на союзников" и способность выбирающая только союзных юнитов для управления таверной умеют работать вместе. Тогда меняем параметры союзов на время выбора героя по мере необходимости и перед началом боя приводим их в исходное состояние. Ну и после выбора убираем принадлежащего игроку даммика получающего доступ к таверне.
16
в доте это сделано чреез
function TechHeroForAll takes integer id returns nothing
	if NoHeroLimitOff then
		call SetPlayerTechMaxAllowed(Sentinels[1],id,0)
		call SetPlayerTechMaxAllowed(Sentinels[2],id,0)
		call SetPlayerTechMaxAllowed(Sentinels[3],id,0)
		call SetPlayerTechMaxAllowed(Sentinels[4],id,0)
		call SetPlayerTechMaxAllowed(Sentinels[5],id,0)
		call SetPlayerTechMaxAllowed(Scourges[1],id,0)
		call SetPlayerTechMaxAllowed(Scourges[2],id,0)
		call SetPlayerTechMaxAllowed(Scourges[3],id,0)
		call SetPlayerTechMaxAllowed(Scourges[4],id,0)
		call SetPlayerTechMaxAllowed(Scourges[5],id,0)
	endif
endfunction
15
DracoL1ch:
в доте это сделано чреез
function TechHeroForAll takes integer id returns nothing
	if NoHeroLimitOff then
		call SetPlayerTechMaxAllowed(Sentinels[1],id,0)
		call SetPlayerTechMaxAllowed(Sentinels[2],id,0)
		call SetPlayerTechMaxAllowed(Sentinels[3],id,0)
		call SetPlayerTechMaxAllowed(Sentinels[4],id,0)
		call SetPlayerTechMaxAllowed(Sentinels[5],id,0)
		call SetPlayerTechMaxAllowed(Scourges[1],id,0)
		call SetPlayerTechMaxAllowed(Scourges[2],id,0)
		call SetPlayerTechMaxAllowed(Scourges[3],id,0)
		call SetPlayerTechMaxAllowed(Scourges[4],id,0)
		call SetPlayerTechMaxAllowed(Scourges[5],id,0)
	endif
endfunction
Что тут id под собой подразумевает? Только не говорите что это для каждого героя отдельно вызывается
8
Сделай, чтобы вначале были вражеский таверны и свои (тогда пикает каждый свое). А если мод -ap, меняй владельца на всех тавернах на нейтральных, чтобы закупаться мог любой.
17
Создайте 2 группы таверн подальше друг от друга (или поколдуйте с ренжой покупки юнитов)
Нельзя будет пикнуть героя другой стороны, из-за того что рядом нет юнита.
Каждому игроку дайте юнита, который будет выбирать героя.
При -ар создавайте 2го юнита для каждого игрока у противоположных таверн.
При выборе чара удаляете всех юнитов определённого игрока в зоне таверн.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.