Хочу сделать эволюцию юнита,тоесть например есть лягушка,а у неё 2 лвл
И нужно сделать так,чтобы когда она получала 2 уровень,она превращалась в другого более сильного юнита (ну к примеру какую-нибудь большую жабу)
Как это сделать?
Что нужно для этого триггера

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

Да, массив + один триггер это всегда хорошая идея.
С: Инициализация
Д:
массив_рун[3] = равкод_руны_жаба
массив_рун[5] = равкод_руны_большаяжаба
массив_рун[7] = равкод_руны_огромнаяжаба

С: Юнит Получает уровень
У: Unit-type героя равно НУЖНЫЙ_ЮНИТ
Д:
Создать предмет массив_рун[уровень героя] в позиции героя
Если последний созданный предмет не null, то
    дать последний созданный предмет герою.  // герой = Leveling Hero
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
5
5 лет назад
1
Можно на втором уровне дать способность превращения в другого юнита (как в картах на эволюцию). Как именно это делается не знаю, но пошаманить с этим не помешает))
0
5
5 лет назад
0
Nartek:
Можно на втором уровне дать способность превращения в другого юнита (как в картах на эволюцию). Как именно это делается не знаю, но пошаманить с этим не помешает))
Это конечно понятно,но это идея.Но все же необходимость уровня нужна,тоесть даже если через способность то требование уровня обязательно должно быть
4
5
5 лет назад
Отредактирован Wadimiru
4
Это конечно понятно,но это идея.Но все же необходимость уровня нужна,тоесть даже если через способность то требование уровня обязательно должно быть
Ну и в чем проблема? При касте навыка проверяй уровень кастера. Можно еще выдавать абилку эволюции на нужном уровне, чтобы наверняка.
А еще - учимся пользоваться поиском. Вопрос морфа юнита поднимался столько раз, что там на любой вкус есть решения.
0
10
5 лет назад
0
Ну ты же сам описал принцип.
Событие - Юнит получает уровень
Условие - Юнит = нужный тебе юнит
Действие - Создать/заменить на выбранного
1
28
5 лет назад
1
Создать/заменить на выбранного
Лучше руной с морфом.
0
5
5 лет назад
0
noyl:
Ну ты же сам описал принцип.
Событие - Юнит получает уровень
Условие - Юнит = нужный тебе юнит
Действие - Создать/заменить на выбранного
Но он будет получать морф,при получении любого уровня,а мне нужно именно чтобы когда достигал определенного уровня он получал морф.(я привык к инглиш триггерам и поэтому можно пожалуйста желательно на английском триггеры)
0
29
5 лет назад
0
Но он будет получать морф,при получении любого уровня,а мне нужно именно чтобы когда достигал определенного уровня он получал морф.
Так сложно дописать условие?
Действие:
если уровень = 3 морфим в это
если уровень = 5 морфим в то
если уровень = 7 морфим в сё
0
26
5 лет назад
0
В данном случае юнит заменяется, то есть нужно по триггеру с уровнем для каждого типа юнитов:
С: Юнит Получает уровень
У: Unit-type равно НУЖНЫЙ_ЮНИТ
Integer comparsion Герой - Level of (Triggering unit) больше 9
Д: Заменить
2
29
5 лет назад
2
то есть нужно по триггеру с уровнем для каждого типа юнитов
Можно не плодить триггеры и просто заполнить таблицу
MORPH                 = {}
MORPH[FourCC('Her0')] = { [3] = FourCC('Her1') }
MORPH[FourCC('Her1')] = { [5] = FourCC('Her2') }
MORPH[FourCC('Her3')] = { [7] = FourCC('Her4') }

TriggerAddAction(levelTrigger, function()
	local hero    = GetTriggerUnit()
	local newHero = MORPH[GetUnitTypeId(hero)][GetUnitLevel(hero)]
	if newHero ~= nil then
		MorphUnitTo(hero, newHero)
	end
end)
2
28
5 лет назад
Отредактирован PT153
2
Да, массив + один триггер это всегда хорошая идея.
С: Инициализация
Д:
массив_рун[3] = равкод_руны_жаба
массив_рун[5] = равкод_руны_большаяжаба
массив_рун[7] = равкод_руны_огромнаяжаба

