Skip to content

YupiSystem (Не путать с Yuri) - #163

Open
CQuarian-dev wants to merge 2 commits into
Lua-Frontier:masterfrom
CQuarian-dev:YupiSystem
Open

CQuarian-dev wants to merge 2 commits into
Lua-Frontier:masterfrom
CQuarian-dev:YupiSystem

Conversation

@CQuarian-dev

@CQuarian-dev CQuarian-dev commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

ЮПИ - переводы между игроками через КПК (PromGradBank)

Программа «ЮПИ Переводы» (картридж YupiCartridge), предустановлена в КПК.

  • У каждого персонажа код ЮПИ из 6 символов, живёт до конца раунда.
  • С отправителя списывается ровно указанная сумма, комиссия вычитается из неё:
    3% в пределах 250.000 за скользящие 30 минут, 10% сверх. Комиссия сгорает.
  • Предпросмотр комиссии и суммы, которая дойдёт получателю; числа с разделителями (10.000.000).
  • Кулдаун 1 минута между переводами, таймер на кнопке (считается на клиенте).
  • Зачисление через обычный TryBankDeposit - с налогом Monolith в оффшорный счёт (MonoCoins).
  • Ironman: счёта ЮПИ нет, переводы в обе стороны недоступны даже если убрать или включить компонент во время раунда.
  • Баланс в открытом КПК получателя обновляется сразу.
  • Все переводы пишутся в админ-лог (ATMUsage).

Формула расчёта процентов:
дешёвая часть = min(A, max(0, L − S)) → по 3% - Всё до 250 тысяч
дорогая часть = A − дешёвая часть → по 10% - Всё после 250 тысяч
комиссия = ⌈дешёвая × 0.03⌉ + ⌈дорогая × 0.10⌉
перевод = A - Комиссия
получатель получает сумму A с вычетом комиссии.

Про -- max(0, L − S): -- если игрок уже перевёл больше лимита, например 300 000, то L − S = −50 000. Отрицательная дешёвая часть не имеет смысла, поэтому она становится 0.

Вкратце - Перевёл ты 1.000.000 рублей, у тебя 82.500 сгорело, получателю доставят 917.500 рублей, потому что:
Первые 250 тысяч: -- 250 000 × 3% = 7 500
Уже всё, что выше 250 тысяч: -- 750 000 × 10% = 75 000
Комиссия: -- 75.000 + 7.500 = 82.500 - Всё это сгорает

Использовать систему для переводов в обход оффшорного счёта - не получится.
Вкратце: При переводе получателю с высоким балансом - N-ная сумма будет уходить в процент. И чем больше баланс - тем больше доля. Это защита от бесконечного накопления.
Краткая математика при переводе в оффшорный счёт при 1.000.000 кредитов:
При балансе получателя в 5.000.000 -> Зачисляется на счёт 1.000.000 - > На оффшорный уходит 0 кредитов
При балансе получателя в 19.500.000-> Зачисляется на счёт 987.996 - > На оффшорный уходит 12.004 кредитов
При балансе получателя в 20.000.000 -> Зачисляется на счёт 953.791- > На оффшорный уходит 46.209 кредитов
При балансе получателя в 40.000.000 -> Зачисляется на счёт 248.454- > На оффшорный уходит 751.546 кредитов
При балансе получателя в 100.000.000 -> Зачисляется на счёт 39.984- > На оффшорный уходит 960.016 кредитов

P.s. -- по поводу скользящих минут - "Скользящие 30 минут" это не таймер, который сбрасывается в каждый нулевую или 30-ю минуту часа. Это таймер от последней операции. При каждом переводе система смотрит ровно на 30 минут назад от текущего момента и складывает, сколько было отправлено за это время. Переводы старше 30 минут в сумму не входят.
P.s.s -- Всё основано на старой PR-ке "Позитива" и некоторых модулях из нынешнего билда sector-frontier-14

Обоснование / Баланс

