28

» WarCraft 3 / Что делать?

Лично мне это быстро помогло перейти на Jass за несколько дней.
А мне помог случайный протект своей карты и её дальнейший депротект с растаскиванием кода назад в триггеры для удобства.
28

» WarCraft 3 / Когда бываю скидки на Battele.net?

И когда они будут на "Warcraft III: Reforged"?
Через полгода-год после выхода игры, смысл делать скидку на ПРЕДЗАКАЗ нет. Одно дело, когда ты купил игру, а через полгода она стала дешевле -- ты-то мог играть в неё полгода. А тут играть не во что!
Ну и что за Battele.net...
28

» WarCraft 3 / Какая последняя версия warcraft 3 на данный момент?

Будут ли новые патчи и когда?
Тут нет представителей Blizzard, за этим на официальные форумы.
И когда она вышла?
Тебя в поисковиках забанили? Это легко найти.
Заходим на официальный сайт, покупаем игру и скачиваем лаунчер, он и поставит последнюю версию.

Вот официальный форум со всеми патчноутами.
28

» WarCraft 3 / Что делать?

Что делать, если я, уже целый год, не могу ни как понять Jass?
Открыть англоязычный букварь и выучить латинские буквы. Для начала этого хватит.
А потом статьи на сайте прочитать про Jass.
28

» WarCraft 3 / Вопрос по хеш таблице

Русификатор триггеров стоит? Если да, его нужно снести и поставить FNWE.
Camby:
include "cj_antibj_base.j" ничего не дала
А cJass при этом был включён? С отключённым cJass это вообще ничего не делает.

Ещё раз. Карта полностью на GUI? Если да, то cJass стоит отключить. Если нет, то используется ли cJass в написании кода карты?
Включён ли vJass, как я показал?
Будь добр, ответь на все эти вопросы.
Camby:
Кстати, пробовал стоковый редактор от варика 1.29, там в одной из карт смог создать хеш таблицу. Правда нужная карта не открывается из за "функция триггера отсутствует в базе данных"
Потому что в 1.29 нет UMSWE, который добавляет доп. функции в GUI.
28

» WarCraft 3 / Свиток регенерации с отрицательным восстановлением

У огненно дождя есть настройка отвечающая за периодический урон целям
К тому же, разные дожди стакаются.
28

» WarCraft 3 / missing return

Мне и нужно, чтобы возвращало первого попавшего
Окей, я тогда чутка переделаю свою версию.
code
globals
    player TransPlayer
    unit LastEnemyUnit
endglobals

function filter takes nothing returns boolean
    if IsUnitEnemy(GetFilterUnit(), TransPlayer) then
        set LastEnemyUnit = GetFilterUnit()
    endif
    return false
endfunction

function EnemyInRange takes unit u, real x, real y, real range returns unit
    set TransPlayer = GetOwningPlayer(u)
    set LastEnemyUnit = null
    call GroupEnumUnitsInRange(bj_lastCreatedGroup, x, y, range, Filter(function filter))
    return LastEnemyUnit
endfunction
Плохо, что ретурн позволяет появлятся утечкам.
Только если это локальная переменная, тип которой наследник handle. Если локальная другого типа, или это аргумент функции, или это глобальная, то утечек не будет.
Это, кстати, обещают исправить в будущих патчах.
28

» WarCraft 3 / Вопрос по хеш таблице

Camby:
Если снять галки, то ошибки при сохранении нет. Правда карта так не запускается. Просто при выборе этой карте в игре выкидывает обратно в выбор карт
А карта использует cJass? Если да, то включи cJass назад и где-нибудь пропиши include "cj_antibj_base.j". Если же это где-то уже прописано, то, наоборот, убери.
В этой библиотеке есть замены всех плохие вещи из Blizzard.j, в частности call InitHashtableBJ() заменится на bj_lastCreatedHashtable = InitHashtable().
Больше о библиотеках cJass тут.

Чтобы включить cJass назад, нужно поставить в этом меню первую галку.
Скриншот

Если cJass не используется, то включи vJass вот так.
Скриншот

Вот common.j и Blizzard.j для патча 1.26а, нужно их скопировать в папку jasshelper, заменяя имеющиеся, и поставить в атрибутах "Только чтение".
28

» WarCraft 3 / Не могу убрать способность у юнита. Продажа юнита.

Нужно не Sold Unit (проданный юнит), а Selling Unit (продающий юнит, продавец).
Ты отнимаешь способность у юнита, что был куплен.

А ещё, раз тебе известен продавец, то лучше использовать не Selling Unit, а сразу Druid of Horon 0018 <gen>.
28

» WarCraft 3 / Реально вернуть инициализацию в нормальный вид

так тебе в гуи надо?
Нет, у него нет открытой карты, скорее всего.
После оптимизатора стандартную инициализацию, можно вернуть?
А смысл? Так оно быстрее работает.
При добавлении новых триггеров делай по стандарту, а эти так оставь.
28

» WarCraft 3 / Вопрос по хеш таблице

Какой редактор используется? Если JNGP, то попробуй отключить cJass (сними первые 2 галки в этой вкладке).
28

» WarCraft 3 / missing return

С каких это пор параметры функции утекают?
xD
Там это и параметр, и локальная, параметр не заметил. Аргументы да, не утекают.
28

» WarCraft 3 / missing return

Попробуйте вот это.
Но тут ведь тоже в случае наличия противника будет утечка в u, ибо она не обнуляется (баг такой пока есть). Нужно использовать глобалку вместо локальной. Ну и мой вариант получше, там возвращается boolean, а один из вражеских юнитов записан в LastEnemyUnit.
exitwhen (B==true)  // просто exitwhen B.
28

