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, остальные не содержат никаких групп.
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
soviet, что такое обыкновенный обман? Можно чуть конкретнее? Я принимал участие в том конкурсе и никакого обмана не заметил. Также принимал участие в конкурсе 2019 года, тоже обмана не было.
Можно и без фреймов, нужно указать нужные координаты.
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
например гуи (1 балл), жасс (2 балла), луа (3 балла)
Ну и бред же. Полностью согласен с Clamp. Это конкурс ради конкурса или ради того, чтобы люди создали хорошие мини-игры? И держу в курсе, можно делать карту на GUI, делая вставки кастом скрипта на Lua.
Какую? У меня в карте куча башен (20-30 на игрока, всего 10 игроков), каждая чекает врагов рядом 16 раз в секунду, лагает только у людей со слабым интернетом и пк. У меня стабильно 30 фпс, хотя у меня далеко не топовый пк.
Любой другой способ нагружать будет ещё больше. Никак нельзя отследить, что приказ стал 0, в любом случае нужно для каждого юнита периодически смотреть текущий приказ. Либо общий таймер, либо индивидуальный. 8gabriel8:
Ах да, если незанятого работника мгновенно убьют, то спецэффект так на нём и останется, нужно убирать.
Со способностью эффект тоже останется. Удобство тут в том, что в способности можно указать несколько эффектов и точек креплений, не нужно проверять, есть ли у юнита уже такой эффект, и при смерти юнита не нужно эффект удалять.
Вообщем решение как обозначить незанятого раба простое пока не пришло(
Делаем способность А на основе 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)
Ред. PT153
» WarCraft 3 / Проблемы с переменной force 2
Размер массива на самом деле никакой не размер, а номер последней ячейки, которой будет установлено начальное значение.
» WarCraft 3 / Warcraft 3 Reforged: Патч 1.32.9
Маразм крепчал, люди уже жалуются на хотфиксы.
» XGM Конкурсы / Mini-Game Contest: Reforged
Ред. PT153
» WarCraft 3 / Конвертировать playercolor в строку типа |cffffffff
» WarCraft 3 / Центрирование текста
Ред. PT153
» XGM Конкурсы / Mini-Game Contest: Reforged
» WarCraft 3 / Дополнительные типы тайлов почвы
» WarCraft 3 / Центрирование текста
» WarCraft 3 / Триггерный Спелл
» WarCraft 3 / Огненное дыхание
» WarCraft 3 / Дополнительные типы тайлов почвы
Ред. PT153
» WarCraft 3 / Какие подводные камни у использования "хакков" на юнит стейт
» WarCraft 3 / Огненное дыхание
» XGM Конкурсы / Mini-Game Contest: Reforged
» WarCraft 3 / Огненное дыхание
» WarCraft 3 / Warcraft 3 Reforged: Патч 1.32.9
Ред. PT153
» WarCraft 3 / Warcraft 3 Reforged: Патч 1.32.9
Ред. PT153
» Программирование / Как работают знаки сравнения, больше, меньше?
» XGM Конкурсы / Mini-Game Contest: Reforged
Ред. PT153
» WarCraft 3 / Возможно ли отследить незанятого работника?
Любой другой способ нагружать будет ещё больше. Никак нельзя отследить, что приказ стал 0, в любом случае нужно для каждого юнита периодически смотреть текущий приказ. Либо общий таймер, либо индивидуальный.
8gabriel8:
» WarCraft 3 / Глобальные переменные и их количество
» WarCraft 3 / Возможно ли отследить незанятого работника?
Ред. PT153
» WarCraft 3 / Возможно ли отследить незанятого работника?
Далее делаем триггер.
» WarCraft 3 / Эффект телепортации Reforge
» WarCraft 3 / Эффект телепортации Reforge