30

» Гильдия «Черамор» / Чародейка Иона

будет преодоление 4-ой стены
Иона испугается, свернёт варкарфт и начнёт играть в сапёра?))
30

» WarCraft 3 / [lua] Двигаем снаряды

PT153, поправил. Форматирование сломалось из-за невнимательности. Хук на уничтожение таймера хорошая вешь, нужно будет статью по хукам запилить и накидать туда полезных примеров. А то начнёшь писать статью, а сослаться некуда и вся полезная информация оказывается в комментариях, которые никто не читает((
30

» WarCraft 3 / Характеристика предмета

Не работает, меньше нуля не ставится, это может из-за версии варкрафта?
По ссылкам нынче ходить тоже не модно?
Загруженные файлы
30

» WarCraft 3 / Характеристика предмета

Прошу прощения, я не знал, что это так работает.
Я так понимаю, гуглить нынче не модно((
Загруженные файлы
30

» WarCraft 3 / Характеристика предмета

Да я про это и говорил
Я случайно отправил пост без картинки, вот и пришлось ваши слова проиллюстрировать)
30

» WarCraft 3 / Характеристика предмета

Сделать способность с отрицательным показателям и дать предмету эту способность
Загруженные файлы
30

» WarCraft 3 / Сохранение Игры

1.31 береш стандартный fdf заменяеш и устанавливаеш тот же путь в импорте вауля
Не прокатит, сдандартные .fdf не заменяются из импорта.
30

» WarCraft 3 / [lua] Двигаем снаряды

prog, одним словом, нужно пилить статью "Все способы перебора юнитов" с тестами))
30

» WarCraft 3 / [lua] Двигаем снаряды

ты сказал что хочешь локальную переменную в цикле - я сказал как её получить.
Так я её и получил, а ты предлагаешь ещё пилить функцию, которая по твоим словам дорогое удовольствие.
А BlzGroupUnitAt потестить, конечно, тоже стоит.
Нужно все переборы потестить и repeat не забыть
repeat
	local target = FirstOfGroup(whichGroup)
	if target ~= nil then
		GroupRemoveUnit(whichGroup,target)
		-- action
	end
until target ~= nil
30

» WarCraft 3 / [lua] Двигаем снаряды

Ну так запили свой итератор и делай это через for...
Через for я хочу потестить другой способ:
for index = 1, BlzGroupGetSize(whichGroup) do
	local target = BlzGroupUnitAt(whichGroup, index)
	-- action
end
GroupClear(whichGroup)
или так
for index = 1, BlzGroupGetSize(whichGroup), -1 do
	local target = BlzGroupUnitAt(whichGroup, index)
	GroupRemoveUnit(whichGroup, target)
	-- action
end
30

» Наследие Альянса / Релиз кампании "Последний Страж Лордерона"

И после него выбрать тех юнитов которые выделены были до кинематика.
Выделение юнитов это болезнь многих карт. Даже если под контролем должен быть один герой, то игроку же не сложно лишний раз F1 жмакнуть и отряды пробиндовать.
30

» WarCraft 3 / [lua] Двигаем снаряды

PT153, поправил всё по мере возможности.

В while мне хочется, чтоб target была видима только внутри цикла, потому такое решение. В идеале бы:
while local target = FirstOfGroup(GROUP) ~=nil do
--actions
end
Но lua так не умеет((
30

» WarCraft 3 / [lua] Двигаем снаряды

Дополнил статью, и итоговый результат уже будет трудно реализовать на стандартных способностях))
30

» WarCraft 3 / [lua] Двигаем снаряды

Простите а есть ли смысл этим заниматся, когда завезли нормальный детект урона и стак баффов?
Кому нужно просто и быстро, тот так и сделает, а если мне захочется запустить снаряд с нелинейной скоростью или реализовать столкновение с летающими юнитами?
30

» WarCraft 3 / [lua] Двигаем снаряды

Я о полях способностей значение которых можно получить и высчитать зеленую атаку.
А с предметами и бафами как быть?

Решение тупо оказалось в мануале
local min          = BlzGetUnitBaseDamage(caster, 0) + BlzGetUnitDiceNumber(caster, 0)
local max          = BlzGetUnitBaseDamage(caster, 0) + BlzGetUnitDiceNumber(caster, 0) * BlzGetUnitDiceSides(caster, 0)
print(min, max)
Загруженные файлы
30

» WarCraft 3 / [lua] Двигаем снаряды

чтобы получить урон героя, по-моему, нужно к базовому урону еще добавить основную характеристику героя.
Без бонусов прибавлять ничего не нужно
print(BlzGetUnitBaseDamage(caster, 0), BlzGetUnitBaseDamage(caster, 0) + BlzGetUnitDiceNumber(caster, 0) * BlzGetUnitDiceSides(caster, 0))
А вот с бонусными характеристиками непонятно
можно =)
Обожаю таких людей, которые говорят, что можно и не указывают способ.
Последние нативки позволяют читать поля объекта задаваемые в редакторе. Так что технически можно.
Бонусные характеристика как-бы не задаются в редакторе.
Загруженные файлы
30

