Centyrion, ну, либо 2 цикла, либо огромная бд на один цикл, с учётом всех 6 слотов, что также будет большой цикл, из за данных х 6, что по итогу выльется в ещё больше строк кода )
Centyrion, Попробуй тогда вариант специально под массив. В игре я это не проверял, если что, так что подправь, если потребуется.
function SbornItemArray takes unit hero, integer indMin, integer indMax, integer maxkolvo returns boolean
// indMin - минимальный индекс куска массива, indMax - конечный индекс куска массива
local integer index = 0
local integer arrayindex = 0
local integer kolvo = 0
local integer ItemId = 0
loop
exitwhen kolvo == maxkolvo or index >= bj_MAX_INVENTORY
set ItemId = GetItemTypeId ( UnitItemInSlot ( hero, index) )
set arrayindex = indMin
if ItemId > 0 then
loop// цикл по массиву. Ид предметов в массиве должны располагаться друг за другом, на каждый сборный предмет свой кусок массива.
exitwhen arrayindex > indMax
if ItemId == Item[arrayindex] then
set kolvo = kolvo + 1
endif
set arrayindex = arrayindex + 1
endloop
endif
set index = index + 1
endloop
if kolvo == maxkolvo then
return true
endif
return false
endfunction
Вот тебе готовая протестированная в разных комбинация функция по проверке всех нужных предметов. Проверяет кол-во, и все ид предметов. Нужно также задать макс кол-во. Если не хватает предметов и инвентаре, или другие предметы, хоть 1, или и то и другое, будет false. Если все предметы есть, в любом порядке, будет true.
function SbornItem takes unit hero, integer iditem1, integer iditem2, integer iditem3, integer iditem4, integer iditem5, integer iditem6, integer maxkolvo returns boolean
local integer index = 0
local integer kolvo = 0
local integer ItemId = 0
loop
exitwhen kolvo == maxkolvo or index >= bj_MAX_INVENTORY
set ItemId = GetItemTypeId ( UnitItemInSlot ( hero, index) )
if ItemId > 0 then
if ( ItemId == iditem1 or ItemId == iditem2 ) or ( ItemId == iditem3 or ItemId == iditem4 ) or ( ItemId == iditem5 or ItemId == iditem6 ) then
set kolvo = kolvo + 1
endif
endif
set index = index + 1
endloop
if kolvo == maxkolvo then
return true
endif
return false
endfunction
Амулет, я так понимаю, пассивный, правильно? Тогда попробуй что нибудь вроде:
Амулету дать ауру с баффом (если он предмет и носится на герое и действует на соседних юнитов) или сделать пустышку (если он просто абилка)
Также нужно сделать эти абилки 2х уровневыми
Юнит любой кастует спелл
Если у цели каста есть бафф или пустышка
----Если уровень её равен 1
-------То не кастовать триггерный спелл или кастовать даммикаст очищение на цель
--------Найти героя с аурой или цель
--------Поставить левелы абилки на 2
--------Подождать n секунд
--------Вернуть левелы абилки обратно на 1
----endif
endif
Чтобы не возиться с переменными, лучше исполнить это на джассе.
MpW, Всё правильно. В начале атаки запускается триггер, и тут можно сделать несколько проверок, чтобы не было ложных срабатываний (например сразу выдавать цели спец абилку пустышку и потом убирать её), отсрочку по времени итд итп. Просто я самый базовый вариант описал, без доработок.
В идеале, конечно же было бы хорошо повесить это на триггер "юнит получает урон", но программисты близов поленились сделать такое событие на Любого юнита, а сделали только на конкретного.
А разве в абилке Ракеты нельзя настроить кол-во целей? Вроде как можно. По умолчанию там 3 стоит. Вместо 3 можно 6 выставить. Так же ещё у самого танка альянсовского посмотреть, сколько целей разрешено для его атаки по воздуху. Правда, тут ракеты одновременно запускаются...
ScorpioT1000, Попробовал. Установил видеонастройки на минимум, убрал нормал маппинг у террейна. Итого - ФПС - на пустом месте 40-50, на городе - 6,7, с видом от 3 лица - 2,5 ! Меньше 2,5 не упало.
Поюзал программку. Для скриншотов красивых - самое то, особенно если модели лучше стандартных, тени прямо супер прорисовывает. Выглядит, как почти современная игра. (Ну, середины нулевых :D) Сочетается с кастомным глобальным освещением и погодными эффектами. Но для игры не годится, начинаются лютые тормоза, FPS падает в 8 !!! раз примерно (и это при том, что комп у меня тянет ведьмака 3 и гта 5 на нормальных настройках!). Если при этом включить свободную камеру, то 1 - перестают работать jass скрипты, связанные с камерой и зумом, 2 - если поставить камеру, как при виде от 3 лица, FPS падает еще в 1,5 раза.
FPS при обычном запуске (обведен в красную рамку)
FPS при запуске с Рендер Едже - видно карты нормалей у террейна, динамические тени и измененный угол глобального освещения. (ФПС обведен в красную рамку)
Я бы проще сделал, но не так красиво - поставил бы событие завершения производства, и если денег нет, то спрятать и удалить юнита и дать сообщение игроку что нибудь в духе "недостаточно средств для производства"
И ещё можно после события сразу отловить ид приказа самой казармы, и если он больше 0, то отдать приказ казарме отмена, но это не точно.
Десинхает не сохранение разных значений (да и Player существует всегда, потому GetLocalPlayer не создаёт новый хендл). И да, так можно, но читаемость кода сильно пострадает ради пары наносекунд разницы по скорости.
nazarpunk, запрещает движок, точнее отсутствие доступа к его исходникам. Тогда бы разбирался.
Мб, потом когда нибудь протестирую и верну назад, хотя не обязательно, у меня мало где используется гет локал плэйер
И ещё я написал Анрайзу, у него есть код движка.
MpW, Еще было бы хорошо, если бы сюда добавили пример со звуками. Проверил сейчас на функции StartSound, запускал игру в режиме локальной сети через Multiwindow, у красного игрока был звук, у синего не было. То есть можно сделать локальный звук без десинка. nazarpunk, к чему плодить 100500 статей, усложняя обучение? Если каждый будет свою статью пилить, будет каша из статей.
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
Отредактирован EugeAl
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
Отредактирован EugeAl
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
» WarCraft 3 / Как настроить антимагический амулет?
Амулету дать ауру с баффом (если он предмет и носится на герое и действует на соседних юнитов) или сделать пустышку (если он просто абилка)
Также нужно сделать эти абилки 2х уровневыми
Если у цели каста есть бафф или пустышка
----Если уровень её равен 1
-------То не кастовать триггерный спелл или кастовать даммикаст очищение на цель
--------Найти героя с аурой или цель
--------Поставить левелы абилки на 2
--------Подождать n секунд
--------Вернуть левелы абилки обратно на 1
----endif
endif
Отредактирован EugeAl
» WarCraft 3 / пассивная способность "кража маны" при атаке
» WarCraft 3 / Не могу придумать, как сделать ракетный залп - залпом
Отредактирован EugeAl
» WarCraft 3 / пассивная способность "кража маны" при атаке
Юнит атакован
Если у атакующего есть пассивка пустышка Кража маны (уровень абилки больше 0)
То Назначить кол-во маны атакуемому - его текущая мана минус кол-во украденной маны
И Назначить кол-во маны атакующему - его текущая мана плюс кол-во украденной маны
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
FPS при обычном запуске (обведен в красную рамку)
» WarCraft 3 / способность "защитная аура"
» Хроники Вальдиона. Начало / Модели зданий людей
Отредактирован EugeAl
» WarCraft 3 / Ломается система динамичной цены найма юнита
» WarCraft 3 / Создание случайного юнита, не соответствующего ландшафту
» WarCraft 3 / Задания в редакторе отобразить определенным игрокам
» WarCraft 3 / Задания в редакторе отобразить определенным игрокам
» WarCraft 3 / Возможность поворота всей карты
Отредактирован EugeAl
» WarCraft 3 / Задания в редакторе отобразить определенным игрокам
Мб, потом когда нибудь протестирую и верну назад, хотя не обязательно, у меня мало где используется гет локал плэйер
И ещё я написал Анрайзу, у него есть код движка.
» WarCraft 3 / Warcraft III - MultiWindow
» WarCraft 3 / Warcraft III - MultiWindow
» WarCraft 3 / GetLocalPlayer()
nazarpunk, к чему плодить 100500 статей, усложняя обучение? Если каждый будет свою статью пилить, будет каша из статей.
» Администрация XGM / Удаление своих комментариев