Sasha166, не у всех есть возможность скачать и посмотреть карту! Лучше выкладывай скрины триггеров и/или код.
Полагаю, что способность сделана с помощью триггеров, а значит нужно открывать Редактор Триггеров(F4) и смотреть, что да как.
А если непонято, что там написано, тогда нужно ознакомиться со статьми, куда тебя в любом случае пошлют направят
quq_CCCP, можно все морфы перенести в один общий подраздел и его разделить еще на более мелкие. Только для под-подразделов не выделять отдельную страницу, а сделать все на одной, разделяя все заголовками первого уровня
Например, как здесь
Раздел "Осваиваем World Editor"
Подраздел "Регионы, камеры, спецэффекты"
Под-подразделы "Регионы", "камеры" и "спецэффекты"
native UnitAlive takes unit id returns boolean
function CountAliveUnitsInGroupEnum takes nothing returns nothing
if UnitAlive(GetEnumUnit()) then
set bj_groupCountUnits = bj_groupCountUnits + 1
endif
endfunction
function CreateUnitsForPlayer takes player p returns nothing
local integer first = 1 //первый элемент массива
local integer last = 3 //последний элемент
local integer random = GetRandomInt(first, last) //случайное число от первого элемента до последнего, т.е. от 1 до 3
local integer units_index = GetRandomInt(1, 3) //случайное число от 1 до 3
local group g = CreateGroup() //создаем группу
local integer i = random //счетчик цикла
loop
call GroupEnumUnitsInRect(g, udg_locations[i], null) //добавляем в группу всех юнитов из области
set bj_groupCountUnits = 0 //обнуляем счетчик
call ForGroup(g, function CountAliveUnitsInGroupEnum) // считаем юнитов в группе
if bj_groupCountUnits == 0 then //проверяем сколько вышло
call CreateUnit(p, udg_buildings[units_index], GetRectCenterX(udg_locations[i]), GetRectCenterY(udg_locations[i]), 270.)
call CreateUnit(p, udg_units[units_index], GetRectCenterX(udg_locations[i]), GetRectCenterY(udg_locations[i]), 0.)
call CreateUnit(p, udg_units[units_index], GetRectCenterX(udg_locations[i]), GetRectCenterY(udg_locations[i]), 0.)
call CreateUnit(p, udg_units[units_index], GetRectCenterX(udg_locations[i]), GetRectCenterY(udg_locations[i]), 0.)
call CreateUnit(p, udg_units[units_index], GetRectCenterX(udg_locations[i]), GetRectCenterY(udg_locations[i]), 0.)
exitwhen true
else // если юнитов больше 0, тогда
call GroupClear(g) // очищаем группу
endif
set i = i + 1
if i > last then
set i = first
endif
exitwhen i == random
endloop
//избавляемся от утечек
call GroupClear(g)
call DestroyGroup(g)
set g = null
endfunction
function CreateUnitsForPlayer takes player p returns nothing
local integer first = 1 //первый элемент массива
local integer last = 3 //последний элемент
local integer random = GetRandomInt(first, last) //случайное число от первого элемента до последнего, т.е. от 1 до 3
local integer units_index = GetRandomInt(1, 3) //случайное число от 1 до 3
local group g = CreateGroup() //создаем группу
local integer i = random //счетчик цикла
loop
call GroupEnumUnitsInRect(g, udg_locations[i], null) //добавляем в группу всех юнитов из области
set bj_groupCountUnits = 0 //обнуляем счетчик
call ForGroup(g, function CountUnitsInGroupEnum) // считаем юнитов в группе
if bj_groupCountUnits == 0 then //проверяем сколько вышло
call CreateUnit(p, udg_buildings[units_index], GetRectCenterX(udg_locations[i]), GetRectCenterY(udg_locations[i]), 270.)
call CreateUnit(p, udg_units[units_index], GetRectCenterX(udg_locations[i]), GetRectCenterY(udg_locations[i]), 0.)
call CreateUnit(p, udg_units[units_index], GetRectCenterX(udg_locations[i]), GetRectCenterY(udg_locations[i]), 0.)
call CreateUnit(p, udg_units[units_index], GetRectCenterX(udg_locations[i]), GetRectCenterY(udg_locations[i]), 0.)
call CreateUnit(p, udg_units[units_index], GetRectCenterX(udg_locations[i]), GetRectCenterY(udg_locations[i]), 0.)
exitwhen true
else // если юнитов больше 0, тогда
call GroupClear(g) // очищаем группу
endif
set i = i + 1
if i > last then
set i = first
endif
exitwhen i == random
endloop
//избавляемся от утечек
call GroupClear(g)
call DestroyGroup(g)
set g = null
endfunction
Как впихнуть код в карту
Для вызова функции используем custom script
call CreateUnitsForPlayer( <здесь должен быть нужный тебе игрок> )
где <здесь должен быть нужный тебе игрок> должна быть функция или переменная, например функция Player(0) - красный игрок, Player(1) - синий и т.д.
забыл написать, что нужно указать правильные значения вот тут
local integer first = 1 //первый элемент массива
local integer last = 3 //последний элемент
если первый элемент locations[1], значит first = 1, если locations[0], то first = 0, аналогично и с последним элементом. Пропускать элементы нельзя, например, locations[1], locations[2], locations[4], locations[5] - пропущен locations[3] элемент.
Sergey105, у меня создаются войска в одной из 3х областей.Но если в этой области есть юнит,то в этой области ничего не создаётся.Так как переменная рандомное число,допустим 3,то юниты пытаются создаться в области 3(на которой юниты уже созданы),а я хочу что бы другие юниты создались либо в области 1,либо в области 2,а третие в той области что осталась.
поправил немного код
local integer first = 1 //первый элемент массива
local integer last = 3 //последний элемент
local integer h = GetRandomInt(first, last) //случайное число от первого элемента до последнего, т.е. от 1 до 3
local integer i = GetRandomInt(1, 3) //случайное число от 1 до 3
local group g = CreateGroup() //создаем группу
loop
exitwhen last < first
call GroupEnumUnitsInRect(g, locations[h], null) //добавляем в группу всех юнитов из области
set bj_groupCountUnits = 0 //обнуляем счетчик
call ForGroup(g, function CountUnitsInGroupEnum) // считаем юнитов в группе
if bj_groupCountUnits == 0 then //проверяем сколько вышло
call CreateUnit(Player(0), buildings[i], GetRectCenterX(locations[h]), GetRectCenterY(locations[h]), 270.)
call CreateUnit(Player(0), units[i], GetRectCenterX(locations[h]), GetRectCenterY(locations[h]), 0.)
call CreateUnit(Player(0), units[i], GetRectCenterX(locations[h]), GetRectCenterY(locations[h]), 0.)
call CreateUnit(Player(0), units[i], GetRectCenterX(locations[h]), GetRectCenterY(locations[h]), 0.)
call CreateUnit(Player(0), units[i], GetRectCenterX(locations[h]), GetRectCenterY(locations[h]), 0.)
exitwhen true
else // если юнитов больше 0, тогда
call GroupClear(g) // очищаем группу
endif
set last = last - 1
endloop
//избавляемся от утечек
call GroupClear(g)
call DestroyGroup(g)
set g = null
возможно, это как-то связано со звуком. У Рыцаря есть звуки с именами HorseLoop, наверно, они должны воспроизводиться во время передвижения, если указан тип "конный"
Ред. Ige
» WarCraft 3 / Проблемы неподвижных предметов
» WarCraft 3 / Проблемы неподвижных предметов
» WarCraft 3 / Пасивка Невера. Как сделать триггерную способность с уровнями?
А если непонято, что там написано, тогда нужно ознакомиться со статьми, куда тебя в любом случае
пошлютнаправят» WarCraft 3 / Предметы, интересные баги и фитчи!
Например, как здесь
Раздел "Осваиваем World Editor"
Подраздел "Регионы, камеры, спецэффекты"
Под-подразделы "Регионы", "камеры" и "спецэффекты"
» WarCraft 3 / Предметы, интересные баги и фитчи!
» WarCraft 3 / Лимит определённого вида войск.
» WarCraft 3 / Не работает UI
» WarCraft 3 / Ребята стоит ли делать мега крутую карту ?
» WarCraft 3 / Как сделать это на gui
Ред. Ige
» WarCraft 3 / Как сделать это на gui
Ред. Ige
» WarCraft 3 / Как сделать это на gui
» WarCraft 3 / Помогите разобраться в структуре
» WarCraft 3 / Предметы, интересные баги и фитчи!
» WarCraft 3 / Предметы, интересные баги и фитчи!
» WarCraft 3 / Не могу настроить UI
» WarCraft 3 / Десинхронизация на карте (выложил карту)
» WarCraft 3 / Мощь гор
» WarCraft 3 / Не могу настроить UI
Ред. Ige
» WarCraft 3 / Мощь гор
» WarCraft 3 / Ограничение найма юнитов
Ред. Ige
» WarCraft 3 / Ограничение найма юнитов
Ред. Ige
» WarCraft 3 / Ограничение найма юнитов
» WarCraft 3 / Тип передвижения как лошадь
» WarCraft 3 / Как бороться с утечкой Handle при волнах
» WarCraft 3 / Как бороться с утечкой Handle при волнах