Пожалуйста подскажите, как сделать так, чтобы юнит относился к игроку, но этот игрок не мог управлять этим юнитом (например, как в the war)?

Принятый ответ

Такого в принципе быть не может, стаднартными средствами.
Варианты:
  1. Поменять владельца, но оставить цвет
  2. При выделении юнита сбрасывать выделение для игрока
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
6 лет назад
0
Похожие вопросы:

ответ
Добавлять бафы триггерами, на сколько я знаю, нельзя, но можно снимать.
Чтобы повесить баф на юнита, нужно:
  • Создать способность которая повесит нужный баф
  • Создать дамми юнита (с абилкой москит) и дать ему эту способность
  • В нужный момент создавать этого юнита и кастовать им по нужной цели
При инициализации карты, создать и удалить всех юнитов которые будут потом создаваться триггерами, чтобы избежать секундных фризов.

0
27
6 лет назад
0
Такого в принципе быть не может, стаднартными средствами.
Варианты:
  1. Поменять владельца, но оставить цвет
  2. При выделении юнита сбрасывать выделение для игрока
Принятый ответ
0
18
6 лет назад
0
PrincePhoenix
цвет и кастомный круг выбора, что тут сложного
0
27
6 лет назад
0
UrsaBoss, я описал вроде два способа, а не порядок действий. Возможно автора интересует сохранение игрока владельца у юнита но без возможности контроля, вот я и сказал, что второй вариант может костыльно решить проблему
0
27
6 лет назад
Отредактирован MpW
0
Я видел эту карту (что-то сделано норм, а что-то на гуи):
код
function Trig_jingong_chufadanweiActions takes nothing returns nothing
	set udg_unit04=GetTriggerUnit()
	if((RectContainsUnit(udg_rect22,udg_unit04)==true))then
		if((IsUnitInForce(udg_unit04,udg_forces04[1])==true))then
			set udg_locations01[0]=GetRectCenter(udg_rect07)
			call IssuePointOrderLoc(udg_unit04,"attack",udg_locations01[0])
			call RemoveLocation(udg_locations01[0])
		else
			set udg_locations01[0]=GetRectCenter(udg_rect03)
			call IssuePointOrderLoc(udg_unit04,"attack",udg_locations01[0])
			call RemoveLocation(udg_locations01[0])
		endif
	else
		if((RectContainsUnit(udg_rect23,udg_unit04)==true))then
			if((IsUnitInForce(udg_unit04,udg_forces04[1])==true))then
				set udg_locations01[0]=GetRectCenter(udg_rect08)
				call IssuePointOrderLoc(udg_unit04,"attack",udg_locations01[0])
				call RemoveLocation(udg_locations01[0])
			else
				set udg_locations01[0]=GetRectCenter(udg_rect04)
				call IssuePointOrderLoc(udg_unit04,"attack",udg_locations01[0])
				call RemoveLocation(udg_locations01[0])
			endif
		else
			if((RectContainsUnit(udg_rect24,udg_unit04)==true))then
				if((IsUnitInForce(udg_unit04,udg_forces04[1])==true))then
					set udg_locations01[0]=GetRectCenter(udg_rect09)
					call IssuePointOrderLoc(udg_unit04,"attack",udg_locations01[0])
					call RemoveLocation(udg_locations01[0])
				else
					set udg_locations01[0]=GetRectCenter(udg_rect05)
					call IssuePointOrderLoc(udg_unit04,"attack",udg_locations01[0])
					call RemoveLocation(udg_locations01[0])
				endif
			else
				if((RectContainsUnit(udg_rect25,udg_unit04)==true))then
					if((IsUnitInForce(udg_unit04,udg_forces04[1])==true))then
						set udg_locations01[0]=GetRectCenter(udg_rect10)
						call IssuePointOrderLoc(udg_unit04,"attack",udg_locations01[0])
						call RemoveLocation(udg_locations01[0])
					else
						set udg_locations01[0]=GetRectCenter(udg_rect06)
						call IssuePointOrderLoc(udg_unit04,"attack",udg_locations01[0])
						call RemoveLocation(udg_locations01[0])
					endif
				else
					if((IsUnitInForce(udg_unit04,udg_forces04[1])==true))then
						set udg_locations01[0]=GetRectCenter(udg_rect12)
						call IssuePointOrderLoc(udg_unit04,"attack",udg_locations01[0])
						call RemoveLocation(udg_locations01[0])
					else
						set udg_locations01[0]=GetRectCenter(udg_rect13)
						call IssuePointOrderLoc(udg_unit04,"attack",udg_locations01[0])
						call RemoveLocation(udg_locations01[0])
					endif
				endif
			endif
		endif
	endif
endfunction

set udg_trigger432=CreateTrigger()
call TriggerAddAction(udg_trigger432,function Trig_jingong_chufadanweiActions)


