11

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

а зачем впринципе?
Я делал другой класс, который обрабатывает одномерные массивы юнитов group_alpha[номер юнита] , я хотел сделать методы для этой структуры , которые бы сохраняли в хэш-таблицу параметры юнита group_alpha[номер юнита].saveinteger(childid, integer) , и при присваивании присваивались через хэштаблицу также и все параметры group_alpha[номер юнита_1] = group_alpha[номер юнита_2]. Со вторым проблем нету, а вот с первым незадача.

Забей на структуры, в 99% случаев можно и без них обойтись.
У меня несколько библиотек, которые выполняют все это без структур, да. И я понимаю, что можно. Структура мне нужна , что бы 10 раз не переписывать одни и те же вещи. Аля проверка умер ли юнит из массива, если умер то на его место поставить последнего юнита из массива и разные методы дополнительные, которые работали бы через наследование.
11

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

пока адекватным решением для меня является следующее
struct UNIT
        private unit un
        method operator unit takes nothing returns unit
            return this.un
        endmethod
        
        method SetPosition takes real X,real Y returns nothing
            call SetUnitPosition(this.un, X, Y)
        endmethod
        
        static method create takes unit un returns UNIT
            local UNIT this = GetHandleId(un)
            set this.un = un
            return this
        endmethod
endstruct
Если в этом примере определение оператора unit можно заменить "немым" оператором, это будет решение
11

» WarCraft 3 / 16. Функция как объект

