PT153 #1 - 12 hours ago 4
Голосов: +4 / -0
PT153 #2 - 18 hours ago 0
Голосов: +0 / -0

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

rsfghd, rate - время, за которое будет установлена высота, кмк.
PT153 #3 - 19 hours ago 0
Голосов: +0 / -0
PT153 #4 - 2 days ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 / JNGP: Rebuild от PT153

Но суть в том, что старый редактор нормально читает это.
Потому что это новый pjass сообщает

А чтобы найти, где ещё есть имя h, можно экспортировать скрипт и пройтись поиском. И вообще, карту в студию.
PT153 #5 - 4 days ago 2
Голосов: +2 / -0

» WarCraft 3 / JNGP: Rebuild от PT153

rsfghd, суть в том, что на подобной ошибке построен мемхак.
PT153 #6 - 5 days ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 / JNGP: Rebuild от PT153

Потому что это новый pjass сообщает, что у тебя локалка и глобалка имеют одинаковое имя, но разный тип. Это ошибка. Используйте переводчик, пожалуйста.
И не надо спрашивать, как это исправить. Используйте разные имена для глобалок и локалок.
PT153 #7 - 5 days ago 1
Голосов: +1 / -0

» WarCraft 3 / Cоздать юнит дамми (эффект) с переменным или без?

Код идентичен, только первый занимает больше строк, но более удобен для дальнейших модификаций.
PT153 #8 - 1 week ago 0
Голосов: +0 / -0

» WarCraft 3 / редактор не реагирует на библиотеку и скоп

жалко что убрали syntax cheker на Rebuild 1.4
А в каком JNGP он есть?
PT153 #9 - 1 week ago 0
Голосов: +0 / -0

» WarCraft 3 / редактор не реагирует на библиотеку и скоп

Ничего не понятно. pjass.exe никак не влияет на либы и скопы, это не его забота.
PT153 #10 - 1 week ago -1
Голосов: +0 / -1

» WarCraft 3 / Утечки в вызванной функции

в моей стране дискорд закрыт у меня нет доступа к нему
Каво.
PT153 #11 - 1 week ago (изм. ) 3
Голосов: +3 / -0

» WarCraft 3 / Утечки в вызванной функции

почему нельзя было ответить не парься или обнули?
Почему нельзя просто прочитать статью?

Ну и да, для таких вопросов есть дискорд.
PT153 #12 - 1 week ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 / Не запускается карта с мемхаком

Гуванч, cJass неверно настроен. Также, откуда взят мемхак? Я дал ссылку на мой ресурс, там всё работает.
PT153 #13 - 2 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Не запускается карта с мемхаком

анрайза 1.4 если не ошибаюсь и да vJass включен
Читаем тут настройки компиляторов.
PT153 #14 - 2 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Не запускается карта с мемхаком

Какой мемхак брал? vJass включён?
PT153 #15 - 2 weeks ago 0
Голосов: +0 / -0
PT153 #16 - 2 weeks ago 5
Голосов: +5 / -0

» WarCraft 3 / Востребованный жанр

Никакой. Делай то, что тебе нравится.
PT153 #17 - 2 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Как активировать тип атаки для боевой единицы?

Это вроде с Хайва, у меня в сохранённых лежит.
Прикрепленные файлы
PT153 #18 - 2 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Как активировать тип атаки для боевой единицы?

siwono, нельзя включить атаку, если она выключена. Она должны быть настроена, а ниже выбрано "Только атака 1" Или "Только атака 2". Сферы включают доп атаку, но не отключают прежнюю. Поэтому нужно юзать "Вырвать дерево".
PT153 #19 - 2 weeks ago 1
Голосов: +1 / -0

» WarCraft 3 / не станит дамми

Ну как бы там два разных приказа сразу отдаётся. Также у дамми есть скорость передвижения. Нужно сделать 2 разных дамми: один для эффекта, второй для каста.

Исправил.
Прикрепленные файлы
PT153 #20 - 2 weeks ago 2
Голосов: +2 / -0

» WarCraft 3 / Вызывает ли утечки - выбор той же группы?

Гуванч, что нет, у него уже есть группа, он её просто перебирает...
PT153 #21 - 2 weeks ago 3
Голосов: +3 / -0

» WarCraft 3 / Вызывает ли утечки - выбор той же группы?

Или же можно без утечек просто выбирать постоянно группу в которую я добавляю/убираю юнитов ?
Это.
PT153 #22 - 3 weeks ago 0
Голосов: +0 / -0

» XGM Конкурсы / Конкурс становления героев

PT153:
Сейчас придёт мультимиллиардер N1ghtSiren и увеличит призовой в 10 раз.
Razor_dex, а не N1ghtSiren.
PT153 #23 - 3 weeks ago 0
Голосов: +0 / -0

