28

» WarCraft 3 / Убивать вне радиуса области относительно юнита - триггерно

JASS или GUI?
Есть вот что:
constant native IsUnitInRange takes unit whichUnit, unit otherUnit, real distance returns boolean
constant native IsUnitInRangeXY takes unit whichUnit, real x, real y, real distance returns boolean
constant native IsUnitInRangeLoc takes unit whichUnit, location whichLocation, real distance returns boolean
28

» WarCraft 3 / Юниты входящие в область идут,хотя не должны

Юнит игрока X !=12 заходит в область, срабатывает триггер, но условие возвращает Ложь, и действие скипается. Пока юнит игрока X остаётся в области, туда заходит юнит игрока 12, срабатывает триггер, условие возвращает Правда, срабатывает действие: берутся ВСЕ юниты из области (в том числе и юнит игрока Х), и им отдаётся приказ двигаться.
Diaboliko все верно написал, нужно изменить действие с Отряда на Боевую Единицу.
Но,ведь когда я создавал свою версию доты,все работало нормально.
Везло просто.
28

» WarCraft 3 / Можно ли прикрепить эффект молнии к юниту?

Видел на сайте наработку с молниями на JASS, поищи, крайне неплоха.
А вот и она.
А ещё можно это сделать с помощью Finger Of Death, поставив там длительность графики на 99999., задержку графики и урон на 0., спел дать даммику, приказать даммику 1 раз скастовать молнию на указанного юнита, а потом попросту двигать даммика.
У каждого юнита есть поле Projectile Impact - Z и Projectile Launch - Z, узнать их через стандартные функции никак нельзя в JASS. Потому молнии придётся оставлять "на полу" или "в воздухе" (если прописать в координате z молнии высоту полёта юнита). GetLocationZ тоже не поможет.
Потому с даммиком всё будет "красиво". Конец молнии будет уже прикреплён Projectile Impact - Z цели. Каждый раз, когда двигаешь даммика в позицию кастера, ставишь ему
call SetUnitFlyHeight(dummy, GetUnitFlyHeight(caster) + const, 0.)
где const есть Projectile Launch - Z кастера из РО. Сам дамми должен быть летающим без ограничений в высоте полёта, а его поля, Cast Backswing, Cast Point и Projectile Launch - Z должны быть равны 0.
Таким образом если всё делать верно, то в случае с дамми ничего в воздухе висеть не будет. Синхронизировать позицию дамми можно каждые 50 мс (0.05 с), и я думаю это проще, чем синхронизировать 6 координат молнии (тут всего 3).
28

» WarCraft 3 / Удаление событий из триггера.

Я конечно извиняюсь за свою неграмотность, но чтобы добавить событие нужно будет написать команду "TriggerAddAction".
Это чтобы добавить действие. Событие регистрируется через TriggerRegister<event type>Event().
28

» WarCraft 3 / Удаление событий из триггера.

Lp666:
quq_CCCP, Отвечая на твой вопрос. Хотелось сделать функцию с периодом примерно в 0.25 секунд и счётчиком реального значения. При достижении реального определённого значения, период должен поменяться на более высокое значение функции подсчёта были не нужны. Исходя из положения придётся написать 2 похожих триггера, которые различаются несколькими действиями.
Используй таймеры. Они лучше, так как их легче удалить и настроить.
28

» WarCraft 3 / Добавление способности через native

call UnitAddAbility(unit_u, ability_rawcode)
call UnitMakeAbilityPermanent(unit_u, true, ability_rawcode)
Если у юнита уже есть способность с равкодом ability_rawcode, то достаточно одного
call UnitMakeAbilityPermanent(unit_u, true, ability_rawcode)
Равкод способности (и не только) можно глянуть в Редакторе объектов, нажав Ctrl+D.
28

» WarCraft 3 / Поддержка cJass

Пушистый:
PT153, (old) - старые версии файлов, которые пришлось заменить. Чуда не получилось(
Это лучше спросить у разрабов JNPG:R, может регистрацию новых плагинов нужно делать как-то в .exe файле, либо отредактировать поля в реестре. Я, когда юзал WEX, удалил WurstScript (он в редакторе не отображался), так как не использовал его, потому подумал, что можно просто вставить папку и всё заработает. :)
tesh вообще лучше новый скачать отсюда. JassHelper вроде везде одинаковый, последнюю версию можно взять тут.
28

