Посылки экипажу.#14406
Conversation
Changelog status: ✔️ |
|
Гуманитарная помощь для лоупопа, чтобы 2-3 карлика совсем не зачахли |
Ток если в лоупоп есть каргонцы. А если нет, то посылки просто будут копиться списком на счету шаттла до того как кто-то его вызовет. |
|
Синяя крышка у ящиков используется для ящиков с медициной. |
Какая же крышка для ящиков используется для почтовой службы? |
|
сделай чтоб с оч низким шансом прокала посылка от унабомбера которая бабахала бы при открытии) |
топовая тдея, чет не подумал про спам-рассылки и всякое такое, добавлю по приколу Можно в карго сделать рентген-сканер который будет картинку генерить внутренностей посылки чтобы "проверяли", но грузчику влом и он отправляет просто так и бум |
|
да тоже про рентген подумал гении мыслят одинаково |
|
про спам-посылки, посылки с пранком/бомбой в отдельном ПРе будут с рентгеном, тут и без них много ревувать отдельный ПР ща выложу |
code/__DEFINES/preferences.dm
Outdated
| #define FAMILY_GRANDFATHER (1<<1) | ||
| #define FAMILY_MOTHER (1<<2) | ||
| #define FAMILY_FATHER (1<<3) | ||
| #define FAMILY_BROTHERS (1<<4) |
There was a problem hiding this comment.
надо обсудить с админами чтобы не возникло конфликтов и метафигни где люди указывают кукол других в раунде как братьев
There was a problem hiding this comment.
Ну пока этот механ не позволяет коопиться, а только позволяет указать есть ли семья у тебя вообще или нет.
Впоследствии я бы предложил админам механ реализации легального "коопа", когда рандомно за раунд может заспавнить 1-2 человек родственниками (чем больше людей в раунде тем больше шанс, естесна).
There was a problem hiding this comment.
абсолютно точно нужно обсуждение с админами даже в текущем исполнении. два игрока ставят "у меня есть брат", берут одну фамилию, коопят, опрадываются админам тем что ты им дал такую возможность
There was a problem hiding this comment.
Понятно, пойду на форум делать обсуждение.
There was a problem hiding this comment.
Мне справедливо заметили что можно вообще не делать родственников.
Я думаю сделаю датум "посылки извне" где можно будет прописать разное: Итем посылки, описание, есть ли сообщение на КПК предшествующее, всякое такое.
И туда можно будет кидать просто случайную "посылку от родственника" условного. Туда же спам КПК, туда же ещё всякую фигню смешную.
| if(mail_orders.len && clear_turfs.len) | ||
| var/i = rand(1,clear_turfs.len) | ||
| var/turf/pickedloc = clear_turfs[i] | ||
| clear_turfs.Cut(i,i+1) |
There was a problem hiding this comment.
у нас нет какой-то pick_and_pop функции?
There was a problem hiding this comment.
нашёл pick_n_take
| return pick(\ | ||
| prob(30);/obj/random/foods/drink_bottle,\ | ||
| prob(30);/obj/random/foods/drink_can,\ | ||
| prob(1);/obj/item/weapon/gun/projectile/revolver/doublebarrel,\ |
| @@ -0,0 +1,59 @@ | |||
| /datum/controller/subsystem/economy/proc/generate_new_crew_mail() | |||
There was a problem hiding this comment.
добавь ещё спам. желательно чтобы корелировало с спамом на пда. желательно чтобы было что-то вредное.
ещё надо чтобы просрочка, бимбы, и пранкоприколы приходили.
There was a problem hiding this comment.
Думаю, добавлю в спам на ПДА подписи типа "отправь 100 рублей на номер и получи ПРИЗ!!"
И будет просто раундстартом делаться ещё несколько рандомных ноунейм номеров у которых будет при перечислении денег с какого-то ака прокать действие.
У кого-то будет аж целое ничего (скам), кто-то будет отправлять вкусную вещь, а кто-то рандомную/мусорную.
| if("ringtone") | ||
| chosen_ringtone = pick(global.ringtones_by_names) | ||
| if("family") | ||
| family_members = rand(0, 127) |
There was a problem hiding this comment.
rand(NONE, FAMILY_ALL)
#define FAMILY_ALL FAMILY_GRANDMOTHER|FAMILY_GRANDFATHER...и так далее
code/modules/client/preferences.dm
Outdated
| var/chosen_ringtone = "Flip-Flap" | ||
| var/custom_melody = "E7,E7,E7" | ||
|
|
||
| var/family_members = 12 //Mother and Father by default |
There was a problem hiding this comment.
| var/family_members = 12 //Mother and Father by default | |
| var/family_members = FAMILY_MOTHER|FAMILY_FATHER |
| var/list/pref_ringtones = global.ringtones_by_names + CUSTOM_RINGTONE_NAME | ||
| chosen_ringtone = sanitize_inlist(chosen_ringtone, pref_ringtones, initial(chosen_ringtone)) | ||
| custom_melody = sanitize(custom_melody, MAX_CUSTOM_RINGTONE_LENGTH, extra = FALSE, ascii_only = TRUE) | ||
| family_members = sanitize_integer(family_members, 0, 127, initial(family_members)) |
There was a problem hiding this comment.
вместо 127 FAMLY_ALL, вместо 0 NONE
|
Учитывая, что я для некоторых вещей сделал обёртку в ПР-е на раундстарт предметы в грузторге - тут я пока не трогаю, оно в драфте лежит, ждёт мержа того. После того мержа тут всё поправлю. |
Какого бага? Про баги напишите пж какой баг с посылками нашли. Не с грузторг товарами что лежат раундстартом на складе, а с посылками. |
Да на форуме думаю достаточно по этой теме написал. Основной тезис: Условно подцепить к закупам карго появление этих посылок и оплачивать их за счёт третьего не игрового счёта, а не счёта получателя. Оплатили - карго начисляют условный капитал 300± кредитов. Это нормальная цена для отдела, чуть больше чем за один проданный ящик. Это частично решает проблему заказов карго. Карго выполняют заказ на скриптовую сумму — приходит посылка. У карго появляется смысл выполнять заказы экипажа, ведь те получают посылки не от балды, а при достижении определенных условий. Собственно и сами каргонцы тогда получают шанс получить что-то с посылок, да и тех же бесполезных грузчиков можно будет занять с переменным успехом на всю смену, а не на одноразовое событие. Ну и предметы внутри сделать что-ли более полезными? Платить за банку печенья, 100 кредитов или моток проводки внутри эт не круто. Прикольные вещи есть, но на одну условную куртку или штаны приходится открыть 10 банок с печеньем, а на нелегальщину и представить страшно, сколько ДНК шприцов может выпасть. |
|
Давай как-нибудь другим ПР-ом, тут и так много работы проделано и ещё выдумывать как это подвязать к закупкам в карго может раздуть текущий ПР слишком сильно. Как туториал к ГрузТоргу и повод о нём рассказывать грузчикам (буквально закидывая игроку в корзину посылку), и повод карго выходить из отдела повзаимодействовать - ПР норм. Как лутбокс который игрок вскрывает и радуется может и не очень. Как повод карго заработать деньжат когда никто на станции к ним не идёт - сейчас не очень, и с твоим предложением тоже будет не очень потому-что всё ещё требует закупаться для кого-то. Вместо этого я бы предложил возможность сдавать склад карго в аренду (приходит сотня посылок, и потом с ЦК приходят заказы "а отправьте-ка именно вон ту", соответственно надо складировать красиво и посортировано.), или предоставлять услуги сортировки (приходит десять пустых ящиков с накладными, и ящик с кучей вещей. надо разложить по ящикам с накладными то что куда положено. заодно проверить или всё правильно). Но это оч далеко от темы этого ПР-а, и наверняка когда-нибудь и до такого дойдём. |
| if (listfrom.len > 0) | ||
| var/picked = pick(listfrom) | ||
| listfrom -= picked | ||
| listfrom -= list(picked) |
There was a problem hiding this comment.
интересно ломает ли это что-либо. к примеру если у нас pick_n_take из списка списков...
There was a problem hiding this comment.
Так наоборот, оно делает возможным pick_n_take из списка списков. До этого список списков не был возможен для pick_n_take ибо при -= список из списка удаляются элементы, а не список.
Склад в аренду это имба, оно будет обязательно следующим ПРом. |
| /obj/random/meds/dna_injector = 100, | ||
| /obj/random/meds/chemical_bottle = 100, | ||
| /obj/random/guns/projectile_handgun = 10, | ||
| /obj/random/structures/critters_crate = 50, |
There was a problem hiding this comment.
забавно что можно получить целый ящик в ГрузТорг, при том что никто из экипажа не может продать ящик в ГрузТорге (нужно чтобы каргонцы подсобили закинув на конвеер потому-что нигде нет "большого" входа в мусорку на станции... когда-нибудь добавим.)
There was a problem hiding this comment.
Ну как никто, каргонцы могут)
|
@DarthSidiousPalpatine За две недели хоть кто-то получил посылку? |
|
Чёрт его знает, у нас онлайна нет. |
|
Сейчас если и делать ПРы, то надо, видимо, на синглплеер ориентироваться. |
|
пора выкатывать аренду склада и сортировочку :D |
Да, надо бы. И/или погребок с новыми фичами. |
code/modules/events/cargo_mail.dm
Outdated
| citizenshipType = /obj/random/mail/home | ||
| itemType = PATH_OR_RANDOM_PATH(citizenshipType) | ||
|
|
||
| /*if(2) //Religious spam |
There was a problem hiding this comment.
лучше убрать неюзаный код. или заюзать.
|
Какой-то странный баг именно на сервере. Посылки приходят по нескольку раз подряд одни и те же. В плане, вот посылки сгенерились, шаттл прислали, забрали, отослали обратно и через время снова посылки сгенерились, но ТЕ ЖЕ САМЫЕ. И так несколько раз подряд. Гмм. При тестах такого не было. |
|
Пофиксил, вроде, баг. Проблема в том, что на локалке у меня его не было или не замечал. Крч, можно обновлять тестмерж. Только тут опять ошибка Code Owners как и в других ПРах. |
code/modules/events/cargo_mail.dm
Outdated
| if(!R) | ||
| continue | ||
|
|
||
| var/datum/money_account/MA = get_account(R.fields["insurance_account_number"]) |
There was a problem hiding this comment.
insurance всё же не обязательно аккаунт конкретного человека, он не надежен. У нас, кажется, нет вообще явной связи человек == аккаунт.
Надо пик делать либо от людей на станции (player_list), либо от аккаунтов (all_money_accounts), не перемешивая одно с другим.
В первом варианте ты можешь найти департамент из роли в майнде персонажа, но банк аккаунт опять явно не привязан... разве что парсить память, что так себе.
Во втором варианте проблемой будет найти департамент, который есть только в майнде персонажа или рекордсах, и ничто из этого напрямую не связано с банком. Можно искать по имени владельца аккаунта, но это не надежно - могут быть коллизии и юзеры с одинаковым именем.
Экономику вообще надо было сначала отрефакторить, прежде чем пытаться её интегрировать дальше в станцию (моё фи в сторону всех предыдущих пр-ов с экономикой за последние годы, а не конкретно этот).
There was a problem hiding this comment.
Как я понял, тебе нужен был аккаунт только для того, чтобы добавить его автоматически в грузторг. Можно попробовать этот шаг просто сделать интерактивным для грузчиков.
Ты ищешь персонажа из player_list, формируешь посылку, где известно имя и работа (из его майнда/роли), и грузчик сам как-то выясняет, кому именно оно пришло, и занимается дальнейшем оформлением в грузторге/доставкой.
Тогда если ошибки с доставкой и будут, то по крайней мере не из-за кода.
There was a problem hiding this comment.
Мне нужен аккаунт потому что грузторг работает на аккаунтах.
Посылки имеют замок, посылки открываются по нажатию "открыть" в корзине в грузторге, это удобное реиспользование существующего механа которое ещё и показывает игроку что грузторг в принципе существует и что там что-то может прийти.
There was a problem hiding this comment.
Тип, конечно, можно было бы отвязать посылки от грузторга, сделать совершенно параллельной сущностью со своим механом, но зачем...
Тем более что я хочу грузторг расширить до заказа предметов которые есть сейчас в карго консольке да и до других целей тоже...
There was a problem hiding this comment.
Блен, а зачем я вообще ищу людей в players_list, почему бы не пикать просто людей из записей экипажа типа из "работников" станции.
Надо только как-то валидировать что человек из записи хотя бы существовал. Надо подумать. Просто сейчас посылки могут приходить только тем кто онлайн, хах.
В любом случае, нужна связь между записями экипажа и мани аккаунтом. И какая-то валидация что человек вообще существовал ещё до станции и ему можно прислать что-то.
Типа, чтобы не было такого что ГП принял в экипаж условного мага и магу пришла посылка "из дома" т.к. он появился в записях экипажа)
There was a problem hiding this comment.
И ГП бы не доступы выставлял, а добавлял бы запись сотрудника в базу данных отдела, подтверждая что он там работает.
There was a problem hiding this comment.
Божечки, сколько бюрократии и рекордсов надо менять, но это всё не в этом ПРе, это всё интересно, но тут я ещё сделать хочу чтобы мы брали посылки не из активных игроков и искали номер их акка, а чтобы мы брали любые рекордсы, искали номер акка, проверяли есть ли рекордсы, есть ли номер акка такой и уже тогда генерировали посылку.
There was a problem hiding this comment.
Надо рекордсы рефакторить...
Отчасти я начал закладывать фундамент в своем последнем рефакторе джобок, но с рекордсами там много работы и они размазаны по всему билду, та еще головная боль. Но я могу попробовать набросать тз.
НО, рекордсы сами по себе тоже не надежны, это всё тот же плавающий-динамический-рп уровень игры. СБ может создавать новые, например. Или удалять старые.
There was a problem hiding this comment.
Так пусть так и делает. Смотри, если у челика есть рекордсы, но там невалидный аккаунт - посылка не придёт.
Если у челика есть рекордсы, но там валидный аккаунт, но не его - посылка придёт на имя рекордса, а числиться будет в аккаунте который указан не его. И челику надо будет либо к ГП идти разбираться втф кто там мне аккаунт поменял, либо забить и посылку банально вскрыть.
В любом случае это не проблема, как мне видится, ничего же не ломается физически. Если вне твоего ведома тебе сменили акк, то для тебя это фигово будет, зарплата же не тебе капать будет, хаха, ты пойдёшь разбираться)))
ГП берёт и скрытно заменяет аккаунты челикам на свои и получает зарплату за всех)))
There was a problem hiding this comment.
Максимум, если уж это абузно очень, можно сделать смену аккаунта в записях только при условии что ты знаешь пароль от аккаунта, который "отвязываешь".
|
А ещё я так и не понял что за ошибка CodeOwners и как её фиксить лично мне, я тут пофиксил посылки, но их никто не обновлял видимо на сервере потому что билд ансаксесфул из-за кодовнерсов |
|
Только перед переделкой рекордсов нужно составить тз. |
|
В общем тут ещё допиливаю, а по рекордсам, зарплатам и пр. жду ТЗ. Могу лишь высказать свои хотелки того как бы я видел эту систему, если надо. |
|
Так, убрал неиспользуемый код, переделал с поиска людей онлайн на прочек всех записей экипажа и просмотр того валидные они или нет. Валидность это существование денежного аккаунта, собсна. |
|
В будущем при переделке записей экипажа можно будет впихивать скрытую переменную "создано игроком" и чекать только те записи, которые созданы автоматически были. |
|
А я тут разве не сделал всё что требовалось? Сейчас пересмотрю... |
Ну я сделал проход по рекордсам, откуда из рекордсов беру вообще всю нужную инфу. Единственное что может случиться, что создадут рекордс во время игры и для этого рекордса придёт посылка. Но это можно оправдать тем, что "мёртвая душа" числится в записях и ей пришёл спам. Я тип не особо понимаю что мне тут ещё менять. Проходимся по рекордсам персонала который числится на станции, выбираем рандомных людей из него, информацию о них и генерируем посылки исходя из записей в рекордсах. Если человек реально существует то это реальная посылка ему. Если рекордс создан во время раунда то можно сказать что спам пришёл. |

Описание изменений
Добавлены случайные посылки для экипажа.
Каргонцы заказывают шаттл, он летит, а в это время людям, которым пришли посылки, в грузторг корзину приходят уведомления. А в карго бумажки о доставке. Ну и дальше по стандартному грузторг-сценарию, каргонец доставляет посылку адресату, адресат нажимает кнопку, посылка разблокируется и можно взять что там прислали. А карго 5 монет за доставку.
Посылки на шаттл прилетают в ящике для посылок:


Новый спрайт под палитру карго:

Почему и что этот ПР улучшит
Больше жизни на станции и за её пределами. Больше ситуативной работы для карго. Если уж грузторгом не пользуются как торговой площадкой - пусть заодно будет и посылки доставлять "с воли". Впоследствии можно так доставлять и триторские вещи, хз.
Авторство
AndreyGysev
Чеинжлог
🆑 AndreyGysev