Добавлен pro100master,
не публикуется
Алгоритмы, Наработки и Способности
Способ реализации:
Jass
Тип:
Наработка
Версия Warcraft:
1.26
Можно настраивать количество еды, например для голодание и так далее..
PS.: Не нашел такой наработку и решил сам написать
PS.: Не нашел такой наработку и решил сам написать
В пример карте вызываем команду
-set food <Нужное количество еды>
-set food <Нужное количество еды>
PSS.: Там стоит максимально ограничение 100 еды
// Создаем 8 дамми еду
//! runtextmacro UnitStart("true")
//! i CreateUnit("hfoo", "zxF", "ufma", "8", "food", "BTNMonsterLure.blp")
//! runtextmacro UnitEnd()
//! textmacro UnitStart takes CREATE_UNITS
//! 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", "dammy - " .. name)
//! i makechange(current, "utip", "")
//! i makechange(current, "utub", "")
//! i makechange(current, "usid", 0)
//! i makechange(current, "usin", 0)
//! i makechange(current, "ufoo", 0)
//! 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
//! endexternalblock
//! endtextmacro
globals
constant integer xe_MAX_PLAYERS = 12
// RUS: Контроль еды
constant integer xe_COUNT_FOOD = 8
constant integer xe_RAWCODE_FOOD = 'zxFa'
constant integer xe_MAX_FOOD = 100 // Пользовательский максимальую еду
constant boolean xe_PRELOAD_ABILITIES = true
constant integer xe_DUMMY_UNITID = 'hfoo'
constant integer xe_HEIGHT_ENABLER = 'Amrf'
constant integer xe_TREE_RECOGNITION = 'Aeat'
constant real xe_ANIMATION_PERIOD = 0.025
constant real xe_MAX_COLLISION_SIZE = 197.0
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)
if i > xe_MAX_FOOD then
set i = xe_MAX_FOOD
endif
if i > 300 then
set i = 300
endif
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
set u = CreateUnit(p, xe_RAWCODE_FOOD + count, 0., 0., 0.)
call GroupAddUnit(g, u)
call ShowUnit(u, false)
set i = i - thistype.powers[count]
else
set count = count - 1
endif
endloop
set u = null
set g = null
endmethod
endstruct
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
за подобное даже в чисто ооп языках (наподобие джавы) бьют по рукам
не говоря уже о том что настолько простые вещи преподносить как систему это ппц