DracoL1ch, Не понял как я поменяю количество еды приносяший? DracoL1ch, или абилка такой есть? DracoL1ch, или ты имел виду создать типо так но на основе юнита (Сам писал)
set amount = R2I(amount) - R2I(this[u])
if amount < 0 then
set amount = -amount
set rawcode = rawcode + this.count
endif
set abilityId = this.count - 1
set abilityLevel = 4
set currentAbility = rawcode + abilityId
loop
exitwhen amount == 0
if amount >= powersOf2[abilityId * 3 + (abilityLevel - 2)] then
call UnitAddAbility(u, currentAbility)
call SetUnitAbilityLevel(u, currentAbility, abilityLevel)
call UnitRemoveAbility(u, currentAbility)
set amount = amount - powersOf2[abilityId * 3 + (abilityLevel - 2)]
else
set abilityLevel = abilityLevel - 1
if abilityLevel <= 1 then
set abilityId = abilityId - 1
set abilityLevel = 4
set currentAbility = rawcode + abilityId
endif
endif
endloop
Сделал если кому нужно контроль максимальной еды
// RUS: Создаем 8 юнит еду (Каждый шаг увиличивает 2ух-кратный)
//! runtextmacro UnitStart()
//! i CreateUnit("hfoo", "zxF", "ufma", "8", "FOOD", "BTNMonsterLure.blp")
//! runtextmacro UnitEnd()
//! textmacro UnitStart
/* RUS: Тут можно убрать если не стоит (MemoryHack)
//! externalblock extension=lua ObjectMerger $FILENAME$
//! i function CreateUnit(base, prefix, field, count, name, icon)
//! i k = 0
//! i j = 0
//! i for i = 0, (count - 1) do
//! i j = j + 1
//! i createobject(base, prefix .. string.sub(chars, k + 1, k + 1))
//! i makechange(current, "unam", "Unit - " .. name)
//! i makechange(current, "utip", "")
//! i makechange(current, "utub", "")
//! i makechange(current, "unsf", "(+" .. tostring(2^i) .. ")")
//! i makechange(current, "uico", "ReplaceableTextures\\CommandButtons\\" .. icon)
//! i makechange(current, field, 2^i)
//! i k = k + 1
//! i end
//! i end
//! i setobjecttype("units")
//! i chars = "abcdefghijklmnopqrstuvwxyz"
*/
//! endtextmacro
//! textmacro UnitEnd
/* RUS: Тут можно убрать если не стоит (MemoryHack)
//! endexternalblock
*/
//! endtextmacro
globals
constant integer xe_MAX_PLAYERS = 7
// RUS: Контроль еды
constant integer xe_COUNT_FOOD = 8
constant integer xe_RAWCODE_FOOD = 'zxFa'
endglobals
struct Food
private static group array groups[xe_MAX_PLAYERS]
private static integer array powers[xe_COUNT_FOOD]
private static method onInit takes nothing returns nothing
local integer i = 1
set thistype.powers[0] = 1
loop
exitwhen i > xe_COUNT_FOOD
set thistype.powers[i] = thistype.powers[i - 1] * 2
set i = i + 1
endloop
set i = 0
loop
exitwhen i == xe_MAX_PLAYERS
set thistype.groups[i] = CreateGroup()
set i = i + 1
endloop
endmethod
public static method operator []= takes player p, integer i returns nothing
local integer count = xe_COUNT_FOOD - 1
local group g = thistype.groups[GetPlayerId(p)]
local unit u = FirstOfGroup(g)
loop
exitwhen u == null
call RemoveUnit(u)
call GroupRemoveUnit(g, u)
set u = FirstOfGroup(g)
endloop
loop
exitwhen i == 0
if i >= thistype.powers[count] then
call GroupAddUnit(g, CreateUnit(p, xe_RAWCODE_FOOD + count, 0., 0., 0.))
set i = i - thistype.powers[count]
else
set count = count - 1
endif
endloop
set u = null
set g = null
endmethod
endstruct
юнит получает урон
условие random(0, 10000) <= 400
дейсвия что хочеш блокируй урон и прочего но лучше готовый библиотека скачай
а 400 равен 4% шанса
Это я привел пример так что не копируй =)
зачем защищать карту не пойму людей который бойтся показать красоту кода или обьектов... Хотите свои права делай на Unity или других там как раз имеет лизенция право зашит. А варик открытая и доступная даже гласит правило когда вы 1 раз открыли редактор
ScopteRectuS, ты в натуре не вникаеш кода в доте реализован на текушего еду который можно менять. Но не максимальную его можно лишь получить Get а увеличить еду нужно создавать юнит с единиц едой (Не понял проходи мимо) Ответ дан уже.
чтобы ресал мертвых юнитов надо получить значение тип юнита умираюшего и заносить в массив пока таймер или вейт не выполнит свою задачу и вытаскивай из массива и создай юнит по типу
Бордер, добавил бы бесмертный монстр который нельзя агрить например червяк как в фильме "дрожь" его можно лишь заманить в ловушку. Иначе сожрет и пол должен твердый чтобы его не могли жрать и многое бы помог но я мя свой проект по крупному =)
вот и получаем общий статы вссех героев
count_hero_created - Количество героев созданых на карте оно будет расти как будет создавать
heroes - массив героев
и можете спокойно получать из данных all_stats в любом месте куда хочеш
счетчик растет при создание героя? из него получаем циклом который в массиве сохранили и прибавляем от текушего и получаем прирост потом снова обнуляем и снова циклом расчитать
Fakov, еду максимальную то есть я могу его триггером циклом создать юнит с 1 едой прирост и удалять.. а хотел без создание юнита так как еду я не использую в игре а тупо визуально менять
Хотя не важно. Пусть будет создавая 100 юнит на 1 игрока при этом еше и 6 игрока то лаги но пофиг как то.
function SetFood takes player p, integer i returns nothing
local boolean isDeleteFood = false
local group g
local unit u
if i < 0 then
call BJDebugMsg("|cffFF0000Error|r|cffFFFF00:|r |cff8080FF Food |r|cffFFFF00:|r ")
return
endif
set i = i - GetPlayerState(p, PLAYER_STATE_RESOURCE_FOOD_CAP)
if i < 0 then
set i = -(i)
set isDeleteFood = true
set g = GetUnitsOfPlayerAndTypeId(p, rawcode_food)
endif
loop
exitwhen i == 0
if isDeleteFood then
set u = FirstOfGroup(g)
call RemoveUnit(u)
call GroupRemoveUnit(g, u)
else
set food_unit = CreateUnit(p, rawcode_food, GetStartLocationX(0), GetStartLocationY(0), 0.)
call ShowUnit(food_unit, false)
call UnitAddAbility(food_unit, 'Aloc')
endif
set i = i - 1
endloop
if isDeleteFood then
call GroupClear(g)
call DestroyGroup(g)
set g = null
set u = null
endif
endfunction
создай массив с 12 значении в него запихай герои при пиков.... Если волна пройдено чекаем каждый игрока мертв ли герой то воскрешаем после этого условия можно уже обший передвинуть в позицию
Ред. pro100master
» WarCraft 3 / Скрипт для вара?
» RenderEdge / [RenderEdge] Memory Hack
» WarCraft 3 / Взаимосвязь.
» WarCraft 3 / Переменная
» WarCraft 3 / Отряд
» WarCraft 3 / Рав коды
» WarCraft 3 / [Мемхак] Как указать виз. количество текущий и максимальный еды
DracoL1ch, или абилка такой есть?
DracoL1ch, или ты имел виду создать типо так но на основе юнита (Сам писал)
» WarCraft 3 / Пассивка
условие random(0, 10000) <= 400
дейсвия что хочеш блокируй урон и прочего но лучше готовый библиотека скачай
а 400 равен 4% шанса
Это я привел пример так что не копируй =)
» WarCraft 3 / Отряд
» WarCraft 3 / [Алгоритм] Поправь где ошибка в алгоритме!
» WarCraft 3 / Фатал после игры. Часть 3
» WarCraft 3 / КАК защитить карту от Ladik's MPQ Editor ?
» WarCraft 3 / [Мемхак] Как указать виз. количество текущий и максимальный еды
» WarCraft 3 / [Мемхак] Как указать виз. количество текущий и максимальный еды
» WarCraft 3 / Как возродить созданного юнита?
» WarCraft 3 / Выжить в Катакомбах
» WarCraft 3 / Сумма характеристик всех героев
count_hero_created - Количество героев созданых на карте оно будет расти как будет создавать
heroes - массив героев
» WarCraft 3 / Сумма характеристик всех героев
» WarCraft 3 / Сумма характеристик всех героев
» WarCraft 3 / [Мемхак] Как указать виз. количество текущий и максимальный еды
Хотя не важно. Пусть будет создавая 100 юнит на 1 игрока при этом еше и 6 игрока то лаги но пофиг как то.
» WarCraft 3 / Jass
» WarCraft 3 / Плавающий текст
» WarCraft 3 / Воскрешение всех героев
» WarCraft 3 / Своя подсветка функций
» WarCraft 3 / Система Save/Load для PUBG