23

» WarCraft 3 / TFTLocal

ScorpioT1000, ещё проще купить пару компов с барахолки, соединить их и запускать варики на них, через хамачи или радмин какой нибудь ) минимум кодинга и мозголома ))
23

» WarCraft 3 / TFTLocal

Утилита хороша, бесспорно, но есть нарекание к удобству использования.
Предположим, что я обычный картодел, просто сделал карту, даже гуи знаю едва-едва, на уровне "триггер - инициализация карты - действия - приказать юниту Пехотинец 0001 <gen> двигаться в центр карты", и я решил добавить утилиту в комплект к своей карте, естественно, не проверив её работу, и загрузить всё это дело на ХГМ. Юзер, скачавший карту и файлы, офигеет от количества непонятного чего-то там и удалит карту и файлы нафиг. Разбираться он не будет, слишком сложно. И не он один, скорее всего, так поступит. Зачем челу, чтоб поиграть, лезть в технические дебри?
Поэтому возможно ли сделать исполнение утилиты в виде 1 mix файла (по аналогии с FPS Unlocker или Widescreen Fix) и 1 txt файла - сделанного по аналогии со стандартным варовским Custom Keys.txt, чтобы установка/удаление было по типу "копировать - вставить", а правка была возможна тупо в блокноте?
П. С. Лично я бы разобрался как поставить это в текущем виде, но ведь мапмейкеры не для себя карты делают, а для юзеров.
23

» WarCraft 3 / Как найти максимальное число в массиве

Под массивом или под индексом одного массива?
Если индекс, то по циклу, как выше написали.
Или под каждого игрока свой отдельный массив и они записаны под одинаковые индексы?
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

AMark, В статье забыли очень важную вещь написать - "Также вы обязательно должны выучить всё, что связано с графикой игры, как минимум с моделями, а также научиться делать модели, освоить работу с анимациями, а в идеале ещё и освоить фотошоп и научиться рисовать текстуры. Ведь карта должна отличаться от остальных!"
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

ScorpioT1000, Ну да, похоже на то, если считать потоком обработку всего этого только одним ядром CPU, как в статье написали.
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

ScorpioT1000, У меня тогда возник вопрос, не связанный с jass. А Вар сам по себе многопоточен? Например, рендеринг моделей, обработка анимаций, свет, обработка звуков, поиск данных по slk итд - идут в том же потоке, что и обработка игрой jass скрипта, или в других?
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

nazarpunk, кстати таки нет, ведь
Функции ExecuteFunc, Preload и .ai скрипты стартуют свои потоки и их выполнение происходит в отдельном стеке. В случае с preload и .ai даже в отдельном глобальном контексте.
И не jass, а Вар, но это выходит за рамки обсуждения, на чём можно и поставить точку
23

» WarCraft 3 / Jass MythBusters

KaneThaumaturge, Было, было, несколько раз обсуждал. В любом случае, инфа не бесполезная. )
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

ScorpioT1000, Спасибо за обновление статьи. Хорошо, что написали про ветки действий. Тут уже совсем другое дело.
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

Неважно какой поток и где, все они обрабатываются как один, по порядку
Если бы так было, тогда бы оно работало так, как нарисовано на картинке справа. И каждый TriggerSleepAction задерживал бы всё последующее исполнение кода. Но подобного не происходит.
А вообще, неплохо было бы получить от тебя ссылку на статью, где доказано, что Вар однопоточный.
Загруженные файлы
23

» WarCraft 3 / Jass MythBusters

Был такой миф / предмет спора - что происходит с событием, утекает ли оно при удалении триггера или удаляется?
Вот Q/A с Unryze по этому вопросу (из переписки в ЛС):
Q: ...при смерти и удалении юнита из игры удаляется ли привязанное к нему событие на отлов урона итд? Так же попутно вопрос - если все такие события будут завязаны на 1 триггер, будут ли они удаляться в этом случае? Или нужно непременно под каждый юнит делать отдельный триггер?
A: Ничего не удаляется, удаляется лишь юнит и именно всё идущее от него, абилки атаки и т.д. Триггеры никак не учитываются.
Q: ...Если мы удаляем триггер из игры через destroy trigger, и если на триггере висит событие, оно удалится при удалении триггера или останется висеть в памяти как отдельный handle?
A: На ужапи - да, на ванилле/рефе нет, ибо у них в коде косяк, который не очищает/удаляет Action'ы, а вот Event - удалятся. Вопрос в общем ты задал не совсем корректно, ибо кроме событий есть более важные - действия, которые вот не удаляются.
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