» WarCraft 3 / Вопрос про иконки.

Скачай ещё BLP Lab, там больше возможностей конвертирования, а также оптимизация уже сделанных .blp.
28

» WarCraft 3 / Сравнение кода по производительности

pro100master, я знаю что 1 с = 1000 мс, и именно по этому у моего таймера период в 50 мс, но я вообще не понимаю, как это относится к моему вопросу. Вопрос о том, какая реализация быстрее.
28

» WarCraft 3 / Сравнение кода по производительности

pro100master:
PT153, у таймер же идет микросекунд так что думай.
Ну и? Вот поэтому я спрашиваю, какая из реализаций будет для такого таймера лучше.
И вообще-то не микросекунд, а 50 миллисекунд.
28

» WarCraft 3 / Оптимизация карты (N1)

VinerX, дело было не в утечках. У меня очень часто срабатывал триггер с событием "Юнит Атакован" с лютым циклом внутри. Это вызывало лаги. Я связал с каждым юнитом (что может быть атакован) 1 таймер, который запускается на 0,25 - 0,5 с при срабатиывнии триггера, и пока он не истечёт, у этого юнита не будет срабатывать триггер с событием "Юнит Атакован" (проверка в условии триггера).
Другой человек решил такую проблему по-другому - просто выключал триггер на n секунд.
А ещё лучше не использовать событие "Юнит Атакован".
28

» WarCraft 3 / Поддержка cJass

Зайди в папку WEX, где есть папки tesh, jasshelper и пр. и скопируй туда папку AcidHelperиз сборки JNPG. Вдруг получится.
А ещё приложи скриншот папки WEX, забыл, как там оно всё выглядит.
28

» WarCraft 3 / Сравнение кода по производительности

Steal nerves:
каждые 0.05 секунд? мб каждые 2 секунды?
Я всё верно написал. Каждые 5 сотых секунды.
Точнее этот метод вызывается функцией, который связан с таймером с периодом в 0,05 с.
28

» WarCraft 3 / Сравнение кода по производительности

Пара доп. вопросов
	Быстрее cooldownEndNew или cooldownEndNewX?
	
    method cooldownEndNew takes nothing returns nothing
        local integer a = 0
        local Minion m = caster
        call SetImagePosition(range_image, GetUnitX(m.minion), GetUnitY(m.minion), 0.)
        set Data = data
        set Owner = m.owner
        set Armor = armor
        call GroupEnumUnitsInRange(Group, GetUnitX(m.minion), GetUnitY(m.minion), abildata.range, function thistype.filter)
    endmethod

    method cooldownEndNewX takes nothing returns nothing
        local integer a = 0
        local Minion m = caster
        local real x = GetUnitX(m.minion)
        local real y = GetUnitY(m.minion)
        call SetImagePosition(range_image, x, y, 0.)
        set Data = data
        set Owner = m.owner
        set Armor = armor
        call GroupEnumUnitsInRange(Group, x, y, abildata.range, function thistype.filter)
    endmethod

    Быстрее filter или filterX?

    static method filter takes nothing returns boolean
        local Minion m = GetUnitUserData(GetFilterUnit())
        if IsUnitType(GetFilterUnit(), MinionClass) and IsUnitType(m.minion, UNIT_TYPE_GROUND) and m.out_of_spawn then
            call BuffAirSupport.start(m, Data, Owner, Armor)
        endif
        return false
    endmethod

    static method filterX takes nothing returns boolean
        local Minion m = GetUnitUserData(GetFilterUnit())
        if IsUnitType(GetFilterUnit(), MinionClass) and IsUnitType(GetFilterUnit(), UNIT_TYPE_GROUND) and m.out_of_spawn then
            call BuffAirSupport.start(m, Data, Owner, Armor)
        endif
        return false
    endmethod
28

» WarCraft 3 / Название карты в варкрафте из огромного кол-ва символов

//! inject config
   call SetMapName(YourString)
   ...
//! endinject
Важно помнить, что inject ПЕРЕЗАПИСЫВАЕТ оригинальную функцию.
Но вот у меня через inject не работает.
Потому нужно открыть карту с помощью MPQ Editor, открыть war3map.j, найти функцию config, глянуть, что написано в SetMapName(),
    call SetMapName("TRIGSTR_###")
