32

» WarCraft 3 / Не запускается миссия кампании с JASS-триггером.

код вытащи и засуть в карту кампании, вероятно не происходит интерпритация в обычный jass с vjass.
Так же вам ничего не мешает переписать все на чистый jass.
32

» WarCraft 3 / Не запускается миссия кампании с JASS-триггером.

Дважды сохраните карту отдельно, потом пакуйте в кампанию или просто сохраните карту и вытащите war3map.j из карты и суньте в кампанию, делов то...
32

» WarCraft 3 / Как заставить ИИ применять способность "Канал"?

Стандартный ИИ никак, только если вы замените канал какими-то другим скиллом, который юзает ИИ в схожей ситуации ( если нужно чтобы ии юзал спелл в толпе то подойдет вызов волка или стомп в качестве пустышки). Ну или совсем радикальный вариант, писать свой ИИ.
32

» WarCraft 3 / Баг констант в JNGP

zogorlol:
Испорченный JNGP вылечил сносом, но хотелось бы знать как избежать подобного в будущем - рудники были не единственным что он руинил при сохранении.
Версия какая была? Мб какая левая, так же нужно избегать антивирусов, ибо антивирусы частенько портят файлы JNGP считая их вредоносными,из за принципа их работы.
32

» WarCraft 3 / Как узнать цель предмета

Proshel_Doty:
а вот как узнать цель на которую я применю предмет ?
quq_CCCP:
Вопрос в теме видишь? При чём тут то, что написал ты?
Вижу, я юзаю предмет, как мне найти в кого я его юзаю? Я и ответил, зависит от события -каст абилки или юнит отдал приказ, соответственно функции возвращающие цель будут разные. Реализовать можно по разному.
32

» WarCraft 3 / Эффект обезоруживания и не только

Могу выдать наработку кастом баффа дизарма, на основе склада. (виз.эффект основан на ауре торнадо).
32

» WarCraft 3 / как на jass вызвать функцию в соседнем верхнем триггере

NikolayMatveev1:
quq_CCCP, без редактора можно работать? т.е создать карту
Ну разумеется, но вот только зачем? Редактор выдумали близзы для удобства, в том числе себя любимых, ланд можно рисовать в блокнотике, данные юнитов с екселе но как то уныло, да и нет защит от ошибки...
Так что юзаем редактор и не паримся, код можно пихать прямо в вар3мап.ж сразу после сохранения карты, сделав все необходимые манипуляции в жаскраффте.
32

» WarCraft 3 / Ограничение на количество войск

Naadir, Уже и не помню гуи, но там это дело было, во всех кампаниях юзается ограничения, почему вас сразу недоступны все технологии и юниты рассы?
32

» WarCraft 3 / Не запускается миссия кампании с JASS-триггером.

PrincePhoenix:
JNGP - это сторонний скрипт(своего рода), поэтому кампания не читает его, и собственно функции из него тоже не сработают, правда была тема где-то с дополнительным расширением для кампаний, насколько мне известно
Шта, jngp это надстройка над редактором, если функция написано полностью на jass то все должно работать если нету ошибок.
Так что код этого триггера в студию, там либо ошибки, либо используются диалекты Vjass, Cjass и нету интерпретации при сохранении.
32

» WarCraft 3 / Ограничение на количество войск

Есть же функция лимита на создание конкретного типа юнитов для игрока, SetPlayerMaxTechAllowed или как то так...
32

» WarCraft 3 / как на jass вызвать функцию в соседнем верхнем триггере

Увы код интерпретируется немного не так как ты вего видишь в редакторе, т.е первый, второй, третий триггер, после создания war3map.j будут идти как второй, третий, первый если считать с верху вниз (от globals endglobals)...
Редактор считает триггеры не потому как ты их расположил а потом в какой очередности они были созданы, так что удалят и создавать заного, в нужном порядке.
32

» WarCraft 3 / Как узнать цель предмета

Зависит от события триггера, ибо на юз предмета срабатывают куча событий, это и отдача приказа, и каст способности предмета. А так же отдельное событие Юнит применил предмет...
32