» WarCraft 3 / Слишком агрессивные крипы

Не "Acquire" случаем?
Его и назвал Raised, если нажать Ctrl+D, то поле будет под названием acquire.
28

» WarCraft 3 / Слишком агрессивные крипы

а изменение радиуса агрессивности монстров в игровых константах не повлияло на этих варваров
Надо изменить радиус обнаружения цели у самого юнита.
28

» WarCraft 3 / Вопрос по хеш таблице

Undeclared function InitHashtableBJ
В папке с jasshelper есть файл Blizzard.j? Также выше совершенно верно заметили про присвоение переменной. В ГУИ надо буде после создания хеш-таблицы занести bj_LastCreatedHashtable в свою переменную.
28

» WarCraft 3 / Движение, jass

если заказы не исполняют в обычном ресурсе, есть всегда мой xgm.guru/p/blog-hatsumehate/218684
Тут дело в том, что он не может адекватно объяснить, что ему нужно.
28

» WarCraft 3 / missing return

exitwhen true выходит из цикла.
У тебя уже есть return который выходит из целой функции. Всё, что после return, просто игнорируется.
LainMikoroso:
Не использую глобалки
Тогда будут утечки.
28

» WarCraft 3 / Крашится игра при низких настройках из за этой модели

а в чём косяк-то был?
Текстура имела размер не кратный степени 2.

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

» WarCraft 3 / missing return

code
unit EnemyInGroup (unit u, float x, float y, float range) {
    group enemies = CreateGroup()
    unit u_e
    
    GroupEnumUnitsInRange(enemies, x, y, range, Condition(function SimpleCond))
    loop
        u_e = FirstOfGroup(enemies)
        exitwhen u_e == null
        if IsUnitEnemy(u_e, GetOwningPlayer(u)) then
            DestroyGroup(enemies)
            enemies = null
            return u_e  // утечка переменной u_e, используй глобалку.
            // exitwhen true  // зачем это, когда есть return?
        else
            GroupRemoveUnit(enemies, u_e)
        endif
    endloop
    
    DestroyGroup(enemies)
    enemies = null
    u_e = null
    return null  // нет враждебного юнита.
}

А вообще, что находится в функции SimpleCond? Тут можно всё упростить.
code
globals
    player TransPlayer
    unit LastEnemyUnit
endglobals

function filter takes nothing returns boolean
    if IsUnitEnemy(GetFilterUnit(), TransPlayer) then
        set LastEnemyUnit = GetFilterUnit()
    endif
    return false
endfunction

function EnemyInRange takes unit u, real x, real y, real range return boolean
    set TransPlayer = GetOwningPlayer(u)
    set LastEnemyUnit = null
    call GroupEnumUnitsInRange(bj_lastCreatedGroup, x, y, range, Filter(function filter))
    return LastEnemyUnit != null
endfunction
замечание от Raised: 1.4 (злоупотребление форматированием) используйте каты
28

» WarCraft 3 / Вылет на полосе загрузки у некоторых игроков

можно подробнее?)
А зачем инициализировать null, "" или 0? Все глобалки, что имеют присвоение в своём определении, выполняются в то время, как игрок кликнул на карту в списке карт. Потому лучше либо вообще ничего не прописывать, либо прописать нормальные значения, например:
globals
    constant trigger TestBuildMase = CreateTrigger()
    constant trigger TestLevelUp = CreateTrigger()
    constant trigger TestPauseTime = CreateTrigger()
    constant trigger TestResumeTime = CreateTrigger()
    constant trigger TestKillMinion = CreateTrigger()
    constant trigger TestCreateHero = CreateTrigger()
endglobals
Однако не для всех это работает. GetLocalPlayer(), CreateRegion(), CreateLeaderboard, CreateMultiboard() нельзя использовать в определении глобалок, они крашнут игру, как только игрок кликнет на карту. А, вот например, InitHashtable(), CreateTimer(), CreateTrigger() карту не крашат, потому можно сделать так:
globals
    constant hashtable Hash  =InitHashtable()
    constant timer Timer = CreateTimer()
endglobals
А ещё присвоение во время определения экономит место и, при использовании с constant, защищает переменную от случайного переназначения.

А что делать, я не совсем понял)
Найти проблемную модель и выяснить, почему она крашит.
28

» WarCraft 3 / Вылет на полосе загрузки у некоторых игроков

я почти всем глобалкам ставлю при объявлении null или 0 или ""
ну это ты зря

Тогда остаётся только инициализацию мультибоарда передвинуть, а также проверить вызовы ExecuteFunc (что имя вызываемой функции точно есть в карте) на всякий случай.
28

» WarCraft 3 / Вылет на полосе загрузки у некоторых игроков

Ещё в начале игры с 0.00 секунды инициализируется мультиборд
Поставь 0.01 хотя бы, это и может крашить, как писалось в некоторых туториалах.

В коде, что показан, всё чисто, но я бы вынес 41 как константную глобалку)

inject на config есть?
Какие глобалки у тебя сразу имеют значение? например constant integer A = 1
28

» WarCraft 3 / Способность которая действует по все карте

Проще простого же. Пусть abil является действием в триггере, который ловит каст твоего спела.
function filter takes nothing returns nothing
    local unit u = GetFilterUnit()
    if /* нужные условия */ then
        // нужные действия
    endif
    set u = null
endfunction

function abil takes nothing returns nothing
    ...
    call GroupEnumUnitsInRect(bj_lastCreatedGroup, bj_mapInitialPlayableArea, Condition(function filter))
    ...
endfunction