21

» Администрация XGM / Как удалить свой ресурс.

Привет. Воспользуйся функцией "Написать менеджеру" или кнопку [!] или обратись напрямую к любому админу или менеджеру и перечисли что хочешь удалить.
Если необходимо удалить проект - обращайся напрямую к админу. Менеджеры не могут удалять проекты которые уже прошли публикацию. Если необходимо удалить ресурс - достаточно обратиться к менеджеру.
А если аккаунт - к Богу
Пункты выдал ошибочно. Вскоре они будут сняты.
21

» WarCraft 3 / Создание формации

Bergi_Bear, NazarPunk, эм... за статьи вообще-то опыт дают. Предлагаю не умничать в комментах, а написать статью и кинуть сюда линк.
21

» WarCraft 3 / Создание формации

А если нам тоже лень?
Тогда все грустно. Сам же знаешь что полноценный ответ на некоторые, казалось бы, тривиальные вопросы по объему потянет на статью.
21

» WarCraft 3 / Помогите с системой формации

Разворошили... Я имел в виду что нет смысла учить Jass с целью использовать custom script-вставки чтоб все было на GUI(триггерах) и не страшно. До сих пор считаю что затея тупейшая.
21

» WarCraft 3 / Создание формации

Bergi_Bear, я бы совмещал геометрический центр формации с точкой отдачи приказа. Дальше бы узнавал средний угол от выделенных игроком юнитов к точке отдачи приказа и разворачивал формацию соответственно. Сама формация - двумерный массив интов (сетка?), где 0 означает что ячейка пуста, 1 что ее может занять юнит. При отдаче приказа узнается ближайший к центру ячейки выбранный игроком юнит и получает приказ двигаться к центру ячейки, удерживать позицию.
Но там много кейсов надо продумать и мне лень писать. Хорошо что вы есть.
21

» WarCraft 3 / Способности героя "Волна силы"

Невозможно сделать так чтоб способность "Волна Силы" выпускала 3 волны, но можно сделать так чтоб это выглядело так будто она это делает. Тут у тебя имеется три концептуально разные способа:

Первый

  • способность-пустышка у героя
  • способность с уроном у дамми-юнита
    • Перезарядка способности: 0
    • Стоимость маны: 0
  • откалиброванный дамми-юнит
    • Art - Animation - Cast Backswing (Обратный бросок)
    • Art - Animation - Cast Point (Точка каста)
    • Одного такого юнита достаточно чтоб обслужить все не-channelled триггерные способности
  • при касте героем способности-пустышки приказывать дамми-юниту запускать способность в нужных направлениях (юнит с такими настройками способен мгновенно кастовать несколько способностей).
  • задать направление применения способности даммиком:
    call IssuePointOrder(dummy, "shockwave", GetUnitX(dummy) + sin(currentValue +/- adjustment), GetUnitY(dummy) + cos(currentValue +/- adjustment))
    //где currentValue - угол (направление каста/поворот юнита)
    //adjustment - смещение относительно текущего угла

Второй

  • три дамми-юнита
    • Правильно развернуть даммиков
    • Физический размер: 0
    • Способности: москиты
    • Модель: эффект нужного тебе спелла
    • Настроить скорость анимации даммика
  • способность-пустышка у героя
  • хеш-таблица или структура
  • группа юнитов
  • периодический таймер с низким периодом, регулярно проверяющий нет ли соответствующих указанным тобой условиям юнитов вокруг любого их твоих дамми-юнитов. Если есть - наносить урон и заносить в группу (чтоб при слудующем тике таймера не продамажить повторно).
  • Двигать даммиков в направлении поворота или под нужным углом относительно точки каста
  • Удалить экземпляр структуры/очистить хеш-таблицу спустя расстояние/скорость секунд
  • Убить даммиков. Удаление даммиков из игры оставить на отдельную систему.
  • ???
  • PROFIT (Надеюсь, ничего не пропустил)

Третий

То же самое что с даммиками, только с эффектами и без структур
О синхронизации описаний дамми-абилок, о том что добавлять способности даммику и повышать уровни способности (даже не-геройской) можно триггерно перед самим кастом и о многом другом пока умолчу.

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

Вопрос, как видишь, не глупый.

Так же можно попросить кого-то сделать тебе способность за бесплатно или за деньги.
21

» WarCraft 3 / Создание формации

Максим7, возможно. Но нужно уметь использовать скриптовый язык (Jass). Технически, это осуществимо и через триггерную оболочку, но для этого необходимо ознакомится с локальными переменными, массивами и хеш-таблицами.

Не рекомендую пытаться реализовать это через триггерную оболочку, так как уже посередине с трудом будешь понимать что у тебя происходит в триггерах. Лучше пройдись по статьям на сайте и делай это человеческим способом.
21

» WarCraft 3 / Область утечки

Да и вообще не существует такого события "юнит входит в облать"
это всего лишь конвертация области в регион и запись события на вход в регион
Полагаю, его интересует не содержит ли область сведений о юнитах внутри. Это стоит спросить у тех кто видел исходники. На Хайве несколько ребят работают на близзов. Я бы спросил там.

Но если я не ошибся, то вопрос бессмысленный т.к. даже если ответ положительный, у нас нет доступа.
21