» WarCraft 3 / Контроль юнитов врага

BattleMaster:
Нет, мне нужен именно контроль войска ВРАГА, но чтобы он все равно оставался врагом (т.е. Мы с ним враги, но управлять его войском я все равно могу). Если это возможно, конечно.
Параметры союзов, он тебя считает союзником а ты его нет. Параметры союзов юдут взаиемные, т.е если ты и второй игрок хотите быть союзниками то нужно прописать что ты считаешь другого игрока союзником и другой игрок считает союзником тебя.
Смотри внимательно функции настройки союзов игроков.
32

» WarCraft 3 / Баг констант в JNGP

Странно, обычно 12500 золота в руднике...
Вы случаем ничего не меняли, когда речь идет о 100500 то редактор частенько сбрасывает на 0, как и слк оптимизатор (к примеру хп у деревьев ты выставил 9999999, а после слк оптимизации будет дефолт).
32

» WarCraft 3 / Ошибка в коде?

Там случаем не вручает абилку трупу? Обычно это заканчивается фаталом, а так же если шурудить абилки у трупов.
32

» WarCraft 3 / Как заставить редактор распознавать ратушу

WoLLFeR, Поэтому я предложил создать систему мили побед\порожений (да и целиком весь сценарий вашего сражения) своими руками, для разминки могу порекомендовать карту -Монолит (от Blizzard), там реализованы нестандартные рассы, мили ии для нестандартных расс и победа\поражение.
Для изучения если вы совсем не представляете как это реализовать думаю вам подойдет.
32

» WarCraft 3 / Как сделать такую проходимость?

Артес Менетил:
Высчитать путь можно только в пустой карте с 1 юнитом, не с 10. А проверить проходима ли точка можно спец. функцией, пути это не такая уж и простая штука.
Просите за нескромный вопрос, а нахрена вам знать дойдет или нет, если можно просто проверять приказ. Можно ли стоять в точке или нет можно определить с помощью функции проверки пафинга или создать в этой точке предмет и сравить его текущие координаты с точкой создания, если координаты предмета не равны точке его создания - точка непроходимо, а текущее положение предмета есть ближайшая проходимая точка.
32

» WarCraft 3 / Как заставить редактор распознавать ратушу

WoLLFeR, эмм зачем, чувак я описал принцип работы дефольтного мили, где ты проиграешь если у тебя не осталось юнитов. Я так понимаю у вас не мили карта и вы не в лиге будите играть в неё. Определяем победу считая здания игрока, т.к вы на гуях пишите, пример на jass я предоставил не для копипаста а чтобы вы сами осилили аналог на гуи.
32

» WarCraft 3 / Как заставить редактор распознавать ратушу

Ну разумеется, если скопировать стандартную функцию из Blizzard.j тебе редактор выдаст ошибку, что функция с таким именем уже обявлена...
Я не понимаю в чем проблема, я подробно описал что к чему.
32

» WarCraft 3 / Как заставить редактор распознавать ратушу

вот стандартный набор функций мили игры в триггере инициализации:
    call MeleeStartingVisibility(  )
    call MeleeStartingHeroLimit(  )
    call MeleeGrantHeroItems(  )
    call MeleeStartingResources(  )
    call MeleeClearExcessUnits(  )
    call MeleeStartingUnits(  )
    call MeleeStartingAI(  )
    call MeleeInitVictoryDefeat(  )