несколько потоков jass
Однако, когда срабатывает событие, например, "Юнит атакован", запускается новый поток.
Лучше можно рассмотреть на рисунке - сверху вниз показано, какие потоки отрабатывают в какой момент времени.
каждая отработка события триггера запускает новый jass-поток, который работает почти независимо от остальных.
Статью скинул как пруф своих слов о многопоточности.
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

ScorpioT1000, ок. В следующие разы буду добавлять ссылки на статьи при ответах.
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

rsfghd, а, ну да, кстати, забыл про него ) спасибо)
Правда, у него есть недостаток - если имеется в виду время суток - оно может течь по разному, если в игровых константах настроить другую длительность суток.
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

nazarpunk, А на тебя, друг любезный, я уже 2 жалобы в админку кинул, ибо задрал хамить. Научись вежливости, и тогда будем разговаривать
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

rsfghd, замечательно, а на джассе обычном как?
И Вар многопоточен, так то. Пусть и не совсем
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

rsfghd, Да не говорил я, что они прямо зло. Просто их не надо использовать, где они могут вызвать проблемы и наложение данных. Например, в гуи вместо локалок или для работы с вейтами и таймерами. (Исключая ситуации, где под каждый вейт или таймер своя глобалка)
Для частого переноса данных или использования вместо локалок - глобалки зло, да. )
А не вообще. Частый перенос данных - имелась ввиду ситуация, к примеру, когда триггер реагирует на событие смерти юнита, и в его коде в глобалку сохраняются данные, а потом через вейт используются. Тогда будет наложение, ведь триггер сработает много раз.
П. С. Не знаю других способов, как без вейта или таймера сделать отложенные действия, когда это нужно. Не писать же мозголомные системы
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

nazarpunk, конечно, могу. К примеру, тот же таймер, где в каллбек подаются данные из глобалки, и притом таймер не один, а глобалка одна. Очевидно, что данные могут быть туда перезаписаны не 1 раз и будет подано не то значение.
Пример 2 - get trigger unit записывается в глобалку, а потом глобалка используется после вейта, триггер срабатывает не 1 раз. Очевидно, что данные..., ну ты понял.
будешь провоцировать и хамить - буду на тебя сразу жалобы в админку кидать, без лишних слов
23

» WarCraft 3 / Рассинхрон в мультиплеере, оптимизация кода

Думаю, если есть возможность перейти на луа по дефолту, хуже не будет, и пункты 1 и 2 уйдут сами собой )
По п 3 - глобалки разве что для удобства нужны, как константы, чтобы избежать "магических чисел", например, и для переноса каких либо общих данных между функциями, вроде каллбека таймера итп. И массивы для бд подойдут, в сочетании с циклами. Для частого переноса данных или использования вместо локалок - глобалки зло, да. )
23

» WarCraft 3 / [UjAPI] Chest Puzzle

rsfghd, а, понял. Ну да, в скайриме вроде другой был.
За трек спасибо)
23

» WarCraft 3 / [UjAPI] Chest Puzzle

Подскажите название трека на фоне, пожалуйста)
Механика хороша, почти Скайрим получился. П. С. Так ведь южапи может ловить координаты мышки и кнопок, можно в теории 1 в 1 реализовать замки, как в скайриме...
23

» WarCraft 3 / Что делать если Fatal Error при запуске карты? Warcraft 3.

LastUchiha, короче говоря, вот такую я функцию использую у себя для тэгов. Утечек не было, судя по Handle counter. Видно или только локальному игроку, или всем, в зависимости от параметра localPlayer
function SetTextTagSett takes unit U, string Str, integer Red, integer Green, integer Blue, boolean localPlayer returns nothing
local texttag TT = CreateTextTag()

    call SetTextTagLifespan(TT, 2.00)
    call SetTextTagText(TT, Str, 0.03)
    if localPlayer then
        call SetTextTagPosUnit(TT, U, 0.00)
        call SetTextTagColor(TT, Red, Green, Blue, 255)
        call SetTextTagPermanent(TT, false)
        call SetTextTagFadepoint(TT, 0.10)
    endif

    set TT = null

endfunction
Попробуй примерно по такому же принципу сделать, только без входных данных типа юнита и цвета.
23

» WarCraft 3 / Что делать если Fatal Error при запуске карты? Warcraft 3.

LastUchiha, попробуй тогда сделать через trigger sleep action уже в конце, за пределами условия его скрывать.
Тебе нужно что? Чтобы тэг был виден только локальному игроку?
Тэгу можно задать сразу время жизни через set text tag lifespan