21

» WarCraft 3 / Дизейбл кнопок, фреймов?

SсRealm:
Я не хочу тебя расстраивать, но для этого нужен мемхак

Rejuvenation:
ofeerist, Я бы и рад попробовать мемхак, но у меня его не получается подружить с 1.27b.
Может есть другие варианты, с триггерами или по jass коду как-то, без работы с памятью?
Нет.
Анрайз вроде как заявляет о поддержки 127б, но не у тебя одного оно не работает
21

» WarCraft 3 / Дизейбл кнопок, фреймов?

Мемхак анрайза.
    call SetCSimpleButtonState( GetUpperButtonBarButton( 0 ), 0 )
    call SetCSimpleButtonState( GetUpperButtonBarButton( 1 ), 0 )
    call SetCSimpleButtonState( GetUpperButtonBarButton( 2 ), 0 )
    call SetCSimpleButtonState( GetUpperButtonBarButton( 3 ), 0 )

Это просто выключит кнопки, чтобы включить - нужно заменить 0 на 1
21

» WarCraft 3 / KeyCode - структура, для работы с клавишами

Блин, этот функционал был, но я его вырезал из-за ненадобности.
Делается ещё один массив, уже булевых, ну и в ините заполняется false.
И дальше какая нибудь функция с периодическим срабатыванием проверяет циклом все кнопки.
IsKeyPressed(Buttons[i])
Если тру, то и переменная из массива тру, фолс > фолс.
21

» WarCraft 3 / Магазин на фреймах

quq_CCCP:
Просто стоит учитывать что вызов внутринних функций игры посредством мемхака очень ресурсоемкий, и юзать все эти callthis, stdcall нужно с умом.
Нативки или код в движке гораздо шустрее, потому все и пилят Длл с этими магазинами, талантами и тому подобным, ибо когда в карте и без того много чего, 6 кадров обеспечено, не стоит юзать функции этого типа бездумно.
Давно заметил, что лагает, если слишком много натыкать, а у меня здесь как раз очень много натыкано, если сделать нормальный селектор или как-нибудь оптимизировать существующий, то лаги все пропадут.
Поэтому и говорю, что кому надо, тот сделает вообще без проблем.
Делается бэкдроп с какой-нибудь рамкой и перемещается он, и вот вызовов 2, а не 254.
21

» WarCraft 3 / Магазин на фреймах

Borodach:
С періодом в 0.05 сек. фпс очень сильно проседает. Не для слабых компов.
Код точно можно оптимизировать, но мне было как-то лень, + это никому не нужно, а кому надо, тот и без меня все сделает.
21

» WarCraft 3 / Gif на фреймах

МрачныйВорон:
думаю, тут наверное и на рефорджет можно повторить. там вроде не нужно в blp переводить?
прикиньте, какие анимированные кнопки можно сделать. Вроде было что то такое с bar
Повторить запросто возможно, код крайне простой.
И такие анимированные кнопки можно и на 126 сделать.
Особого труда тоже не составит.
21

» WarCraft 3 / Gif на фреймах

МрачныйВорон:
получается это там тысячи изображении (кадров), чтобы получилась анимация?
Да.
В моем случае, 109.

И как обычно, скачивается видос, а не карта...

Init
//TESH.scrollpos=0
//TESH.alwaysfold=0
globals
    
    integer GifBackdrop
    string array GifFrame
    integer Current = 0
    integer LastFrame 
endglobals

function InitGifFrames takes nothing returns nothing
    
    local integer i = 0
    set LastFrame = 109
    loop
    exitwhen i == LastFrame + 1
    
    set GifFrame[i] = "war3mapImported\\SZN1-"+I2S(i)+".blp"
    
    set i = i + 1
    endloop

endfunction

function Trig_Init_Actions takes nothing returns nothing
    
    local integer i = 0
    
    call LoadTOCFile("uitoc.toc")
    call InitGifFrames()
    
    set GifBackdrop = CreateFrame("SliderBackdrop", pGameUI, 0)
    call SetFrameSize(GifBackdrop, .28, .2)
    call SetFrameAbsolutePoint(GifBackdrop, 4, .4, .3)
    call SetFrameTexture(GifBackdrop, GifFrame[Current], false)

endfunction

//===========================================================================
function InitTrig_Init takes nothing returns nothing
    set gg_trg_Init = CreateTrigger(  )
    call TriggerRegisterTimerEventSingle( gg_trg_Init, 0.05 )
    call TriggerAddAction( gg_trg_Init, function Trig_Init_Actions )
endfunction

GifUpdate
function Trig_GifUpdate_Actions takes nothing returns nothing

    set Current = Current + 1
    if Current > LastFrame then
        set Current = 0
    endif
    call SetFrameTexture(GifBackdrop, GifFrame[Current], false)

