Factorio-ს სერვერი იმართება slash ბრძანებებით, რომლებსაც ადმინი თამაშში კრეფს, ან სერვერის კონსოლში, რომელსაც ყოველთვის სრული უფლებები აქვს. ადმინები მოდიან server-adminlist.json-იდან ან /promote-იდან; ბანები და whitelist-ის ჩანაწერები საკუთარ JSON ფაილებში იწერება; /config სერვერის პარამეტრებს ცოცხლად ცვლის; ხოლო უფლებების ჯგუფები, რომლებიც /permissions-ით იხსნება, წყვეტს, რისი გაკეთება შეუძლია მოთამაშეების თითოეულ კლასს - და სწორედ ეს არის griefing-ისგან ნამდვილი დაცვა საჯარო რუკაზე. Lua-ს ბრძანებებს /c-ით და /sc-ით თითქმის ყველაფრის გაკეთება შეუძლია, იმ ფასად, რომ ამ save-ზე მიღწევები სამუდამოდ ითიშება. RCON ამ ყველაფერს TCP-ით ხსნის ბოტებისა და სკრიპტებისთვის. ეს სტატია სრული ცნობარია, უფლებების დაყენებითა და Lua-ს ფრაგმენტებით, რომელთა ქონაც ღირს.
საფუძვლები - headless სერვერის დაყენება, server-settings.json, პორტები და autosave-ები - Factorio-ს headless სერვერის გზამკვლევშია. ეს სტატია უფრო ღრმად მიდის იმაში, როგორ მართო სერვერი, როცა ხალხი უკვე მასზეა.
ვინ არის ადმინი და როგორ ხდება#
ადმინის უფლებების ქონის სამი გზა არსებობს:
- სერვერის კონსოლი. ყველაფერი, რაც სერვერის standard input-ში იკრიფება - პანელზე კონსოლის ველი - სრული უფლებებით მუშაობს. ეს ერთადერთი ადგილია, საიდანაც ვერასდროს ჩაგკეტავენ.
- ადმინების სია.
server-adminlist.json, რომელიც--server-adminlist-ით გადაეცემა, factorio.com-ის მომხმარებლის სახელების JSON მასივია. ჩამოთვლილი მოთამაშეები შესვლისთანავე ადმინები არიან. - `/promote`. არსებული ადმინი, ან კონსოლი, მოთამაშეს აწინაურებს. სერვერი მას ადმინების სიის ფაილში წერს, რომ restart-ებს გაუძლოს.
["alice", "bob_builds"]სახელები factorio.com-ის ანგარიშების სახელებია, და მათი ნდობა მხოლოდ მაშინ შეიძლება, თუ server-settings.json-ში require_user_verification არის true. გამორთული ვერიფიკაციით ნებისმიერს შეუძლია დაუკავშირდეს ნებისმიერი სახელით - ადმინისითაც. ჩართული დატოვე.
ნუ დაარედაქტირებ სიის ფაილებს ხელით, სანამ სერვერი მუშაობს. სერვერი მათ თავიდან წერს, როცა /promote-ს, /ban-ს ან /whitelist-ს იყენებ, და შენი რედაქტირება გადაიწერება.
ადმინის ბრძანებების ცნობარი#
ბრძანებები slash-ით იწყება. სერვერის კონსოლშიც slash სავალდებულოა - ტექსტი მის გარეშე ჩატად იგზავნება <server>-ისგან.
მოდერაცია
| ბრძანება | რას აკეთებს |
|---|---|
/kick <player> <reason> | მოთამაშეს თიშავს |
/ban <player> <reason> | ბანავს და წერს server-banlist.json-ში |
/unban <player> | ბანს ხსნის |
/banlist add <player> | ბანების სიას პირდაპირ არედაქტირებს; ასევე remove, get, clear |
/mute <player> | მოთამაშეს ჩატში წერას უკრძალავს |
/unmute <player> | აბრუნებს |
/mutes | ჩამოთვლის დადუმებულ მოთამაშეებს |
/purge <player> | შლის ამ მოთამაშის შეტყობინებებს ჩატის ლოგიდან |
/whitelist add <player> | whitelist-ს არედაქტირებს; ასევე remove, get, clear |
Whitelist-ის ფაილი მხოლოდ მაშინ მოქმედებს, თუ სერვერი --use-server-whitelist-ით გაეშვა. ბანი ანგარიშის სახელზე მუშაობს, ამიტომ დაბანილი მოთამაშე იმავე factorio.com ანგარიშით ვერ დაბრუნდება.
ადმინების მართვა და მოთამაშეები
| ბრძანება | რას აკეთებს |
|---|---|
/promote <player> | მოთამაშეს ადმინად აქცევს |
/demote <player> | ადმინობას ართმევს |
/admins | ჩამოთვლის ადმინებს |
/players | ჩამოთვლის მოთამაშეებს; /players online ან /players count |
/admin | ხსნის ადმინის ფანჯარას: მოთამაშეები, ბანები, whitelist |
/permissions | ხსნის უფლებების ჯგუფების რედაქტორს |
/open <player> | ხსნის სხვა მოთამაშის ინვენტარს |
/swap-players <a> [b] | მოთამაშეებს შორის პერსონაჟებს ცვლის |
/delete-blueprint-library <player> | შლის ოფლაინ მოთამაშის შენახულ blueprint-ების ბიბლიოთეკას |
/admin ის ფანჯარაა, რომელსაც ადმინების უმეტესობა ყოველდღიურად იყენებს: მოთამაშეების სია kick-ის, ბანის, mute-ისა და დაწინაურების ღილაკებით, და ჩანართები ბანების სიისა და whitelist-ისთვის. ბრძანებები იგივეს აკეთებს კონსოლიდან, სადაც ფანჯარა არ არის.
/delete-blueprint-library ერთი კონკრეტული პრობლემისთვისაა: ყოველი მოთამაშის blueprint-ების ბიბლიოთეკა save-ში ინახება, და დიდხანს მომუშავე საჯარო სერვერზე ასობით მოთამაშეს, რომლებიც ერთხელ შემოიარეს, შეუძლია save-ის გაბერვა ბიბლიოთეკებით, რომლებსაც აღარავინ გამოიყენებს. ის მხოლოდ ოფლაინ მოთამაშეებზე მუშაობს.
სერვერი და ინფორმაცია
| ბრძანება | რას აკეთებს |
|---|---|
/server-save | ახლავე ინახავს |
/config get <key> | კითხულობს სერვერის პარამეტრს |
/config set <key> <value> | მაშინვე ცვლის მას |
/time | რამდენ ხანს მუშაობს რუკა |
/seed | რუკის seed |
/evolution | მტრის ევოლუცია და მისი მიზეზები |
/version | თამაშის ვერსია |
/help | ჩამოთვლის ბრძანებებს, ან ერთს დეტალურად აღწერს |
/config-ის გასაღებები დეფისებს იყენებს იქ, სადაც JSON ფაილი ქვედა ტირეებს: max-players, game-password, afk-auto-kick, allow-commands, autosave-interval, max-upload-slots, only-admins-can-pause, visibility-public და დანარჩენი. ასე რომ, /config set game-password new-secret შესვლის პაროლს შემდეგი დამკავშირებლისთვის ცვლის, restart-ის გარეშე. პარამეტრი server-settings.json-ში უკან არ იწერება, ამიტომ ფაილიც განაახლე, თუ ცვლილება უნდა შენარჩუნდეს.
ჩატი
/shout (ან /s) უგზავნის ყველა მოთამაშეს გუნდის მიუხედავად, /whisper <player> (ან /w) პირადად აგზავნის, ხოლო /reply (ან /r) ბოლო ჩურჩულს პასუხობს. ადმინები იმავე ჩატს ხედავენ, რასაც ყველა; პერსონალის დამალული არხი არ არსებობს.
უფლებების ჯგუფები: ნამდვილი anti-grief ხელსაწყო#
ბანები griefer-ს ფაქტის შემდეგ უმკლავდება. უფლებების ჯგუფები ახალ მოთამაშეს ზიანის მიყენებაში თავიდანვე უშლის ხელს. ყოველი მოთამაშე ზუსტად ერთ უფლებების ჯგუფს ეკუთვნის, და ყოველი ჯგუფი ცალკეულ input მოქმედებებს უშვებს ან კრძალავს - შენებას, დაშლას, სხვა მოთამაშეების ინვენტარის გახსნას, blueprint-ების იმპორტს, მატარებლების განრიგების რედაქტირებას და დაახლოებით ორას სხვას.
ნაგულისხმევად ყველა Default-შია, რომელსაც ყველაფერი შეუძლია. საჯარო სერვერის გავრცელებული ნიმუშია Default-ის შეზღუდვა და სანდო ადამიანების გადაყვანა ჯგუფში, რომელიც შეზღუდული არ არის:
| ჯგუფი | ვინ | რა არის აკრძალული |
|---|---|---|
Default | ახალი და უცნობი მოთამაშეები | Deconstruction planner, blueprint-ის იმპორტი, მატარებლებისა და სადენების რედაქტირება |
Trusted | მუდმივი მოთამაშეები | არაფერი, ან მხოლოდ უფლებების რედაქტირება |
| ადმინები | პერსონალი | ადმინები ჯგუფებს /permissions-ით მართავენ |
ამის აწყობის უმარტივესი გზაა /permissions ფანჯარა, რომელიც ყოველ მოქმედებას ჯგუფზე checkbox-ად ჩამოთვლის და მოთამაშეების ჯგუფებს შორის გადათრევის საშუალებას გაძლევს. ეს Lua-ს კონსოლიდანაც შეიძლება, რაც სასარგებლოა ახალი რუკის ყოველ ჯერზე ერთნაირად დასაყენებლად:
/sc local d = game.permissions.get_group("Default")d.set_allows_action(defines.input_action.deconstruct, false)d.set_allows_action(defines.input_action.import_blueprint_string, false)d.set_allows_action(defines.input_action.edit_permission_group, false)local t = game.permissions.create_group("Trusted")t.add_player("alice")defines.input_action-ში სახელები თითოეული მოქმედების შიდა სახელებია, და ისინი დროდადრო თამაშის ვერსიებს შორის იცვლება; Factorio-ს Lua API-ს დოკუმენტაცია მიმდინარე ნაკრებს ჩამოთვლის. create_group-ით შექმნილი ჯგუფი ყველა დაშვებული მოქმედებით იწყება, ამიტომ მხოლოდ აკრძალვა გჭირდება.
პერსონალისა და წესების მართვის უფრო ფართო საკითხისთვის ნახე სერვერის წესები, მოდერაცია და პერსონალი.
Lua-ს ბრძანებები: /c, /sc და /mc#
/c (ან /command) უშვებს Lua-ს ხაზს თამაშის სრულ API-ზე წვდომით. ეს ადმინის ყველაზე ძლიერი ხელსაწყოა და ის, რომელიც ყველაზე ხშირად იწვევს სინანულს.
| პრეფიქსი | ქცევა |
|---|---|
/c <lua> | უშვებს Lua-ს; ბრძანება ყველა მოთამაშეს ეჩვენება |
/sc <lua> | ჩუმი - უშვებს ბრძანების გამოცხადების გარეშე |
/mc <lua> | უშვებს და გეუბნება, რამდენ ხანს გაგრძელდა |
ვის შეუძლია მათი გამოყენება, მართავს allow_commands server-settings.json-ში: true, false ან admins-only. ყველაფერზე, რაც მეგობრებისთვის პრივატული თამაში არ არის, ის admins-only უნდა იყოს.
რამდენიმე ხაზი, რომლის ცოდნაც ღირს, ყველა ნამდვილი API-ს გამოძახებაა:
-- How many players are connected/sc game.print(#game.connected_players)-- Teleport a named player to a position on Nauvis/sc game.get_player("bob_builds").teleport({0, 0}, "nauvis")-- Reveal a 1000x1000 area around the origin for your force/sc game.forces.player.chart("nauvis", {{-500, -500}, {500, 500}})-- Kill all enemy units currently on the map/sc game.forces.enemy.kill_all_units()-- Remove all pollution from a surface/sc game.surfaces["nauvis"].clear_pollution()ერთი ხაფანგი ყველას იჭერს, ვინც სერვერის კონსოლს იყენებს: game.player ნიშნავს მოთამაშეს, რომელმაც ბრძანება აკრიფა. თამაშში ეს შენ ხარ. სერვერის კონსოლში ან RCON-ით ასეთი მოთამაშე არ არსებობს, და game.player არის nil. მის ნაცვლად გამოიყენე game.get_player("name").
/editor ადმინს ადგილზევე რუკის რედაქტორში გადართავს, რაც ისეთივე ძლიერია, როგორც ჟღერს, და მიღწევებსაც თიშავს. /cheat რეცეპტებს ხსნის და cheat რეჟიმს გაძლევს; მისი ოფციები ვერსიებს შორის შეიცვალა, ამიტომ გამოყენებამდე შეამოწმე /help cheat.
RCON: ბრძანებები სკრიპტებიდან და ბოტებიდან#
RCON პროგრამას საშუალებას აძლევს, სერვერს ბრძანებები TCP-ით გაუგზავნოს. ის გაშვების ორი არგუმენტით ირთვება:
$ ./bin/x64/factorio --start-server-load-latest \ --server-settings ./data/server-settings.json \ --rcon-port 27015 --rcon-password "a-long-random-string"--rcon-bind <address:port> მის ნაცვლად კონკრეტულ მისამართზე აბამს. Factorio სტანდარტულ Source RCON პროტოკოლზე მუშაობს, ამიტომ ნებისმიერი RCON კლიენტი მუშაობს - rcon-cli, mcrcon, Discord-ის ბოტების ბიბლიოთეკების უმეტესობა - და ამ სტატიის ყოველი ბრძანება მიიღება.
| პორტი | პროტოკოლი | დანიშნულება |
|---|---|---|
34197 | UDP | თამაშის ტრაფიკი |
27015 (მაგალითი) | TCP | RCON, ნებისმიერი პორტი, რომელსაც აირჩევ |
RCON-ით გაგზავნილი ჩატი თამაშში <server>-ისგან ჩანს. RCON-ით გაგზავნილი Lua-ს ბრძანებები თავიანთ გამოსავალს RCON კლიენტს უბრუნებს, თუ game.print-ის ნაცვლად rcon.print-ს იყენებენ:
/sc rcon.print(#game.connected_players)RCON სრული ადმინის არხია პაროლით და მეტი არაფრით - არც სიჩქარის ლიმიტი, არც მეორე ფაქტორი. გამოიყენე გრძელი შემთხვევითი პაროლი, დაამატე RCON-ის პორტი მხოლოდ მაშინ, თუ რამე ნამდვილად იყენებს, და პაროლი სხვაგან არასდროს გამოიყენო. RE:NODE-ზე დამატებითი პორტები Network ჩანართზე ემატება, ამიტომ RCON-ის პორტი მხოლოდ მაშინ არსებობს, როცა დაამატებ. RCON უსაფრთხოდ ჩავარდნის სცენარებს განიხილავს.
ლოგები: იცოდე, რა მოხდა#
--console-log <file> ჩატსა და სერვერის მოვლენებს ფაილში წერს, ისეთი ნიშნებით, როგორიცაა [JOIN], [LEAVE], [CHAT], [KICK] და [BAN]. ეს ის ჩანაწერია, რომელიც გჭირდება, როცა მოთამაშე ამბობს, რომ უმიზეზოდ გააგდეს, და მასში ძებნა ადვილია.
Griefing-ის გამოძიებისთვის მოქმედებების ლოგირებაც არსებობს. /toggle-action-logging რთავს მოთამაშეების ცალკეული მოქმედებების ლოგს - შენება, მოპოვება, კონტეინერების გახსნა - რომელიც სერვერის ლოგში იწერება. ის მრავალსიტყვიანია, ამიტომ ჩართე, როცა პრობლემა გაქვს, და გამორთე, როცა პასუხი გაქვს. ლოგები, რომელთა შენახვაც ღირს აღწერს, რამდენ ხანს შეინახო ლოგები და რატომ.
პარამეტრები, რომლებიც ადმინის სამუშაოს ზოგავს#
server-settings.json-ის რამდენიმე პარამეტრი, რომელიც ადმინის პრობლემების მთელ კატეგორიებს აშორებს:
| პარამეტრი | რეკომენდებული | რატომ |
|---|---|---|
require_user_verification | true | სახელები ნამდვილი factorio.com ანგარიშებია |
allow_commands | admins-only | ჩვეულებრივი მოთამაშეებისთვის Lua არ არის |
only_admins_can_pause_the_game | true | საჯარო თამაშს პაუზაზე ვერავინ აყენებს |
afk_autokick_interval | 30 | სლოტებს ათავისუფლებს, წუთებში; 0 გამორთულია |
max_players | დააყენე | ადმინებს სავსე სერვერზე შესვლა მაინც შეუძლიათ |
game_password | დააყენე პრივატულ სერვერებზე | /config-ით ცოცხლად შეცვლა ადვილია |
RE:NODE-ზე პარამეტრების ფაილი პირველ ჩართვაზე ადგილზეა სერვერისთვის დაგენერირებული თამაშის პაროლით, კონსოლი ფილტრის გარეშეა, ამიტომ ყოველი ბრძანება და შესვლა მასში ჩანს, ხოლო Schedules ჩანართს შეუძლია cron გამოსახულებით კონსოლის ბრძანებები გააგზავნოს - მაგალითად, /server-save ღამის backup-ის წინ. დაგეგმილი დავალებები, რომლებიც ღირს მეტ ნიმუშს გთავაზობს.
როცა griefer-ი მაინც გაძვრება#
უფლებების ჯგუფები ზიანს ამცირებს; მთლიანად ვერ აცილებს. როცა ვინმე მაინც გაძვრება - მატარებლების ქსელი კედელში გადამისამართებული, ელექტროქსელი გაჭრილი, მთავარი ბუსი აყრილი - გაიარე ეს თანმიმდევრობით, ნაცვლად იმისა, რომ ხელით აასწორო, სანამ დამნაშავე ჯერ კიდევ ონლაინაა.
- შეაჩერე ზიანი.
/ban <player> <reason>კონსოლიდან ან/adminფანჯრიდან. მარტო kick პირდაპირ უკან შემოსვლის საშუალებას აძლევს. - შეაჩერე ბოტები. თუ deconstruction planner გამოიყენა, სამშენებლო ბოტები ბრძანებების შესრულებას მისი წასვლის შემდეგაც გააგრძელებენ. ადმინს შეუძლია მონიშნული დაშლა საკუთარი planner-ით გააუქმოს, ან მთელმა გუნდმა შეიძლება განზე გადგეს, სანამ წყვეტ, დააბრუნო თუ არა უკან.
- აირჩიე შეკეთებასა და rollback-ს შორის. მცირე ზიანის ადგილზე შეკეთება უფრო სწრაფია, განსაკუთრებით დაზიანებული ტერიტორიის blueprint-ებით. ნებისმიერი დიდის გაუქმება უფრო სწრაფია autosave-ის ჩატვირთვით, რომელიც მანამდეა - იმ პატიოსანი პროგრესის ფასად, რაც შუალედში გაკეთდა.
- დააბრუნე უკან სუფთად. გააჩერე სერვერი, დააკოპირე არჩეული
_autosaveფაილი მთავარ save-ზე ან გადაარქვი სახელი, რომ--start-server-load-latest-მა აიღოს, და ხელახლა გაუშვი. ჯერ მოთამაშეებს უთხარი, რადგან მათი ბოლო რამდენიმე წუთი გაქრება. - დახურე ხვრელი. ნახე, რისი გაკეთება შეძლო მოთამაშემ, და აუკრძალე ის ჯგუფს, რომელშიც იყო.
Autosave-ის სლოტები მე-4 ნაბიჯს შესაძლებელს ხდის, და ისინი ბრუნავენ - ნაგულისხმევებით ხუთი სლოტი ათწუთიანი ინტერვალით საათზე ნაკლებს ფარავს. თუ ზიანი ამაზე ადრე მოხდა, ნამდვილი backup გჭირდება სერვერის გარედან. Backup-ები, რომლებიც ნამდვილად აღდგება ხსნის, რატომ ღირს მისი შემოწმება, სანამ დაგჭირდება, და RE:NODE-ზე backup-ის სლოტები ყოველ Factorio-ს გეგმაში შედის და ღილაკით აღდგება.
ასევე შველის იმის ცოდნა, ვინ იყო ონლაინ და როდის. დაყენებული --console-log-ით შესვლისა და გასვლის ხაზები წამებში გაძლევს ქრონოლოგიას, ხოლო მოქმედებების ლოგირება - თუ ჩართული იყო - ზუსტად გეუბნება, ვინ რა დადო ან მოაშორა. ინციდენტის შემდეგ ცოტა ხნით ჩართე, როცა მეორე მცდელობა ყველაზე სავარაუდოა.
პრობლემების მოგვარება#
ბრძანებები კონსოლში არაფერს აკეთებს. Slash აკლია, ან allow_commands არის false. Slash-ის გარეშე ტექსტი ჩატია.
ადმინმა უფლებები დაკარგა. ის ადმინების სიის ფაილში არ არის, ან ვინმემ /demote გამოიყენა. დააწინაურე კონსოლიდან.
`game.player` კონსოლში შეცდომას იძლევა. სერვერის კონსოლთან მოთამაშე არ არის. გამოიყენე game.get_player("name").
Whitelist იგნორირდება. სერვერი --use-server-whitelist-ის გარეშე გაეშვა.
`/config set`-ის ცვლილება restart-ის შემდეგ გაქრა. /config მხოლოდ მომუშავე სერვერს ცვლის. server-settings.json-იც განაახლე.
მიღწევები გაქრა. ვინმემ ამ save-ზე გაუშვა /c, /editor ან /cheat. ამის გაუქმება შეუძლებელია; მანამდე არსებულ ძველ save-ს ისინი ჯერ კიდევ აქვს.
FAQ#
როგორ გავიხადო თავი ადმინად ჩემს Factorio-ს სერვერზე?
აკრიფე /promote yourname სერვერის კონსოლში. კონსოლს ყოველთვის სრული უფლებები აქვს, და სერვერი ადმინების სიის ფაილში ჩაგწერს, რომ შენარჩუნდეს.
თიშავს თუ არა /sc მიღწევებს ისე, როგორც /c?
კი. ნებისმიერი Lua-ს ბრძანება - /c, /sc ან /mc - save-ზე მიღწევებს თიშავს. ჩუმი მხოლოდ იმას ნიშნავს, რომ სხვა მოთამაშეებს არ ეუბნებიან.
შემიძლია ზოგ მოთამაშეს შენების უფლება მივცე, მაგრამ დაშლისა არა?
კი, უფლებების ჯგუფებით. აუკრძალე deconstruct მოქმედება ჯგუფს, რომელშიც ეს მოთამაშეები არიან, და შენება დაშვებული დატოვე. /permissions ყოველ მოქმედებას აჩვენებს.
ბანები სერვერზეა თუ გლობალური?
სერვერზე. ისინი ამ სერვერის ბანების სიის ფაილში ინახება. დააკოპირე ფაილი, რომ ბანების სია შენს სერვერებს შორის გააზიარო.
შეუძლია Discord-ის ბოტს სერვერზე ბრძანებების გაშვება?
კი, RCON-ით, რომელიც ამ სტატიის ყოველ ბრძანებას იღებს. გამოიყენე გრძელი პაროლი და ფრთხილად მიაბი, რადგან RCON-ს ადმინის სრული უფლებები აქვს.




კომენტარები
სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.