| Добавляешь функцию в шапку | Принимает : юнита, id предмета который надо посчитать, требуемое кол-во этого предмета, id сборного предмета
function CheckItemCount takes unit u,integer id,integer count,integer add returns nothing
local integer i = 0
local integer s = 0
local item it
loop
exitwhen (i > 5 or s >= count)
if (GetItemTypeId(UnitItemInSlot(u,i)) == id) then
set s = s + 1
endif
set i = i + 1
endloop
if (s >= count) then
set i = 0
loop
set it = UnitItemInSlot(u,i)
if (GetItemTypeId(it) == id) then
call RemoveItem(it)
set s = s - 1
exitwhen (s <= 0)
endif
set i = i + 1
endloop
call UnitAddItem(u,CreateItem(add,GetUnitX(u),GetUnitY(u)))
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl",u,"origin"))
endif
set it = null
endfunction
ну и так проверяешь
В целом да, но если игра для одного игрока. Если карта для мульти, то лучше делать без фиксации способностей или же таким образом можно избежать одинакового применения способности ко всем игрокам (как вариант).
Думаю лучше фиксировать иначе будет удаляться любая способность.
SamuraiKing,
аааа вон оно чего, ну теперь все ясно. Сейчас попробую триггерно создать область, а затем её удалить.
Дано 7 областей(region).
Герой создает 1-го юнита, этот юнит занимает 1 область из 7.
Вопрос как сделать так чтобы 2-ой созданный юнит не занимал занятую область 1-го юнита.
nvc123 если я создам всех юнитов за 1 игрока, то они не будут друг друга атаковать, а без этого смысл игры теряется..
да, ты прав, я пока не знаю работать с джасс и хэш таблицей, (а насчет алгоритмов, я не понял че за алгоритмы?)) )
но для начинающего картодела думаю это простительно, учитывая, что я уже начал их изучать, посмотрим что получиться..
кстати, я сделал мультиборд самостоятельно, правда на это ушло кучу времени, но я разобрался, он показывает все что необходимо и конечно же апается,
видимо я не совсем правильно выразился.. ладно, уточняю - как вообще сделать так, чтобы владелец этих крипов не был в состоянии давать им приказ? спросите почему? да потому, чтобы когда какой нибудь настырный наркоман вдруг захочет управлять этими крипами, и будет по 100 раз в секунду давать им свой приказ, комп не сгорел)))
Поставь каждому крипу классификацию страж и сделай как я показал на скрине выше
Отредактирован Revenantik
» WarCraft 3 / Нужны толковые люди
))
Жаль варик очень топорный...
» WarCraft 3 / Нужны толковые люди
» Гейминг / Diablo immortal
» WarCraft 3 / Бесплатный AutoHost Bot на IrInA для вашего проекта
Автор : Revenant
Дата последнего обновления : 6 мая 2022 года
Последняя версия : www.epicwar.com/maps/322388
Отредактирован Revenantik
» WarCraft 3 / Как триггерно толкать юнита
» WarCraft 3 / как сделать крафт из 2х одинаковых предметов
| Принимает : юнита, id предмета который надо посчитать, требуемое кол-во этого предмета, id сборного предмета
function CheckItemCount takes unit u,integer id,integer count,integer add returns nothing
local integer i = 0
local integer s = 0
local item it
loop
exitwhen (i > 5 or s >= count)
if (GetItemTypeId(UnitItemInSlot(u,i)) == id) then
set s = s + 1
endif
set i = i + 1
endloop
if (s >= count) then
set i = 0
loop
set it = UnitItemInSlot(u,i)
if (GetItemTypeId(it) == id) then
call RemoveItem(it)
set s = s - 1
exitwhen (s <= 0)
endif
set i = i + 1
endloop
call UnitAddItem(u,CreateItem(add,GetUnitX(u),GetUnitY(u)))
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl",u,"origin"))
endif
set it = null
endfunction
ну и так проверяешь
» WarCraft 3 / Существует ли карта способностей?
» XGM Конкурсы / Fun Spell Contest 2018
» WarCraft 3 / Item Sets System
Добавил шанс собрать предмет,лимиты,складывание зарядных предметов.
» WarCraft 3 / Один таймер
Отредактирован Revenantik
» WarCraft 3 / Ошибка в коде
лучше уж так
loop
pick = FirstOfGroup(enumUnits)
exitwhen pick==null
if GetWidgetLife(pick)>0.405 and not IsUnitType(pick,UNIT_TYPE_STRUCTURE) and IsUnitEnemy(pick, GetOwningPlayer(victim)) then
call UnitDamageTarget( victim, pick, 125.0, false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null )
call CreateFloatingTextTag( null, FLOATING_TEXTTAG_CRITICAL_STRIKE, R2I( 125.0 ), GetUnitX( pick ), GetUnitY( pick ) )
endif
GroupRemoveUnit(enumUnits,pick)
endloop
» WarCraft 3 / Выбор москитов
добавляй в массив или выбирай отрядом по типу юнита.
» WarCraft 3 / Как реализовать адекватный рикошет от клифов?
Ох не думал я что все так сложно.
Ладно пойду разбирать.Спасибо)
» WarCraft 3 / как показать мультиборд одному игроку?
» WarCraft 3 / cj_types
int = integer
bool = boolean
void = nothing
float = real
break = exitwhen true
циклы уже вшиты вроде
» WarCraft 3 / Одноразовые скиллы.
Может так и лучше будет я даже свой способ не проверял. :D
» WarCraft 3 / Одноразовые скиллы.
» WarCraft 3 / Одноразовые скиллы.
» WarCraft 3 / Как сделать мульти скил из этого заклинания?
» WarCraft 3 / Вопрос по регионам
» Мастерская переводов | Кампании WC3 на русском / Возвращение Драконов
» WarCraft 3 / Нужна помощь с 10 триггерными способностями.
» WarCraft 3 / Не работает loop(цикл)
» WarCraft 3 / Убрать контроль юнита с игрока