YupiSystem (Не путать с Yuri) - #163
Open
CQuarian-dev wants to merge 2 commits into
Open
CQuarian-dev wants to merge 2 commits into
CQuarian-dev wants to merge 2 commits into
Conversation
Contributor
Author
|
Я имел это всё. Нахер 2 аккаунта у меня тут завялалось. На одном форк, на втором ПР-ка, це писец. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ЮПИ - переводы между игроками через КПК (PromGradBank)
Программа «ЮПИ Переводы» (картридж YupiCartridge), предустановлена в КПК.
3% в пределах 250.000 за скользящие 30 минут, 10% сверх. Комиссия сгорает.
Формула расчёта процентов:
дешёвая часть = 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
Обоснование / Баланс
На баланс система повлияет сильно. Делалась сугубо под надзором китай-партия и куратора Коврала. Система противо-обхода уже реализована и расписана выше
Технические детали
Изменённый файлы в гите:

((на скрине косяк, это только учитывается 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
Медиа
Требования
Критические изменения
Особо затронут - Resources/Prototypes/Entities/Objects/Devices/pda.yml включая pda.yml из других сборок. Все КПК поддерживаются, включая те, что имеют спавн только на весселях, например КПК Синдиката.
Журнал изменений
🆑