26

» WarCraft 3 / Как запретить выкладывать предмет на землю или отдавать др юниту

Что-то по утру пробило сделать возвращение предмета в слот инвентаря)
Чтобы проигрывался звук неудачи, и появлялась надпись на экране, что не удалось выложить предмет, попытался сделать его невыпадающим в событии юнит теряет предмет. Но ничего не получилось, герой всё равно его выкладывает. Удалять предмет и создавать на его месте такой же не получилось, да и вряд ли бы мог быть нужный результат, так как сообщения на экран выводятся в результате непосредственных действий игрока, а не их триггерной имитации.
Загруженные файлы
26

» WarCraft 3 / Переход по главам...

Первые три действия сохраняют героя для переноса в следующую главу. Последние три действия как раз представляют переход в следующую главу.

А вот три действия для восстановления героя в следующей главе
Только сохраняй в конце каждой главы героя под другим именем, а то получится, что ты пройдёшь, например, до седьмой главы, где герой станет полностью прокачанным, решишь опять во вторую поиграть, где герой был второго-третьего уровня, а он будет там полностью прокачанным, как и записался в кэше.
Загруженные файлы
26

» WarCraft 3 / Как запретить выкладывать предмет на землю или отдавать др юниту

Можно сделать так
PT153:
Разве нужно спел для этого делать, а не просто продавать невыпадаемые предметы?
А как ты собираешься продать предмет, который нельзя выкинуть?
Там вообще перепутал просто, думал попозже отредактировать комментарий, добавив пример, но ты всё равно своим опередил, пусть останется)
P. S. По идее можно было бы ещё сохранять номер слота, где был в инвентаре предмет, и класть в него обратно. Но мне лениво было это делать)
Загруженные файлы
26

» WarCraft 3 / Как запретить выкладывать предмет на землю или отдавать др юниту

Можно сделать спел в лавках, который продаёт предмет, а сам предмет сделать
Разве нужно спел для этого делать, а не просто продавать невыпадаемые предметы?
Ой, не то
26

» WarCraft 3 / Как открыть в редакторе сейв?

Было бы отлично, если бы вообще утилиту сделать для редактора, которая генерирует ландшафт на основе такого триггера)
26

» WarCraft 3 / озвучка юнита

Оказывается, это твоя больная мозоль и всё такое) Назадавал "умных" вопросов, причём ответ на этот есть среди вариантов бота (4), накидал минусов толковым комментаторам, обиделся на упоминание слова идиот, а самое главное, не предоставил ни одного своего звукового файла, но собрался делать какую-то дичь правильную вещь.
Желаю удачи, наш умный и уравновешенный друг!
26

» WarCraft 3 / Помогите решить проблему!!

Проверил, но чего-то запамятовал ответить) Проблема в стандартных условиях победы и поражения, если это действие убрать, то всё работает нормально. Но не сообразил, почему в этом проблема, лишь предполагаю две возможные причины:
  • Изменённые игровые константы в чём-то вступают в конфликт с логикой игры;
  • Настройки альянсов вступают в конфликт с приоритетами союзников.
Ещё подозревал новых юнитов, но подумал и решил, что это не может быть причиной. По-хорошему, ещё следовало проанализировать, что заложено в это триггерное действие стандартных условий победы и поражения, но там слишком уж много для анализа, мне лень:
MeleeInitVictoryDefeat
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
Пока самым вероятным мне кажется конфликт приоритетов союзников с альянсами.
То есть настройками альянсов

Короче, не верь тому, что выше описал. Вылет происходит ещё и в момент выбора казарм. То есть причина с юнитами всё-таки очень вероятна.
26

» WarCraft 3 / озвучка юнита

Я пробовал через все форматы
Простите, но значения точно такие у меня. Не получилось
Да ещё я был ооочень далек от пк и озвучки, я не мог отправить данные.
Ты чувствуешь непоследовательность в своих комментариях? Что пробовал кучу форматов, а значит мог банально перепутать какие-то параметры, но уверен, что параметры именно такие, как указал, при этом ооочень далек от ПК, чтобы ещё раз перепроверить себя.
А потом ещё:
Не суди строго :)
И минус влепил Hate!
За идиотов нас здесь считаешь? Пришёл сюда к идиотам с вопросами.

bazeba:
есть теория чтобы через таблицы создать свой. (прости я в этом не разбираюсь)
Читал, что в архиве war3patch.mpq файл UI\SoundInfo\UnitsAckSounds.slk надо взять и добавить в него новые сеты озвучки.
26

» WarCraft 3 / Видно всю карту во время игры. КАК ИСПРАВИТЬ?

