28

» WarCraft 3 / Проблемы с переменной force 2

KaneThaumaturge, а почему не экспортировать скрипт и не посмотреть, как инициализируются глобалки?
Размер массива на самом деле никакой не размер, а номер последней ячейки, которой будет установлено начальное значение.
set i = 0
loop
    set your_array[i] = StartingValueFromGUI
    set i = i + 1
    exitwhen i == SizeFromGUI
endloop
Значение ячеек у массивов по умолчанию null, у чисел это 0, у логических это false. У массива групп (таймеров) начальное значение новая группа (таймер), потому с 0 по <размер массива> создаётся новая группа (таймер), а далее просто null. Это справедливо для всех объектов, у который начальное значение не из списка [0, null, false].

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

» WarCraft 3 / Warcraft 3 Reforged: Патч 1.32.9

Hush, первая половина про карту, а вторая половина довольно важна. Потому и залили.
Маразм крепчал, люди уже жалуются на хотфиксы.
28

» XGM Конкурсы / Mini-Game Contest: Reforged

моба не действует?)
Принимаются только новые карты, которые были созданы специально для конкурса (что равно: не публиковались ранее).
28

» WarCraft 3 / Конвертировать playercolor в строку типа |cffffffff

Можно воспользоваться моей либой.
раскрыть
library ColorLibrary uses CommonLibrary
function GetPlayerColorIndex takes playercolor pc returns integer
    return GetHandleId(pc)
endfunction