function Trig_bunengbeikongzhiConditions takes nothing returns boolean
	return(((IsUnitSelected(GetTriggerUnit(),Player(0))==true)or(IsUnitSelected(GetTriggerUnit(),Player(1))==true)or(IsUnitSelected(GetTriggerUnit(),Player(2))==true)or(IsUnitSelected(GetTriggerUnit(),Player(3))==true)or(IsUnitSelected(GetTriggerUnit(),Player(4))==true)or(IsUnitSelected(GetTriggerUnit(),Player(5))==true)or(IsUnitSelected(GetTriggerUnit(),Player(6))==true)or(IsUnitSelected(GetTriggerUnit(),Player(7))==true))and(IsUnitType(GetTriggerUnit(),UNIT_TYPE_GIANT)==true)and((GetIssuedOrderIdBJ()==String2OrderIdBJ("stop"))or(GetIssuedOrderIdBJ()==String2OrderIdBJ("move"))or(GetIssuedOrderIdBJ()==String2OrderIdBJ("smart"))or(GetIssuedOrderIdBJ()==String2OrderIdBJ("patrol"))or(GetIssuedOrderIdBJ()==String2OrderIdBJ("AImove"))or(GetIssuedOrderIdBJ()==String2OrderIdBJ("attack"))or(GetIssuedOrderIdBJ()==String2OrderIdBJ("attackgrouned"))or(GetIssuedOrderIdBJ()==String2OrderIdBJ("attackonce"))))
endfunction

function Trig_bunengbeikongzhiActions takes nothing returns nothing
	call DisableTrigger(GetTriggeringTrigger())
	if((GetUnitAbilityLevelSwapped('A0AI',GetTriggerUnit())>=1))then
		call SelectUnitRemoveForPlayer(GetTriggerUnit(),GetTriggerPlayer())
		if((GetUnitAbilityLevelSwapped('A0AI',GetTriggerUnit())>=8))then
			if((IsUnitInForce(GetTriggerUnit(),udg_forces04[1])==true))then
				call SetUnitOwner(GetTriggerUnit(),Player(bj_PLAYER_NEUTRAL_VICTIM),false)
			else
				call SetUnitOwner(GetTriggerUnit(),Player(bj_PLAYER_NEUTRAL_EXTRA),false)
			endif
		else
		endif
	else
	endif
	if((GetUnitAbilityLevelSwapped('A0AI',GetTriggerUnit())==0))then
		call UnitAddAbilityBJ('A0AI',GetTriggerUnit())
	else
		call IncUnitAbilityLevelSwapped('A0AI',GetTriggerUnit())
	endif
	call TriggerExecute(udg_trigger432)
	call EnableTrigger(GetTriggeringTrigger())
endfunction

set udg_trigger420=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(udg_trigger420,EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER)
call TriggerRegisterAnyUnitEventBJ(udg_trigger420,EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER)
call TriggerRegisterAnyUnitEventBJ(udg_trigger420,EVENT_PLAYER_UNIT_ISSUED_ORDER)
call TriggerAddCondition(udg_trigger420,Condition(function Trig_bunengbeikongzhiConditions))
мы могли взять и выделить юнита, и потом дать какой-нибудь order. Но не выполняет его, и с него снимается выборка.
в этой карте ловится приказ, и его перебивают. там самая простая реализация. У любой тд-шки нам не нужно запоминать приказ, просто отдай снова приказ в точку, и он туда пойдет. (даже когда застрянет)
Тоже не знал. Предположил что в приказах. Взломал карту, решил поискать события на приказы. Но к удивлени, их оказалось не много, 4 события. нашел куски кода, собрал воедино код. были сомнения, поэтому для проверки я удалил в этом куске кода (см. код выше) - события приказов, теперь они не запускаются, и как вследствие, ими можно управлять
скидываю 2 карты, одну взломанную и измененную, и оригинал
если бы идея была бы сложнее, скажем, запоминать все приказы и цели, это было бы сложнее. а тут мы знаем, что юнит бежит к точке 1 (запоминаем 1). Тут все просто.
у юнита не отображаются на панеле команды - норм, видимо там классификация "страж" дана, не видел никакого импорта типа текстовика, координаты.
Загруженные файлы
0
32
6 лет назад
0
Ну всякие состояния псевдоконтроля.
Чаще всего связка: Классификация "страж" и тригге который следит какой приказ получил юнит, если не тот что записан у переменнной в триггере и не технические приказы (вроде стуна, которые в принципе не может отдать игрок), если приказ == smart или == attack при этом цель атаки не та, то приказать дать юниту паузу, приказать отставить, снять паузу и отдать приказ делать что нужно.
Так же есть баг морфов - но он лучше для единичных случаев.
Есть мемхак и возможность не скрывать панель приказов, но при этом не давать контроль над юнитом.
Так же есть возможность играть с параметрами союзов игрока с самим собой.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.