Forwarded from ONE•RU — Игровое сообщество
Какие же новые функции в нём будут:
🌐 ┃Глобальные функции и Математика
Появился полный набор математических и временных утилит:
• time.getTime(): Получение времени (в секундах) с момента запуска игры.
• math.lerp(a, b, t): Плавная интерполяция между двумя числами.
• math.clamp(value, min, max): Ограничение числа в заданном диапазоне.
• math.randomInt(min, max): Получение случайного целого числа.
• math.randomFloat(min, max): Получение случайного дробного числа.
• math.randomBool(): Получение случайного true или false.
• math.perlin(x, y): Генерация 2D-шума Перлина (для процедурной генерации).
• math.abs(v): Модуль числа.
• math.sqrt(v): Квадратный корень.
• math.sin(v) / math.cos(v): Синус и косинус (в радианах).
• math.round(v) / math.floor(v) / math.ceil(v): Различные методы округления.🖥 ┃Функции GUI (Интерфейс)
Модуль GUI был невероятно расширен. Теперь это полноценная система для создания меню:
• Расположение:
• gui.beginArea() / gui.endArea(): Создание фиксированной области на экране.
• gui.beginScrollView() / gui.endScrollView(): Создание прокручиваемой области.
• gui.space(pixels): Добавление пустого пространства.
• gui.flexibleSpace(): Добавление "пружины", заполняющей пустое место.
• Новые Элементы:
• gui.checkbox(state, text): Стандартный чекбокс.
• gui.repeatButton(text): Кнопка, которая срабатывает, пока зажата.
• gui.textArea(text): Многострочное поле для ввода текста.
• gui.toggle(value, text): Переключатель в стиле "Вкл/Выкл".
• gui.selectionGrid(...): Сетка для выбора (например, в инвентаре).
• gui.passwordField(...): Поле для ввода пароля со скрытыми символами.
• Стилизация:
• gui.createStyle(...): (Очень важно!) Создание кастомных стилей с указанием цвета текста, текстуры фона и выравнивания.
• gui.setStylePadding(): Установка внутренних отступов.
• gui.setStyleMargin(): Установка внешних отступов.
• gui.setStyleFontSize(): Установка размера шрифта.
• gui.setStyleFontStyle(): Установка стиля шрифта (жирный, курсив и т.д.).
• Утилиты:
• gui.getLastRect(): Получение размеров последнего элемента.
• gui.setEnabled() / gui.getEnabled(): Включение/выключение всего GUI.
• gui.setColor() / gui.setBackgroundColor(): Глобальное изменение цвета GUI.
#новости #игра #обновление #моддинг
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰3🔥1
Forwarded from ONE•RU — Игровое сообщество
🏠 ┃Объекты (GameObjects)
Появились ключевые функции для управления компонентами и свойствами:
• gameObject.setName() /gameObject.getName(): Управление именем объекта.
• gameObject.isActive(): Проверка, активен ли объект (включая проверку родительских).
• gameObject.setTag() / gameObject.getTag(): Управление тегами.
• gameObject.findWithTag(): Поиск объектов по тегу.
• gameObject.getTransform(): Получение ID трансформа объекта.
• gameObject.addComponent(): (Ключевая функция!) Добавление на объект компонентов (`Rigidbody`, `AudioSource`, `BoxCollider` и т.д.).
• gameObject.getComponent(): Получение компонента с объекта.
📌 ┃Трансформы (Позиция и ротация)
Модуль для перемещений теперь позволяет работать с иерархией и локальными осями:
• transform.getLocalPosition() / transform.setLocalPosition(): Работа с позицией относительно родителя.
• transform.getRotation() / transform.setRotation(): Работа с вращением через кватернионы.
• transform.getEulerAngles() / transform.setEulerAngles(): Работа с вращением через углы Эйлера (градусы).
• transform.getScale() / transform.setScale(): Управление размером.
• transform.getForward() / transform.getRight() / transform.getUp(): Получение векторов направления (вперед, вправо, вверх) объекта.
• transform.setParent(): (Ключевая функция!) Прикрепление одного объекта к другому.
• transform.getChild() / transform.getChildCount(): Получение дочерних объектов.
• transform.find(): Поиск дочернего объекта по имени (рекурсивно).
• transform.detachChildren(): Отсоединение всех детей.
💥 ┃Физика
Модуль физики был значительно расширен для более сложных взаимодействий:
• rigidbody.getVelocity(): Получение текущей скорости тела.
• collider.setEnabled(): Включение/выключение коллайдера.
• collider.isTrigger() / collider.setTrigger(): Управление режимом триггера.
• physics.raycastAll(): "Выпустить луч", который возвращает все объекты на своем пути.
• physics.sphereCast(): "Выпустить" сферу для проверки столкновений (толстый луч).
• physics.checkSphere(): Проверяет, есть ли хотя бы один коллайдер в радиусе.
Управление Слоями:
• physics.getLayerName() / physics.getLayerFromName(): Конвертация имени слоя в номер и обратно.
• physics.layerMask() / physics.layerMaskInverse(): Создание масок для фильтрации рейкастов (чтобы луч игнорировал игроков, например).
• physics.setLayer() / physics.getLayer(): Установка/получение слоя объекта.
• physics.setLayersRecursively(): Установка слоя объекту и всем его детям.
• physics.layerMaskAll() / physics.layerMaskNone(): Вспомогательные функции для масок.
🔈 ┃Аудио
Теперь это полноценная система для 3D-звука:
• audioSource.add(gameObjectId): Добавление "источника звука" на объект.
• audioSource.pause(): Постановка звука на паузу.
• audioSource.setClip(audioClipId): Привязка загруженного аудиофайла к источнику.
• audioSource.getVolume(): Получение текущей громкости.
• audioSource.setLoop() / audioSource.getLoop(): Управление зацикливанием.
• audioSource.setSpatial() / audioSource.getSpatial(): Управление 3D-звуком (0.0 = 2D, 1.0 = 3D).
• audioSource.setPitch(): Изменение высоты тона (и скорости) звука.
• audioSource.isPlaying(): Проверка, проигрывается ли звук в данный момент.
• audioClip.getLength(audioClipId): Получение длительности аудиофайла.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from ONE•RU — Игровое сообщество
▶️ ┃Камера
Добавлены важные функции для работы с камерой
camera.getMain(): Получение ID главной камеры
camera.getTransform(): Получение трансформа камеры
camera.setBackgroundColor() / camera.getBackgroundColor(): Управление цветом фона камеры
camera.getFieldOfView(): Получение текущего угла обзора
camera.setOrthographic() / camera.isOrthographic(): Переключение и проверка 2D-режима (ортографического)
🎮 ┃Ввод (Input)
API ввода был дополнен для отслеживания всех состояний и управления консолью:
• registerConsoleCommand() / executeConsoleCommand(): Регистрация и выполнение своих консольных команд.
• input.getScreenWidth() / input.getScreenHeight(): Получение разрешения экрана.
• input.getMousePosition() / input.getMouseX() / input.getMouseY(): Получение точной позиции курсора.
• input.getMouseLock(): Проверка, заблокирован ли курсор.
• input.getMouseDown(): Проверка нажатия кнопки мыши (в 1 кадр).
• input.getMouseUp(): Проверка отпускания кнопки мыши (в 1 кадр).
• input.getButton() / input.getButtonDown() / input.getButtonUp(): Полный контроль над кнопками геймпада (зажатие, нажатие, отпускание).
• input.getKeyUp(): Проверка отпускания клавиши (в 1 кадр).
• input.getKeyName(): Получение имени последней нажатой клавиши.
• input.getAllPressedKeys(): Получение таблицы всех зажатых в данный момент клавиш.
Моддинг уже запущен, но сейчас доступны только функции из прошлого поста
Если вы хотите начать, я подготовил документацию, которая обновляется почти ежедневно
Ознакомьтесь с ней по ссылке: https://gorebox-modding.github.io/gorebox_modding_api/
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥5❤2👍2
ONE•RU — Игровое сообщество
Функции моддинга в текущей версии гб. В новом патче добавится еще куча фишек. В мечтах догнать гмод
🔥8
Сандали vabish'а
Функции моддинга в текущей версии гб. В новом патче добавится еще куча фишек. В мечтах догнать гмод
Ещо Гдев добавил в проект библиотеку для импорта моделей. Завтра сделаю поддержку импорта моделей большинства форматов и поддержку загрузки анимаций(Дженни мод 2.0)
🔥17
Сандали vabish'а
Ещо Гдев добавил в проект библиотеку для импорта моделей. Завтра сделаю поддержку импорта моделей большинства форматов и поддержку загрузки анимаций(Дженни мод 2.0)
Я переименовал функции gui_update, late_update, fixed_update на guiUpdate, lateUpdate, fixedUpdate. Имейте ввиду
❤5
Сандали vabish'а
Я переименовал функции gui_update, late_update, fixed_update на guiUpdate, lateUpdate, fixedUpdate. Имейте ввиду
Из новых евентов:
1. onEmote(emoteName)
2. onEndEmote
3. onChatMessage(message, player)
player — новый класс. Проводит методы по типу player.getName(player)
4. onLocalGetUp
5. onLocalRagdoll
6. onLocalSpawned
7. onLocalKnockout
8. onLocalWakeUp
9. onLocalHealed
10. onLocalInfected
11. onKilledSelf
12. onLocalDied
13. onKilledPlayer(player)
14. onPlayerJoined(player)
1. onEmote(emoteName)
2. onEndEmote
3. onChatMessage(message, player)
player — новый класс. Проводит методы по типу player.getName(player)
4. onLocalGetUp
5. onLocalRagdoll
6. onLocalSpawned
7. onLocalKnockout
8. onLocalWakeUp
9. onLocalHealed
10. onLocalInfected
11. onKilledSelf
12. onLocalDied
13. onKilledPlayer(player)
14. onPlayerJoined(player)
А как в старом моддинге игрока находили? Я уже не помню
Короче луа полетел изза огромного функционала. Придется переписывать его с нуля на модульную систему
🤬12😢3👏2😁1
Сандали vabish'а
Короче луа полетел изза огромного функционала. Придется переписывать его с нуля на модульную систему
Буду использовать другую библиотеку. АПИ опять поменяется полностью
👏12🤬1
Сандали vabish'а
Буду использовать другую библиотеку. АПИ опять поменяется полностью
Новый моддинг будет выглядить типо так:
'''Lua
LocalPlayer = nil
function start()
LocalPlayer=getLocalPlayer()
PlayerTransform = LocalPlayer.getTransform()
PlayerTransform.setPosition(0, 3, 8)
end
'''
'''Lua
LocalPlayer = nil
function start()
LocalPlayer=getLocalPlayer()
PlayerTransform = LocalPlayer.getTransform()
PlayerTransform.setPosition(0, 3, 8)
end
'''
❤8🔥3
уже 3 часа ночи и этот код теперь работает:
function OnLocalSpawned()
Main:log("Player returns")
local player = Main:getLocalPlayer()
if player == nil then
Main:log("Player is nil!")
return
end
Main:log(player)
Main:log(player.LocalScale)
local newScale = Vector3.New(2, 3, 4)
player.LocalScale = newScale
Main:log("New scale applied: " .. tostring(player.LocalScale))
end
function OnLocalSpawned()
Main:log("Player returns")
local player = Main:getLocalPlayer()
if player == nil then
Main:log("Player is nil!")
return
end
Main:log(player)
Main:log(player.LocalScale)
local newScale = Vector3.New(2, 3, 4)
player.LocalScale = newScale
Main:log("New scale applied: " .. tostring(player.LocalScale))
end
❤3👍2🔥1👏1
Сандали vabish'а
Я спать. Завтра тут будет раз так в 5 больше контента
С новой библиотекой, которую мне порекомендовал чел я думаю, что верну прошлый функционал за +- 2 дня
👍5
Все. Я сделал весь моддинг. Осталось протестировать и дошлифовать его. Надеюсь, вы его уже увидите в следующем патче!
🔥8
Сандали vabish'а
Все. Я сделал весь моддинг. Осталось протестировать и дошлифовать его. Надеюсь, вы его уже увидите в следующем патче!
Новый параметр в info.txt: safeMode. Если true то можно менять компоненты только от юнити. Если false то мод не будет работать в мп и будет помечен как "опасный для устройства. На ваш страх и риск"
👍7
Тилибоны, у вас открывается вкладка Addons в главном меню?
😢5