По названиям функций думаю понятно что они делают, рассмотрим по подробнее MeleeInitVictoryDefea( )
function MeleeInitVictoryDefeat takes nothing returns nothing
    local trigger    trig
    local integer    index
    local player     indexPlayer

    // Create a timer window for the "finish soon" timeout period, it has no timer
    // because it is driven by real time (outside of the game state to avoid desyncs)
    set bj_finishSoonTimerDialog = CreateTimerDialog(null)

    // Set a trigger to fire when we receive a "finish soon" game event
    set trig = CreateTrigger()
    call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_SOON)
    call TriggerAddAction(trig, function MeleeTriggerTournamentFinishSoon)

    // Set a trigger to fire when we receive a "finish now" game event
    set trig = CreateTrigger()
    call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_NOW)
    call TriggerAddAction(trig, function MeleeTriggerTournamentFinishNow)

    // Set up each player's mortality code.
    set index = 0
    loop
        set indexPlayer = Player(index)

        // Make sure this player slot is playing.
        if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then
            set bj_meleeDefeated[index] = false
            set bj_meleeVictoried[index] = false

            // Create a timer and timer window in case the player is crippled.
            set bj_playerIsCrippled[index] = false
            set bj_playerIsExposed[index] = false
            set bj_crippledTimer[index] = CreateTimer()
            set bj_crippledTimerWindows[index] = CreateTimerDialog(bj_crippledTimer[index])
            call TimerDialogSetTitle(bj_crippledTimerWindows[index], MeleeGetCrippledTimerMessage(indexPlayer))

            // Set a trigger to fire whenever a building is cancelled for this player.
            set trig = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_CANCEL, null)
            call TriggerAddAction(trig, function MeleeTriggerActionConstructCancel)

            // Set a trigger to fire whenever a unit dies for this player.
            set trig = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_DEATH, null)
            call TriggerAddAction(trig, function MeleeTriggerActionUnitDeath)

            // Set a trigger to fire whenever a unit begins construction for this player
            set trig = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_START, null)
            call TriggerAddAction(trig, function MeleeTriggerActionUnitConstructionStart)

            // Set a trigger to fire whenever this player defeats-out
            set trig = CreateTrigger()
            call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_DEFEAT)
            call TriggerAddAction(trig, function MeleeTriggerActionPlayerDefeated)

            // Set a trigger to fire whenever this player leaves
            set trig = CreateTrigger()
            call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE)
            call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft)

            // Set a trigger to fire whenever this player changes his/her alliances.
            set trig = CreateTrigger()
            call TriggerRegisterPlayerAllianceChange(trig, indexPlayer, ALLIANCE_PASSIVE)
            call TriggerRegisterPlayerStateEvent(trig, indexPlayer, PLAYER_STATE_ALLIED_VICTORY, EQUAL, 1)
            call TriggerAddAction(trig, function MeleeTriggerActionAllianceChange)
        else
            set bj_meleeDefeated[index] = true
            set bj_meleeVictoried[index] = false

            // Handle leave events for observers
            if (IsPlayerObserver(indexPlayer)) then
                // Set a trigger to fire whenever this player leaves
                set trig = CreateTrigger()
                call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE)
                call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft)
            endif
        endif

        set index = index + 1
        exitwhen index == bj_MAX_PLAYERS
    endloop

    // Test for victory / defeat at startup, in case the user has already won / lost.
    // Allow for a short time to pass first, so that the map can finish loading.
    call TimerStart(CreateTimer(), 2.0, false, function MeleeTriggerActionAllianceChange)
endfunction
Вроде много, но тут все просто, создается три триггера один следит за тем сколько построил зданий любой играющий игрок, второй следит сколько зданий погибло у любого играющего игрока, ну а третий следит за теми кто ливнул, чтобы их не преребирать, два прочих вспомогательные, следят за отмненой строительства и прочее.
Итого делаем вывод, чтобы узнать проиграл или нет игрок, нам нужно узнать сколько у него живых зданий, меньше 1 игрок проиграл. А реализовать это можно как угодно, триггерами следящими за смертями и прочим или таймером, который будет переодически считать все здания каждого игрока и давать поражение тем игрокам у кого не осталось ни одного здания...
32

» WarCraft 3 / Как заставить редактор распознавать ратушу

А зачем что то изобретать, когда можно скопировать код из Blizzard.j и сменить ИД ратуш?
32

» WarCraft 3 / Как заставить редактор распознавать ратушу

Переписать Милии триггеры, потому что там прописаны конкретные ИД всех стандартных ратуш.
Пишем код ручками, там нет ничего сложного, подсмотреть его можно в Blizzard.j