endfunction

//===========================================================================
function InitTrig_GifUpdate takes nothing returns nothing
    set gg_trg_GifUpdate = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_GifUpdate, 0.03 )
    call TriggerAddAction( gg_trg_GifUpdate, function Trig_GifUpdate_Actions )
endfunction

text.fdf и uitoc.toc можно взять с кастомного слайдера
21

» WarCraft 3 / Успеет ли варик?

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

» WarCraft 3 / Отображение текста

DisplayTimedTextToPlayer(Player(0),0,0,1,"test")
DisplayTimedTextToPlayer(Player(0),0,0,1,"test")
DisplayTimedTextToPlayer(Player(0),0.2,0,1,"test")
21

» WarCraft 3 / Отображение текста

SсRealm:
Отображение текста работает. Координаты тестю

SсRealm:
Отображение текста работает. Координаты тестю
Координаты не меняются никак
Меняются, все время менялись и нет причин, чтобы они не работали
21

» WarCraft 3 / Отображение текста

SсRealm:
Вот же нативка с координатами? Как
ее правильно использовать?!
Берешь и используешь, написаны же переменные, DisplayTimedTextToPlayer(Player(0),0,0,1,"test")
МрачныйВорон:
можно фреймы с текстом вывести. создаем главный фрейм, на него вешаем 4 фрейма TEXT. Или Можно обойтись и 4 фреймами типа TEXT. Изучите фреймы, я уже перевел норм. Потом мб статью норм замутим, если желание будет.
Это не решение для гуи 126, так что статья бесполезна в данном вопросе.
21

» WarCraft 3 / Отображение текста

Вроде никак, если подряд написать, но с разными координатами, то оба выведят по значениям последнего.
Есть ещё фреймы, но такое решение тебе точно не подходит.
21

» WarCraft 3 / Плеер плейлистов на фреймах

Daro:
Ну тут явно не хватает функционала. Нет никакого фона
Требуется:
Кнопка стоп
Регулировка громкости +/-
Случайный трек.
Что за фон?
Есть пауза.
Остальные два пункта очень просто добавить.
15 минут и будет расширенный функционал.
21

» WarCraft 3 / Плеер плейлистов на фреймах

Konstantin19:
  • К радостью некоторых, я не использовал выставление фреймов по абсолютной точке.
  • Это означает, что теперь возможно переместить только фрейм бэкдропа и всё навесное переместится вместе с ним.
Можно попросить тогда выбор героя переделать так же?)
Хорошо, пять минут и скину сюда, либо редачну ресурс.

Отредактировал ресурс.
21

» IrInA Host Bot / Ник

Невидимые символы... в архиве с коннектором есть файл с расширением .reg, запускаешь его и заново прописываешь ник в локальной сети...
21

» WarCraft 3 / Извлечь защиту юнита с бонусами

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

» WarCraft 3 / Не работает система союзов.

T1 == "-merger" + "" false
Нужно использовать подстроку для проверки написании -merger.
Условие выше просто не сработает.
21

» WarCraft 3 / Спавн юнита с помощью фрейма

Bergi_Bear:
Тогда все сходится, получения что скорость зависит от обоих факторов, но в любом случае, это лучше и быстрее гейм Кеша. Код добавь что-ли, хочется сам метод синхронизации увидеть
Init
globals
    integer SpawnUnitBackdrop
    integer array SpawnUnit[7]
    string array ButtonName[7]
    integer array UnitButtonId[7]
    
    unit array SyncUnit[1][7]
endglobals

function Trig_Init_Actions takes nothing returns nothing
    
    local integer i = 0
    
    call LoadTOCFile("uitoc.toc")
    
    set ButtonName[0] = "Футмен"
    set ButtonName[1] = "Рифл"
    set ButtonName[2] = "Вертолет"
    set ButtonName[3] = "Грифон"
    set ButtonName[4] = "Паладин"
    set ButtonName[5] = "Гном"
    set ButtonName[6] = "Праудмур"
    set ButtonName[7] = "Гаритос"
    
    set UnitButtonId[0] = 'hfoo'
    set UnitButtonId[1] = 'hrif'
    set UnitButtonId[2] = 'hgyr'
    set UnitButtonId[3] = 'hgry'
    set UnitButtonId[4] = 'Hpal'
    set UnitButtonId[5] = 'Hmkg'
    set UnitButtonId[6] = 'Hapm'
    set UnitButtonId[7] = 'Hlgr'
    
    // Бэкдропчик
    set SpawnUnitBackdrop = CreateFrame("ChatHistoryBackdrop", pGameUI, 1)
    call SetFrameAbsolutePoint(SpawnUnitBackdrop, 4, .1, .37)
    call SetFrameSize(SpawnUnitBackdrop, .2, .42)
        
    // Кнопочки
    loop
    exitwhen i == 8
    
        set SpawnUnit[i] = CreateFrame("ButtonChat", SpawnUnitBackdrop, 2 + i)
        // call DisplayTimedTextToPlayer(GetLocalPlayer(), 1, 0, 0, I2S(SpawnUnit[i]))
        call SetFrameAbsolutePoint(SpawnUnit[i], 4, .1, .2 + I2R(i) / 20)
        call SetFrameSize(SpawnUnit[i], 0.15, 0.05)
        call SetFrameText(SpawnUnit[i], ButtonName[i])
    
    set i = i + 1
    endloop
    
    // Юниты для синха
    set i = 0
    loop
    exitwhen i == 8
    
        set SyncUnit[0][i] = CreateUnit(Player(0), 'hfoo', -3000, 2900, 0)
        set SyncUnit[1][i] = CreateUnit(Player(1), 'hfoo', -3000, 2900, 0)
    
    set i = i + 1
    endloop
