-
Notifications
You must be signed in to change notification settings - Fork 217
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
base: dev
Are you sure you want to change the base?
Add new terminal payment #13162
Conversation
if(user) | ||
dir = user.dir | ||
|
||
var/global/list/first_parts_name_terminal = list( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this 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) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Нужно использовать SFX.
var/transaction_amount | ||
var/temp_message = "" | ||
var/temp_pin | ||
var/temp_account | ||
var/temp_paying |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Мне не нравится ваш нейминг.
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) |
There was a problem hiding this comment.
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>" |
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
null
равен нулю.
code/modules/mob/inventory.dm
Outdated
@@ -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) |
There was a problem hiding this comment.
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)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Используем ui_status
, а не точечные проверки на ливинга.
Еще мне не нравится, что нет скриншотов интерфейса. |
Еще если это замена EFTPOS'у, то почему он не удален из билда? Мертвый код мы не держим. |
емагнутому терминалу надо дать возможность при тыке по мобу спиздить деньги с карты если карта без пароля а лучше вообще забить на проверку, емаг же |
У нас остался Генезис, где есть этот терминал.
Никаких нестингов больше нет. Перетягивание терминала на себя заменён на attack_hand-I_GRAB |
Твой ПР добавляет терминал, который является EFTPOS'ом с более дружелюбной к пользователю* моделью взаимодействия. Смысла держать несколько практически индентичных предметов в билде нет. Вырезай. *по твоему мнению |
+ |
Добавлен новый терминал оплаты. Старый eftpos заменён на новый на картах Exodus, Eclipse, Frontir, Polar.
Новый терминал имеет упрощённую систему привязки аккаунта и интерактивный интерфейс.
Привязка аккаунта
-Чтобы привязать аккаунт, необходимо взять терминал в руки (граб+перетягивание мышкой) и провести по нему картой/пда/кошельком;
-Чтобы привязать аккаунт без карты, нужно кликнуть по терминалу, держа его в активной руке и вручную ввести номер аккаунта счёта отдела/сотрудника;
-Синтетики не имеют возможности брать в руки вещи, поэтому они могут открыть меню ввода номера аккаунта через альт+клик;
-Ограничение на номер аккаунта: 6 цифр.
Ввод цены
-Чтобы ввести цену, необходимо кликнуть пустой рукой по терминалу и ввести цену;
-Ограничение на цену: 7 цифр.
Оплата
-Чтобы провести перевод, нужно по лежащему терминалу кликнуть картой/пда/кошельком и, при необходимости, ввести пароль, используя интерфейс терминала;
-По завершению оплаты, терминал печатает чек;
-Транзакция оформляется с указанием имени отправителя и id терминала, который генерируется из номера аккаунта получателя;
-Средства зачисляются на привязанный аккаунт;
-Ограничение на пароль: 4 цифры.
Емаг
-Каждый провод по терминалу емагом, добавляет к цене скрытую комиссию min(100%, X+15%);
-Транзакция оформляется с указанием имени отправителя и id терминала, которое генерируется случайным образом;
-Средства начисляются на привязанный аккаунт через формальную прослойку, которую терминал сгенерировал случайным образом;
-Комиссия снимается в пользу привязанного аккаунта.
Дополнительно
-Терминал можно прикрутить гаечным ключом;
-Оплата пройдёт, только если указана цена и привязан аккаунт;
-Терминал меняет направление, в зависимости от направления (dir) персонажа, кладущего терминал;
-Добавлен чек, который печатается и спавнится в зависимости от положения терминала.
close #Сделать нормальный терминал оплаты
Чейнджлог