Мапхак работает, наверное. Но это не точно, так как не ползуюсь им, только много читал об этой утилите.
26

» WarCraft 3 / Про Тайники

Запамятовал уже, как в кампании сделано, а смотреть неохота. Но по логике надо просто область на тайник поместить, сделав триггер:
Событие: Боевая единица - Юнит входит в Область Х
Условие: -
Действия: Триггер - Turn off (this trigger)
Игра - Вывести сообщение "Тайник найден"
26

» WarCraft 3 / замедление времени

Можно также триггерно установить в процентах скорость времени.
Если остановить смену дня и ночи, а потом по ходу игры включить, то может заново не пойти время. Нужно как раз указать в процентах скорость игрового времени.
26

» WarCraft 3 / озвучка юнита

Файлик-то приложи

Вот записывали новую озвучку под Джайну, правда, не обработали ещё звук. Всё работает.
юниты для того, чтобы услышал фразы при атаке.
Загруженные файлы
26

» WarCraft 3 / озвучка юнита

reaper1691, нужно выбрать персонажа, чей голос меняем для озвучки, сохранить звуки в wav 22 050 Гц, 16 Bit, Моно, если есть эхо или подобные эффекты, то Стерео. Заменить звуки выбранного персонажа на свои. Если даже рот не открывается, то скорее всего конверт корявый. Приложи какую-нибудь фразу посмотреть.
26

» WarCraft 3 / Изменение Loadscreen

А разве можно мап превью в tga делать? Разве там не war3map.blp всегда?
26

» WarCraft 3 / Пропадают изменения

Тоже наблюдал подобное. Может быть из-за открытия и сохранения в редакторе одновременно нескольких карт такое происходит? Во всяком случае перестал одновременно несколько редактировать, чтобы отловить причину, с тех пор не происходило.
26

» WarCraft 3 / Приказ отмены постройки орков

А это не ограничение на одну единицу здания? Если да, то мне такой способ кажется красивее, чтобы наличие иконки в меню строительства не путало:
Да и он обходит проблему 75% возврата.
Загруженные файлы
26

» WarCraft 3 / Приказ отмены постройки орков

call IssueImmediateOrderById(GetTriggerUnit(), 851976)
GetTriggerUnit() не припомню на кого назначать, либо на здание, либо на строителя.
26

» WarCraft 3 / Приколы книги заклинаний

И в описании способностей книги заклинаний появляются вообще какие-то не понятные символы.
Тоже наблюдал подобное, когда коряво делал способности. Запамятовал уже, что там конкретно нужно. Типа всё нормально сделать надо, чтобы прошло. То есть, как и было указано, не нужно делать две и более способностей юнита из одной.
MadeControl, можешь на базе Канала сделать разные способности с разными Order ID, при их применении будет появляться невидимый дамми, который кастует способность нужного уровня в цель.
26

» WarCraft 3 / Стартовая позиция без игрока

Если открыть карту mpq editor'ом, то внизу файла war3map.j будут перечислены координаты стартовых позиций, можешь оттуда брать.
Загруженные файлы
26

» WarCraft 3 / Иконки на заказ

Есть стандартная иконка, где ведьмак укрывается за щитом.
26

» WarCraft 3 / Сделать 2 тайла

Вот файл, где делал тайлсет и склон: xgm.guru/files/100/220108/comments/408510/Village_GrassThick_Cli... Красивый тайлсет состоит из 16 тайлов, которые имеют сочетающиеся края низ-верх и лево-право, чтобы в игре выглядеть ровной поверхностью, а не шахматной доской. Кроме этого требуются края тайлов, которые будут ставиться на других тайлсетах, чтобы переход смотрелся естественно. По этой причине эти картинки не годятся для изготовления из них красивых тайлсетов, но годятся для изготовления тайлов, ведь у них низ-верх и лево-право сочетаются, а если на 16 кусочков порезать, то сочетания у кусочков не будет. Для создания такого тайлсета уменьшай размер каждой картинки до 64х64 и копируй так, чтобы составить плитку 4х4. Но этот ровный тайлсет нужно сделать краями тайлов, для этого можешь использовать имеющиеся в файле края, как трафарет.
В этой карте xgm.guru/files/100/220108/comments/408510/0.w3m пример тайлсетов картинок двух размеров, там не нарезаны края, чтобы тебе увидеть, почему они важны. Текстуры двух размеров 256х256 и 512х512, у меня текстуры размеров выше 256х256 плохо отображаются, словно глаз режут. Но если у тебя нормально, то лучше было бы использовать текстуру с большим разрешением, чтобы детали рисунка хорошо различать.
Загруженные файлы