Добавлен , не публикуется
Алгоритмы, Наработки и Способности
Способ реализации:
Jass
Тип:
Наработка
Версия Warcraft:
1.26
Можно настраивать количество еды, например для голодание и так далее..
PS.: Не нашел такой наработку и решил сам написать
В пример карте вызываем команду
-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
`
ОЖИДАНИЕ РЕКЛАМЫ...
3
26
6 лет назад
3
Можно же обычными действиями устанавливать
P. S. Максимальное количество еды тоже.
Загруженные файлы
0
23
6 лет назад
0
8gabriel8, Я его пробывал не работает... Кроме потребление пищи!!!
3
28
6 лет назад
3
структура в которой все поля и методы статичны?
за подобное даже в чисто ооп языках (наподобие джавы) бьют по рукам
не говоря уже о том что настолько простые вещи преподносить как систему это ппц
1
26
6 лет назад
1
pro100master, специально ещё раз проверил. Если ограничение или максимум увеличить, то наверху ограничение еды после / не меняется, но если мышкой навести, то показывает изменённое, если кого-то нанимать, то поменяется.
0
23
6 лет назад
0
pro100master, ограничение работает, юзаю его в своих картах.
5
21
6 лет назад
5
Нужно добавить struct Food extends array, так не будут создаваться ненужные allocate/deallocate функции, которые здесь не используются.
2
28
5 лет назад
2
структура в которой все поля и методы статичны?
за подобное даже в чисто ооп языках (наподобие джавы) бьют по рукам
А как бы ничего, что в самой Java таких классов уйма?
Чтобы оставить комментарий, пожалуйста, войдите на сайт.