» XGM Конкурсы / Конкурс становления героев

Сейчас придёт мультимиллиардер N1ghtSiren и увеличит призовой в 10 раз.
PT153 #24 - 3 weeks ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 / Москиты не скрывают даммика вызванного с помощью Огненный Голем

rsfghd, она скрыта в стандартом редакторе. И удалять москиты нельзя.
PT153 #25 - 3 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Начала внезапно вылетать карта. (редактор 1.26а)

DESo3latorTro0pe, включаешь vJass и используешь это.
DESo3latorTro0pe:
просто дело в том что уровень у способности по идее один
А кстати да, DracoL1ch, в коде карты нет функций, которые меняют уровень способностей.
PT153 #26 - 3 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Начала внезапно вылетать карта. (редактор 1.26а)

DESo3latorTro0pe, перед лвлапом проверять, жив ли юнит с помощью UnitAlive.
PT153 #27 - 3 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Тостик Референс [lua]

О, а вот это годно.
PT153 #28 - 3 weeks ago 0
Голосов: +0 / -0

» Огонёк Феникса / Долгожданная встреча с ней

Феникс уже как райткоин занимается самоанализом)
PT153 #29 - 3 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Warcraft 3 Reforged Взломан!

А разве нельзя просто скачать какой-нибудь 1.31, обновить до ласт версии и ввести фейковый ключ?
здрасте-приехали и чё ж тогда все на такой версии пиратке не играют?
Ну вот только чел в англоязычном дискорде сказал то, что я писал.
  • can i play without dont buy war 1.32
  • Just buy an old key from a reseller. They are super cheap. You only need a roc key
То есть можно просто купить ключ RoC, который дешёвый, ввести и играть на 1.32. с SD.
PT153 #30 - 3 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Проблемы с редактором

under11, проверил способ Extremator? Он должен работать, ведь я сам так пару раз исправлял. Если работает, то измени верный ответ.
PT153 #31 - 3 weeks ago 1
Голосов: +2 / -1

» WarCraft 3 / cJass Парсер выдает ошибку

Вот поэтому я и не юзаю cJass)
В настройках отключи оптимайзер cJass, все остальное включи.
PT153 #32 - 3 weeks ago 2
Голосов: +2 / -0

» WarCraft 3 / Хэш-таблицы в vJass

В своей карте юзал одну хеш таблицу для всех следующих целей:
  • Привязка структуры к таймеру.
  • Привязка структур к равкодам способностей-кнопок.
  • Привязка структуры-баффа к юниту.
  • Привязка структуры-триггера к триггеру.
PT153 #33 - 4 weeks ago 2
Голосов: +2 / -0

» WarCraft 3 / Хэш-таблицы в vJass

JackFastGame, ключ - это просто число, которые не совпадает с другими числами-ключами.
PT153 #34 - 4 weeks ago 2
Голосов: +2 / -0

» WarCraft 3 / Проблемы с редактором

under11, у меня часто происходит, я на это много внимания не обращаю.
PT153 #35 - 4 weeks ago 2
Голосов: +2 / -0
PT153 #36 - 4 weeks ago 2
Голосов: +2 / -0

» WarCraft 3 / Хэш-таблицы в vJass

юзаю стринг хеши в качестве ключей
Я юзаю тип key от vJass.
PT153 #37 - 4 weeks ago (изм. ) 1
Голосов: +1 / -0

» WarCraft 3 / Проблемы с редактором

Карту сохрани, закрой (не редактор!), открой снова. Всё. Если карта долго сохраняется, то забей, это визуальный баг.
PT153 #38 - 4 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Warcraft 3 Reforged Взломан!

Всё бы хорошо и в 1.31, но тут после загрузки сохранений перестают работать почти все триггеры с событиями Specific Unit Event вида EVENT_UNIT
Хоть это и фейл, но он всё же обходится довольно просто. А вот баг с грейдами на рефе (1, 2) просто обойти нельзя.
PT153 #39 - 4 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Warcraft 3 Reforged Взломан!

Поэтому лично для меня только 1.26 или Reforged
А откуда гарантия, что в рефе данный баг исправлен?
PT153 #40 - 4 weeks ago (изм. ) 4
Голосов: +4 / -0

» WarCraft 3 / Начала внезапно вылетать карта. (редактор 1.26а)

Вранье, 1.26 самый стабильный патч, на нём ничего не вылетает.
А когда вылет происходит? Я запустил в карту, она работает.
PT153 #41 - 4 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Обучение jass

Ну а возвращаясь к роликам. Проблема вара в том, что знание, как он работает (точнее, как он работает вопреки здравому смыслу), лежит в головах людей, и это знание из года в год мутирует. Особенно когда речь идёт о багах и эксплоитах. Решение у данной проблемы простое: создание базы тестов, которая проверяет каждое заявление на правдивость.
Автор в своём первом ролике лишь подкидывает мутации и слухи в копилку, не подтверждая свои слова ничем. Поэтому я и написал:
после первого ролика не появилось желание смотреть остальные.
Зачем мне смотреть рентв, оформленное в стиле вара? Да не то что мне, а вообще кому-то.
Самое главное это то, что автор всё-таки признал свои ошибки и в будущем их исправит (наверное). Вот признание собственных ошибок я ценю, а низкокачественный контент, кем бы он не был сделан и что бы он не продвигал, - нет.
PT153 #42 - 4 weeks ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 / Обучение jass

Если у тебя есть идея построить дом, а с собой только пила. топор и три болта то ты просто умрёшь от увлекательности проживания в лесном шалаше. А вот если за тобой много строй материалов и целая бригада строителей разница в конечном итоге будет кардинально другая.
Найс аналогии пошли, вот только я напомню, что кампания вк3 полностью на гуи. Увлекательна ли она? Разумеется. Качественна ли она? Безусловно. Так что подобные аналогии идут лесом. В первую очередь нужно продумать геймдизайн, а затем выбирать инструменты, которыми его можно реализовать. Если для этого подходит гуи, то не вижу никакой проблемы.
PT153 #43 - 4 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Замена миникарты в лобби на превью в Reforge

Roy Mustang, речь не о мини карты в игре, за которую отвечает war3mapMap, а про превью.
PT153 #44 - 4 weeks ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 / Замена миникарты в лобби на превью в Reforge

Делаешь картинку размером 256x256, сохраняешь в формате .dds, импортируешь по пути war3mapPreview.dds.
PT153 #45 - 4 weeks ago 2
Голосов: +2 / -0

» WarCraft 3 / Обучение jass

Bergi_Bear, увлекательность карты не зависит от того, как она написана, так что мимо.
PT153 #46 - 4 weeks ago (изм. ) 2
Голосов: +2 / -0

» WarCraft 3 / Обучение jass

заставит хотябы 1 человека пытаться писат на jass, а если так произошло, то уже очень хорошо
И что же в этом хорошего?
PT153 #47 - 4 weeks ago (изм. ) 2
Голосов: +2 / -0

» WarCraft 3 / Стальной вихрь (whirlwind) и Заводной зверь

Решил объединить два вопроса, чтобы не захламлять.
Так нельзя, нужно создать два разных вопроса, если они о разных вещах.
PT153 #48 - 4 weeks ago 0
Голосов: +0 / -0

» WarCraft 3 / Удаленные юниты и триггеры остаются висеть в памяти (vJass).

Для динамических триггеров нельзя указывать действие, ибо они никак не удаляются. По крайней мере, так говорят.
PT153 #49 - 4 weeks ago (изм. ) 3
Голосов: +3 / -0

» WarCraft 3 / Структуры в джассе: смещение без очистки и вытекающие проблемы.

P.S. Забыл упомянуть, что все наследники интерфейса разделяют одно и то же пространство в 8192 объекта. Тоже не нашёл в руководствах.
На самом деле это следует из того, что наследники вызывают allocate родителя.
Я так понимаю, описание проблемы вот?
Самая большая проблема, которую я на текущий момент вижу, это, во-первых, возможность через индекс обращаться даже к несуществующим/уничтоженным объектам, и, во-вторых, сохранение всех ссылок на экземпляр структуры после её уничтожения (и да, я понимаю, что это не ссылки, а целочисленные индексы).
Решить первую проблему невозможно, как раз из-за того, что любой объект структуры есть целое число. И в любом месте для структуры MyStruct я могу сделать вот так:
call MyStruct(6).my_method()
Что уж говорить, есть возможность точечно менять значение приватного поля определённого объекта.
Второй проблемы в высокоуровневых языках быть не может, просто потому что объект остаётся в памяти до тех пор, пока на него ссылаются. Во время выполнения JASS никак нельзя узнать, сколько переменных ссылаются на то или иное число, дабы отложить вызов метода destroy, не говоря уже о том, что нет никакой информации, какой именно destroy нужно отложить. Поэтому её тоже решить невозможно.
Следствием этой особенности джасса является огромнейший потенциал неведомых ошибок во время исполнения: при параллельном использовании одних и тех же экземпляров структур в разных триггерах триггеры в разное время могут использовать разные объекты, при этом продолжая считать, что обрабатывают первоначально поданный. Ключевым здесь является то, что такая подмена обрабатываемого объекта (указатель на который мог быть сохранен, например, в хэштаблице) не вызовет никаких исключений или ошибок. Исполнение просто продолжится, как будто так и надо. Впрочем, с самого начала было ясно, что в рамках джасса отладка является синонимом страданий. Мне, привычному к структурированной обработки C#, это бывает больно.
Могу предложить вот что. Немного исправленный код из моей карты.
» раскрыть
function EndThread takes nothing returns nothing
    call I2R(1 / 0)
