7

» WarCraft 3 / Проблемы неподвижных предметов

Таурен Тауреныч:
А можно ли как то сделать что бы на тотем не воздействовали ауры и заклинания но что бы он при этом не считался зданием?
как вариант, можно тотему дать классификацию, например, "древо". И в разрешенных целях ауры указать "не древа".
7

» WarCraft 3 / Проблемы неподвижных предметов

в добавок к сообщению quq_CCCP
call UnitRemoveAbility( Твой тотем, 'Amov' )
GUI вариант (Необходим JNGP! в обычном редакторе такого нет!):

Если не ошибаюсь, функция
call SetUnitPropWindow( Твой тотем,0.00 )
обездвиживает юнита, но он может поворачиваться при атаках/способностях
Загруженные файлы
7

» WarCraft 3 / Пасивка Невера. Как сделать триггерную способность с уровнями?

Sasha166, не у всех есть возможность скачать и посмотреть карту! Лучше выкладывай скрины триггеров и/или код.

Полагаю, что способность сделана с помощью триггеров, а значит нужно открывать Редактор Триггеров(F4) и смотреть, что да как.
А если непонято, что там написано, тогда нужно ознакомиться со статьми, куда тебя в любом случае пошлют направят
7

» WarCraft 3 / Предметы, интересные баги и фитчи!

quq_CCCP, можно все морфы перенести в один общий подраздел и его разделить еще на более мелкие. Только для под-подразделов не выделять отдельную страницу, а сделать все на одной, разделяя все заголовками первого уровня
Например, как здесь
Раздел "Осваиваем World Editor"
Подраздел "Регионы, камеры, спецэффекты"
Под-подразделы "Регионы", "камеры" и "спецэффекты"
7

» WarCraft 3 / Предметы, интересные баги и фитчи!

quq_CCCP, по-моему, лучше разделить статью на подразделы и для каждого сделать отдельную страницу.
7

» WarCraft 3 / Не работает UI

Kimsah, альфа-канал пуст. Почитай в и-нете, как создать альфа-канал в photoshop'е
7

» WarCraft 3 / Как сделать это на gui

Sumert, хорошая идея

код

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
Загруженные файлы
7

» WarCraft 3 / Как сделать это на gui

решил чутка размять пальцы и накатал пример
Код
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] элемент.
7

» WarCraft 3 / Как сделать это на gui

doctal:
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
7

» WarCraft 3 / Десинхронизация на карте (выложил карту)

Fraps, не "для" фаталов, а "от" =) и то, дебаг не избавляет от ошибок, а лишь помогает их найти
7

» WarCraft 3 / Мощь гор

niBeHb, в редакторе объектов "Графика - нужная анимация" добавь "alternate"(без кавычек)

либо добавляешь тег "alternate" с помощью триггеров
Анимация - Add/Remove Animation Tag
или jass
native AddUnitAnimationProperties takes unit whichUnit, string animProperties, boolean add returns nothing
7

» WarCraft 3 / Ограничение найма юнитов

sleep, я к тому, что не нужны какие либо переменные! все делается с помощью одной функции)
7

» WarCraft 3 / Ограничение найма юнитов

для этого есть функция
native SetPlayerTechMaxAllowed takes player whichPlayer, integer techid, integer maximum returns nothing
например
call SetPlayerTechMaxAllowed(Player(0), 'hfoo', 6)
установит ограничение в 6 пехотинцев для красного игрока

наверняка есть гуи функция, но т.к. у меня нет под рукой редактора, не могу с этим помочь)
7

» WarCraft 3 / Тип передвижения как лошадь

возможно, это как-то связано со звуком. У Рыцаря есть звуки с именами HorseLoop, наверно, они должны воспроизводиться во время передвижения, если указан тип "конный"
7

» WarCraft 3 / Как бороться с утечкой Handle при волнах

FlyTab, рекомендую вместо
native CreateUnitAtLoc takes player id, integer unitid, location whichLocation, real face returns unit
использовать
native CreateUnit takes player id, integer unitid, real x, real y, real face returns unit
и тогда сразу же исчезнет надобность создавать точку (location)