» WarCraft 3 / Knights & Rogues COMPLETE EDITION

Но как только я закончил с этим всем, доделал ланд на процентов 80 и приступил к триггерам я закипел, не вывез и забросил.
Я так понял, самая сложная часть работы для вас это код?
30

» WarCraft 3 / Вылетает редактор когда дотрагиваюсь до ландшафта.

Снесите все варики и поставьте лицензионный, а уже потом всякие 1.26.
Я 1.26 просто скопировал без установки и лицкнзионный даже не пытается его обновлять.
30

» WarCraft 3 / Сир Халаран

PAMEXI:
Ребята, а вы не могли логический подумать, что может быть ободок просто под волосами, и его просто напросто не видно?)
С таким же успехом я могу подумать, что крылья изнутри на саморезы прикручены. Это какраз объясняет почему волосы так ровно лежат)
30

» WarCraft 3 / [Lua] В таблицу не заносятся герои.

Спасибо, что без издевательских nil,nil,nil =)
Только учтите, что там проверок нет, игроки могут завыделять чужих героев. Можно доделать таким образом
if IsUnitType(hero, UNIT_TYPE_HERO) and GetOwningPlayer(hero) == Player(PLAYER_NEUTRAL_PASSIVE) then
	local x = GetPlayerTeam(owner) == 1 and -7271 or 7271
	local y = GetPlayerTeam(owner) == 1 and -55 or 55
	
	if DATA.Heroes[ownerID] ~= nil then
		PanCameraToTimedForPlayer(owner, x, x, 0)
		SetUnitX(hero, x)
		SetUnitY(hero, y)
		
		SetUnitOwner(hero, owner, true)
		DATA.Heroes[ownerID] = hero
	end
end
нужно учить Lua и прекращать пытаться его использовать как Jass
jass головного мозга тяжело лечится))
30

» WarCraft 3 / [Lua] В таблицу не заносятся герои.

Принятый ответ
Документацию то для кого пишут?
DATA = {
	Heroes = {}
}
do
	local PickAHero = CreateTrigger()
	for i = 0, 9 do
		TriggerRegisterPlayerUnitEvent(PickAHero, Player(i), EVENT_PLAYER_UNIT_SELECTED)
	end
	TriggerAddAction(PickAHero, function()
		local hero    = GetTriggerUnit()
		local owner   = GetTriggerPlayer()
		local ownerID = GetPlayerId(owner)
		
		if IsUnitType(hero, UNIT_TYPE_HERO) then
			local x = GetPlayerTeam(owner) == 1 and -7271 or 7271
			local y = GetPlayerTeam(owner) == 1 and -55 or 55
			
			PanCameraToTimedForPlayer(owner, x, x, 0)
			SetUnitX(hero, x)
			SetUnitY(hero, y)
			
			SetUnitOwner(hero, owner, true)
			DATA.Heroes[ownerID] = hero
		end
	end)
end
30

» WarCraft 3 / [Lua] В таблицу не заносятся герои.

Можно инициализировать Heroes так - Heroes = {nil,nil,nil,nil,nil,nil,nil,nil}
Зачем лишний раз nil писать? Можно и просто Heroes = {}. Меня больше смущает EVENT_PLAYER_UNIT_SELECTED.

А цикл нужно начинать for i = 1 - 1, 10 - 1 do для полной красоты))