struct Color extends array
    private static integer counter = -1

    static thistype White
    
    static thistype Gold
    static thistype Experience
    static thistype Food
    static thistype Income
    static thistype Lives
    static thistype Kills
    
    static thistype Numbers
    static thistype Important
    static thistype Hints
    static thistype Warnings
    static thistype Errors
    static thistype Leaved
    
    integer red
    integer green
    integer blue
    string hex
    string icon
    
    private static method GetIndex takes nothing returns thistype
        set counter = counter + 1
        return counter
    endmethod
    
    private static method InitPlayerColors takes nothing returns nothing
        local thistype i = GetIndex()
        set i.red = 255
        set i.green = 3
        set i.blue = 3
        set i.hex = "|cffff0303"
        set i.icon = "Icons\\Player colors\\00. Red.blp"
        
        set i = GetIndex()
        set i.red = 0
        set i.green = 66
        set i.blue = 255
        set i.hex = "|cff0042ff"
        set i.icon = "Icons\\Player colors\\01. Blue.blp"
        
        set i = GetIndex()
        set i.red = 28
        set i.green = 230
        set i.blue = 185
        set i.hex = "|cff1ce6b9"
        set i.icon = "Icons\\Player colors\\02. Teal.blp"
        
        set i = GetIndex()
        set i.red = 84
        set i.green = 0
        set i.blue = 129
        set i.hex = "|cff540081"
        set i.icon = "Icons\\Player colors\\03. Purple.blp"
        
        set i = GetIndex()
        set i.red = 255
        set i.green = 252
        set i.blue = 0
        set i.hex = "|cfffffc00"
        set i.icon = "Icons\\Player colors\\04. Yellow.blp"
        
        set i = GetIndex()
        set i.red = 254
        set i.green = 138
        set i.blue = 14
        set i.hex = "|cfffe8a0e"
        set i.icon = "Icons\\Player colors\\05. Orange.blp"
        
        set i = GetIndex()
        set i.red = 32
        set i.green = 192
        set i.blue = 0
        set i.hex = "|cff20c000"
        set i.icon = "Icons\\Player colors\\06. Green.blp"
        
        set i = GetIndex()
        set i.red = 229
        set i.green = 91
        set i.blue = 176
        set i.hex = "|cffe55bb0"
        set i.icon = "Icons\\Player colors\\07. Pink.blp"
        
        set i = GetIndex()
        set i.red = 149
        set i.green = 150
        set i.blue = 151
        set i.hex = "|cff959697"
        set i.icon = "Icons\\Player colors\\08. Gray.blp"
        
        set i = GetIndex()
        set i.red = 126
        set i.green = 191
        set i.blue = 241
        set i.hex = "|cff7ebff1"
        set i.icon = "Icons\\Player colors\\09. Light Blue.blp"
        
        set i = GetIndex()
        set i.red = 16
        set i.green = 98
        set i.blue = 70
        set i.hex = "|cff106246"
        set i.icon = "Icons\\Player colors\\10. Dark Green.blp"
        
        set i = GetIndex()
        set i.red = 78
        set i.green = 42
        set i.blue = 4
        set i.hex = "|cff4e2a04"
        set i.icon = "Icons\\Player colors\\11. Brown.blp"
        
        set i = GetIndex()
        set i.red = 155
        set i.green = 0
        set i.blue = 0
        set i.hex = "|cff9b0000"
        set i.icon = "Icons\\Player colors\\12. Maroon.blp"
        
        set i = GetIndex()
        set i.red = 0
        set i.green = 0
        set i.blue = 195
        set i.hex = "|cff0000c3"
        set i.icon = "Icons\\Player colors\\13. Navy.blp"
        
        set i = GetIndex()
        set i.red = 0
        set i.green = 234
        set i.blue = 255
        set i.hex = "|cff00eaff"
        set i.icon = "Icons\\Player colors\\14. Turquoise.blp"
        
        set i = GetIndex()
        set i.red = 190
        set i.green = 0
        set i.blue = 254
        set i.hex = "|cffbe00fe"
        set i.icon = "Icons\\Player colors\\15. Violet.blp"
        
        set i = GetIndex()
        set i.red = 235
        set i.green = 205
        set i.blue = 135
        set i.hex = "|cffebcd87"
        set i.icon = "Icons\\Player colors\\16. Wheat.blp"
        
        set i = GetIndex()
        set i.red = 248
        set i.green = 164
        set i.blue = 139
        set i.hex = "|cfff8a48b"
        set i.icon = "Icons\\Player colors\\17. Peach.blp"
        
        set i = GetIndex()
        set i.red = 191
        set i.green = 255
        set i.blue = 128
        set i.hex = "|cffbfff80"
        set i.icon = "Icons\\Player colors\\18. Mint.blp"
        
        set i = GetIndex()
        set i.red = 220
        set i.green = 185
        set i.blue = 235
        set i.hex = "|cffdcb9eb"
        set i.icon = "Icons\\Player colors\\19. Lavender.blp"
        
        set i = GetIndex()
        set i.red = 40
        set i.green = 40
        set i.blue = 40
        set i.hex = "|cff282828"
        set i.icon = "Icons\\Player colors\\20. Coal.blp"
        
        set i = GetIndex()
        set i.red = 235
        set i.green = 240
        set i.blue = 255
        set i.hex = "|cffebf0ff"
        set i.icon = "Icons\\Player colors\\21. Snow.blp"
        
        set i = GetIndex()
        set i.red = 0
        set i.green = 120
        set i.blue = 30
        set i.hex = "|cff00781e"
        set i.icon = "Icons\\Player colors\\22. Emerald.blp"
        
        set i = GetIndex()
        set i.red = 164
        set i.green = 111
        set i.blue = 51
        set i.hex = "|cffa46f33"
        set i.icon = "Icons\\Player colors\\23. Peanut.blp"
    endmethod
    
    private static method onInit takes nothing returns nothing
        call InitPlayerColors()
    
        set White = GetIndex()
        set White.red = 255
        set White.green = 255
        set White.blue = 255
        set White.hex = "|cffffff"
    
        set Gold = GetIndex()
        set Gold.red = 226
        set Gold.green = 176
        set Gold.blue = 7
        set Gold.hex = "|cffe2b007"
        
        set Experience = GetIndex()
        set Experience.red = 127
        set Experience.green = 204
        set Experience.blue = 255
        set Experience.hex = "|cff7fccff"
        
        set Food = GetIndex()
        set Food.red = 209
        set Food.green = 91
        set Food.blue = 143
        set Food.hex = "|cffd15b8f"
        
        set Income = GetIndex()
        set Income.red = 118
        set Income.green = 165
        set Income.blue = 175
        set Income.hex = "|cff76a5af"
        
        set Lives = GetIndex()
        set Lives.red = 0
        set Lives.green = 187
        set Lives.blue = 46
        set Lives.hex = "|cff00bb2e"
        
        set Kills = GetIndex()
        set Kills.red = 204
        set Kills.green = 33
        set Kills.blue = 33
        set Kills.hex = "|cffcc3333"
        
        set Numbers = GetIndex()
        set Numbers.red = 0
        set Numbers.green = 204
        set Numbers.blue = 255
        set Numbers.hex = "|cff00ccff"
        
        set Important = GetIndex()
        set Important.red = 255
        set Important.green = 204
        set Important.blue = 128
        set Important.hex = "|cffffcc80"
        
        set Hints = GetIndex()
        set Hints.red = 51
        set Hints.green = 204
        set Hints.blue = 51
        set Hints.hex = "|cff33cc33"
        
        set Leaved = GetIndex()
        set Leaved.red = 15
        set Leaved.green = 15
        set Leaved.blue = 15
        set Leaved.hex = "|cff0f0f0f"
        
        set Warnings = Kills
        set Errors = Kills
    endmethod
endstruct

function ShadowMultiboardItem takes multiboarditem mbitem returns nothing
    call MultiboardSetItemValueColor(mbitem, Color.Leaved.red, Color.Leaved.green, Color.Leaved.blue, CellAlpha)
endfunction

function HideMultiboardItem takes multiboarditem mbitem returns nothing
    call MultiboardSetItemStyle(mbitem, false, false)
endfunction

