11

» WarCraft 3 / Руби лес!

Вышла новая версия!
Прокрутить к ресурсу
Главное
  • Карта полностью переписана на Lua.
  • Полностью переработанная и максимально оптимизированная система роста деревьев.
  • Оптимизированы все системы карты, что обеспечило стабильный геймплей, даже если участвует 21 игрок.
Юниты
  • Новый юнит: "Энт-воин" - самый сильный энт 5-го тира Духов леса; имеет 25 % шанс нанести 4-кратный урон при попадании.
  • Новый юнит: "Энт-моряк" - шанс 0,05 % появиться из металлической клетки или Магического ящика вместо капитана гоблинов; награда - 150000 дерева.
  • Добавлен дополнительный источник золота - магические деревья. За магические деревья можно получить золото в размере от 10 до 150 золота.
Баланс
  • Броня Черной горы теперь дает +5 защиты
  • Бонус к способности "Черная броня" увеличен с +1 до +2 к броне.
  • Уменьшение брони "Разлагающийся смрад" бомжей увеличено с -2 до -4.
  • Мародерство теперь крадет 30 золотых (было 20) и 2000 бревен (было 1000) за удар.
  • Добавлена награда за заброшенную шахту: теперь также можно получить 3000 дерева (всего 750 золотых + 3000 дерева).
  • Броня живого пня увеличена с 4 до 6
11

» WarCraft 3 / [2.0.3 vJass] UI - Move Able Frame - Перетаскиваем фрейм мышкой

под 1.26a
Да под 1.26 с мем хаком мне кажется проблем отслеживать мышку вообще не должно быть.
11

» WarCraft 3 / [2.0.3 vJass] UI - Move Able Frame - Перетаскиваем фрейм мышкой

его игра считает террейном
Ну тогда это же будут координаты разрушаемого объекта или проекции на землю? Это с любым разрушаемым объектом работает? А что если смотреть по линии горизонта и упираться в стену? Там же координаты высоты нету у мышки. Чет много вопросов. Но тема меня заинтересовала 🤓
11

» WarCraft 3 / [2.0.3 vJass] UI - Move Able Frame - Перетаскиваем фрейм мышкой

Корректнее будет пересчитать мировые координаты
Блин сама идея крутая. Токо вот работать это будет только с видом сверху , от третьего лица или от первого так не реализуешь. Текущее решение 6-ти летней давности, Самореклама.
11

» Администрация XGM / Проекты и структура сайта

А если создать подпроект для варкрафт, можно ли переносить публикации из "карта" внутрь подпроекта?
11

» WarCraft 3 / Баланс. Зачем в Warcraft 3 разброс урона и как этим пользоваться?

В варике кстати вероятности имеют биноминальное распределение видимо, а не нормальное насколько я понимаю, там кости и количество граней. Мы все знаем, конечно, центральую предельную теорему, но тем не менее немного духоты)))
11

» WarCraft 3 / Ищу карту по Warcraft 3 "Рука Бога"

Жаль что большинство этих типо крутых ландшафтов просто не играбельны, а сделанны просто для красивой картинки художниками расстановки дудадов. Советую искать не карту а пустой ландшафт без ничего другого в специальных разделах сайтов, тут или на хайве.
11

» WarCraft 3 / eventDispatcher - Диспетчер Событий

ScorpioT1000, насколько мне известно, ситуации, когда пишут слитно слова в нижнем регистре имеют место когда группа слов образуют единое понятие. Не знаю прописанно ли это в пепе, но сюда относятся слова такие как deepcopy, getattr, isininstance.
11

» WarCraft 3 / War3-lua-table

Вышла новая версия!
Прокрутить к ресурсу
Добавлены методы find, find_first, unique. Обновлена структура библиотеки.
11

» WarCraft 3 / eventDispatcher - Диспетчер Событий

ScorpioT1000, я принципами pep8 просто стараюсь пользоваться в луа. Не знаю насколько он тут пригоден, но кажется что это лучше чем без какого-то единообразия своего кода.
11

» WarCraft 3 / eventDispatcher - Диспетчер Событий

Немного улучшил читаемость кода и привел имена переменных в snake_case. Может заинтересует.

