В варике кстати вероятности имеют биноминальное распределение видимо, а не нормальное насколько я понимаю, там кости и количество граней. Мы все знаем, конечно, центральую предельную теорему, но тем не менее немного духоты)))
Жаль что большинство этих типо крутых ландшафтов просто не играбельны, а сделанны просто для красивой картинки художниками расстановки дудадов. Советую искать не карту а пустой ландшафт без ничего другого в специальных разделах сайтов, тут или на хайве.
ScorpioT1000, насколько мне известно, ситуации, когда пишут слитно слова в нижнем регистре имеют место когда группа слов образуют единое понятие. Не знаю прописанно ли это в пепе, но сюда относятся слова такие как deepcopy, getattr, isininstance.
ScorpioT1000, я принципами pep8 просто стараюсь пользоваться в луа. Не знаю насколько он тут пригоден, но кажется что это лучше чем без какого-то единообразия своего кода.
Немного улучшил читаемость кода и привел имена переменных в 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
Добавлены новые юниты, улучшения, исследования, способности и погодные условия.
Добавлена система страниц дяди и быстрый доступ к главной лесопилке через иконки рамок героев. Теперь игроки могут получить доступ к страницам исследований и найма двумя разными способами: с помощью страниц или фреймов. Эти методы синхронизированы друг с другом. Даже если вы выберетесь со склада и вернетесь на главную лесопилку, система сохранит и восстановит последнюю страницу, на которой вы были.
Добавлены рамки для рынка и машин.
Большое количество обновлений графики, баланса, исправлений ошибок и оптимизаций.
Юниты
Наемник: Новый юнит для усовершенствованной лесопилки. Стоит только золото и имеет способность «Pillage».
Эльфийский механизм: Новый юнит для эльфийской трудовой гильдии. Сильный юнит, требующий отдельного исследования «Механизмы». Имеет способность «Механизм» - (Леший вместо превращения в дерево наносит случайный урон цели). Лесоруб и Шредер также получают способность «Механизм».
Исследования
Разлагающая вонь: Бродяги получают способность уменьшать броню ближайших вражеских юнитов на 2.
Разграбление: Дает способность мародерства Дровосекам, Наемникам и Лесорубам.
Мародерство: Дает способность к мародерству уркам, раскаленным уркам, бронированным уркам и бронированным краснолюдам.
Перегрузка: Дает способность Шредеру и Логгеру увеличивать урон на 40% от базовой атаки на 10 секунд. Можно переключить на автокаст.
Алхимия: Предметы, которые приносят владельцу золото, когда их подбирают, становятся эффективнее на 130/160/200%.
nazarpunk, точно, закинул в нейронку, попросил проанализировать. Правда в дешовую. Нейронка подороже мне ответила что:
GPT o1-Mini: Данный код реализует линейный конгруэнтный генератор (Linear Congruential Generator, LCG) с параметрами из ANSI C, а не алгоритм Mersenne Twister.
nazarpunk, да не, я просто хотел пуассоновское распределение хорошее, заметил, что его генерация не такая простая задача, если делать оптимально. Ну и вдовесок закинул еще распределений на будущее. Если ты имеешь в виду генератор свой, то очень хороший источник тут.
Обновлен API, расширен список функций (multiply, subtract,..., merge). Добавлен генератор пустых таблиц, table.empty.
Cправка:
table.empty нужен если вы генерируете множество пустых таблиц через функцию, чтобы в разные места попадала ссылка не на одну таблицу, а на множество различных. Такой метод называют фабричным.
Но ведь в варкрафте есть ночная эльфийка - лучник. Это типо мужская версия?
Не хочу обидеть учитывая, что автор пишет, что проделал большую работу, но лицо прям пластиковое и разрез в глаза бросается. Я не уверен, что мужики эльфы экзгибицианисты :D
» Администрация XGM / Проекты и структура сайта
» WarCraft 3 / Баланс. Почему в Warcraft 3 рост брони НЕ идёт по убывающей полезности. Развенчиваем мифы.
Ред. Koladik
» WarCraft 3 / Баланс. Зачем в Warcraft 3 разброс урона и как этим пользоваться?
» WarCraft 3 / Ищу карту по Warcraft 3 "Рука Бога"
» WarCraft 3 / eventDispatcher - Диспетчер Событий
» WarCraft 3 / War3-lua-table
» WarCraft 3 / eventDispatcher - Диспетчер Событий
Ред. Koladik
» WarCraft 3 / eventDispatcher - Диспетчер Событий
Ред. Koladik
» WarCraft 3 / Руби лес!
Главное
Ред. Koladik
» WarCraft 3 / Bandit Wars
» WarCraft 3 / War3-lua-math
» WarCraft 3 / War3-lua-NDArray
Ред. Koladik
» WarCraft 3 / War3-lua-math
Ред. Koladik
» WarCraft 3 / War3-lua-math
» WarCraft 3 / War3-lua-math
» WarCraft 3 / War3-lua-math
» WarCraft 3 / War3-lua-math
» WarCraft 3 / War3-lua-table
» WarCraft 3 / Запуск Музыки при выборе карты либо в лобби.
Ред. Koladik
» WarCraft 3 / Лучник Ночных Эльфов
Ред. Koladik
» WarCraft 3 / Музыка карты в лобби (Reforged)
» WarCraft 3 / Музыка карты в лобби (Reforged)
» WarCraft 3 / Музыка карты в лобби (Reforged)
» WarCraft 3 / Нага-гончая
Ред. Koladik
» WarCraft 3 / Лучник Ночных Эльфов
Не хочу обидеть учитывая, что автор пишет, что проделал большую работу, но лицо прям пластиковое и разрез в глаза бросается. Я не уверен, что мужики эльфы экзгибицианисты :D