С: Юнит Получает уровень
У: Unit-type героя равно НУЖНЫЙ_ЮНИТ
Д:
Создать предмет массив_рун[уровень героя] в позиции героя
Если последний созданный предмет не null, то
    дать последний созданный предмет герою.  // герой = Leveling Hero
Принятый ответ
0
24
5 лет назад
0
NazarPunk, хорошее решение, но мне что-то не нравится. Мозолит глаза запись по номеру уровня и почему-то хочется либо развернуть это в полноценную систему событий привязанных по уровню, только одно из которых морф, либо хранить уровень отдельно, а равкод отдельно.
0
23
5 лет назад
0
а не проше ли
['Hpal|3|Hnew']
текуший и требуемый и какой замена юнита а через | разделим итог 3 значение
если про луа речь а 1.26 обычно все знают о чем!
2
29
5 лет назад
Отредактирован nazarpunk
2
хорошее решение, но мне что-то не нравится
Тогда можно использовать магию равкодов)
TriggerAddAction(levelTrigger, function()
	local hero    = GetTriggerUnit()
	local newHero = GetUnitTypeId(hero) + GetUnitLevel(hero)
	local temp    = CreateUnit(newHero, Player(PLAYER_NEUTRAL_PASSIVE), 0, 0, 0);
	if temp ~= nil then
		RemoveUnit(temp)
		MorphUnitTo(hero, newHero)
	end
end)
0
24
5 лет назад
0
NazarPunk, отличный костыль xD
Но суть не в том - предыдущий способ это был яркий пример овероптимизации а на событии происходящем достаточно редко, поэтому он вызывает у меня желание что-то в нем переделать.
2
23
5 лет назад
2
NazarPunk, угу отличный такое я делал в качестве способностей порядок равкода
0
26
5 лет назад
0
NazarPunk, а если temp не создавать и удалять, то морфа не будет?
Ой, дошло. Не для каждого уровня есть равкод.
0
29
5 лет назад
Отредактирован nazarpunk
0
предыдущий способ это был яркий пример овероптимизации а на событии происходящем достаточно редко
Можно и по старинке без оптимизаций))
TriggerAddAction(levelTrigger, function()
	local hero   = GetTriggerUnit()
	local heroId = GetUnitTypeId(hero)
	local level  = GetUnitLevel(hero)
	
	if heroId == FourCC('Her0') and level >= 3 then
		MorphUnitTo(hero, FourCC('Her1'))
	elseif heroId == FourCC('Her1') and level >= 5 then
		MorphUnitTo(hero, FourCC('Her2'))
	elseif heroId == FourCC('Her2') and level >= 7 then
		MorphUnitTo(hero, FourCC('Her3'))
	end
end)
я делал в качестве способностей порядок равкода
Мне тоже лень заполнять простыни баз данных и если есть возможность, то использую магию равкодов)
8gabriel8:
NazarPunk, а если temp не создавать и удалять, то морфа не будет?
Ой, дошло. Не для каждого уровня есть равкод.
Можно скомбинировать способы
MORPH                     = {}
MORPH[FourCC('Her1') + 3] = true
MORPH[FourCC('Her3') + 5] = true
MORPH[FourCC('Her7') + 7] = true

TriggerAddAction(levelTrigger, function()
	local hero    = GetTriggerUnit()
	local newHero = MORPH[GetUnitTypeId(hero) + GetUnitLevel(hero)]
	if newHero ~= nil then
		MorphUnitTo(hero, newHero)
	end
end)
А вместо true можно записать что-то полезное.
0
24
5 лет назад
0
У костылей на сдвигах есть неприятный нюанс - возможна ситуация когда в одной ячейке соответствует два значения, если так совпадет, что первый равкод будет меньше второго на столько-же, на сколько первый уровень будет больше второго.
0
23
5 лет назад
0
prog, как бы если у юнит паладин 1000 а другой равкод лишь 'a' перешагнул на 'b' то есть +1 число хендл тип юнита
А если создавать юнит то не будет создан если с такой тип нет... то какой неприятный?
0
24
5 лет назад
0
pro100master, представь, два героя, один с равкодом 100500, второй с равкодом 100507, первому герою назначен уровень 15, второму 8. Номер ячейки у обоих выйдет 100515. Редкая ситуация, но вполне возможная - придется дополнительно следить чтобы такого не происходило.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.