endfunction

function ErrorOccurred takes string message, string errorcode returns nothing
    if GameIsRunning then
        set GameIsRunning = false
        // Create error file
        call PreloadGenClear()
        call PreloadMessage("Error: " + message)
        call PreloadGenEnd("WispTD\\Errors\\" + errorcode + ".txt")
        // Update UI end environment
        call ClearSelection()
        call StopMusic(false)
        call ClearMapMusic()
        call StopAmbientSounds()
        call MultiboardSetTitleText(Board, "An internal error occurred")
        // Disable triggers and end game
        call DisableTriggers()
        call TriggerExecute(gg_trg_ErrorOccurred)
        call FinishGameNoCheck("An internal error occurred. Error code: " + Color.Errors.hex + errorcode + "|r.", FinishGameTime_Error)
    endif
    call EndThread()
endfunction
Триггер gg_trg_ErrorOccurred нужен для выполнения кода для каждого игрока в случае ошибки в отдельном потоке операций. Во-первых, это значит, что код внутри Trig_ErrorOccured_Actions не будет учитываться в лимит операций того кода, что вызвал ErrorOccurred, а во-вторых, если какой-то код внутри Trig_ErrorOccured_Actions рушит поток (например, вызов EndThread), выполнение TriggerExecute завершится, и начнётся выполнение FinishGameNoCheck.
Впрочем, можно оставить только Trig_ErrorOccured_Actions и вызвать её через .execute(), vJass сам сделает для неё триггер.
function Trig_ErrorOccured_Actions takes nothing returns nothing
    local integer i = 0
    loop
        exitwhen i > Players.top
        call Players[i].errorOccured()
        set i = i + 1
    endloop
    call PlayingPlayers.reset()
endfunction

function InitTrig_ErrorOccurred takes nothing returns nothing
    set gg_trg_ErrorOccurred = CreateTrigger()
    call TriggerAddAction(gg_trg_ErrorOccurred, function Trig_ErrorOccured_Actions)
endfunction
Метод игрока, который вызывает триггер выше.
    method errorOccured takes nothing returns nothing
        call field.errorOccured()
        if playing then
            set playing = false
            set inGame = false
            call showGrid(false)
            call GroupEnumUnitsInRect(ProxyGroup, field.playerarea, LightDeleteUnits)
        endif
    endmethod
Как правило, данный метод вызывает "лёгкое" удаление всех остальных объектов и структур, дабы не допустить повторных ошибок и пролагов.
Пример использования.
//! textmacro CustomArray takes name, type, size, index, err
struct $name$
    private $type$ array objects[$size$]
    readonly integer top = -1
    
    method operator [] takes integer i returns $type$
        return objects[i]
    endmethod
    
    method addToArray takes $type$ obj returns nothing
        if obj.$index$ == -1 then
            set top = top + 1
            static if ErrorDetectionEnabled_CustomArray and $err$ then
                if top == $size$ then
                    call ErrorOccurred("not enough cells in $name$ " + I2S(this) + ". Current amount of cells is " + I2S($size$), "$name$Cells")
                endif
            endif
            set objects[top] = obj
            set obj.$index$ = top
            //call DebugMsg("$type$ " + I2S(obj) + " with index " + I2S(top) + " is added to $name$.")
        else
            call ErrorOccurred("an attempt of $type$ " + I2S(obj) + " to be added to $name$ " + I2S(this) + " second time", "$name$Add")
        endif
    endmethod
    
    method deleteFromArray takes $type$ obj returns nothing
        local integer i = obj.$index$
        if i > -1 then
            if top > i then
                set objects[i] = objects[top]
                set objects[i].$index$ = i
            endif
            set top = top - 1
            set obj.$index$ = -1
            //call DebugMsg("$type$ " + I2S(obj) + " with index " + I2S(i) + " is removed from $name$.")
        else
            call ErrorOccurred("an attempt of $type$ " + I2S(obj) + " to be deleted from $name$ " + I2S(this) + " second time", "$name$Delete")
        endif
    endmethod
    
    method reset takes nothing returns nothing
        set this.top = -1
    endmethod
endstruct
//! endtextmacro
Макрос выше определяет структуру, которая создаёт массивы для указанного в макросе типа. Причём данный тип обязан иметь поле для хранения своего индекса.
Код под катом позволяет отлавливать и логгировать некоторую информацию об ошибках во время игры.
PT153 #50 - 4 weeks ago 1
Голосов: +1 / -0

» WarCraft 3 / Удаленные юниты и триггеры остаются висеть в памяти (vJass).

XoxloHunter, скорее всего где-то ошибка в коде или, как сказал rsfghd, лимит потока, из-за которого некоторые ячейки не очищаются.