есть на основе способность "Укрытся за шитом" через приказ ловит при смерти, при разложение, при воскрешение.
пример кода с моего карты
/**
* Событие с юнитам
***/
private function InitStatus takes nothing returns nothing
local unit u = GetTriggerUnit()
local integer i = GetUnitIndex(u)
if not(i == 0) then
if IsUnitType(u, UNIT_TYPE_DEAD) then
if xe_deadIDs[i] then
set xe_deadIDs[i] = false // удаляем труп
call RemoveUnit(u)
else
set xe_deadIDs[i] = true // умер но осталось труп
endif
endif
// и другие проверки на воскрешение...
endif
set u = null
endfunction
private function InitEnter takes nothing returns nothing
local integer i = GetUnitIndex(GetFilterUnit())
if i == 0 then
set i = CreateUnitIndex(GetFilterUnit())
set xe_deadIDs[i] = IsUnitType(GetFilterUnit(), UNIT_TYPE_DEAD)
call UnitAddAbility(GetFilterUnit(), ABILITY_ID)
call UnitMakeAbilityPermanent(GetFilterUnit(), true, ABILITY_ID)
endif
endfunction
private function FilterOrder takes nothing returns boolean
return GetIssuedOrderId() == 852056
endfunction
private function FilterUnit takes nothing returns boolean
local integer handleID = GetHandleId(GetFilterUnit())
local integer typeID = GetUnitTypeId(GetFilterUnit())
if GetUnitOption(typeID, AUTO_DISABLE_INDEX) == 1 or GetUnitOption(handleID, AUTO_DISABLE_INDEX) == 1 then
return false
endif
return GetUnitOption(0, AUTO_DISABLE_INDEX) == 0
endfunction
private function Init takes nothing returns nothing
local region r = CreateRegion()
local rect w = GetWorldBounds()
local group g = CreateGroup()
local integer n = 0
loop
exitwhen n == bj_MAX_PLAYER_SLOTS
call SetPlayerAbilityAvailable(Player(n), ABILITY_ID, false)
call TriggerRegisterPlayerUnitEvent(tStatus, Player(n), EVENT_PLAYER_UNIT_ISSUED_ORDER, function FilterUnit)
call GroupEnumUnitsOfPlayer(g, Player(n), And(function FilterUnit, function InitEnter))
set n = n + 1
endloop
call RegionAddRect(r, w)
call TriggerRegisterEnterRegion(tEnter, r, And(function FilterUnit, function InitEnter))
call TriggerAddCondition(tStatus, And(function FilterOrder, function InitStatus))
call GroupClear(g)
call DestroyGroup(g)
call RemoveRect(w)
set g = null
set w = null
endfunction
зачем пустышку омг.
Ловите приказ на итем цель если являет предмет и проверяем если игрок равен 0 то он свободен после чего устанавливает игрока 1
а если занят то приказ остановить и оповестить что это не ваш.
не надо изврашать пустышками
разложение вы можете взять у способность шит у альянса. Он ловит события приказа при смерти и при разложение удаление. Из него я ловлю воскрешение и полностью удаление разложение.
NazarPunk, каждый тик берем из юнита точка и смешаем на 4 точки в массиве от 0 до 3, потом проходим проверку что это точка являеет левее или нет и так по очереди и устанвливае какой юнит вошел в сторону лав.
NazarPunk, если игрок вошел в лаву то переодически снимаем хп тем дольше в лаве тем усиливает урон. То есть если игрок вошел для него создаем масссив с 0 времени и так растет, тем больше времени тем больше урон.
что можно выжить если он по ошибку вошел и сразу вышел это снимут половину хп =)
то есть за 1 сек в лаве равен 100% урон
и как реализовать так а то всю ночь намучал парсер ок. терь и проверку if =)
сначало я переношу текст где есть проверка и && как строка в случаем если встретим || то переносим строка проверку иначе результат получен.
function andValue(string str) -> boolean {
цикл на проверки && и ==
return false;
}
function onInit() {
ParserCondition.create("if", function(string str) -> boolean { // if
integer step = 0, n = 0, l = StringLength(str);
string s = "", e = "", v = "";
boolean bValue = false, bResult = false;
while(n < l) {
s = SubString(str, n, n + 1);
e = SubString(str, n + 1, n + 2);
if(step > 0 && s == " ") {
} else if(step == 0) {
if (s == "|" && e == "|" && !bValue) {
bResult = true;
bValue = andValue(v);
v = "";
} else {
v = v + s;
}
}
n = n + 1;
}
if(bResult) {
bValue = andValue(v);
}
return bValue;
});
}
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / Телепортируется здание
» WarCraft 3 / 2 книги заклинаний у одного воина
» WarCraft 3 / Не появляется юнит
» WarCraft 3 / Отследить разложения юнита.
пример кода с моего карты
» WarCraft 3 / Максимально возможный уровень для способности "Проглотить"
» WarCraft 3 / АвтоклиКАБЕЛЬность
» WarCraft 3 / Почему героя убивает его же способностью?
» WarCraft 3 / Вычисляем по IP
» WarCraft 3 / Почему юниты бегут назад в область?
» WarCraft 3 / Почему юниты бегут назад в область?
» WarCraft 3 / Спел похищение жизни!
» WarCraft 3 / Приватность предмета
Ловите приказ на итем цель если являет предмет и проверяем если игрок равен 0 то он свободен после чего устанавливает игрока 1
а если занят то приказ остановить и оповестить что это не ваш.
не надо изврашать пустышками
» XGM Конкурсы / Warcraft 3 Custom Maps Contest 2019
Ред. pro100master
» WarCraft 3 / Приватность предмета
» WarCraft 3 / Приватность предмета
» WarCraft 3 / Выпадение предметов после смерти
» WarCraft 3 / Смерть в лаве
» WarCraft 3 / Смерть в лаве
что можно выжить если он по ошибку вошел и сразу вышел это снимут половину хп =)
то есть за 1 сек в лаве равен 100% урон
» WarCraft 3 / Смерть в лаве
» WarCraft 3 / Патч 1.31, скоро?
» WarCraft 3 / Нужна модель? - Вам сюда!
цвет жельтый!
» WarCraft 3 / Правильно ли проверка строки if()
сначало я переношу текст где есть проверка и && как строка в случаем если встретим || то переносим строка проверку иначе результат получен.
» WarCraft 3 / Порядок инициализации