endfunction

//===========================================================================
function InitTrig_Init takes nothing returns nothing

    set gg_trg_Init = CreateTrigger(  )
    
    call TriggerRegisterTimerEventSingle( gg_trg_Init, .01 )
    call TriggerAddAction( gg_trg_Init, function Trig_Init_Actions )
endfunction

Sync
function Trig_Sync_Actions takes nothing returns nothing

    local integer i = 0
    local unit u
    
    loop
    exitwhen i == 8
    
        if GetTriggerUnit() == SyncUnit[GetPlayerId(GetTriggerPlayer())][i] then
            set u = CreateUnit(GetTriggerPlayer(), UnitButtonId[i], 0, 0, 0)
            
            if GetLocalPlayer() == GetTriggerPlayer() then
                call ShowFrame(SpawnUnitBackdrop)
            endif
            
        endif
    
    set i = i + 1
    endloop
    
    set u = null
    
endfunction

//===========================================================================
function InitTrig_Sync takes nothing returns nothing
    set gg_trg_Sync = CreateTrigger(  )
    call TriggerRegisterPlayerSelectionEventBJ( gg_trg_Sync, Player(0), true )
    call TriggerRegisterPlayerSelectionEventBJ( gg_trg_Sync, Player(1), true )
    call TriggerAddAction( gg_trg_Sync, function Trig_Sync_Actions )
endfunction
MouseEvent
globals
    boolean array KeySpan
endglobals

function Trig_MouseEvent_Actions takes nothing returns nothing
    local integer i = 0
    local integer j = 0
    loop
        
        exitwhen(i==12)
        
        if(Player(i) == GetLocalPlayer()) then
            //call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, 0.1, "X = "+R2S(GetCursorX())+", Y = "+R2S(GetCursorY()))
            
            loop
            exitwhen j == 8
            // Button Press
                if FindCLayerUnderCursor() == SpawnUnit[j] and IsKeyPressed(0x01) and KeySpan[i] then 
                    set KeySpan[i] = false
                    call HideFrame(SpawnUnitBackdrop)
                    call SelectUnit(SyncUnit[GetPlayerId(GetLocalPlayer())][j], true)
                    call ClearSelection()
                endif
            set j = j + 1
            endloop
            
            if not (IsKeyPressed(0x01)) then
                set KeySpan[i] = true
            endif
            
            if IsKeyPressed(0x01) then
                set KeySpan[i] = false
            endif
            
        endif
        

        set i = i + 1
        
    endloop
    
endfunction

//===========================================================================
function InitTrig_MouseEvent takes nothing returns nothing
    set gg_trg_MouseEvent = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_MouseEvent, 0.01 )
    call TriggerAddAction( gg_trg_MouseEvent, function Trig_MouseEvent_Actions )
endfunction
Код ни разу не универсальный и подходит только конкретно к этой мапе.
21

» WarCraft 3 / Спавн юнита с помощью фрейма

Bergi_Bear:
По поводу скорости синха не пойму, мне кажется, что она элементарно зависит от пинг. Могу ошибаться. Или можно задержка, самого выделения
Вообще без понятия.
Может и от пинга, но тогда почему есть задержка в соло?
А если задержка выделения, то почему всегда разная скорость?
21

» WarCraft 3 / Спавн юнита с помощью фрейма

quq_CCCP:
Не вызовет дисинх и в реальной игре на айкапе или гарены? Как насчёт проверить?
Проверил на ирине, все работает
На гифке видно же, что с челом играю
21

» WarCraft 3 / Редактор звука

SсRealm:
ofeerist:
Надо искать в war3.mpq и заменять через импорт
Да это я понял, я тут хотел понять где она в менюшке прячется
Загруженные файлы