На баланс система повлияет сильно. Делалась сугубо под надзором китай-партия и куратора Коврала. Система противо-обхода уже реализована и расписана выше

Технические детали

Изменённый файлы в гите:
image
((на скрине косяк, это только учитывается YupiSystem, полный список ниже))

Список:
-- Новые:
Content.Client/_LuaM/Yupi/YupiUi.cs
Content.Client/_LuaM/Yupi/YupiUiFragment.xaml
Content.Client/_LuaM/Yupi/YupiUiFragment.xaml.cs
Content.Server/_LuaM/Yupi/YupiCartridgeSystem.cs
Content.Server/_LuaM/Yupi/YupiComponents.cs
Content.Server/_LuaM/Yupi/YupiSystem.cs
Content.Shared/_LuaM/Yupi/YupiRules.cs
Content.Shared/_LuaM/Yupi/YupiUiState.cs
Resources/Locale/en-US/_LuaM/yupi/yupi.ftl
Resources/Locale/ru-RU/_LuaM/yupi/yupi.ftl
Resources/Locale/ru-RU/ss14-ru/prototypes/_LuaM/entities/objects/Devices/cartridges.ftl
Resources/Prototypes/_LuaM/Entities/Objects/Devices/cartridges.yml
Resources/Textures/_LuaM/Yupi/bank_logo.png
Resources/Textures/_LuaM/Yupi/bank_logo.png.yml
-- Изменённые
Resources/Prototypes/Entities/Objects/Devices/pda.yml
Resources/Prototypes/_Goobstation/Entities/Objects/Devices/pda.yml
Resources/Prototypes/_Mono/Entities/Objects/Devices/pda.yml
Resources/Prototypes/_NF/Entities/Objects/Devices/pda.yml

Как протестировать

Открываем КПК. Раундстартом в них должен быть тот самый картридж (по умолчанию он везде)
После мы открываем приложение "ЮПИ переводы" в КПК
Затем переходим в это приложение и видим свой сгенерированный ЮПИ код. Нажатием по нему он копируется в буфер обмена и его можно вставить в чат.
Другой человек должен вписать ваш скопированный код уже в своём КПК и ввести сумму перевода

!!!!!ACHTUNG!!!!! - ЮПИ СОДЕРЖИТ АНГЛИЙСКИЕ СИМВОЛЫ, ЭТО ЗНАЧИТ ЧТО ЕСЛИ У ВАС ЕСТЬ АКЦЕНТ - КОД МОЖЕТ ИСКАЖАТЬСЯ ЕСЛИ ЕГО СКАЗАТЬ В ОБЩИЙ ЧАТ. В СЛУЧАЕ ВОЗНИКНОВЕНИЯ ЭТОЙ ПРОБЛЕМЫ - ИСПОЛЬЗУЙТЕ LOOC ЧАТ
В случае иных ошибок писать мне в дс: c_quarian

Медиа

{76137046-FD3A-4F4E-BEC6-14FA63A7BEA2}

Требования

Критические изменения

Особо затронут - Resources/Prototypes/Entities/Objects/Devices/pda.yml включая pda.yml из других сборок. Все КПК поддерживаются, включая те, что имеют спавн только на весселях, например КПК Синдиката.

Журнал изменений
🆑

  • add: Система переводов ЮПИ! Можно переводить любую N-ную сумму денег через КПК со своего банковского счёта на другой. Ограничение - 3% в пределах 250.000 за скользящие 30 минут, 10% сверх. Комиссия сгорает. Перевод разрешён раз в минуту.
  • tweak: Интеграция переводов с чертой "Железный человек" (IronMan). Сущности с данной чертой никак не могут пользоваться ЮПИ.

@CQuarian-dev

Copy link
Copy Markdown
Contributor Author

Я имел это всё. Нахер 2 аккаунта у меня тут завялалось. На одном форк, на втором ПР-ка, це писец.
Я перешёл окончательно на этот аккаунт, второй игнорируем

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants