Skip to content

Add new terminal payment #13162

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: dev
Choose a base branch
from

Conversation

Devyashka
Copy link
Contributor

Добавлен новый терминал оплаты. Старый eftpos заменён на новый на картах Exodus, Eclipse, Frontir, Polar.
Новый терминал имеет упрощённую систему привязки аккаунта и интерактивный интерфейс.

Привязка аккаунта
-Чтобы привязать аккаунт, необходимо взять терминал в руки (граб+перетягивание мышкой) и провести по нему картой/пда/кошельком;
-Чтобы привязать аккаунт без карты, нужно кликнуть по терминалу, держа его в активной руке и вручную ввести номер аккаунта счёта отдела/сотрудника;
-Синтетики не имеют возможности брать в руки вещи, поэтому они могут открыть меню ввода номера аккаунта через альт+клик;
-Ограничение на номер аккаунта: 6 цифр.

Ввод цены
-Чтобы ввести цену, необходимо кликнуть пустой рукой по терминалу и ввести цену;
-Ограничение на цену: 7 цифр.

Оплата
-Чтобы провести перевод, нужно по лежащему терминалу кликнуть картой/пда/кошельком и, при необходимости, ввести пароль, используя интерфейс терминала;
-По завершению оплаты, терминал печатает чек;
-Транзакция оформляется с указанием имени отправителя и id терминала, который генерируется из номера аккаунта получателя;
-Средства зачисляются на привязанный аккаунт;
-Ограничение на пароль: 4 цифры.

Емаг
-Каждый провод по терминалу емагом, добавляет к цене скрытую комиссию min(100%, X+15%);
-Транзакция оформляется с указанием имени отправителя и id терминала, которое генерируется случайным образом;
-Средства начисляются на привязанный аккаунт через формальную прослойку, которую терминал сгенерировал случайным образом;
-Комиссия снимается в пользу привязанного аккаунта.

Дополнительно
-Терминал можно прикрутить гаечным ключом;
-Оплата пройдёт, только если указана цена и привязан аккаунт;
-Терминал меняет направление, в зависимости от направления (dir) персонажа, кладущего терминал;
-Добавлен чек, который печатается и спавнится в зависимости от положения терминала.

close #Сделать нормальный терминал оплаты

Чейнджлог
🆑Devyashka
tweak: Добавлен новый терминал для оплаты.
/🆑
  • Pull Request полностью завершен, мне не нужна помощь чтобы его закончить.
  • Я внимательно прочитал(-а) все свои изменения и багов в них не нашёл(-ла).
  • Я запускал(-а) сервер со своими изменениями локально и все протестировал(-а).
  • Я ознакомился(-ась) c Guide to Contribute.

@Devyashka Devyashka requested a review from a team as a code owner April 29, 2025 06:58
@github-actions github-actions bot added 📱 UX/UI Изменения пользовательского интерфейса и взаимодействия 🎨 спрайты Что-то связанное с пиксельными картиночками 🔊 SFX Саунд дезигн в своём проявлении 🗺️ карта Мапдиффы 100500к+- и миссклики ломающие станцию 📜 Есть CL Чейнджлог в наличии и не содержит ошибок labels Apr 29, 2025
if(user)
dir = user.dir

var/global/list/first_parts_name_terminal = list(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

@intercepti0n intercepti0n left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Код очень грязный из-за выбора автором очень странной модели интеракции с объектами. Некоторые простые моменты я отловил и отметил в данном ревью.

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

Пообщался с геймдизайнером Kostil'ём, вот итоги нашей дискуссии: резделям объект на кассу и терминал, в кассе можно создавать пресеты для оплаты, выбирать активный (для оплаты безналом через терминал или наличкой через кассу), кассу желательно сделать машиной, а терминал - объектом, добавить соответствующую плату и предмет в принтер и автолат, соответсвенно.

Подробнее можно обсудить вопросы в общем чате или канале геймдизайна.


temp_paying = null
temp_pin = null
playsound(src, 'sound/items/payment/chek.ogg', 70)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно использовать SFX.

Comment on lines 14 to 18
var/transaction_amount
var/temp_message = ""
var/temp_pin
var/temp_account
var/temp_paying
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мне не нравится ваш нейминг.

Suggested change
var/transaction_amount
var/temp_message = ""
var/temp_pin
var/temp_account
var/temp_paying
var/transaction_amount
var/temp_message = ""
var/temp_pin
var/temp_account
var/temp_paying

maptext = "<div style=\"font-size: 7px; color: #00AA00; text-shadow: 0 0 5px #00FF00, 0 0 8px #00FF00;"
maptext += "font-family: 'Courier New', Courier, monospace; text-align: center;\">[transaction_amount]C</div>"

/obj/item/device/payment_terminal/proc/set_mode(new_mode, mob/exception)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Использование зарезервированных слов.

AddOverlays(price_overlay)
set_light(0.2, 0.5, 2, 3.5, "#66FF00")
maptext = "<div style=\"font-size: 7px; color: #00AA00; text-shadow: 0 0 5px #00FF00, 0 0 8px #00FF00;"
maptext += "font-family: 'Courier New', Courier, monospace; text-align: center;\">[transaction_amount]C</div>"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Выносим в отдельный прок и используем макрос MAPTEXT.

/obj/item/device/payment_terminal/update_icon()
. = ..()
ClearOverlays()
if(isnull(linked_account) || isnull(transaction_amount) || transaction_amount <= 0)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

null равен нулю.

@@ -167,6 +167,28 @@ var/list/slot_equipment_priority = list( \
W.dropInto(A ? A : loc)
return FALSE

/obj/item/proc/mouse_drop_pick_up(mob/user)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мне не нравится ваш нестинг.

tgui_interact(user)

/obj/item/device/payment_terminal/attack_hand(mob/user)
if(isliving(user))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Используем ui_status, а не точечные проверки на ливинга.

@intercepti0n
Copy link
Collaborator

Еще мне не нравится, что нет скриншотов интерфейса.

@intercepti0n
Copy link
Collaborator

Еще если это замена EFTPOS'у, то почему он не удален из билда? Мертвый код мы не держим.

@Roxreic
Copy link
Contributor

Roxreic commented Apr 29, 2025

емагнутому терминалу надо дать возможность при тыке по мобу спиздить деньги с карты если карта без пароля

а лучше вообще забить на проверку, емаг же

@Devyashka
Copy link
Contributor Author

Devyashka commented May 1, 2025

Еще мне не нравится, что нет скриншотов интерфейса.

image

Еще если это замена EFTPOS'у, то почему он не удален из билда? Мертвый код мы не держим.

У нас остался Генезис, где есть этот терминал.

Мне не нравится ваш нестинг.

Никаких нестингов больше нет. Перетягивание терминала на себя заменён на attack_hand-I_GRAB

@intercepti0n
Copy link
Collaborator

У нас остался Генезис, где есть этот терминал.

Твой ПР добавляет терминал, который является EFTPOS'ом с более дружелюбной к пользователю* моделью взаимодействия. Смысла держать несколько практически индентичных предметов в билде нет. Вырезай.

*по твоему мнению

@Devyashka
Copy link
Contributor Author

Devyashka commented May 8, 2025

Вырезай.

+

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📱 UX/UI Изменения пользовательского интерфейса и взаимодействия 📜 Есть CL Чейнджлог в наличии и не содержит ошибок 🎨 спрайты Что-то связанное с пиксельными картиночками 🔊 SFX Саунд дезигн в своём проявлении 🗺️ карта Мапдиффы 100500к+- и миссклики ломающие станцию
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants