28

» WarCraft 3 / Как вам такая карта?

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

Ты не представляешь скооолько карт не вышло и не выходят на свет, больше 90% мб, а ведь среди них реально было много годных, как минимум идеями и концепциями
28

» XGM Team / Изменить логику работу репутации

ScorpioT1000, чего вы с Прометеем вцепились за абилки, если дело реально в пользователях которые лепят свои дизы даже на качественный контент, становясь хейтерами)

Можно было бы разве что не увеличивать до двойного минуса, но лайк от прошаренного чела должен быть весомее чем от новичка
28

» Администрация XGM / Странный размер гифки(?)

ScorpioT1000, где-то видел ещё одну гифку с такой же проблемой, без ката, но не решил скидывать, теперь буду
28

» XGM Team / Изменить логику работу репутации

SNART, ну этому скорее опыт свидетельствует и всякие анимированные гифки например thx for make us better или как оно там

но насчёт обесценивания ты прав, тут лишь ориентир человека будет на том, сколько за раз он видел плюсов у человека
28

» Администрация XGM / Странный размер гифки(?)

ScorpioT1000, это не единичный случай, походу со всеми гифками до какого-то обновления эта дичь происходит
28

» WarCraft 3 / Странные фаталы

так вар и вылетает на 512 или где-то в этом диапазоне, я не помню откуда это вычитал, но где-то тут же, на хгм и обсуждали кто-то в комментах, мб DracoL1ch с quq_CCCP, как ты до 1200 не вылетел это прям удивление

вообще утечки по любому стоило устранять, если и не вылетает на 512~, то фпс проседает
28

» XGM Team / Изменить логику работу репутации

а вместе с отменой минуса можно будет и обговаривать это вместе с теми, кто и поставил его
по поводу новичков, я за свои плюсы и минусы держусь как могу, если вижу, что чел в первые на хгм и вероятно ребёнок - я не захочу ответить ему, чтобы не получить рандомный минус

ScorpioT1000, у комментов нельзя же менять оценку

на телефоне только багом получалось каким-то из минуса в плюс вернуть
28

» XGM Team / Изменить логику работу репутации

лично нам с другом было обидно, когда на его рес в первые кто-то влепил дизлайк, даже несколько было, и это, кстати, от фисуна

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

» WarCraft 3 / Анимация во время движения.

на ум приходит только своя система движения либо костыли с даммиками
28

» WarCraft 3 / Способности и алгоритмы на заказ

Borodach, если на карте будет больше 700-800~ юнитов, то система накроется для остальных
28

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

makkad, загуглил, разница настолько незначительна что это скорее дело удобства

это я просто со своей паранойей к перфекционизму)
28

» WarCraft 3 / Галерея скриншотов ландшафта

EugeAl, если бы мне нужно было указать авторов моделей на скрине, я бы и не постил ничего
28

» WarCraft 3 / Галерея скриншотов ландшафта

EugeAl, а в личку у человека спросить нельзя разве? Вдруг модели на скрине сделаны на заказ
28

» WarCraft 3 / Проблема с save/load системой

Связано ли это как-то с какими-либо настройками карты
Да, нужно включить локальные файлы, написано же)

28

» WarCraft 3 / Суммирующиеся ауры

решил всё-таки запилить пример, чтобы закрыть вопрос
код
library SpellLib
globals
    constant hashtable H = InitHashtable( )
    
    private constant real AuraRange        = 400.00
    private constant integer AuraID        = 'A000'
    private constant integer AbilityID     = 'A001'
    private constant integer AbilityMaxLvl = 10
    private constant integer UnitGroup     = StringHash( SCOPE_PRIVATE + "UnitGroup" )
    
    private constant group TempG   = CreateGroup( )
    private constant group TempG_1 = CreateGroup( )
    private group TempG_2          = null
    
    private boolexpr CondAura = null
    private boolexpr CondAdd  = null
    
    private unit TempUnit            = null
    private unit bj_lastFilterUnit   = null
    private unit bj_lastFilterUnit_1 = null
    
endglobals

native UnitAlive takes unit id returns boolean

private function CheckRange takes nothing returns nothing
    local integer i
    set TempUnit = GetEnumUnit( )
    
    if not IsUnitInGroup( TempUnit, TempG_1 ) then
        call GroupRemoveUnit( TempG_2, TempUnit )
        set i = GetUnitAbilityLevel( TempUnit, AbilityID ) - 1
        
        if i > 0 then
            call SetUnitAbilityLevel( TempUnit, AbilityID, i )
        else
            call UnitRemoveAbility( TempUnit, AbilityID )
        endif
    endif
endfunction

private function EnumAddBuff takes nothing returns boolean
    local integer i
    set bj_lastFilterUnit_1 = GetFilterUnit( )
    
    if IsUnitAlly( bj_lastFilterUnit_1, bj_groupEnumOwningPlayer ) and not IsUnitInGroup( bj_lastFilterUnit_1, TempG_2 ) then
        call GroupAddUnit( TempG_2, bj_lastFilterUnit_1 )
        set i = GetUnitAbilityLevel( bj_lastFilterUnit_1, AbilityID )
        if i == 0 then
            call UnitAddAbility( bj_lastFilterUnit_1, AbilityID )
        else
            call SetUnitAbilityLevel( bj_lastFilterUnit_1, AbilityID, i + 1 )
        endif
    endif
    
    return true
endfunction

private function EnumWithAura takes nothing returns boolean
    set bj_lastFilterUnit = GetFilterUnit( )
    
    if GetUnitAbilityLevel( bj_lastFilterUnit, AuraID ) > 0 then
        set TempG_2 = LoadGroupHandle( H, GetHandleId( bj_lastFilterUnit ), UnitGroup )
        if TempG_2 == null and UnitAlive( bj_lastFilterUnit ) then
            set TempG_2 = CreateGroup( )
            call SaveGroupHandle( H, GetHandleId( bj_lastFilterUnit ), UnitGroup, TempG_2 )
        endif
        
        if UnitAlive( bj_lastFilterUnit ) then
            set bj_groupEnumOwningPlayer = GetOwningPlayer( bj_lastFilterUnit )
            call GroupEnumUnitsInRange( TempG_1, GetUnitX( bj_lastFilterUnit ), GetUnitY( bj_lastFilterUnit ), AuraRange, CondAdd )
            call ForGroup( TempG_2, function CheckRange )
            call GroupClear( TempG_1 )
        else
            loop
                set TempUnit = FirstOfGroup( TempG_2 )
                exitwhen TempUnit == null
                call UnitRemoveAbility( TempUnit, AbilityID )
            endloop
            
            call DestroyGroup( TempG_2 )
            call RemoveSavedHandle( H, GetHandleId( bj_lastFilterUnit ), UnitGroup )
        endif
    endif
    
    return false
endfunction

function Spell_Actions takes nothing returns nothing
    call GroupEnumUnitsInRect( TempG, bj_mapInitialPlayableArea, CondAura )
endfunction

//===========================================================================
function InitTrig_Spell takes nothing returns nothing
    set gg_trg_Spell = CreateTrigger( )
    call TriggerRegisterTimerEvent( gg_trg_Spell, 1.00, true )
    call TriggerAddAction( gg_trg_Spell, function Spell_Actions )
    
    set CondAura = Condition( function EnumWithAura )
    set CondAdd  = Condition( function EnumAddBuff )
    
    set TempUnit = CreateUnit( Player( 0x0F ), 'hfoo', 0.00, 0.00, 0.00 )
    call UnitAddAbility( TempUnit, AbilityID )
    call SetUnitAbilityLevel( TempUnit, AbilityID, AbilityMaxLvl )
    call KillUnit( TempUnit )
    call RemoveUnit( TempUnit )
endfunction
endlibrary
по хорошему было бы юзать не миллион уровней атаки, а как сделал это Extremator в данном заказе
я просто не особо разобрал принцип, поэтому по старинке

спелл не для импорта само собой, просто показ, что это реально сделать с одной аурой
28

» WarCraft 3 / Дорога к оптимизации: захотел заменить "Замену" юнита (Reforged)

VinerX, не-а, по счётчику ничего не обнаружил и никогда подобного не случалось если были какие-то малейшие изменения
но имей ввиду, хэндлы это всё что находится на карте кроме дудадов
28

» WarCraft 3 / Дорога к оптимизации: захотел заменить "Замену" юнита (Reforged)

VinerX, посмотри гуи функцию "пропустить остальные действия" по факту это слово "return" в коде, то есть после ретурна ты никак не поставишь set newUnit = null, и правильно это делать после set bj_lastReplacedUnit = newUnit, а возвращать не newUnit, а bj_lastReplacedUnit, вот код если непонятно
set bj_lastReplacedUnit = newUnit
set newUnit = null
set oldUnit = null
set indexItem = null
return bj_lastReplacedUnit