» WarCraft 3 / Область утечки

Не вполне понимаю о чем ты. Сборщик мусора чистит область без референсов, так же как и все хендлы.
Ты о производительности, или тебе нужно как-то сохранять список всех существующих юнитов?
21

» WarCraft 3 / Доспехи веры, зависящие от кол-ва юнитов вокруг ауроносца

menover, подход примерно такой:
  • считаешь количество юнитов, соответствующих твоим условиям
  • устанавливаешь уровень абилки обладателю ауры, равный получившемуся значению
пример
//Это скорее псевдокод, т.к. с Jass'ом я давно не игрался

globals
    unit enumUnit
endglobals

function groupSize takes group passedGroup returns integer 
     local integer size = 0
     local group dummyGroup = passedGroup

     loop
        set enumUnit = FirstOfGroup(dummyGroup)
     exitwhen enumUnit == null
        set size += 1
        call GroupRemoveUnit(dummyGroup, enumUnit)
     endloop

     return size 
endfunction

function adjustAbilityLevel takes unit target, integer abilId, code filterFunc returns nothing
    local group spellUnits = CreateGroup()

    call GroupEnumUnitsInRange(spellUnits, GetUnitX(target), GetUnitY(target), filterFunc)
    call SetUnitAbilityLevel(target, abilId, groupSize(spellUnits))
endfunction
21

» WarCraft 3 / Передача локальной переменной

область видимости у них вверх идет
Это не область видимости. Прежде чем вызывать функцию, ее нужно декларировать (объявить?). Автор доставляет. Даже кажется что он надеется самостоятельно понять как работать с Jass. И это не хорошо. Незачем самостоятельно идти по полю, усеянному граблями, когда под рукой у тебя комьюнити и возможность получить инсайд о лучших практиках в почти любом вопросе. Времени не жалко?
21

» WarCraft 3 / Передача локальной переменной

library myShitCode
    function myShitFunction1 takes nothing returns unit
        local unit = myShitUnit
        return myShitUnit
    endfunction

    function myShitFunction2 takes unit returns nothing
        //your shit actions
    endfunction

    call myShitFunction2( myShitFunction1())
    //call myShitFunctionN(myShitFunction3(myShitFunction2( myShitFunction1())))
endlibrary
21

» WarCraft 3 / Передача локальной переменной

Frzctions, вижу. Но опять же, я уверен что ты пытаешься решить проблему способом который тебе кажется подходящим, но в действительности может не являться оптимальным решением. Рекомендую описать что ты хочешь сделать.
Что касается перенесения (записи) чего-либо в локальную переменную - тебе нужно объявить переменную в начале функции и записать в нее ссылку объект-участник события. Если тебе необходимо спустя какое-то время* выполнить какие-то действия над объектом, который ты записал в переменную, необходимо воспользоватся связкой (таймер + хеш-таблица).

Лучше не кидай конвертированные триггеры, так как это нечитаемо. Из-за длинных, замусоренных, названий приходится долго разбирать что что запускает. Куда дольше чем я (как и многие другие) могут себе позволить.
21

» WarCraft 3 / Передача локальной переменной

Локальная переменная - ссылка на игровой объект, доступная только внутри функции. Как вариант в конце функции возвращать ее значение (returns yourType). Дальше использовать эту функцию в качестве принимаемого аргумента другой функции, а другую - в третьей. Но это как минимум странный подход.
Лучше опиши задачу, которую ты пытаешься решить, а мы подскажем наиболее оптимальное решение.
21

» WarCraft 3 / wait течет или капает?

PolledWait не обнуляет переменную таймера
Если это утверждение верно, то да, но только с глобальными таймерами.
21

» WarCraft 3 / wait течет или капает?

Разве она утечна? Никогда о подобном не слышал. Везде говорится лишь что она не подходит для реализации манипуляций с высоким периодом.
Открой PolledWait (Или как там ее) в JNGP и все поймешь с первого взгляда.
21

» Мир безумного / Лохотрон в сети | Rage of Hero

Рубль-два в день.
На этом моменте вышел. Было бы забавней если бы они побольше наобещали. А так - унылота.
21

» WarCraft 3 / Юнит цель стандартной телепортации

pusha1999, хочешь сказать что с соответствующими проверками (флаги + расстояние от точки каста), ближайший юнит найденный триггером не равняется ближайшему юниту, которого находит спелл? Ты точно умеешь определять ближайшего юнита?
21

» WarCraft 3 / Юнит цель стандартной телепортации

то способность ищет ближаайшего юнита подходящего под цели и телепортируется на него...
(SpellTargetX, SpellTargetY) + поиск ближайшего юнита к точке каста?
Может, я что-то позабыл, но я не вижу никаких проблем.
21

» WarCraft 3 / Порядок инициализации

Bergi_Bear, PT153, мдэ, до такого я бы не додумался. Проверял только исходник карты после того как менял тестовые триггеры местами и сохранял карту. Не хочу даже спрашивать как вы это обнаружили

Но после переоткрытия карты и сохранения, триггеры будут располагаться и инициализироваться как они находятся в редакторе в порядке сверху вниз.
21

» WarCraft 3 / Порядок инициализации

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