do
    ---@class EventDispatcher
    EventDispatcher = EventDispatcher or {}
    EventDispatcher.__meta = {
        __index = EventDispatcher
    }
    
    -- Конструктор класса
    function EventDispatcher:create()
        local obj = {
            event_dict = {}
        }
        return setmetatable(obj, EventDispatcher.__meta)
    end

    -- Подписаться на событие
    ---@param eventName string
    ---@param callback function
    function EventDispatcher:subscribe(event_name, callback)
        if not self.event_dict[event_name] then
            self.event_dict[event_name] = {}
        end
        table.insert(self.event_dict[event_name], callback)
    end
  
    
    table.find = table.find or function(tbl, item)
        local idxs = {}
        for i = 1, #tbl do
            if tbl[i] == item then
                table.insert(idxs, i)
            end
        end
        return idxs
    end
    
    -- Отписаться от события
    ---@param eventName string
    ---@param specialCallback function (опционально)
    function EventDispatcher:unsubscribe(event_name, subscriber)
        if subscriber == nil then return nil end
        local subscribers = self.event_dict[event_name]
        if subscribers == nil then return end
        if subscriber == nil then
            self.subscribers[event_name] = nil
        end
        -- поиск подписчиков в массиве подписчиков события
        idxs = table.find(subscribers, subscriber)
        for _, idx in ipairs(idxs) do
            table.remove(subscribers, i)
        end
        -- Если после удаления нет обработчиков, удаляем событие
        if #callbacks == 0 then
            self.handlers[event_name] = nil
        end
    end

    -- Отправить событие
    ---@param eventName string
    ---@param data any (опционально)
    function EventDispatcher:dispatch(event_name,...)
        local subscribers = self.event_dict[event_name]
        if callbacks == nil then return end

        -- Создаём копию списка обработчиков, чтобы избежать возможных изменений во время итерации
        local subscribers_copy = { table.unpack(callbacks) }
        for _, subscribers in ipairs(subscribers) do
            subscriber(...)
            -- subscriber(table.unpack(table.deepcopy({...}))) -- другой вариант
        end
    end

    -- Удалить все обработчики
    function EventDispatcher:clear()
        self.handlers = {}
    end
   setmetatable(EventDispatcher, {__call = EventDispatcher.create})
end
11

» WarCraft 3 / Руби лес!

Вышла новая версия!
Прокрутить к ресурсу
Версия 1.2
Главное
  • Добавлены новые юниты, улучшения, исследования, способности и погодные условия.
  • Добавлена система страниц дяди и быстрый доступ к главной лесопилке через иконки рамок героев. Теперь игроки могут получить доступ к страницам исследований и найма двумя разными способами: с помощью страниц или фреймов. Эти методы синхронизированы друг с другом. Даже если вы выберетесь со склада и вернетесь на главную лесопилку, система сохранит и восстановит последнюю страницу, на которой вы были.
  • Добавлены рамки для рынка и машин.
  • Большое количество обновлений графики, баланса, исправлений ошибок и оптимизаций.
Юниты
  • Наемник: Новый юнит для усовершенствованной лесопилки. Стоит только золото и имеет способность «Pillage».
  • Эльфийский механизм: Новый юнит для эльфийской трудовой гильдии. Сильный юнит, требующий отдельного исследования «Механизмы». Имеет способность «Механизм» - (Леший вместо превращения в дерево наносит случайный урон цели). Лесоруб и Шредер также получают способность «Механизм».
Исследования
  • Разлагающая вонь: Бродяги получают способность уменьшать броню ближайших вражеских юнитов на 2.
  • Разграбление: Дает способность мародерства Дровосекам, Наемникам и Лесорубам.
  • Мародерство: Дает способность к мародерству уркам, раскаленным уркам, бронированным уркам и бронированным краснолюдам.
  • Перегрузка: Дает способность Шредеру и Логгеру увеличивать урон на 40% от базовой атаки на 10 секунд. Можно переключить на автокаст.
  • Алхимия: Предметы, которые приносят владельцу золото, когда их подбирают, становятся эффективнее на 130/160/200%.

??Готовим выход версии на lua??

11

» WarCraft 3 / Bandit Wars

Задумка - бомба. Жаль автор не кодер получили бы опупенную карту.
11

» WarCraft 3 / War3-lua-math

nazarpunk, по другой ссылке крипто метод на пайтоне. Вот это интересно было бы реализовать.
11

» WarCraft 3 / War3-lua-math

nazarpunk, точно, закинул в нейронку, попросил проанализировать. Правда в дешовую. Нейронка подороже мне ответила что:
GPT o1-Mini: Данный код реализует линейный конгруэнтный генератор (Linear Congruential Generator, LCG) с параметрами из ANSI C, а не алгоритм Mersenne Twister.
11

» WarCraft 3 / War3-lua-math

nazarpunk, потому что полезный. Его польза перекрывает его дешивизну. Поэтому мне кажется унизительно для него назвать его дешевым. ;D
11

» WarCraft 3 / War3-lua-math

nazarpunk, я сразу код смотрел, не читал статью. Мне показался похожим на этот алгоритм. Ошибся получается.