Самое вкусное, в какую кашу из жасс это превращается, не показали(
Ты имеешь в виду как компилятор разворачивает vjass в JASS ?
11

» WarCraft 3 / 16. Функция как объект

Не очевидно, но evaluate и execute вызывают новый поток, со своим оп лимитом
11

» WarCraft 3 / Кривая Безье

Мне необходимо было разобраться как динамически добавлять больше 4 опорных
Не очень проблематику понял. Можно поподробнее про подводные камни.
11

» WarRaft / IntelliJASS

Потом очень полезная функция из теша это function list. Мне система better triggers не очень нравится именно из-за того , что там эта функция отсутствует. Часто забываешь названия функций, нужно напомнить себе. Часто помогает найти функцию в гуи , перевести в текст. В сторонней среде разработки, естественно, это невозможно, поэтому function list был бы очень хорош.

Притом повторюсь, жасс хелпер написан через одно место.
да, это и не важно, присутствие функционала это не минус , а плюс.
Как и в остальных, нормальных яп.
Ну в любом нормальным языке также реализовано указание на критические ошибки при компилировании.
11

» WarRaft / IntelliJASS

Koladik, а что за поддержка нужна? Грамматика для vJass и Zinc присутствуют, а компиляцией в JASS может и сам JassHelper справится. В IDEA уже есть все необходимые инструменты для запуска скриптов.
Ну у меня есть привычка в теше сохранять карту, включая джас хелпер, и проверять все ли нормально компилируется. Он на ошибки указывает конкретные в коде и примерное место ошибки. Обычно это реализуют так, что не понятно где ошибка, не компилируется и все. А джас хелпер хорошо в этом помогает.
11

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

Только еще учитывай, что есть разные состояния применения способности, подготавливает, начинает применять и приводит в действие.
11

» WarCraft 3 / 4. Директива //! inject

Жаль , что такую инжекцию нельзя делать в любую вообще функцию.
11

» WarCraft 3 / Так много ли по итогу памяти жрет инициализация хеш-таблицы?

Относись к ним как к двумерным массивам.
Разумно, спасибо, а максимальная размерность какая получается в таком представлении? Ну то есть по горизонтали понятно 2^32, а по вертикали?
11

» WarCraft 3 / Hashtable 8000

Если вдруг вернешься к теме, выложи весь код под спойлер на сайте. Чтобы можно было перед скачиваем смотреть.
11

» WarCraft 3 / Так много ли по итогу памяти жрет инициализация хеш-таблицы?

ну а сейчас есть просадки ?
Моментально. Единственное, что тестить, надо было не в инициализации, но и тем все нормально. Интересно , это реально было, или я просто заблуждался на пустом месте.

Для "динамических" хэштаблиц можно использовать наработку Vlod'a - Hashtable 8000
спасибо за наводку

Внесу ясность для чего это вообще спрашивается. Нужно подгружать N массивов Размером L*L>256^2, затем, подгружая каждый массивов, перемножать, складывать с другим массивом. Есть ощущение, что такое динамически можно только на хэштаблицах. Но я, честно говоря, немного плаваю в базе хэштаблиц. И не понимаю как это будет по скорости и вписывается ли это в ограничения.
11

» WarCraft 3 / Проверка проходимости юнита

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

» WarCraft 3 / Почему предмет не использует 2 способности одновременно

Принятый ответ
Надо детально смотреть, скорее всего дело в требованиях технологий которые ты не убрал.

А ты же в предмет вставил все. Никогда не видел, что предмет 2 активки использует. Это и нельзя.
11

» WarCraft 3 / Как скрыть надпись "Заклинание ещё не готово"?

Потесть, возможно, если в другую карту создашь то тоже не будет видно. Раньше баг был, что некоторые исправления подобного рода перетекали из карты в карту пока в вар3 не перезайдешь. Вроде названий игроков в лобби.

Дело в том., что в рефордже появилась возможность конкретные фреймы убирать, без затрагивания констант игровых.
11

» WarCraft 3 / Способность фуры из Доты

Ты можешь записывать каждое создаваемое дерево как отдельный разрушаемый объект (в переменную), и так же записывать время его жизни (для таймера).
В момент каста просто создаёшь таким образом N деревьев и всё.
По таймеру чекаешь все деревья и их время жизни, если оно дошло до нуля - ломаешь дерево.
До мультеприменимостьи твой пример развить надо, хэштаблица, наверное, верный совет. Нужно все номера созданных деревьев в хэштаблицу этого таймера запихнуть. Тогда будет как надо, и удалять те что загрузятся при окончании таймера.
11

» WarCraft 3 / Эффект жизни

Ну добавь птиц, зверей бродящих, окружение различное, что тут еще можно посоветовать :D
Вот в том и дело что всё это есть!Но всеровно не то.
Если ты перфекционист , то покажи карту друзьям может они увидят нереальную глубину жизни , которую ты уже не видиш сам из-за того , что глаз замылелся. Это не ирония, реально помогает.
11

» WarCraft 3 / Эффект жизни

Ну добавь птиц, зверей бродящих, окружение различное, что тут еще можно посоветовать :D
11

» WarCraft 3 / Нападение крипов на героев

Проблема в том, что твои крипы нейтрально-враждебные у них есть так называемый лагерь преследования. Если хочешь сделать так, чтобы они шли до талого, делай их игроками.
11

» WarCraft 3 / Уничтожение Handle sound'a

Что мешает объявлять в своей библиотеке глобалки и использовать инициализатор для них? Или здесь более сложный случай?
Случай то тривиальный. Тут любой спел-чаннел, как пример, подойдет. Если использовать способность в двух местах карты одновременно, ну банальный близзард мага, то в этих двух местах звук дождя будет слышен, если использовать 3д звук, а во всей остальной карте нет. Так вот, такое можно реализовать триггерно с только если инициализировать массив звуков. Но вопрос заключается в том, действительно предложенная выше функция очищает память от handle'а звука при удалении, в принципе это можно проверить самому просто инициализируя ОЧЕНЬ много звуков без удаления до вылета варкрафта, а потом сравнить с удалением. Но это всё-таки запарно, я надеялся, что кто-то работал с похожими вещами.
11

» WarCraft 3 / Уничтожение Handle sound'a

Koladik, не через пару секунд, насколько я помню, если у модели спецэффекта присутствует только анимация birth (опционально death?), спецэффект можно удалять сразу же после создания, анимация завершится и спецэффект удалится; если модель не соответствует этим требованиям, спецэффект придется удалять после того, как пройдет анимация stand (+birth?), иначе никакого визуального эффекта не будет.
А зачем звуки динамически создавать? В редакторе звуков заранее создаются все нужные звуки и проигрываются когда нужно.
Я проверю с одной анимацией, даже интересно, я проверял только когда две анимации. Но мне кажется, что ее заного можно будет запустить после удаления, если анимация короткая.
Звук создавать динамически затем, что бы удобно было копировать алгоритм, создал в одной своей карте систему и легко ее перетащил в любую другую без захламления переменных в редакторе звука, так как динамически ты все записываешь напрямую через путь звука. Плюс, я сейчас тестировал вообще воспроизведения звука в варике. Одну переменную получается можно "приклеить" только к одной точке на карте, чтобы воспроизводился 3д звук. А если хочешь, чтобы один и тот же звук воспроизводился в двух местах сразу то нужна еще одна переменная.
Мне пока непонятно многое в воспроизведении звука в варике, поэтому могу в чем-то ошибаться. Но то, что динамически создавать переменную самостоятельно намного удобнее, чем отдавать все на откуп редактору звука, я уверен.
11

» WarCraft 3 / Уничтожение Handle sound'a

Зачем удалять единожды созданный при инициализации звук? При проигрывании никакой памяти не выделяется. Спецэффекты прекрасно удаляются функцией DestroyEffect.
это оффоп но спецэффекты не прекрасно удаляются. Они удаляются через пару секунд. Можешь попробовать, после выполнения команды DestroyEffect можно проиграть анимацию эффекта несколько раз, а потом он удалится, хотя сама команда прерывает любую анимацию На счет звуков, я их создаю динамически, динамически хочу и удалять.
11

» WarCraft 3 / Таймеры

Принятый ответ
anton1623, то насколько переменная нагружает память можно проверить сохраняя переменные пока не вылетит игра (около 8гб оперативы) и подчитать сколько ты их сохранил. Если волнует сколько таймеров ты можешь за раз запустить. То попробуй также запускать их одновременно c выполнением простой команды 2+2 пока не начнется сильная просадка fps вот ты и узнаешь это. Я думаю 30к таймеров запустить удастся.