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 для полной красоты))
30

» WarCraft 3 / Актуальность cJass

Ну есть надежда, мб найдут баг как с жасс машиной на луа и получат доступ к интерпритатору
И закроют следующим патчем))
30

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

Металические крылья вкрученные в голову впечатляют))
30

» WarCraft 3 / Условия победы/поражения

Например, уничтожена башня игрок проиграл.
Дайте башне классификацию ратуша и все дела.
30

» WarCraft 3 / Как сделать видимость за игроком?

Мне надо, чтобы даже умерший герой после воскрешения был видим на карте.
Создайте даммика под героем и двигайте вместе с ним.
30

» WarCraft 3 / [lua] BonusMod

хотя чую NazarPunk уже пошёл делать
Так делал уже, нужно только подпилить напильником под свои нужды))
30

» WarCraft 3 / [lua] Garbage

добавить GetLocal
Зачем, если это код ля дебага?
и не нужен локал IS_VISIBLE достаточно узнать фрейм видим или нет от игрока тоже пашет!
Эта переменная не за это отвечает
local IS_VISIBLE = true -- is visible on map start
30

» WarCraft 3 / Актуальность cJass

Не понял. Я знаю, что в при таком охранении при импорте слешы неправильные.
А DISBTN ищутся по правильным, поэтому у импортных иконок будут зелёные квадраты.
30

» WarCraft 3 / Актуальность cJass

В новых редакторах есть возможность вести свой проект как папку, а это меняет всё.
Только в режиме папки, DISBTN не отображаются, так что пока не пофиксят, придётся по старинке.
30

» WarCraft 3 / Актуальность cJass

Но как переписать код на луа как можно быстрее?
Можно достать из карты war3map.j и сконвертировать в lua. После доработки напильником вполне работоспособно))