нажать ПКМ по war3map.wts, выбрать Edit (Редактировать), открыть файл с помощью блокнота, найти там String ###, изменить содержание, сохранить и подтвердить обновление файла в архиве.
Проверил, второй способ сработал.
28

» WarCraft 3 / Оптимизация карты (N1)

Карта во многом будет лагать от Юнит Атакован, сам через это проходил. После того как я каждому юниту дал таймер, который запускается при срабатывании Юнит Атакован на 0.25 секунд. В самом действии же идёт проверка, что если таймер не истёк, то скипнуть все остальные действия.
28

» WarCraft 3 / Wc3 Map Optimizer 5.0 Rus

ClotPh:
"исправлена ошибка при большом количестве объектов в Редакторе объектов WordEditor"
нихрена. Как раз из-за того, что стала появляться подобная ошибка, был перескачан этот вариант вместо 4.9 - там то же самое ровно на том же месте при попытке оптимизации.
Убери галку с оптимизации blp.
28

» WarCraft 3 / SetImageConstantHeight

А по вопросу. Я потестил и выяснил.
flag == false
В этом случае независимо от значения height изображение будет облегать поверхность (принимать форму склона).
flag == true
Все точки изображения будут находиться от z = 0. на значение height по z.
28

» WarCraft 3 / SetImageConstantHeight

DracoL1ch:
на то, лепить высоту константой или нет
А в чём будет разница?
Ещё в CreateImage есть параметры размера, позиции и начала по z, они на что-то влияют?
native CreateImage takes string file, real sizeX, real sizeY, real sizeZ, real posX, real posY, real posZ, real originX, real originY, real originZ, integer imageType returns image
Я ещё где-то видел описание всех ImageType, да вот забыл где.
Тут парочка есть, но не все.
28

» WarCraft 3 / Баги Model Editor

А вот если вытащить файл MPQ Editorом, то текстура отображается.
Открыл вытащенный файл Model Editorом, ничего не менял, нажал Save, закрыл, открыл снова, текстура перестала отображаться. xD
28

» WarCraft 3 / Своё улучшение "Берсерк" в РО. (как у орды)

По порядку:
В триггере с инициализацией создаешь действие: Игрок - make Ю2 недоступно for training by игрок.
Создаешь триггер: юнит завершает исследование (твой аналог берсерка) - заблокировать Ю1 (как в пункте 1), а Ю2 - разблокировать.
Создаешь способность на основе Безумие (Sbsk), указываешь в графе "новый тип войск" Ю2, даешь эту способность Ю1.
Вроде все
1-й пункт можно сделать в Scenario -> Techtree propeties.
2-й пункт можно сделать в самом улучшении (смотри как сделано оригинальное улучшение).
Всё остальное по делу.
28

» WarCraft 3 / Дефолтное значение массива

Стандартные глобалки, как ты видишь, дают значение в ячейки 0 и 1, на остальные забивают. Сам сталкивался с "багом" стандартного массива групп: создаются только группы в ячейке 0 и 1, остальные null.
local integer i=0
set i=0
Первой строки достаточно.
Дефолтное значение у хендлов и, по-моему, у строк null, у логических false, у действительных чисел 0., у целых чисел 0. Это распространяется на массивы и хештаблицы, на единичные переменные это не действует.
28

» WarCraft 3 / Не блокируется способность + не реагирует на зависимости.

Boyazitov:
Бандиты, ну раз мы тут собрались, как триггерно дать доп силу атаки или хары? )) Сделаю значит на основе абилок которые блочатся и через них дам нужную мне силу атаки.
Ну или подскажите какие пассивки еще дают доп силу атаки. Знаю что техника даёт, но вот только она тож не блочится.
Есть такая способность в Special -> Items -> Item Permanent Damage Gain (AIaa), она даёт постоянный бонус к атаке. Она не блокируется (что очевидно).
28

» WarCraft 3 / Jass New Gen Pack - Rebuild 1.4

RunXM:
Он включен, но такого нет.
А где смотришь? JNPG последней версии и стоит ли NET. Framework?
28

» WarCraft 3 / Мгновенный разворот 126а загадка

Jack-of-shadow:
LookAt рутовой кости, которая таргетится на невидимого даммика, который перемещается в точку приказа.
У каждой стандартной модели своя рутовая кость, или есть какая-то специфическая?