Merge tag '4.0.11'

This commit is contained in:
Archangel
2026-01-05 19:13:55 +01:00
16 changed files with 167 additions and 56 deletions
@@ -8805,7 +8805,7 @@
"messageText": "New year present!", "messageText": "New year present!",
"collectionTimeHours": 72, "collectionTimeHours": 72,
"associatedEvent": "Promo", "associatedEvent": "Promo",
"maxToSendPlayer": 5 "maxToSendPlayer": 1
}, },
"TOKTOK1M": { "TOKTOK1M": {
"items": [ "items": [
@@ -2401,7 +2401,6 @@
"Stealthsuit", "Stealthsuit",
"CWX", "CWX",
"Kaeno", "Kaeno",
"Paulov",
"Revingly", "Revingly",
"jbs4bmx", "jbs4bmx",
"aleves", "aleves",
@@ -2392,7 +2392,6 @@
"Stealthsuit", "Stealthsuit",
"CWX", "CWX",
"Kaeno", "Kaeno",
"Paulov",
"Revingly", "Revingly",
"jbs4bmx", "jbs4bmx",
"aleves", "aleves",
@@ -57,6 +57,7 @@
"bot-weapon_missing_mod_slot": "Slot: '{{modSlot}}' existiert nicht für Waffe: {{weaponId}} {{weaponName}} auf {{botRole}}", "bot-weapon_missing_mod_slot": "Slot: '{{modSlot}}' existiert nicht für Waffe: {{weaponId}} {{weaponName}} auf {{botRole}}",
"bot-weapons_required_slot_missing_item": "Erforderlicher Slot '{{modSlot}}' auf {{modName}} {{slotId}} war leer auf {{botRole}}", "bot-weapons_required_slot_missing_item": "Erforderlicher Slot '{{modSlot}}' auf {{modName}} {{slotId}} war leer auf {{botRole}}",
"build-unable_to_delete_preset": "Voreinstellung kann nicht gelöscht werden, %s kann nicht in Waffen, Ausrüstung oder Magazinvorlagen gefunden werden", "build-unable_to_delete_preset": "Voreinstellung kann nicht gelöscht werden, %s kann nicht in Waffen, Ausrüstung oder Magazinvorlagen gefunden werden",
"cultistcircle-unable_to_find_stash_id": "Keine ID für den Kultist Kreis im Inventar gefunden [HideoutBereichInventare]! Es wurden keine Belohnungen generiert",
"chat-unable_to_register_command_already_registered": "Bereits registrierter Befehl konnte nicht registriert werden: %s", "chat-unable_to_register_command_already_registered": "Bereits registrierter Befehl konnte nicht registriert werden: %s",
"client_request": "[Client-Anfrage] %s", "client_request": "[Client-Anfrage] %s",
"client_request_ip": "[Client-Anfrage] {{ip}} {{url}}", "client_request_ip": "[Client-Anfrage] {{ip}} {{url}}",
@@ -62,6 +62,14 @@
"chat-unable_to_register_command_already_registered": "Αδυναμία καταγραφής ήδη καταχωρημένης εντολής: %s", "chat-unable_to_register_command_already_registered": "Αδυναμία καταγραφής ήδη καταχωρημένης εντολής: %s",
"client_request": "[Αίτημα Πελάτη] %s", "client_request": "[Αίτημα Πελάτη] %s",
"client_request_ip": "[Αίτημα Πελάτη] {{ip}} {{url}}", "client_request_ip": "[Αίτημα Πελάτη] {{ip}} {{url}}",
"websocket_request": "[Αίτηση WebSocket] %s",
"websocket_request_ip": "[Αίτηση WebSocket] {{ip}} {{url}}",
"custom-quest-service_quest_id_already_exists": "Μία αποστολή με την ταυτότητα: {{questId}} υπάρχει ήδη.",
"custom-quest-service_no_languages_for_quest": "Καμία γλώσσα δεν έχει προστεθεί για την εξατομικευμένη αποστολή με ταυτότητα: {{questId}}",
"custom-quest-service_no_entries_for_language": "Δεν έχουν προστεθεί καταχωρίσεις τοπικών ρυθμίσεων για το κλειδί γλώσσας: {{languageKey}}, ήταν σκόπιμο αυτό;",
"custom-quest-service_could_not_find_language_key": "Αδύνατη η εύρεση κλειδιού γλώσσας: {{languageKey}} σε παγκόσμιες γλώσσες κατά την προσθήκη μιας προσαρμοσμένης αποστολής. Αυτό είναι είτε ένα τυπογραφικό λάθος, είτε αυτή η γλώσσα δεν υποστηρίζεται.",
"custom-quest-service_locale_data_null": "Τα δεδομένα τοπικών ρυθμίσεων είναι μηδενικά για τη γλώσσα: {{languageKey}}",
"custom-quest-service_invalid_side": "Ταυτότητα αποστολής: {{questId}} Ο όρος Savage δεν είναι έγκυρος ως δευτερεύων για μια κλειδωμένη δευτερεύουσα αποστολή.",
"customisation-item_already_purchased": "Το Στοιχείο Ένδυσης {{itemId}} {{itemName}} ήδη αγοράστηκε", "customisation-item_already_purchased": "Το Στοιχείο Ένδυσης {{itemId}} {{itemName}} ήδη αγοράστηκε",
"customisation-suit_lacks_upd_or_stack_property": "Το ένδυμα με tpl: %s δε διαθέτει μια ιδιότητα upd αντικειμένου ή stackobjectcount", "customisation-suit_lacks_upd_or_stack_property": "Το ένδυμα με tpl: %s δε διαθέτει μια ιδιότητα upd αντικειμένου ή stackobjectcount",
"customisation-unable_to_find_clothing_item_in_inventory": "Δε βρέθηκε στοιχείο ένδυσης στο απόθεμα του παίκτη με ταυτότητα: %s", "customisation-unable_to_find_clothing_item_in_inventory": "Δε βρέθηκε στοιχείο ένδυσης στο απόθεμα του παίκτη με ταυτότητα: %s",
@@ -215,6 +223,8 @@
"modloader-main_property_not_js": "Η κύρια ιδιότητα του πρόσθετου %s package.json πρέπει να είναι ένα αρχείο .js", "modloader-main_property_not_js": "Η κύρια ιδιότητα του πρόσθετου %s package.json πρέπει να είναι ένα αρχείο .js",
"modloader-main_property_points_to_nothing": "Η κύρια ιδιότητα του πρόσθετου %s package.json πρέπει να παραπέμπει σε μη υπάρχον αρχείο", "modloader-main_property_points_to_nothing": "Η κύρια ιδιότητα του πρόσθετου %s package.json πρέπει να παραπέμπει σε μη υπάρχον αρχείο",
"modloader-missing_dependency": "Το πρόσθετο {{mod}} απαιτεί την εγκατάσταση του {{modDependency}}.", "modloader-missing_dependency": "Το πρόσθετο {{mod}} απαιτεί την εγκατάσταση του {{modDependency}}.",
"modloader-self_dependency": "Η τροποποίηση {{mod}} εξαρτάται από τον εαυτό της, αφαιρέστε την από τη δική σας λίστα εξαρτήσεων",
"modloader-self_incompatibility": "Η τροποποίηση {{mod}} είναι ασυμβίβαστη με την ίδια, αφαιρέστε την από τη δική σας λίστα ασυμβίβαστων",
"modloader-missing_package_json": "Το Πρόσθετο (%s) λείπει το package.json. Βεβαιωθείτε ότι έχετε ελέγξει την κομβική σελίδα πρόσθετων για τις οδηγίες εγκατάστασης", "modloader-missing_package_json": "Το Πρόσθετο (%s) λείπει το package.json. Βεβαιωθείτε ότι έχετε ελέγξει την κομβική σελίδα πρόσθετων για τις οδηγίες εγκατάστασης",
"modloader-missing_package_json_property": "Το πρόσθετο {{modName}} package.json απαιτεί την ιδιότητα {{prop}}", "modloader-missing_package_json_property": "Το πρόσθετο {{modName}} package.json απαιτεί την ιδιότητα {{prop}}",
"modloader-missing_sptversion_field": "Από το πρόσθετο %s λείπει το πεδίο sptVersion, πιθανότατα λόγω έλλειψης ενημέρωσης και μη συμβατότητας με την τρέχουσα έκδοση του SPT", "modloader-missing_sptversion_field": "Από το πρόσθετο %s λείπει το πεδίο sptVersion, πιθανότατα λόγω έλλειψης ενημέρωσης και μη συμβατότητας με την τρέχουσα έκδοση του SPT",
@@ -652,8 +662,10 @@
"repair-unable_to_find_item_repair_cost": "Αδύνατη η εύρεση του κόστους επισκευής για το αντικείμενο: %s", "repair-unable_to_find_item_repair_cost": "Αδύνατη η εύρεση του κόστους επισκευής για το αντικείμενο: %s",
"repair-unable_to_find_trader_details_by_id": "Αδύνατη η εύρεση στοιχείων επισκευής στον έμπορο: %s", "repair-unable_to_find_trader_details_by_id": "Αδύνατη η εύρεση στοιχείων επισκευής στον έμπορο: %s",
"repeatable-accepted_repeatable_quest_not_found_in_active_quests": "Αποδοχή μίας επαναλαμβανόμενης αποστολής: %s που δεν ήταν δυνατό να βρεθεί στον πίνακα των activeQuests. Παρακαλώ να αναφέρετε αυτό το σφάλμα", "repeatable-accepted_repeatable_quest_not_found_in_active_quests": "Αποδοχή μίας επαναλαμβανόμενης αποστολής: %s που δεν ήταν δυνατό να βρεθεί στον πίνακα των activeQuests. Παρακαλώ να αναφέρετε αυτό το σφάλμα",
"repeatable-completion_config_no_template": "Αδυναμία εύρεσης της διαμόρφωσης ολοκλήρωσης για το επίπεδο του pmc: {{pmcLevel}}",
"repeatable-completion_quest_whitelist_too_small_or_blacklist_too_restrictive": "Δημιουργία Ολοκλήρωσης Αποστολής: Δεν υπάρχουν εναπομείναντα αντικείμενα. Είτε η λευκή λίστα είναι πολύ μικρή ή η μαύρη λίστα πολύ περιοριστική", "repeatable-completion_quest_whitelist_too_small_or_blacklist_too_restrictive": "Δημιουργία Ολοκλήρωσης Αποστολής: Δεν υπάρχουν εναπομείναντα αντικείμενα. Είτε η λευκή λίστα είναι πολύ μικρή ή η μαύρη λίστα πολύ περιοριστική",
"repeatable-difficulty_was_nan": "Γέννεση Επαναλαμβανόμενης Ανταμοιβής: Βαθμός δυσκολία ήταν NaN. Ορισμός τιμής στο 1.", "repeatable-difficulty_was_nan": "Γέννεση Επαναλαμβανόμενης Ανταμοιβής: Βαθμός δυσκολία ήταν NaN. Ορισμός τιμής στο 1.",
"repeatable-exploration_config_no_template": "Αδυναμία εύρεσης της διαμόρφωσης εξερεύνησης για το επίπεδο του pmc: {{pmcLevel}}",
"repeatable-no_reward_item_found_in_price_range": "Γέννεση Επαναλαμβανόμενης Ανταμοιβής: Δε βρέθηκε κανένα αντικείμενο στο εύρος τιμών {{minPrice}} στο {{roublesBudget}}", "repeatable-no_reward_item_found_in_price_range": "Γέννεση Επαναλαμβανόμενης Ανταμοιβής: Δε βρέθηκε κανένα αντικείμενο στο εύρος τιμών {{minPrice}} στο {{roublesBudget}}",
"repeatable-quest_handover_failed_condition_already_satisfied": "Σφάλμα παράδοσης αποστολής: είναι η συνθήκη ήδη ικανοποιημένη; qid: {{questId}}, συνθήκη: {{conditionId}}, profileCounter:{{profileCounter}}, τιμή:{{value}}", "repeatable-quest_handover_failed_condition_already_satisfied": "Σφάλμα παράδοσης αποστολής: είναι η συνθήκη ήδη ικανοποιημένη; qid: {{questId}}, συνθήκη: {{conditionId}}, profileCounter:{{profileCounter}}, τιμή:{{value}}",
"repeatable-quest_handover_failed_condition_invalid": "Σφάλμα παράδοσης αποστολής: δε βρέθηκε η συνθήκη ή έχει λανθασμένη τιμή. qid: {{body.qid}}, συνθήκη: {{body.conditionId}}", "repeatable-quest_handover_failed_condition_invalid": "Σφάλμα παράδοσης αποστολής: δε βρέθηκε η συνθήκη ή έχει λανθασμένη τιμή. qid: {{body.qid}}, συνθήκη: {{body.conditionId}}",
@@ -6,6 +6,7 @@
"baseclass-item_not_found_failed": "Tétel %s még mindig nem létezik a tárgyak gyorsítótárjában újgenerálás után", "baseclass-item_not_found_failed": "Tétel %s még mindig nem létezik a tárgyak gyorsítótárjában újgenerálás után",
"baseclass-missing_db_no_cache": "Az adatbázis üres volt, nem lehetett a tételek alapvető gyorsítótárját elkészíteni", "baseclass-missing_db_no_cache": "Az adatbázis üres volt, nem lehetett a tételek alapvető gyorsítótárját elkészíteni",
"bleeding_edge_build": "BLEEDINGEDGE", "bleeding_edge_build": "BLEEDINGEDGE",
"btr-unable_to_find_items_in_dialog_template": "",
"bot-bot_preset_count_value_missing": "Nem sikerült preset count értéket találni a következő bot-hoz: %s, 30-as alapértékre állitva", "bot-bot_preset_count_value_missing": "Nem sikerült preset count értéket találni a következő bot-hoz: %s, 30-as alapértékre állitva",
"bot-compatibility_check_missing_props": "Érvénytelen tétel: {{id}} {{name}} ezen a helyen {{slot}} fel lehet szerelni, hiányzik egy _props érték", "bot-compatibility_check_missing_props": "Érvénytelen tétel: {{id}} {{name}} ezen a helyen {{slot}} fel lehet szerelni, hiányzik egy _props érték",
"bot-generation_failed": "bot generálása sikertelen, lásd a szerver naplót további részletekért", "bot-generation_failed": "bot generálása sikertelen, lásd a szerver naplót további részletekért",
@@ -605,6 +606,7 @@
"release-server-mods-debug-message": "Szerver modok betöltve", "release-server-mods-debug-message": "Szerver modok betöltve",
"release-server-mods-loaded": "Egy vagy több szerver mod található egy modokat engedélyező buildben, a jelentések érvénytelenek lesznek, amíg el nem távolítják őket. A problémák újbóli jelentéséhez tekintsd meg a szerver elején, hogy melyik betöltött modokat kell eltávolítani.", "release-server-mods-loaded": "Egy vagy több szerver mod található egy modokat engedélyező buildben, a jelentések érvénytelenek lesznek, amíg el nem távolítják őket. A problémák újbóli jelentéséhez tekintsd meg a szerver elején, hogy melyik betöltött modokat kell eltávolítani.",
"repair-item_not_found_unable_to_repair": "Tétel: %s nem található a leltárban. Nem lehet megjavítani", "repair-item_not_found_unable_to_repair": "Tétel: %s nem található a leltárban. Nem lehet megjavítani",
"repair-repair_kit_not_found_in_inventory": "",
"repair-unable_to_find_item_in_db": "Nem lehet javítani a tárgyat: %s, nem található az adatbázisban, nem lehet javítási képességpontokat hozzáadni", "repair-unable_to_find_item_in_db": "Nem lehet javítani a tárgyat: %s, nem található az adatbázisban, nem lehet javítási képességpontokat hozzáadni",
"repair-unable_to_find_item_in_inventory_cant_repair": "Nem találja az elemet: %s nem tudja javítani a tárgyat", "repair-unable_to_find_item_in_inventory_cant_repair": "Nem találja az elemet: %s nem tudja javítani a tárgyat",
"repeatable-accepted_repeatable_quest_not_found_in_active_quests": "Elfogadtál egy ismételhető küldetést: %s, amely nem található az activeQuests tömbben. Kérjük, jelentsd ezt a hibát", "repeatable-accepted_repeatable_quest_not_found_in_active_quests": "Elfogadtál egy ismételhető küldetést: %s, amely nem található az activeQuests tömbben. Kérjük, jelentsd ezt a hibát",
@@ -619,6 +621,8 @@
"scav-missing_karma_level_getting_default": "getScavKarmaLevel() sikertelen, nem található Fence a profile.traderInfo-ban. Alapértelmezett 0 karmaszintre állítva", "scav-missing_karma_level_getting_default": "getScavKarmaLevel() sikertelen, nem található Fence a profile.traderInfo-ban. Alapértelmezett 0 karmaszintre állítva",
"scav-missing_karma_settings": "Nem sikerült lekérni a karma beállításokat a %s szint számára", "scav-missing_karma_settings": "Nem sikerült lekérni a karma beállításokat a %s szint számára",
"scheduled_event_failed_to_run": "Az ütemezett esemény: '%s' nem futott le sikeresen.", "scheduled_event_failed_to_run": "Az ütemezett esemény: '%s' nem futott le sikeresen.",
"season-no_matching_season_found_for_date": "Nem található évszak a jelenlegi dátumra, nyárra állítva",
"season-event_is_active": "Esemény: %s aktív",
"seasonal-missing_equipment_slot_on_bot": "Nem lehet eltávolítani a karácsonyi felszerelést a következő helyről: {{equipmentSlot}}, mert nem található a következő boton: {{botRole}}", "seasonal-missing_equipment_slot_on_bot": "Nem lehet eltávolítani a karácsonyi felszerelést a következő helyről: {{equipmentSlot}}, mert nem található a következő boton: {{botRole}}",
"seasonal-missing_loot_container_slot_on_bot": "Nem lehet eltávolítani a karácsonyi zsákmányt a következő helyről: {{lootContainer}}, mert nem található a következő boton: {{botRole}}", "seasonal-missing_loot_container_slot_on_bot": "Nem lehet eltávolítani a karácsonyi zsákmányt a következő helyről: {{lootContainer}}, mert nem található a következő boton: {{botRole}}",
"server_running": "A szerver fut, ne zárd be, amíg az SPT-vel játszol", "server_running": "A szerver fut, ne zárd be, amíg az SPT-vel játszol",
@@ -647,6 +651,7 @@
"server_start_meme_8": "its morbin time", "server_start_meme_8": "its morbin time",
"server_start_meme_9": "S-step scav? M-mit csinálsz?", "server_start_meme_9": "S-step scav? M-mit csinálsz?",
"server_start_player_active_botreload_skill": "A karaktereden aktíválva van a 'BotReload' képesség, ami miatt a fegyvereid természetellenesen gyorsan fognak újratölteni. Ha ez szándékos, hagyd figyelmen kívül ezt az üzenetet", "server_start_player_active_botreload_skill": "A karaktereden aktíválva van a 'BotReload' képesség, ami miatt a fegyvereid természetellenesen gyorsan fognak újratölteni. Ha ez szándékos, hagyd figyelmen kívül ezt az üzenetet",
"server_start_success": "A szerver elindult, jó játékot",
"started_webserver_success": "Webkiszolgáló elindítva itt: %s", "started_webserver_success": "Webkiszolgáló elindítva itt: %s",
"weightedrandomhelper-supplied_data_doesnt_match": "WeightedRandom() {{itemCount}} elemeket és {{weightCount}} súlyokat kapott, nem tudott véletlenszerű súlyt választani.", "weightedrandomhelper-supplied_data_doesnt_match": "WeightedRandom() {{itemCount}} elemeket és {{weightCount}} súlyokat kapott, nem tudott véletlenszerű súlyt választani.",
"trader-missing_durability_threshold_value": "Nem található élettartam küszöbérték a kereskedőhöz: {{traderId}}, visszaállás az alapértelmezett értékre: {{value}}", "trader-missing_durability_threshold_value": "Nem található élettartam küszöbérték a kereskedőhöz: {{traderId}}, visszaállás az alapértelmezett értékre: {{value}}",
@@ -673,6 +678,7 @@
"watermark-discord_url": "https://discord.sp-tarkov.com", "watermark-discord_url": "https://discord.sp-tarkov.com",
"watermark-do_not_report": "NE JELENTSD", "watermark-do_not_report": "NE JELENTSD",
"watermark-free_of_charge": "Ez a munka ingyenes", "watermark-free_of_charge": "Ez a munka ingyenes",
"watermark-issue_tracker_url": "https://github.com/sp-tarkov/server-csharp/",
"watermark-modding_disabled": "Ez a verzió nem támogatja a szerver moddolást", "watermark-modding_disabled": "Ez a verzió nem támogatja a szerver moddolást",
"watermark-no_support": "Nem adunk semmilyen segítséget", "watermark-no_support": "Nem adunk semmilyen segítséget",
"watermark-not_an_issue": "EZ NEM PROBLÉMA", "watermark-not_an_issue": "EZ NEM PROBLÉMA",
@@ -62,6 +62,7 @@
"chat-unable_to_register_command_already_registered": "既に登録されているコマンドは登録できません: %s", "chat-unable_to_register_command_already_registered": "既に登録されているコマンドは登録できません: %s",
"client_request": "[Client Request] %s", "client_request": "[Client Request] %s",
"client_request_ip": "[Client Request] {{ip}} {{url}}", "client_request_ip": "[Client Request] {{ip}} {{url}}",
"custom-quest-service_no_languages_for_quest": "カスタムクエストIDに言語が追加されていません: {{questId}}",
"customisation-item_already_purchased": "アイテム {{itemId}} {{itemName}} は既に購入されています", "customisation-item_already_purchased": "アイテム {{itemId}} {{itemName}} は既に購入されています",
"customisation-suit_lacks_upd_or_stack_property": "衣装のtpl %s に upd object または stackobjectcount のプロパティが見つかりません", "customisation-suit_lacks_upd_or_stack_property": "衣装のtpl %s に upd object または stackobjectcount のプロパティが見つかりません",
"customisation-unable_to_find_clothing_item_in_inventory": "衣装アイテムID: %s の在庫がありません", "customisation-unable_to_find_clothing_item_in_inventory": "衣装アイテムID: %s の在庫がありません",
@@ -62,6 +62,10 @@
"chat-unable_to_register_command_already_registered": "%s 커맨드는 이미 등록되어 있어 재등록 할 수 없습니다", "chat-unable_to_register_command_already_registered": "%s 커맨드는 이미 등록되어 있어 재등록 할 수 없습니다",
"client_request": "[클라이언트 요청] %s", "client_request": "[클라이언트 요청] %s",
"client_request_ip": "클라이언트 요청{{ip}}{{url}}", "client_request_ip": "클라이언트 요청{{ip}}{{url}}",
"websocket_request": "[웹소켓 리퀘스트] %s",
"websocket_request_ip": "[웹소켓 리퀘스트] {{ip}} {{url}}",
"custom-quest-service_quest_id_already_exists": "id 값이 {{questId}} 인 퀘스트가 이미 존재합니다.",
"custom-quest-service_no_languages_for_quest": "id: {{questId}} 인 커스텀 퀘스트에는 추가된 언어가 없습니다",
"customisation-item_already_purchased": "의류 아이템 {{itemId}} {{itemName}} 은(는) 이미 구매했습니다", "customisation-item_already_purchased": "의류 아이템 {{itemId}} {{itemName}} 은(는) 이미 구매했습니다",
"customisation-suit_lacks_upd_or_stack_property": "Suit with tpl: %s가 upd 오브젝트나 stackobjectcount 값이 없습니다", "customisation-suit_lacks_upd_or_stack_property": "Suit with tpl: %s가 upd 오브젝트나 stackobjectcount 값이 없습니다",
"customisation-unable_to_find_clothing_item_in_inventory": "%s 해당 아이디를 가진 옷가지 아이템을 인벤토리에서 찾을 수 없었습니다", "customisation-unable_to_find_clothing_item_in_inventory": "%s 해당 아이디를 가진 옷가지 아이템을 인벤토리에서 찾을 수 없었습니다",
@@ -62,6 +62,7 @@
"chat-unable_to_register_command_already_registered": "Nie można zarejestrować już zarejestrowanej komendy: %s", "chat-unable_to_register_command_already_registered": "Nie można zarejestrować już zarejestrowanej komendy: %s",
"client_request": "[Żądanie klienta] %s", "client_request": "[Żądanie klienta] %s",
"client_request_ip": "[Żądanie klienta] {{ip}} {{url}}", "client_request_ip": "[Żądanie klienta] {{ip}} {{url}}",
"websocket_request_ip": "[Żądanie WebSocket] {{ip}} {{url}}",
"customisation-item_already_purchased": "Element ubioru {{itemId}} {{itemName}} został już zakupiony", "customisation-item_already_purchased": "Element ubioru {{itemId}} {{itemName}} został już zakupiony",
"customisation-suit_lacks_upd_or_stack_property": "Stroju z tpl: %s brakuje obiektu upd lub właściwości stackobjectcount", "customisation-suit_lacks_upd_or_stack_property": "Stroju z tpl: %s brakuje obiektu upd lub właściwości stackobjectcount",
"customisation-unable_to_find_clothing_item_in_inventory": "Przedmiot ubioru nie został znaleziony w ekwipunku z id: %s", "customisation-unable_to_find_clothing_item_in_inventory": "Przedmiot ubioru nie został znaleziony w ekwipunku z id: %s",
@@ -6,6 +6,7 @@
"baseclass-item_not_found_failed": "O item %s não foi encontrado no cache base depois da recuperação", "baseclass-item_not_found_failed": "O item %s não foi encontrado no cache base depois da recuperação",
"baseclass-missing_db_no_cache": "A Base de Dados está vazia, incapaz de gerar um cache base de item", "baseclass-missing_db_no_cache": "A Base de Dados está vazia, incapaz de gerar um cache base de item",
"bleeding_edge_build": "Ainda em desenvolvimento", "bleeding_edge_build": "Ainda em desenvolvimento",
"btr-unable_to_find_items_in_dialog_template": "Não foi Possível encontrar itemsDelivered em dialogueTemplates para o jogador: %s",
"bot-bot-cache_has_zero_bots_of_requested_type": "AVISO - O cache do bot não possui um bot pré-gerado do tipo %s, será necessário gerá-lo. Configure a propriedade de configuração bot.json (presetBatch) para um valor mais alto", "bot-bot-cache_has_zero_bots_of_requested_type": "AVISO - O cache do bot não possui um bot pré-gerado do tipo %s, será necessário gerá-lo. Configure a propriedade de configuração bot.json (presetBatch) para um valor mais alto",
"bot-bot_preset_count_value_missing": "Não foi possível encontrar uma contagem predefinida para gerar para o bot: %s, padrão definido para 30", "bot-bot_preset_count_value_missing": "Não foi possível encontrar uma contagem predefinida para gerar para o bot: %s, padrão definido para 30",
"bot-compatibility_check_missing_props": "Incapaz de validar o item: {{id}} {{name}} no slot: {{slot}} pode ser equipado, está faltando o valor _props", "bot-compatibility_check_missing_props": "Incapaz de validar o item: {{id}} {{name}} no slot: {{slot}} pode ser equipado, está faltando o valor _props",
@@ -56,9 +57,19 @@
"bot-weapon_missing_mod_slot": "Slot: {{modSlot}}' não existe para a arma: {{weaponId}} {{weaponName}} em {{botRole}}", "bot-weapon_missing_mod_slot": "Slot: {{modSlot}}' não existe para a arma: {{weaponId}} {{weaponName}} em {{botRole}}",
"bot-weapons_required_slot_missing_item": "O slot obrigatório '{{modSlot}}' em {{modName}} {{slotId}} estava vazio em {{botRole}}", "bot-weapons_required_slot_missing_item": "O slot obrigatório '{{modSlot}}' em {{modName}} {{slotId}} estava vazio em {{botRole}}",
"build-unable_to_delete_preset": "Não foi possível excluir o preset, não é possível encontrar %s nos presets de arma, equipamento ou carregador", "build-unable_to_delete_preset": "Não foi possível excluir o preset, não é possível encontrar %s nos presets de arma, equipamento ou carregador",
"cultistcircle-unable_to_find_stash_id": "Não foi possível encontrar o ID do estoque do círculo cultista dentro do inventário [HideoutAreaStashes]! Nenhuma recompensa foi gerada",
"cultistcircle-no_matching_threshhold_found": "Não foi possível encontrar o valor limite do círculo cultista correspondente ao valor da rota: ({{rewardAmountRoubles}}), usando o recurso de 12 horas de criação",
"chat-unable_to_register_command_already_registered": "Não foi possível registrar o comando já registrado: %s", "chat-unable_to_register_command_already_registered": "Não foi possível registrar o comando já registrado: %s",
"client_request": "[Client Request] %s", "client_request": "[Client Request] %s",
"client_request_ip": "[Pedido do cliente] {{ip}} {{url}}", "client_request_ip": "[Pedido do cliente] {{ip}} {{url}}",
"websocket_request": "[Solicitação do WebSocket] %s",
"websocket_request_ip": "[Solicitação do WebSocket] {{ip}} {{url}}",
"custom-quest-service_quest_id_already_exists": "Uma missão com o Id: {{questId}} já Existe.",
"custom-quest-service_no_languages_for_quest": "Nenhum idioma foi adicionado a Missão personalizada de Id: {{questId}}",
"custom-quest-service_no_entries_for_language": "Nenhuma Entrada Local foi Adicionada para a chave do Idioma: {{languageKey}}, Isso era Intencional?",
"custom-quest-service_could_not_find_language_key": "Não foi possível encontrar a chave de idioma: {{languageKey}} nos locais globais ao adicionar uma missão personalizada. Este é um erro de digitação ou este idioma não é suportado.",
"custom-quest-service_locale_data_null": "Dados de localidade são nulos para o idioma: {{languageKey}}",
"custom-quest-service_invalid_side": "Id de Missão: {{questId}} Scav não é o lado valido para o lado da Missão Bloqueada.",
"customisation-item_already_purchased": "Item de vestuário {{itemId}} {{itemName}} já comprado", "customisation-item_already_purchased": "Item de vestuário {{itemId}} {{itemName}} já comprado",
"customisation-suit_lacks_upd_or_stack_property": "O traje com tpl: %s não possui um objeto upd ou a propriedade stackobjectcount", "customisation-suit_lacks_upd_or_stack_property": "O traje com tpl: %s não possui um objeto upd ou a propriedade stackobjectcount",
"customisation-unable_to_find_clothing_item_in_inventory": "Item de vestuário não encontrado no inventário com id: %s", "customisation-unable_to_find_clothing_item_in_inventory": "Item de vestuário não encontrado no inventário com id: %s",
@@ -72,6 +83,7 @@
"dialog-chatbot_id_already_exists": "O chatbot: %s já está registrado, impossível registrar o bot novamente", "dialog-chatbot_id_already_exists": "O chatbot: %s já está registrado, impossível registrar o bot novamente",
"dialog-missing_item_template": "Não foi possível localizar o item tpl {{tpl}} no banco de dados, não é possível enviar mensagem do tipo {{type}}, ignorando", "dialog-missing_item_template": "Não foi possível localizar o item tpl {{tpl}} no banco de dados, não é possível enviar mensagem do tipo {{type}}, ignorando",
"dialogue-unable_to_find_dialogs_in_profile": "Objeto de diálogo não encontrado no perfil: {{sessionId}}", "dialogue-unable_to_find_dialogs_in_profile": "Objeto de diálogo não encontrado no perfil: {{sessionId}}",
"dialogue-list_from_client_empty": "Nenhum objeto de diálogo enviado do cliente: {{sessionId}}",
"dialogue-unable_to_find_in_profile": "Nenhum diálogo no perfil: {{sessionId}} encontrado com o ID: {{dialogueId}}", "dialogue-unable_to_find_in_profile": "Nenhum diálogo no perfil: {{sessionId}} encontrado com o ID: {{dialogueId}}",
"event-unhandled_event": "[EVENTO NÃO TRATADO] %s", "event-unhandled_event": "[EVENTO NÃO TRATADO] %s",
"executing_startup_callbacks": "Servidor: executando retornos de chamada de inicialização...", "executing_startup_callbacks": "Servidor: executando retornos de chamada de inicialização...",
@@ -93,6 +105,7 @@
"hideout-missing_recipe_for_area": "Não foi possível encontrar a receita: %s para o tipo de área", "hideout-missing_recipe_for_area": "Não foi possível encontrar a receita: %s para o tipo de área",
"hideout-missing_recipe_in_db": "Falha ao localizar a receita com o _id: %s", "hideout-missing_recipe_in_db": "Falha ao localizar a receita com o _id: %s",
"hideout-no_bitcoins_to_collect": "Nenhum bitcoin está pronto para ser coletado", "hideout-no_bitcoins_to_collect": "Nenhum bitcoin está pronto para ser coletado",
"hideout-bitcoin_craft_missing": "A fabricação da farm de Bitcoin não foi encontrada, incapaz de atualizar o tempo de criação",
"hideout-unable_to_apply_stashsize_bonus_no_stash_found": "Não é possível aplicar o bônus de tamanho do stash, o stash com o ID: %s não foi encontrado no perfil", "hideout-unable_to_apply_stashsize_bonus_no_stash_found": "Não é possível aplicar o bônus de tamanho do stash, o stash com o ID: %s não foi encontrado no perfil",
"hideout-unable_to_find_area": "Não foi possível encontrar o hideout: %s no perfil", "hideout-unable_to_find_area": "Não foi possível encontrar o hideout: %s no perfil",
"hideout-unable_to_find_area_in_database": "Não foi possível localizar a área: %s no banco de dados", "hideout-unable_to_find_area_in_database": "Não foi possível localizar a área: %s no banco de dados",
@@ -149,6 +162,7 @@
"inventory-unable_to_toggle_item_not_found": "Não foi possível alternar o item de inventário com id: %s, item não encontrado", "inventory-unable_to_toggle_item_not_found": "Não foi possível alternar o item de inventário com id: %s, item não encontrado",
"item-durability_value_invalid_use_default": "getRepairableItemQualityValue() para a arma tpl: %s. O valor de durabilidade é inválido, revertendo para 1", "item-durability_value_invalid_use_default": "getRepairableItemQualityValue() para a arma tpl: %s. O valor de durabilidade é inválido, revertendo para 1",
"item-invalid_tpl_item": "Não foi possível encontrar um item com modelo de: %s no banco de dados", "item-invalid_tpl_item": "Não foi possível encontrar um item com modelo de: %s no banco de dados",
"item-helper_no_items_for_barter": "Nenhum item encontrado para a Id de troca: %s",
"launcher-missing_property": "O perfil: %s está sem a propriedade descriptionLocaleKey", "launcher-missing_property": "O perfil: %s está sem a propriedade descriptionLocaleKey",
"launcher-profile-edgeofdarkness": "Igual ao Prepare To Escape plus; tamanho de esconderijo maior (10x68), equipamentos/itens extras, reputação inicial mais alta com comerciantes, 1000 dólares, 500 euros", "launcher-profile-edgeofdarkness": "Igual ao Prepare To Escape plus; tamanho de esconderijo maior (10x68), equipamentos/itens extras, reputação inicial mais alta com comerciantes, 1000 dólares, 500 euros",
"launcher-profile-tournament": "Possui um contêiner seguro de torneio e uma faca ER Fulcrum Bayonet. Flea e Fance bloqueados. Todas as roupas de Ragman desbloqueadas. Envie o código 'TOURNAMENTGIFT' para SPT na lista de amigos para desbloquear todas as funcionalidades do perfil.", "launcher-profile-tournament": "Possui um contêiner seguro de torneio e uma faca ER Fulcrum Bayonet. Flea e Fance bloqueados. Todas as roupas de Ragman desbloqueadas. Envie o código 'TOURNAMENTGIFT' para SPT na lista de amigos para desbloquear todas as funcionalidades do perfil.",
@@ -186,6 +200,8 @@
"loot-default_preset_not_found_using_random": "Preset padrão para a arma: %s não encontrado, escolhendo aleatoriamente uma do mesmo tipo de arma em vez disso", "loot-default_preset_not_found_using_random": "Preset padrão para a arma: %s não encontrado, escolhendo aleatoriamente uma do mesmo tipo de arma em vez disso",
"loot-item_missing_parentid": "Item: %s não possui um valor de parentId, incapaz de usar o item como saque", "loot-item_missing_parentid": "Item: %s não possui um valor de parentId, incapaz de usar o item como saque",
"loot-non_item_picked_as_sealed_weapon_crate_reward": "Arma inválida: %s, foi escolhida como recompensa por uma caixa de arma selada, não é possível criar o loot", "loot-non_item_picked_as_sealed_weapon_crate_reward": "Arma inválida: %s, foi escolhida como recompensa por uma caixa de arma selada, não é possível criar o loot",
"loot-preset_pool_is_empty": "Não foi possível encontrar uma predefinição aleatória no conjunto fornecido, pois ele está vazio. Ignorando",
"loot-chosen_preset_missing_encyclopedia_value": "Predefinição escolhida: %s não possui propriedade de enciclopédia, ignorando",
"mail-unable_to_find_message_sender_by_id": "Não foi possível encontrar o remetente do correio de mensagens com o ID: %s", "mail-unable_to_find_message_sender_by_id": "Não foi possível encontrar o remetente do correio de mensagens com o ID: %s",
"mail-unable_to_give_gift_not_handled": "Não é possível dar presente ao jogador, recompensa: %s não tratada pelo servidor", "mail-unable_to_give_gift_not_handled": "Não é possível dar presente ao jogador, recompensa: %s não tratada pelo servidor",
"mailsend-missing_npc_dialog": "Não foi possível enviar mensagem de: %s para o jogador. Um objeto de diálogo para eles não existe", "mailsend-missing_npc_dialog": "Não foi possível enviar mensagem de: %s para o jogador. Um objeto de diálogo para eles não existe",
@@ -207,6 +223,8 @@
"modloader-main_property_not_js": "O arquivo package.json do mod %s deve ter a propriedade main como um arquivo .js", "modloader-main_property_not_js": "O arquivo package.json do mod %s deve ter a propriedade main como um arquivo .js",
"modloader-main_property_points_to_nothing": "A propriedade principal mod %s package.json aponta para um arquivo inexistente", "modloader-main_property_points_to_nothing": "A propriedade principal mod %s package.json aponta para um arquivo inexistente",
"modloader-missing_dependency": "O mod {{mod}} requer a instalação de {{modDependency}}.", "modloader-missing_dependency": "O mod {{mod}} requer a instalação de {{modDependency}}.",
"modloader-self_dependency": "O Mod: {{mod}} É dependente dele mesmo, por favor remova da sua lista de dependências",
"modloader-self_incompatibility": "O Mod: {{mod}} é incompatível com ele mesmo, remova da sua própria lista de incompatibilidades",
"modloader-missing_package_json": "O Mod (%s) está sem o arquivo package.json. Certifique-se de ter verificado a página de instruções de instalação no hub de mods", "modloader-missing_package_json": "O Mod (%s) está sem o arquivo package.json. Certifique-se de ter verificado a página de instruções de instalação no hub de mods",
"modloader-missing_package_json_property": "Mod {{modName}} package.json requer a propriedade {{prop}}", "modloader-missing_package_json_property": "Mod {{modName}} package.json requer a propriedade {{prop}}",
"modloader-missing_sptversion_field": "O mod %s está sem o campo sptVersion, provavelmente devido a estar desatualizado e incompatível com a versão atual do SPT", "modloader-missing_sptversion_field": "O mod %s está sem o campo sptVersion, provavelmente devido a estar desatualizado e incompatível com a versão atual do SPT",
@@ -644,8 +662,10 @@
"repair-unable_to_find_item_repair_cost": "Não foi possível encontrar o custo de reparo para o item: %s", "repair-unable_to_find_item_repair_cost": "Não foi possível encontrar o custo de reparo para o item: %s",
"repair-unable_to_find_trader_details_by_id": "Não foi possível encontrar os detalhes de reparo do comerciante: %s", "repair-unable_to_find_trader_details_by_id": "Não foi possível encontrar os detalhes de reparo do comerciante: %s",
"repeatable-accepted_repeatable_quest_not_found_in_active_quests": "Aceitou uma missão repetível: %s que não pôde ser encontrada no array de activeQuests. Por favor, relate este bug", "repeatable-accepted_repeatable_quest_not_found_in_active_quests": "Aceitou uma missão repetível: %s que não pôde ser encontrada no array de activeQuests. Por favor, relate este bug",
"repeatable-completion_config_no_template": "Não foi possível encontrar a configuração de conclusão para o nível do pmc: {{pmcLevel}}",
"repeatable-completion_quest_whitelist_too_small_or_blacklist_too_restrictive": "Gerar missão de conclusão: Nenhum item permanece. Ou a lista branca é muito pequena ou a lista negra é muito restritiva", "repeatable-completion_quest_whitelist_too_small_or_blacklist_too_restrictive": "Gerar missão de conclusão: Nenhum item permanece. Ou a lista branca é muito pequena ou a lista negra é muito restritiva",
"repeatable-difficulty_was_nan": "Geração de recompensa repetível: A dificuldade era NaN. Configuração para 1.", "repeatable-difficulty_was_nan": "Geração de recompensa repetível: A dificuldade era NaN. Configuração para 1.",
"repeatable-exploration_config_no_template": "Não foi possível encontrar a configuração de exploração para o nível do pmc: {{pmcLevel}}",
"repeatable-no_reward_item_found_in_price_range": "Geração de recompensa repetível: Nenhum item encontrado na faixa de preço {{minPrice}} a {{roublesBudget}}", "repeatable-no_reward_item_found_in_price_range": "Geração de recompensa repetível: Nenhum item encontrado na faixa de preço {{minPrice}} a {{roublesBudget}}",
"repeatable-quest_handover_failed_condition_already_satisfied": "Erro de entrega de missão: a condição já foi atendida? qid: {{questId}}, condition: {{conditionId}}, profileCounter:{{profileCounter}}, value:{{value}}", "repeatable-quest_handover_failed_condition_already_satisfied": "Erro de entrega de missão: a condição já foi atendida? qid: {{questId}}, condition: {{conditionId}}, profileCounter:{{profileCounter}}, value:{{value}}",
"repeatable-quest_handover_failed_condition_invalid": "Erro de entrega da missão: condição não encontrada ou valor incorreto. qid: {{body.qid}}, condição: {{body.conditionId}}", "repeatable-quest_handover_failed_condition_invalid": "Erro de entrega da missão: condição não encontrada ou valor incorreto. qid: {{body.qid}}, condição: {{body.conditionId}}",
@@ -661,9 +681,18 @@
"repeatable-unable_choose_exit_pool_empty": "Não foi possível escolher uma extração específica para o mapa: %s pois a lista de extrações está vazia", "repeatable-unable_choose_exit_pool_empty": "Não foi possível escolher uma extração específica para o mapa: %s pois a lista de extrações está vazia",
"repeatable-eliminationQuestGenerationData-is-null": "Dados de geração para Eliminação são nulos", "repeatable-eliminationQuestGenerationData-is-null": "Dados de geração para Eliminação são nulos",
"repeatable-no-bot-types-remain": "Nenhuma categoria de bot restante na lista. Pulando a geração de missões de Eliminação", "repeatable-no-bot-types-remain": "Nenhuma categoria de bot restante na lista. Pulando a geração de missões de Eliminação",
"repeatable-unable-targets-are-null": "Não é possível gerar gerador de missões de eliminação, os alvos são nulos",
"repeatable-unable-get-target-pool": "Não foi possível obter targetLocationPool para a categoria de bot: %s", "repeatable-unable-get-target-pool": "Não foi possível obter targetLocationPool para a categoria de bot: %s",
"repeatable-unable-get-location-key": "Não foi possível obter locationKey para a categoria de bot: %s", "repeatable-unable-get-location-key": "Não foi possível obter locationKey para a categoria de bot: %s",
"repeatable-elimination-config-not-found": "Não foi possível encontrar as configurações de Eliminação", "repeatable-elimination-config-not-found": "Não foi possível encontrar as configurações de Eliminação",
"repeatable-elimination-any-not-found": "Não estamos visando um local específico e “qualquer” não foi encontrado nos locais",
"repeatable-elimination-specific-weapon-null": "Categoria específica da Arma permitida são nulas",
"repeatable-quest_helper_template_not_found": "Modelo de missão repetível não encontrado para o tipo: %s",
"repeatable-quest_helper_template_name_not_found": "Não foi possível resolver o nome do modelo para: %s",
"repeatable-quest_helper_no_status": "Nenhum status de missão encontrado para o tipo: %s",
"repeatable-quest_helper_no_loc_id": "Nenhum local encontrado no LocationIdMap para a chave: %s",
"reward-type_not_handled": "Tipo de recompensa: {{rewardType}} não tratada para missão/conquista: {{questId}}",
"reward-unable_to_find_matching_hideout_production": "Não foi possível encontrar desbloqueio de craft do esconderijo para a missão/conquista: {{questId}}, correspondências encontradas: {{matchCount}}",
"route_onupdate_no_response": "onUpdate: A rota %s não relata sucesso ou falha", "route_onupdate_no_response": "onUpdate: A rota %s não relata sucesso ou falha",
"scav-missing_karma_level_getting_default": "getScavKarmaLevel() falhou, não foi possível encontrar o comerciante Fence nas informações do perfil. Padrão para nível de karma 0", "scav-missing_karma_level_getting_default": "getScavKarmaLevel() falhou, não foi possível encontrar o comerciante Fence nas informações do perfil. Padrão para nível de karma 0",
"scav-missing_karma_settings": "Não foi possível obter as configurações de karma para o nível %s", "scav-missing_karma_settings": "Não foi possível obter as configurações de karma para o nível %s",
@@ -701,6 +730,10 @@
"server_start_player_active_botreload_skill": "Seu personagem tem a habilidade 'BotReload' ativa, isso fará com que suas armas recarreguem de maneira anormal mais rápida. Ignore esta mensagem se for intencional", "server_start_player_active_botreload_skill": "Seu personagem tem a habilidade 'BotReload' ativa, isso fará com que suas armas recarreguem de maneira anormal mais rápida. Ignore esta mensagem se for intencional",
"server_start_success": "O servidor iniciou. Bom jogo", "server_start_success": "O servidor iniciou. Bom jogo",
"started_webserver_success": "Iniciado o servidor Web em %s", "started_webserver_success": "Iniciado o servidor Web em %s",
"scavcase-no_cartridges_found_matching_price": "Não é possível obter uma lista de munição que corresponde aos critérios desejados para recompensa da Caixa Scav",
"weightedrandomhelper-supplied_items_empty": "WeightedRandom() recebeu 0 itens, impossível escolher um peso aleatório",
"weightedrandomhelper-supplied_weights_empty": "WeightedRandom() recebeu peso 0, impossível escolher um peso aleatório",
"weightedrandomhelper-supplied_data_doesnt_match": "WeightedRandom() recebeu {{itemCount}} itens e {{weightCount}} pesos, impossível escolher um peso aleatório",
"trader-missing_durability_threshold_value": "Não foi possível encontrar o valor do limite de durabilidade para o negociante: {{traderId}}, retornando ao padrão de: {{value}}", "trader-missing_durability_threshold_value": "Não foi possível encontrar o valor do limite de durabilidade para o negociante: {{traderId}}, retornando ao padrão de: {{value}}",
"trader-missing_repair_property_using_default": "O comerciante {{traderId}} {{nickname}} está sem um objeto de reparo, adicionando os valores padrão", "trader-missing_repair_property_using_default": "O comerciante {{traderId}} {{nickname}} está sem um objeto de reparo, adicionando os valores padrão",
"trader-missing_repair_quality_property_using_default": "Comerciante: {{traderId}} {{nickname}} não possui uma propriedade de qualidade de reparo, adicionando o valor padrão", "trader-missing_repair_quality_property_using_default": "Comerciante: {{traderId}} {{nickname}} não possui uma propriedade de qualidade de reparo, adicionando o valor padrão",
@@ -712,6 +745,8 @@
"trader-unable_to_find_trader_by_id": "Não foi possível encontrar a oferta com o ID: %s", "trader-unable_to_find_trader_by_id": "Não foi possível encontrar a oferta com o ID: %s",
"trader-unable_to_find_trader_in_enum": "Não foi possível encontrar o comerciante: %s no perfil", "trader-unable_to_find_trader_in_enum": "Não foi possível encontrar o comerciante: %s no perfil",
"trader-unable_to_purchase_item_limit_reached": "Não é possível comprar o item do comerciante: {{traderId}} pois o limite de compra de: {{limit}} foi alcançado", "trader-unable_to_purchase_item_limit_reached": "Não é possível comprar o item do comerciante: {{traderId}} pois o limite de compra de: {{limit}} foi alcançado",
"trader-unable_to_find_selltotrader_counter": "Não foi possível encontrar [sellToTrader] contador para: %s Missão no Banco de Dados, contador não será incrementado",
"trader-unable_to_find_inventory_item_for_selltotrader_counter": "Não Foi possível encontrar o Item do Inventário: %s para vender, contador de incremento, ignorado",
"trader-unable_to_add_custom_trader": "Não foi possível adicionar o comerciante personalizado: {{traderId}}, {{stackTrace}}", "trader-unable_to_add_custom_trader": "Não foi possível adicionar o comerciante personalizado: {{traderId}}, {{stackTrace}}",
"unhandled_response": "[NAO_MANIPULADO][%s]", "unhandled_response": "[NAO_MANIPULADO][%s]",
"unknown_request": "Solicitação desconhecida!", "unknown_request": "Solicitação desconhecida!",
@@ -723,6 +758,7 @@
"watermark-discord_url": "https://discord.sp-tarkov.com", "watermark-discord_url": "https://discord.sp-tarkov.com",
"watermark-do_not_report": "NÃO RELATE ISSO", "watermark-do_not_report": "NÃO RELATE ISSO",
"watermark-free_of_charge": "Esse trabalho é gratuito", "watermark-free_of_charge": "Esse trabalho é gratuito",
"watermark-issue_tracker_url": "https://github.com/sp-tarkov/server-csharp/",
"watermark-modding_disabled": "ESTA VERSÃO TEM OS MODS DO SERVIDOR DESATIVADO", "watermark-modding_disabled": "ESTA VERSÃO TEM OS MODS DO SERVIDOR DESATIVADO",
"watermark-no_support": "NÃO SERÁ FORNECIDO NENHUM SUPORTE", "watermark-no_support": "NÃO SERÁ FORNECIDO NENHUM SUPORTE",
"watermark-not_an_issue": "ISSO NÃO É UM PROBLEMA", "watermark-not_an_issue": "ISSO NÃO É UM PROBLEMA",
@@ -662,8 +662,10 @@
"repair-unable_to_find_item_repair_cost": "Не удалось найти стоимость ремонта для предмета: %s", "repair-unable_to_find_item_repair_cost": "Не удалось найти стоимость ремонта для предмета: %s",
"repair-unable_to_find_trader_details_by_id": "Не удается найти данные о ремонте у торговца: %s", "repair-unable_to_find_trader_details_by_id": "Не удается найти данные о ремонте у торговца: %s",
"repeatable-accepted_repeatable_quest_not_found_in_active_quests": "Принят повторяющийся квест: %s, который не удалось найти в массиве activeQuests. Пожалуйста, сообщите об этой ошибке", "repeatable-accepted_repeatable_quest_not_found_in_active_quests": "Принят повторяющийся квест: %s, который не удалось найти в массиве activeQuests. Пожалуйста, сообщите об этой ошибке",
"repeatable-completion_config_no_template": "Не удалось найти конфигурацию оперативного задания Исследование для ЧВК уровня: {{pmcLevel}}",
"repeatable-completion_quest_whitelist_too_small_or_blacklist_too_restrictive": "Создание Завершения Задания: Предметов не осталось. Либо белый список слишком мал, либо черный список слишком ограничен.", "repeatable-completion_quest_whitelist_too_small_or_blacklist_too_restrictive": "Создание Завершения Задания: Предметов не осталось. Либо белый список слишком мал, либо черный список слишком ограничен.",
"repeatable-difficulty_was_nan": "Повторяемая Генерация Вознаграждений: Сложность была NaN. Ставим на 1.", "repeatable-difficulty_was_nan": "Повторяемая Генерация Вознаграждений: Сложность была NaN. Ставим на 1.",
"repeatable-exploration_config_no_template": "Не удалось найти конфигурацию оперативного задания Исследование для ЧВК уровня: {{pmcLevel}}",
"repeatable-no_reward_item_found_in_price_range": "Генерация вознаграждений за оперативные задачи: Не найден предмет в ценовом диапазоне от {{minPrice}} до {{roublesBudget}}", "repeatable-no_reward_item_found_in_price_range": "Генерация вознаграждений за оперативные задачи: Не найден предмет в ценовом диапазоне от {{minPrice}} до {{roublesBudget}}",
"repeatable-quest_handover_failed_condition_already_satisfied": "Ошибка выдачи квеста: условие уже выполнено? qid: {{questId}}, условие: {{conditionId}}, profileCounter:{{profileCounter}}, значение:{{value}}", "repeatable-quest_handover_failed_condition_already_satisfied": "Ошибка выдачи квеста: условие уже выполнено? qid: {{questId}}, условие: {{conditionId}}, profileCounter:{{profileCounter}}, значение:{{value}}",
"repeatable-quest_handover_failed_condition_invalid": "Ошибка передачи задания: условие не найдено или содержит неверное значение. qid: {{body.qid}}, condition: {{body.conditionId}}", "repeatable-quest_handover_failed_condition_invalid": "Ошибка передачи задания: условие не найдено или содержит неверное значение. qid: {{body.qid}}, condition: {{body.conditionId}}",
@@ -20,5 +20,12 @@
"bot-unable_to_find_ammo_item": "Không tìm được mẫu băng đạn với tpl: %s", "bot-unable_to_find_ammo_item": "Không tìm được mẫu băng đạn với tpl: %s",
"bot-unable_to_find_default_magazine_item": "Không tìm được mẫu băng đạn: %s trong cơ sở dữ liệu", "bot-unable_to_find_default_magazine_item": "Không tìm được mẫu băng đạn: %s trong cơ sở dữ liệu",
"bot-unable_to_find_magazine_item": "Không tìm được mẫu băng đạn: %s trong cơ sở dữ liệu", "bot-unable_to_find_magazine_item": "Không tìm được mẫu băng đạn: %s trong cơ sở dữ liệu",
"hideout-unable_to_find_area_in_database": "Không tìm được khu vực: %s trong cơ sở dữ liệu" "hideout-unable_to_find_area_in_database": "Không tìm được khu vực: %s trong cơ sở dữ liệu",
"pmcresponse-suffix_20": ":)",
"pmcresponse-suffix_21": "(:",
"pmcresponse-suffix_22": ":))))))",
"pmcresponse-victim_negative_100": "Tao cá rằng mày tải SAIN và phải xóa nó đi vì mày luôn tục bị giết quá nhiều",
"pmcresponse-victim_negative_19": "1v1 tao thằng mọt sách, tao sẽ thắng",
"pmcresponse-victim_negative_22": "Wow trốn trong góc như một con chuột, tuyệt vời",
"server_start_success": "Máy chủ đã khởi chạy, chúc vui vẻ"
} }
@@ -105,14 +105,23 @@ public class PrestigeHelper(
// Copy transferred items // Copy transferred items
foreach (var transferRequest in prestige.Items ?? []) foreach (var transferRequest in prestige.Items ?? [])
{ {
var item = prePrestigePmc?.Inventory?.Items?.FirstOrDefault(item => item.Id == transferRequest.Id); // Get item with its attached children (if it has any)
if (item is null) var itemWithChildren = prePrestigePmc?.Inventory?.Items?.GetItemWithChildren(transferRequest.Id);
if (itemWithChildren is null)
{ {
logger.Error($"Unable to find item with id: {transferRequest.Id} in profile: {sessionId}, skipping"); logger.Error($"Unable to find item with id: {transferRequest.Id} in profile: {sessionId}, skipping");
continue; continue;
} }
itemsToTransfer.Add(item); // Get root item so we can check its pin/lock state
var rootItem = itemWithChildren.FirstOrDefault(item => item.Id == transferRequest.Id);
if (rootItem.Upd?.PinLockState is PinLockState.Pinned or PinLockState.Locked)
{
// Item has been pinned/locked and needs to be unpinned before sending to player, otherwise they can't transfer item into stash
rootItem.Upd.PinLockState = PinLockState.Free;
}
itemsToTransfer.AddRange(itemWithChildren);
} }
if (itemsToTransfer.Count > 0) if (itemsToTransfer.Count > 0)
@@ -156,6 +165,7 @@ public class PrestigeHelper(
newPmcStats.Eft.CarriedQuestItems = []; newPmcStats.Eft.CarriedQuestItems = [];
newPmcStats.Eft.FoundInRaidItems = []; newPmcStats.Eft.FoundInRaidItems = [];
newPmcStats.Eft.LastSessionDate = 0; newPmcStats.Eft.LastSessionDate = 0;
newPmcStats.Eft.DroppedItems = [];
// TODO: find evidence scav stats are copied over in live // TODO: find evidence scav stats are copied over in live
//var newScavStats = newProfile.CharacterData.ScavData.Stats; //var newScavStats = newProfile.CharacterData.ScavData.Stats;
@@ -177,7 +177,7 @@ public class CreateProfileService(
// Process handling if the account is forced to prestige, or if the account currently has any pending prestiges // Process handling if the account is forced to prestige, or if the account currently has any pending prestiges
if (request.SptForcePrestigeLevel is not null || account.SptData?.PendingPrestige is not null) if (request.SptForcePrestigeLevel is not null || account.SptData?.PendingPrestige is not null)
{ {
var pendingPrestige = account.SptData.PendingPrestige ?? new PendingPrestige { PrestigeLevel = request.SptForcePrestigeLevel }; var pendingPrestige = account.SptData?.PendingPrestige ?? new PendingPrestige { PrestigeLevel = request.SptForcePrestigeLevel };
prestigeHelper.ProcessPendingPrestige(account, profileDetails, pendingPrestige); prestigeHelper.ProcessPendingPrestige(account, profileDetails, pendingPrestige);
} }
@@ -7,6 +7,7 @@ using SPTarkov.Server.Core.Models.Eft.Game;
using SPTarkov.Server.Core.Models.Enums; using SPTarkov.Server.Core.Models.Enums;
using SPTarkov.Server.Core.Models.Spt.Config; using SPTarkov.Server.Core.Models.Spt.Config;
using SPTarkov.Server.Core.Models.Spt.Location; using SPTarkov.Server.Core.Models.Spt.Location;
using SPTarkov.Server.Core.Models.Spt.Logging;
using SPTarkov.Server.Core.Models.Utils; using SPTarkov.Server.Core.Models.Utils;
using SPTarkov.Server.Core.Servers; using SPTarkov.Server.Core.Servers;
using SPTarkov.Server.Core.Utils; using SPTarkov.Server.Core.Utils;
@@ -35,9 +36,12 @@ public class RaidTimeAdjustmentService(
{ {
if (raidAdjustments.DynamicLootPercent < 100 || raidAdjustments.StaticLootPercent < 100) if (raidAdjustments.DynamicLootPercent < 100 || raidAdjustments.StaticLootPercent < 100)
{ {
logger.Debug( if (logger.IsLogEnabled(LogLevel.Debug))
$"Adjusting dynamic loot multipliers to {raidAdjustments.DynamicLootPercent}% and static loot multipliers to {raidAdjustments.StaticLootPercent}% of original" {
); logger.Debug(
$"Adjusting dynamic loot multipliers to: {raidAdjustments.DynamicLootPercent}% and static loot multipliers to: {raidAdjustments.StaticLootPercent}% of original"
);
}
} }
// Change loot multiplier values before they're used below // Change loot multiplier values before they're used below
@@ -60,7 +64,10 @@ public class RaidTimeAdjustmentService(
var exitToChange = mapBase.Exits.FirstOrDefault(exit => exit.Name == exitChange.Name); var exitToChange = mapBase.Exits.FirstOrDefault(exit => exit.Name == exitChange.Name);
if (exitToChange is null) if (exitToChange is null)
{ {
logger.Debug($"Exit with Id: {exitChange.Name} not found, skipping"); if (logger.IsLogEnabled(LogLevel.Debug))
{
logger.Debug($"Exit with Id: {exitChange.Name} not found, skipping");
}
return; return;
} }
@@ -123,10 +130,12 @@ public class RaidTimeAdjustmentService(
wave.TimeMin -= (int)Math.Max(startSeconds, 0); wave.TimeMin -= (int)Math.Max(startSeconds, 0);
wave.TimeMax -= (int)Math.Max(startSeconds, 0); wave.TimeMax -= (int)Math.Max(startSeconds, 0);
} }
if (logger.IsLogEnabled(LogLevel.Debug))
logger.Debug( {
$"Removed: {originalWaveCount - mapBase.Waves.Count} wave from map due to simulated raid start time of {raidAdjustments.SimulatedRaidStartSeconds / 60} minutes" logger.Debug(
); $"Removed: {originalWaveCount - mapBase.Waves.Count} wave from map due to simulated raid start time of: {raidAdjustments.SimulatedRaidStartSeconds / 60} minutes"
);
}
} }
/// <summary> /// <summary>
@@ -170,12 +179,17 @@ public class RaidTimeAdjustmentService(
spawn.Time = (double)Math.Max(spawn.Time.GetValueOrDefault(1) - pmcStartSeconds, 1); spawn.Time = (double)Math.Max(spawn.Time.GetValueOrDefault(1) - pmcStartSeconds, 1);
} }
logger.Debug($"Offset PMC spawns by {pmcStartSeconds} seconds"); if (logger.IsLogEnabled(LogLevel.Debug))
{
logger.Debug($"Offset PMC spawns by: {pmcStartSeconds} seconds");
}
}
if (logger.IsLogEnabled(LogLevel.Debug))
{
logger.Debug(
$"Removed: {originalPmcWaveCount - mapBase.BossLocationSpawn.Count} boss waves from map due to simulated raid start time of: {raidAdjustments.SimulatedRaidStartSeconds / 60} minutes"
);
} }
logger.Debug(
$"Removed: {originalPmcWaveCount - mapBase.BossLocationSpawn.Count} boss waves from map due to simulated raid start time of {raidAdjustments.SimulatedRaidStartSeconds / 60} minutes"
);
} }
/// <summary> /// <summary>
@@ -223,17 +237,17 @@ public class RaidTimeAdjustmentService(
var raidTimeRemainingPercent = 100 - chosenRaidReductionPercent; var raidTimeRemainingPercent = 100 - chosenRaidReductionPercent;
// How many minutes raid will last // How many minutes raid will last
var newRaidTimeMinutes = Math.Floor(randomUtil.ReduceValueByPercent(baseEscapeTimeMinutes ?? 1, chosenRaidReductionPercent)); var newRaidTimeMinutes = Math.Floor(randomUtil.ReduceValueByPercent(baseEscapeTimeMinutes ?? 1d, chosenRaidReductionPercent));
// Time player spawns into the raid if it was online // Time player spawns into the raid if it was online
var simulatedRaidStartTimeMinutes = baseEscapeTimeMinutes - newRaidTimeMinutes; var simulatedRaidStartTimeMinutes = baseEscapeTimeMinutes - newRaidTimeMinutes;
result.SimulatedRaidStartSeconds = simulatedRaidStartTimeMinutes * 60; result.SimulatedRaidStartSeconds = simulatedRaidStartTimeMinutes * 60d;
result.RaidTimeMinutes = newRaidTimeMinutes; result.RaidTimeMinutes = newRaidTimeMinutes;
// Calculate how long player needs to be in raid to get a `survived` extract status // Calculate how long player needs to be in raid to get a `survived` extract status, never falls below 0
result.NewSurviveTimeSeconds = Math.Max( result.NewSurviveTimeSeconds = Math.Max(
result.OriginalSurvivalTimeSeconds.Value - (baseEscapeTimeMinutes.Value - newRaidTimeMinutes) * 60, (result.OriginalSurvivalTimeSeconds - ((baseEscapeTimeMinutes - newRaidTimeMinutes) * 60)) ?? 0d,
0 0d
); );
if (mapSettings.ReduceLootByPercent) if (mapSettings.ReduceLootByPercent)
@@ -242,16 +256,13 @@ public class RaidTimeAdjustmentService(
result.StaticLootPercent = Math.Max(raidTimeRemainingPercent, mapSettings.MinStaticLootPercent); result.StaticLootPercent = Math.Max(raidTimeRemainingPercent, mapSettings.MinStaticLootPercent);
} }
logger.Debug($"Reduced: {request.Location} raid time by: {chosenRaidReductionPercent}% to {newRaidTimeMinutes} minutes"); if (logger.IsLogEnabled(LogLevel.Debug))
{
// Calculate how long player needs to be in raid to get a `survived` extract status logger.Debug($"Reduced: {request.Location} raid time by: {chosenRaidReductionPercent}% to {newRaidTimeMinutes} minutes");
result.NewSurviveTimeSeconds = Math.Max( }
result.OriginalSurvivalTimeSeconds - (baseEscapeTimeMinutes - newRaidTimeMinutes) * 60 ?? 0,
0D
);
var exitAdjustments = GetExitAdjustments(mapBase, newRaidTimeMinutes); var exitAdjustments = GetExitAdjustments(mapBase, newRaidTimeMinutes);
if (exitAdjustments.Any()) if (exitAdjustments.Count != 0)
{ {
result.ExitChanges.AddRange(exitAdjustments); result.ExitChanges.AddRange(exitAdjustments);
} }
@@ -336,9 +347,12 @@ public class RaidTimeAdjustmentService(
{ {
exitChange.Chance = 0; exitChange.Chance = 0;
logger.Debug( if (logger.IsLogEnabled(LogLevel.Debug))
$"Train Exit: {exit.Name} disabled as new raid time {newRaidTimeMinutes} minutes is below {mostPossibleTimeRemainingAfterDeparture} minutes" {
); logger.Debug(
$"Train Exit: {exit.Name} disabled as new raid time: {newRaidTimeMinutes} minutes is below: {mostPossibleTimeRemainingAfterDeparture} minutes"
);
}
result.Add(exitChange); result.Add(exitChange);
@@ -349,7 +363,10 @@ public class RaidTimeAdjustmentService(
exitChange.MinTime = Math.Max(exit.MinTime - reductionSeconds ?? 0, 0); exitChange.MinTime = Math.Max(exit.MinTime - reductionSeconds ?? 0, 0);
exitChange.MaxTime = Math.Max(exit.MaxTime - reductionSeconds ?? 0, 0); exitChange.MaxTime = Math.Max(exit.MaxTime - reductionSeconds ?? 0, 0);
logger.Debug($"Train appears between: {exitChange.MinTime} and {exitChange.MaxTime} seconds raid time"); if (logger.IsLogEnabled(LogLevel.Debug))
{
logger.Debug($"Train appears between: {exitChange.MinTime} and: {exitChange.MaxTime} seconds raid time");
}
result.Add(exitChange); result.Add(exitChange);
} }
+34 -18
View File
@@ -42,38 +42,54 @@ public static class Program
} }
catch (Exception e) catch (Exception e)
{ {
if (e.Message.Contains("could not load file or assembly", StringComparison.InvariantCultureIgnoreCase)) if (
e.Message.Contains(
"could not load file or assembly 'sptarkov.server.core, version=",
StringComparison.InvariantCultureIgnoreCase
)
)
{ {
Console.WriteLine( ShowRedConsoleMessage(
"=========================================================================================================" e,
); "You may have installed a mod that needs a newer version of of SPT installed. Please try updating SPT"
Console.BackgroundColor = ConsoleColor.DarkRed;
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine(
"You may have forgotten to install a requirement for one of your mods, please check the mod page again and install any dependencies listed. Read the below error message CAREFULLY to find the name of the mod you need to install"
);
Console.ResetColor();
Console.WriteLine(e);
Console.WriteLine(
"========================================================================================================="
); );
Console.ReadLine(); Console.ReadLine();
return; return;
} }
Console.WriteLine("========================================================================================================="); if (e.Message.Contains("could not load file or assembly", StringComparison.InvariantCultureIgnoreCase))
Console.WriteLine( {
ShowRedConsoleMessage(
e,
"You may have forgotten to install a requirement for one of your mods, please check the mod page again and install any dependencies listed. Read the below error message CAREFULLY to find the name of the mod you need to install"
);
Console.ReadLine();
return;
}
ShowRedConsoleMessage(
e,
"The server has unexpectedly stopped, reach out to #spt-support in our Discord server. Include a screenshot of this message + the below error" "The server has unexpectedly stopped, reach out to #spt-support in our Discord server. Include a screenshot of this message + the below error"
); );
Console.WriteLine(e);
Console.WriteLine("=========================================================================================================");
Console.WriteLine("Press any key to exit..."); Console.WriteLine("Press any key to exit...");
Console.ReadLine(); Console.ReadLine();
} }
} }
private static void ShowRedConsoleMessage(Exception e, string message)
{
Console.WriteLine("=========================================================================================================");
Console.BackgroundColor = ConsoleColor.DarkRed;
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine(message);
Console.ResetColor();
Console.WriteLine(e);
Console.WriteLine("=========================================================================================================");
}
public static async Task StartServer(string[] args) public static async Task StartServer(string[] args)
{ {
Console.OutputEncoding = Encoding.UTF8; Console.OutputEncoding = Encoding.UTF8;