32

» WarCraft 3 / Как сделать так,чтоб героя можно было купить только 1 раз?

Есть триггерное действие на лимит найма определенного типа юнитов, оно распространяется и на героев.
На гуях Раздел Игрок - Set Traning\Construction Avalible of unit.
32

» WarCraft 3 / Spirit Breaker из DotA со всеми способностями

ClotPh, фрог не кодер, ваще на гуи писал а его кодер переводил в jass, сравните разные способности героев и системы, вы удивитесь насколько они непохожи, реализация одних и тех же вещей бывает очень различной. У фрога был очень хороший кодер который в торопях делал переводил все в jass или исправлял баги фрога, как только фрог остался без кодера - он забил на доту для варкравта, ибо был совершенно не способен вносить изменения в карту.
UrsaBoss, что то невижу функции о переполнении массива триггеров, о Retalitation тоже не слова, в дота системе нету "Dummy_Control", удаляет спустя 20 сек. всех даммиков которые появились на карте, вспомни функцию нанесения урона, что там в 6 пункте?
тут радостные хомяки понакопируют, а потом будут плакать а че оно утечки, багует, и так далее....
32

» WarCraft 3 / Высота торнадо

Вы знаете как работает торнадо? Оно не поднимает и не крутит Юнита, это тупо анимация, там движка крепит спецэффект с моделью Юнита к кости модели торнадодля эмитации вращения сподьемом в воздух, нужен даммик с вращающейся костью.
32

» WarCraft 3 / Есть ли русификатор триггеров для версии 1.29

Принятый ответ
saffd, потому что это переходной патч, которы почти никому не нужен, он есть только на офф бнете, где 2.5 пользователя. Потом авторы оригинальных руссификаторов, всяких расширенных редакторов и прочее, забили на поддержку еще при выходе 1.26, делать некому и не для кого.
Сидите на 1.26 или учите инглиш на 1.29.
32

» WarCraft 3 / Spirit Breaker из DotA со всеми способностями

Странновато изменил код, совсем минимум комментов, а так же ни слова про баги.
32

» WarCraft 3 / Что бы юнит мог проходить сквозь других юнитов?

Сделать юнита летающим, иначе по нормальному никак. Виндвалк не работает у летающих.
32

» WarCraft 3 / Почему не проигрывается spell morph, а сразу прыгает к цели

Принятый ответ
Ну тут вся фитча в канале, тут чаннелинг когда завершится тогда бара переместится + защита от сбивания приказа, т.е снова начинает кастовать скилл. Сам ульт бары основан на канале, смотри его настройки. Мне больше нравился старый вариант, где бара мгновенно кастовал ульт и растворялся в воздухе, после атаковал цель...
32

» WarCraft 3 / Перенос данных между обычными картами

Принятый ответ
Globder, просто - никак, а так через PreloadExploit и тщательную синхронизацию данных.
32

» WarCraft 3 / Время

Разумеется без мемхака никак, а так смотри тему с мх, вроде мусолилось.
32

» WarCraft 3 / Вопрос по коду из доты

Принятый ответ
А это ресайкл групп, кусок системы GroupUtils.
код
library GroupUtils
//******************************************************************************
//* BY: Rising_Dusk
//* 
//* This library is a simple implementation of a stack for groups that need to
//* be in the user's control for greater than an instant of time. Additionally,
//* this library provides a single, global group variable for use with user-end
//* enumerations. It is important to note that users should not be calling
//* DestroyGroup() on the global group, since then it may not exist for when it
//* it is next needed.
//*
//* The group stack removes the need for destroying groups and replaces it with
//* a recycling method.
//*     function NewGroup takes nothing returns group
//*     function ReleaseGroup takes group g returns boolean
//*     function GroupRefresh takes group g returns nothing
//* 
//* NewGroup grabs a currently unused group from the stack or creates one if the
//* stack is empty. You can use this group however you'd like, but always
//* remember to call ReleaseGroup on it when you are done with it. If you don't
//* release it, it will 'leak' and your stack may eventually overflow if you
//* keep doing that.
//* 
//* GroupRefresh cleans a group of any shadow references which may be clogging
//* its hash table. If you remove a unit from the game who is a member of a unit
//* group, it will 'effectively' remove the unit from the group, but leave a
//* shadow in its place. Calling GroupRefresh on a group will clean up any
//* shadow references that may exist within it.
//* 
globals
    //* Group for use with all instant enumerations
    group ENUM_GROUP = CreateGroup()
    
    //* Temporary references for GroupRefresh
    private boolean Flag                                              = false
    private group Refr                                                = null
    
    //* Assorted constants
    private constant integer MAX_HANDLE_COUNT                         = 408000
    private constant integer MIN_HANDLE_ID                            = 0x100000
    
    //* Arrays and counter for the group stack
    private group array Groups
    private integer array Status[MAX_HANDLE_COUNT]
    private integer Count                                             = 0