endlibrary
Цвет игрока получается так
Color[GetPlayerColorIndex(GetPlayerColor(Player(0)))] + "Red Player|r"
28

» WarCraft 3 / Центрирование текста

Nemezid, не могу сказать, но с помощью этих координат я центрировал текст. Думаю, там координаты такие же, как и у фреймов.
28

» XGM Конкурсы / Mini-Game Contest: Reforged

soviet, что такое обыкновенный обман? Можно чуть конкретнее? Я принимал участие в том конкурсе и никакого обмана не заметил. Также принимал участие в конкурсе 2019 года, тоже обмана не было.
28

» WarCraft 3 / Центрирование текста

Можно и без фреймов, нужно указать нужные координаты.
native DisplayTextToPlayer          takes player toPlayer, real x, real y, string message returns nothing
native DisplayTimedTextToPlayer     takes player toPlayer, real x, real y, real duration, string message returns nothing
native DisplayTimedTextFromPlayer   takes player toPlayer, real x, real y, real duration, string message returns nothing
28

» WarCraft 3 / Триггерный Спелл

для этого нужен Wait (game-time), а он, к сожалению, утекает
Там утекает только хендл, ничего страшного в этом нет.
28

» WarCraft 3 / Дополнительные типы тайлов почвы

Extremator, я думаю, что даже карту открывать не нужно. Просто в редакторе добавить и всё.
28

» WarCraft 3 / Какие подводные камни у использования "хакков" на юнит стейт

они хотят сохранить все баги которые использовались для механики игры
Хотеть они могут что угодно, но они всё равно могут что-то случайно исправить. А ждать фикса "фикса" придётся долго, если его вообще будут делать.
28

» WarCraft 3 / Огненное дыхание

driver pack
А вот такими вещами я не советую пользоваться. Берут дрова неясно откуда.
28

» WarCraft 3 / Огненное дыхание

Yury13, перезапуски компьютер (именно перезапусти, а не выключи и включи). В константах карты проверь, что время жизни эффектов 5 секунд.
28

» WarCraft 3 / Warcraft 3 Reforged: Патч 1.32.9

достаточно существенный
Я имел в виду существенный для обитателей XGM, в частности Roy Mustang.
28

» WarCraft 3 / Warcraft 3 Reforged: Патч 1.32.9

снг, снг никогда не меняется
Причём тут СНГ, если док дело говорит?

Давайте начнём с определения, что такое существенный патч.
28

» Программирование / Как работают знаки сравнения, больше, меньше?

Обычный goto. Если флаг 1, то goto в такой лейбл, если 0, то в другой. В ассемблере MIPS есть специальные функции сравнения.
28

» XGM Конкурсы / Mini-Game Contest: Reforged

например гуи (1 балл), жасс (2 балла), луа (3 балла)
Ну и бред же. Полностью согласен с Clamp. Это конкурс ради конкурса или ради того, чтобы люди создали хорошие мини-игры? И держу в курсе, можно делать карту на GUI, делая вставки кастом скрипта на Lua.
28

» WarCraft 3 / Возможно ли отследить незанятого работника?

Третий даст нагрузку.
Какую? У меня в карте куча башен (20-30 на игрока, всего 10 игроков), каждая чекает врагов рядом 16 раз в секунду, лагает только у людей со слабым интернетом и пк. У меня стабильно 30 фпс, хотя у меня далеко не топовый пк.
Любой другой способ нагружать будет ещё больше. Никак нельзя отследить, что приказ стал 0, в любом случае нужно для каждого юнита периодически смотреть текущий приказ. Либо общий таймер, либо индивидуальный.
8gabriel8:
Ах да, если незанятого работника мгновенно убьют, то спецэффект так на нём и останется, нужно убирать.
Со способностью эффект тоже останется. Удобство тут в том, что в способности можно указать несколько эффектов и точек креплений, не нужно проверять, есть ли у юнита уже такой эффект, и при смерти юнита не нужно эффект удалять.
28

» WarCraft 3 / Глобальные переменные и их количество

все что возврашает Get имеет статичный не могут утекать лол
Функции, возвращающие локацию, её каждый раз создают.
28

» WarCraft 3 / Возможно ли отследить незанятого работника?

Принятый ответ
Вообщем решение как обозначить незанятого раба простое пока не пришло(
Делаем способность А на основе Atol. Если не JNGP, то на основе Asph. Способности даём нужный эффект.
Далее делаем триггер.
Событие: каждые 0.25 секунд игры
Действия
Установить Workers = Юниты на Вся карта типа Работник.
Выбрать всех юнитов в Workers и для каждого делать
    Custom script: if GetUnitCurrentOrder(GetEnumUnit()) == 0 then
    Добавить способность А Выбранному юниту.
    Custom script: else
    Удалить способность А у Выбранного юнита.
    Custom script: endif
Custom script: call DestroyGroup(udg_Workers)

А вот и карта.
Загруженные файлы