endglobals

private function AddEx takes nothing returns nothing
    if Flag then
        call GroupClear(Refr)
        set Flag = false
    endif
    call GroupAddUnit(Refr, GetEnumUnit())
endfunction
    
function GroupRefresh takes group g returns nothing
    set Flag = true
    set Refr = g
    call ForGroup(Refr, function AddEx)
    if Flag then
        call GroupClear(g)
    endif
endfunction

function NewGroup takes nothing returns group
    if Count == 0 then
        set Groups[0] = CreateGroup()
    else
        set Count = Count - 1
    endif
    set Status[GetHandleId(Groups[Count])-MIN_HANDLE_ID] = 1
    return Groups[Count]
endfunction

function ReleaseGroup takes group g returns boolean
    local integer stat = Status[GetHandleId(g)-MIN_HANDLE_ID]
    local boolean b    = true
    if g == null then
        debug call BJDebugMsg(SCOPE_PREFIX+" Error: Null groups cannot be released")
        set b = false
    elseif stat == 0 then
        debug call BJDebugMsg(SCOPE_PREFIX+" Error: Group not part of stack")
        set b = false
    elseif stat == 2 then
        debug call BJDebugMsg(SCOPE_PREFIX+" Error: Groups cannot be multiply released")
        set b = false
    elseif Count == 8191 then
        debug call BJDebugMsg(SCOPE_PREFIX+" Error: Max groups achieved, destroying group")
        call DestroyGroup(g)
        set b = false
    else
        call GroupClear(g)
        set Groups[Count]                = g
        set Count                        = Count + 1
        set Status[GetHandleId(g)-MIN_HANDLE_ID] = 2
    endif
    return b
endfunction
endlibrary
А вот её код, ничего особо заумного...
32

» WarCraft 3 / Ursa Warrior из DotA со всеми способностями

Триггеры лучше просто так не удалять, а с задержой как у фрога, я эту систему выкладывал.
Потом ClearAction и ClearConditions не удаляют сами хендлы условий и дейсвий, если с условием пофиг, т.к оно зависает в болекспре и не утекает, то TriggerAddAction( trg, function name) будет возвращать каждый раз новый хендл, что есть утечка, нужно сохранять экшены триггеров в переменную а затем удалять действием TriggerRemoveAction, иначе будут плодится утечки или как фрог все действия делать в кондишенах, там из отличий только лимит операций поменьше и вейты не работают с синками.
32

» WarCraft 3 / Является ли GetSpellTargetLoc() утечкой если не удалять её?

Мда. Идиотизм прогрессирует...
Возвращает обьект типа location, разумеется если не удалить этот самый location будет утечка, но не функция утечна а кривой код который неудаляет локейшин ( а еще и бессмысленный, т.к есть нативки для координат).
32

» WarCraft 3 / Как открыть карту TrollvsElves в Редакторе карт?

Vanbl4, случай а тебе зачем? Если ты не знаешь как открыть, то и делать тебе там нечего.
32

» WarCraft 3 / Способности у закопавшихся существ

Обычный морф в другого юнита, просто добавь альтернативе инвиз и бонус реген.
32

» WarCraft 3 / Хештаблица

DemonoiD, а зачем? Зачем массив хештаблиц когда достаточно одной? В одну хт можно загрузить все что угодно, сколько угодно юнитов.
32

» WarCraft 3 / Хештаблица

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

» WarCraft 3 / Можно ли локально отдать приказ юниту?

UrsaBoss:
quq_CCCP:
Разумеется нет, приказы строго синхронизируются.
Да и как вы себе это представляете? У игрока А работник пошёл рубить лес, а у игрока Б этот же самый работник пошел добывать золото? Что за бред?
да я просто думал эмулировать отдачу приказов от игрока, ну типо игрок сам приказал юниту двигаться и т.д
Issue (Immiditate\point\target) order отдает приказ юниту, если вам открывать спеллбуки и прочее - ForceUIKey ( ) + абилка с хоткеем, без указания цели разумеется.
Прочие псевдоприказы вроде включения автокастов, без сбивания приказа реализуемо только мемхаком.
32

» WarCraft 3 / Можно ли локально отдать приказ юниту?

Принятый ответ
Разумеется нет, приказы строго синхронизируются.
Да и как вы себе это представляете? У игрока А работник пошёл рубить лес, а у игрока Б этот же самый работник пошел добывать золото? Что за бред?