RE:NODE

DayZ-ის bikey ფაილები და signature შემოწმება: მოდის გამო kick-ის გასწორება

ავტორი RE:NODE-ის გუნდი
15 წუთის საკითხავი


DayZ-ის მოთამაშეს ჩატვირთვის ეკრანზე signature შეცდომით თუ აგდებს, ეს თითქმის ყოველთვის ერთ რამეს ნიშნავს: მის მიერ ჩატვირთული რომელიღაც მოდი ისეთი გასაღებითაა ხელმოწერილი, რომელიც სერვერის keys საქაღალდეში არ არის. გამოსავალია, რომ ამ მოდის საკუთარი keys საქაღალდიდან .bikey ფაილი გადააკოპირო სერვერის keys საქაღალდეში და სერვერი გადატვირთო. ეს ყოველ ჯერზე გაიმეორე, როცა მოდი განახლდება. ამ გზამკვლევის დანარჩენი ნაწილი განმარტავს, რატომ მუშაობს ეს, როგორ გაიგო რომელ მოდს აკლია გასაღები, რატომ არ სჭირდება გასაღები მხოლოდ სერვერის მოდებს და როგორ არ დაუშვა გასაღებების მოძველება, რომ პრობლემა ყოველი Workshop განახლების შემდეგ არ დაგიბრუნდეს.

ეს პოსტი მხოლოდ გასაღებებსა და signature-ებს ეხება. სერვერის დასაყენებლად, პორტებისა და loot economy-სთვის დაიწყე DayZ სერვერის სრული გზამკვლევით, ხოლო კონფიგურაციის ფაილის თითოეული ხაზისთვის იხილე serverDZ.cfg-ის განმარტება.

რას ამოწმებს რეალურად signature verification#

DayZ-ის კონტენტი მოდის addons საქაღალდეში .pbo ფაილების სახით მოდის - ეს მოდელების, ტექსტურების, კონფიგებისა და სკრიპტების შეფუთული არქივებია. ყოველი .pbo-ს გვერდით დევს .bisign ფაილი: ეს მოდის ავტორის ხელმოწერაა, რომელიც შექმნილია პირადი გასაღებით, ის კი ავტორის მანქანას არასდროს ტოვებს. შესაბამისი საჯარო გასაღები არის .bikey, რომელსაც ავტორი მოდის keys საქაღალდეში აქვეყნებს, რათა სერვერებმა ხელმოწერები შეამოწმონ.

როცა მოთამაშე სერვერს უკავშირდება და verifySignatures = 2 არის დაყენებული, ძრავა კლიენტისგან ითხოვს დაამტკიცოს, რომ მის მიერ ჩატვირთულ ყველა .pbo-ს აქვს ისეთი გასაღების მოქმედი ხელმოწერა, რომელსაც სერვერი ენდობა. "ენდობა" მხოლოდ ერთ რამეს ნიშნავს: ამ სახელისა და შიგთავსის .bikey სერვერის keys საქაღალდეში დევს. თუ რომელიმე ჩატვირთულ .pbo-ს ხელმოწერა არ აქვს, დაზიანებული აქვს ან ისეთი გასაღებითაა ხელმოწერილი, რომელიც სერვერს არ აქვს, მოთამაშეს აგდებს.

სამი ფაილი, სამი დანიშნულება:

ფაილისად დევსრა არის
.pbo@Mod/addons/თავად შეფუთული კონტენტი
.bisign@Mod/addons/, ყოველი .pbo-ს გვერდითავტორის ხელმოწერა ამ ერთი .pbo-სთვის
.bikey@Mod/keys/, შემდეგ კი სერვერის keys/-ში კოპირდებასაჯარო გასაღები, რომელიც ამ ხელმოწერებს ამოწმებს

ხელმოწერის ფაილს სახელი ეწოდება როგორც .pbo-ს, ისე მისი მომწერი გასაღების მიხედვით, ამიტომ მოდის ავტორს, რომლის გასაღებსაც MyMod ჰქვია, ასეთი წყვილები გამოუვა:

code
@MyMod/    addons/        mymod_core.pbo        mymod_core.pbo.MyMod.bisign        mymod_items.pbo        mymod_items.pbo.MyMod.bisign    keys/        MyMod.bikey    meta.cpp    mod.cpp

აქედან მთავარი დასკვნა ისაა, რომ სერვერი ფაილებს საკუთარ ასლს ბაიტ-ბაიტ არ ადარებს. ის ამოწმებს, რომ კლიენტის ფაილები ისეთმა პირმა მოაწერა ხელი, ვისაც სერვერი ენდობა. სწორედ ამიტომ იჭერს სისტემა მოთამაშეს, რომელმაც .pbo შეცვალა, რომ კედლები გამჭვირვალე გახადოს - შეცვლილი ფაილი ხელმოწერას აღარ ემთხვევა - მაგრამ სწორედ ამიტომაც აქვს გასაღებისადმი ნდობას წონა: ამ გასაღებით ხელმოწერილი ნებისმიერი რამ მიიღება.

ასევე მნიშვნელოვანია გვესმოდეს, ვინ აგდებს მოთამაშეს. Signature verification თამაშის ძრავის ნაწილია, ის serverDZ.cfg-ში კონფიგურირდება და მუშაობს იმის მიუხედავად, BattlEye ჩართულია თუ არა. BattlEye ცალკე ანტი-ჩიტ ფენაა, რომელიც გაშვებულ პროცესებსა და მეხსიერებას აკვირდება. მოთამაშეები და ბევრი გზამკვლევი signature kick-ებში BattlEye-ს ადანაშაულებს, რადგან ორივე კავშირის ერთსა და იმავე მომენტში ხდება, მაგრამ BattlEye-ის არც ერთი პარამეტრი დაკარგულ გასაღებს ვერ გამოასწორებს. BattlEye და Easy Anti-Cheat სერვერებზე ამ ზღვარს სხვადასხვა თამაშისთვის ავლებს.

verifySignatures და მის გარშემო არსებული პარამეტრები#

პარამეტრი serverDZ.cfg-ში ერთი ხაზია:

serverDZ.cfg
verifySignatures = 2;allowFilePatching = 0;forceSameBuild = 1;

Bohemia-ის საკუთარი DayZ დოკუმენტაცია 2-ს ერთადერთ მხარდაჭერილ მნიშვნელობად აღწერს. Arma-ს ძველ თამაშებში უფრო სუსტი რეჟიმი 1 იყო, რომელსაც DayZ არ იყენებს, ხოლო 0 შემოწმებას თიშავს. ფორუმებზე გასაღების შეცდომების სწრაფ გამოსწორებად ხანდახან სწორედ 0-ს ურჩევენ. კიდევაც აჩერებს kick-ებს, ისევე როგორც საკეტის მოხსნა გვიცავს გასაღების დაკარგვისგან: ახლა ყველა კლიენტს შეუძლია ნებისმიერი შეცვლილი ფაილი ჩატვირთოს და შენი სერვერი სიამოვნებით მიიღებს მოთამაშეს, რომლის ლოკალური მოდი შეცვლილია ისე, რომ ნივთები კედლებში გამოჩნდეს. დატოვე 2 და გასაღები გამოასწორე.

გვერდით მდგომი ორი პარამეტრი იმავე სურათის ნაწილია:

  • allowFilePatching = 0 უარყოფს იმ კლიენტებს, რომლებიც -filePatching პარამეტრით გაეშვა - ეს პარამეტრი თამაშს საშუალებას აძლევს ხელმოწერილი .pbo ფაილების ნაცვლად დისკიდან ცალკეული გაუხსნელი ფაილები ჩატვირთოს. ასეთ ფაილებს ხელმოწერა არ აქვთ, ამიტომ file patching signature შემოწმებაში პირდაპირი ხვრელია. მისი ჩართვის მიზეზი მხოლოდ ლოკალურად ტესტირებად მოდის დეველოპერს აქვს.
  • forceSameBuild = 1 უარყოფს კლიენტებს, რომლებსაც თამაშის სხვა build აქვთ. ეს ვერსიის შემოწმებაა და არა signature-ის, მაგრამ kick-ებს იმავე მომენტში იწვევს და თამაშის პატჩის შემდეგ ხშირად სწორედ ის არის იმის რეალური მიზეზი, რასაც მოთამაშეები "ისევ ის signature-ის პრობლემა" ეძახიან.

დროის დამზოგავი ერთი მნიშვნელოვანი დეტალი: შემოწმება ეხება იმას, რასაც კლიენტი ტვირთავს და არა იმას, რასაც სერვერი ამუშავებს. სერვერი საკუთარ მოდებს თავისი keys საქაღალდის წინააღმდეგ signature-ების შემოწმების გარეშე კითხულობს. keys საქაღალდე მხოლოდ იმ საჯარო გასაღებების სიაა, რომლებითაც კლიენტის ფაილებს ხელმოწერა დასაშვებია.

keys საქაღალდე#

სერვერის keys საქაღალდე სერვერის ძირეულ საქაღალდეშია, Windows-ზე DayZServer_x64.exe-ს, Linux-ზე კი DayZServer-ს გვერდით და @Mod საქაღალდეების გვერდით. ახალ ინსტალაციაში უკვე არის ერთი ფაილი:

code
keys/    dayz.bikey

dayz.bikey Bohemia-ის საკუთარი გასაღებია, რომელიც საბაზო თამაშის .pbo ფაილებს აწერს ხელს. არასდროს წაშალო. მის გარეშე ყველა კლიენტი ვერ გაივლის ვანილის მონაცემების შემოწმებას და სერვერზე შესვლა შეუძლებელი გახდება, მოდების გარეშეც კი.

კლიენტის მიერ ჩატვირთული ყოველი მოდი ერთ გასაღებს მაინც ამატებს. მოდიფიცირებული სერვერის საქაღალდე ასე გამოიყურება:

code
keys/    dayz.bikey    CF.bikey    Dabs.bikey    Expansion.bikey    VPPAdminTools.bikey    BuilderItems.bikey

სახელებს ავტორი ირჩევს, ამიტომ ისინი ყოველთვის არ ემთხვევა მოდის საქაღალდის სახელს. მოდს @SomeWeaponsPack შეიძლება SWP_v3.bikey ჰქონდეს. ერთი ავტორი, რომელსაც რამდენიმე მოდი აქვს, ხშირად ყველას ერთი გასაღებით აწერს ხელს, ხოლო დიდი მოდი, რომელიც რამდენიმე Workshop ელემენტადაა დაყოფილი, როგორიცაა DayZ Expansion, შეიძლება ყველა ნაწილში ერთსა და იმავე გასაღებს ამარაგებდეს. გასაღების კოპირება, რომელიც უკვე არსებობს, უვნებელია - იგივე ფაილს გადააწერს.

ზოგი მოდი გასაღებს keys-ის ნაცვლად Keys ან key სახელის საქაღალდეში აქვეყნებს. Windows-ზე ამას მნიშვნელობა არ აქვს. Linux სერვერზე გზები რეგისტრის მიმართ მგრძნობიარეა, ამიტომ სკრიპტი, რომელიც მხოლოდ keys/-ში ეძებს, მათ ვერ იპოვის. ფაილს გაფართოებით ეძებე და საქაღალდის სახელს ნუ ენდობი.

მოდის გასაღების დაყენება ეტაპობრივად#

ერთი ახალი კლიენტ-მხარის ან კლიენტისა და სერვერის მოდისთვის თანმიმდევრობა ასეთია:

  1. გააჩერე სერვერი. გასაღებებსა და მოდების სიას სერვერი გაშვებისას კითხულობს.
  2. ჩამოტვირთე მოდი. SteamCMD-ით ეს არის კლიენტის app id, 221100, და არა სერვერისა, 223350. ფაილები აღმოჩნდება steamapps/workshop/content/221100/<workshop id>/-ში.
  3. გადააკოპირე ან დააკავშირე ეს საქაღალდე სერვერის ძირეულ საქაღალდეში წაკითხვადი სახელით, მაგალითად @SomeMod. Workshop საქაღალდეებს რიცხვით ერქმევათ, ხოლო გაშვების ხაზი, რომელიც რიცხვებითაა სავსე, მოუვლელია.
  4. მოდის შიგნიდან ყველა .bikey გადააკოპირე სერვერის keys საქაღალდეში.
  5. დაამატე მოდი -mod=-ში დამოკიდებულების მიხედვით, ჯერ ფრეიმვორკები.
  6. გაუშვი სერვერი, შემდეგ კი თავად შედი DayZ Launcher-ით, სანამ ვინმეს ეტყვი, რომ სერვერი ჩართულია.
bash
$ steamcmd +force_install_dir /home/dayz/server +login <steam_account> \    +workshop_download_item 221100 1559212036 +quit$ cd /home/dayz/server$ cp -r steamapps/workshop/content/221100/1559212036 @CF$ find @CF -iname '*.bikey' -exec cp -v {} keys/ \;

ბევრი მოდის მქონე სერვერზე ყველა გასაღები ერთ გავლაში გადააკოპირე და არა მოდი მოდის მიხედვით. Linux-ზე სერვერის ძირეული საქაღალდიდან:

bash
$ find . -maxdepth 3 -path './@*' -iname '*.bikey' -exec cp -v {} keys/ \;

Windows-ზე, სერვერის საქაღალდიდან PowerShell-ში:

code
Get-ChildItem -Path .\@* -Recurse -Filter *.bikey | Copy-Item -Destination .\keys\

პანელის ჰოსტზე იგივეს ფაილ მენეჯერით ან SFTP-ით აკეთებ: გახსენი თითოეული @Mod/keys/ საქაღალდე, გადააკოპირე ფაილი და ჩასვი სერვერის ძირეულ საქაღალდეში keys/-ში. თითო მოდზე ერთი წუთი სჭირდება და სწორედ ეს წუთი წყვეტს, შეძლებს თუ არა ვინმე შესვლას. SFTP და ფაილ მენეჯერი აღწერს როგორ დაუკავშირდე, ხოლო რამდენიმე მოდზე მეტის სიისთვის უფრო სწრაფია, მოდების ლოკალური ასლიდან ყველა გასაღები ერთი ატვირთვით გადაიტანო keys/-ში, ვიდრე ყოველ საქაღალდეში ხელით შეხვიდე.

ეტაპი, რომელსაც ხალხი ტოვებს, ბოლოა. სერვერი, რომელიც სუფთად ირთვება, მხოლოდ იმას ამტკიცებს, რომ სერვერს თავისი მოდების წაკითხვა შეუძლია. Launcher-ით შესვლა ამტკიცებს, რომ კლიენტი გამოცხადებული მოდების სიით შემოწმებას გადის, და სწორედ ეს არის ის, რაც რეალურად გაინტერესებს.

-mod და -serverMod: რომელ მოდებს სჭირდება გასაღები#

DayZ-ს მოდებისთვის ორი გაშვების პარამეტრი აქვს და განსხვავება წყვეტს, საჭიროა თუ არა გასაღები საერთოდ:

პარამეტრივინ ტვირთავსგასაღები საჭიროა keys/-ში
-mod=სერვერი და ყველა კლიენტიდიახ, სიაში არსებულ ყველა მოდს
-serverMod=მხოლოდ სერვერიარა
code
-mod=@CF;@Dabs Framework;@DayZ-Expansion-Core;@BuilderItems-serverMod=@MyServerTweaks;@LootLogger

-mod=-ში მოხვედრილი მოდები DayZ Launcher-ს ეცნობება, ის კი მოთამაშეებს მათზე ამოწერს და თამაშს შესაბამისი სიით უშვებს. ამ მოდებიდან თითოეული კლიენტზე იტვირთება, ამიტომ თითოეული მოწმდება, ამიტომ თითოეულს სჭირდება თავისი გასაღები სერვერზე.

-serverMod=-ში მოხვედრილი მოდები არასდროს ეცნობება და არასდროს იტვირთება კლიენტების მიერ. რადგან კლიენტებს ისინი არ აქვთ, შესამოწმებელიც არაფერია და მათი გასაღებები keys/-ს გარეთ შეიძლება დარჩეს. სერვერზე მხოლოდ მუშაობადი მოდების ტიპური მაგალითებია სკრიპტით გაკეთებული loot ან economy-ის შესწორებები, ლოგირების ინსტრუმენტები და იმ მოდების სერვერული ნახევარი, რომლებიც ცალკე სერვერის პაკეტს ავრცელებენ. თუ ავტორი ამბობს, რომ მოდი სერვერის მხარისაა, მისი ადგილი აქ არის.

შეცდომები ორივე მიმართულებით ხდება და თითოეული სხვადასხვა სიმპტომს იძლევა:

  • კლიენტის მოდი, რომელიც `-serverMod=`-შია მოთავსებული. სერვერი მას ტვირთავს, მოთამაშეებს კი არასდროს ეღებათ, ამიტომ ყველაფერი, რასაც ის ამატებს, მათთვის უხილავია ან გატეხილი: ნივთები აკლია, ტანსაცმელი შეცდომის ტექსტურად ჩანს, მენიუები არ იხსნება. Signature kick არ არის, რადგან კლიენტი მოდს არ ტვირთავს.
  • მხოლოდ სერვერის მოდი, რომელიც `-mod=`-შია მოთავსებული. ყველა მოთამაშეს აიძულებს მის ჩამოტვირთვას და თუ მას keys-ში გასაღები არ აქვს, ყველა მოთამაშეს აგდებს. ზოგი მხოლოდ სერვერის მოდი საერთოდ ხელმოუწერელია, რადგან მათმა ავტორებმა არ ივარაუდეს, რომ კლიენტი მათ ჩატვირთავდა - რაც შეცდომას ყველასთვის გარანტირებულ kick-ად აქცევს.

მოდები შეიძლება მხოლოდ კლიენტის მხარისაც იყოს: ინტერფეისის შესწორებები, რუკის ზედა ფენები, ხმის ჩანაცვლებები, რომელთა გაშვებაც სერვერს არ სჭირდება. ისინი არც ერთ პარამეტრში არ არის. თუ ერთ-ერთის დაშვება გინდა, მისი .bikey ჩადე keys/-ში და მოთამაშეები, რომლებსაც ის ჩატვირთული აქვთ, შემოწმებას გაივლიან. მოთამაშეები, რომლებსაც ის არ აქვთ, არ შეიცვლებიან. ეს არის არასავალდებულო კლიენტის მოდის დაშვების ერთადერთი სწორი გზა და ამავდროულად მიზეზი, რატომაც ამას ზომიერად უნდა მიმართო: ყოველი დამატებითი გასაღები აფართოებს იმას, რასაც სერვერი იღებს.

მოდების განახლება ყველას გარეთ დატოვების გარეშე#

დამკვიდრებულ სერვერებზე signature kick-ების უმეტესობა მოდის განახლების დღეს ხდება და მიზეზი არის შეუსაბამობა იმას შორის, რაც სერვერს აქვს, და იმას შორის, რასაც launcher მოთამაშეებს აძლევს.

როცა Workshop მოდი განახლდება, მასზე ამოწერილ მოთამაშეებს ახალი ვერსია Steam-ით ავტომატურად ეღებათ. თუ სერვერს ისევ ძველი ვერსია აქვს, ორი რამ შეიძლება გაფუჭდეს:

  • ავტორმა განახლებას ახალი გასაღებით მოაწერა ხელი. ზოგი ავტორი ყოველი რელიზისთვის ახალ გასაღებს ქმნის ან ვერსიის შეცვლის შემდეგ გასაღებს ცვლის. კლიენტზე არსებული ახალი .bisign ფაილები ისეთ გასაღებზე მიუთითებს, რომელიც სერვერს არასდროს უნახავს. განახლებული ყველა მოთამაშე გააგდებს, სანამ ახალი .bikey keys/-ში არ გადაკოპირდება.
  • სერვერისა და კლიენტის ვერსიები შიგთავსით განსხვავდება. ერთი და იგივე გასაღების შემთხვევაშიც კი, სერვერი, რომელზეც უფრო ძველი ვერსიაა, და კლიენტები, რომლებზეც უფრო ახალია, კლასებსა და მონაცემებზე არ თანხმდებიან, რაც შესვლისას kick-ებად, ნივთების ნაკლებობად ან crash-ებად ვლინდება.

რუტინა, რომელიც ორივეს ასცდენს:

  1. გააჩერე სერვერი.
  2. განაახლე სერვერზე ყველა მოდი Workshop-ის მიმდინარე ვერსიამდე და არა მხოლოდ ის, რომელზეც გაიგე. SteamCMD-ით ეს არის workshop_download_item ყოველი id-სთვის ხელახლა, ხოლო თუ ჩამოტვირთვა არასრულია, დაამატე validate.
  3. მოდების საქაღალდეები ძველებზე გადააკოპირე სერვერის ძირეულ საქაღალდეში.
  4. ყველა .bikey ხელახლა გადააკოპირე, ყველა მოდიდან, ზემოთ მოცემული ერთგავლიანი ბრძანებით.
  5. გაუშვი სერვერი, წაიკითხე ლოგის დასაწყისი შეცდომებისთვის და თავად შედი launcher-ით.

ნაბიჯი 4 არის ჩვევა, რომელიც უნდა გამოიმუშავო: ყველა გასაღები გადააკოპირე ნებისმიერი განახლების შემდეგ, იმის მიუხედავად, გჯერა თუ არა, რომ გასაღები შეიცვალა. ამას წამები სჭირდება და აღმოფხვრის იმ ყველაზე გავრცელებულ მიზეზს, რის გამოც სერვერზე საღამო მთელი ვერავინ შედის.

ძველი გასაღებები გროვდება, რადგან ავტორები მათ ცვლიან. მოძველებული გასაღები შესვლას არ აზიანებს, მაგრამ ნიშნავს, რომ სერვერი ისევ ენდობა იმ გასაღებით შექმნილ ხელმოწერებს, რომელიც ავტორს შესაძლოა უკვე გაუქმებული აქვს - იშვიათ შემთხვევებში იმიტომ, რომ გაჟონა. წელიწადში ერთხელ ან ორჯერ საქაღალდე dayz.bikey-მდე გაასუფთავე, ყველა მიმდინარე გასაღები ისევ გადააკოპირე და ზუსტად ის ნაკრები დაგრჩება, რაც გჭირდება.

მეორე ნაწილი ისაა, რომ განახლება ცუდ მომენტში არ გააკეთო. DayZ-ის თამაშის პატჩმა შეიძლება მოდები გააფუჭოს, სანამ მათი ავტორები ხელახლა არ ააწყობენ, ხოლო პატჩის დღეს launcher მოთამაშეებს მოდების ახალ ვერსიებს ისე სწრაფად აწვდის, როგორც ავტორები აქვეყნებენ. სერვერის განახლება ავტორებზე რამდენიმე საათის შემდეგ, როცა მოდების სია დაწყნარდება, სჯობს განახლებას იმ წუთში, როცა თამაში პატჩდება. რა უნდა გააკეთო, როცა მოდის განახლება აფუჭებს შეიცავს rollback რუტინას, ხოლო Steam Workshop მოდები dedicated სერვერებზე განმარტავს, როგორ იქცევა Workshop ჩამოტვირთვები სერვერის მხარეს სხვადასხვა თამაშში.

.pbo, .bisign, .bikeylauncher-ით ჩამოტვირთვაადმინი აკოპირებს .bikey-სconnectხელმომწერს ენდობა?მოდის ავტორიაწერს .pbo-ებს ხელსSteam Workshop@Mod და keys/მოთამაშის თამაშიტვირთავს .pbo + .bisignDayZ სერვერიverifySignatures 2keys/ საქაღალდე.bikey ფაილები
რა ემართება ხელმოწერილ მოდს მოთამაშის შესვლისას

signature kick-ის დიაგნოსტიკა#

შეტყობინება მოთამაშის ეკრანზე მოკლეა და მისი ფორმულირება ვერსიებს შორის შეიცვალა, მაგრამ ჩვეულებრივ signature შემოწმებას, შეცვლილ მონაცემებს ან კონკრეტულ ფაილს ახსენებს. სასარგებლო დეტალია ფაილის სახელი, როცა ნაჩვენებია: .pbo-ს სახელი პირდაპირ იმ მოდზე მიუთითებს, რომელიც ვერ გავიდა.

გაიარე ამ თანმიმდევრობით:

  1. ყველას აგდებს თუ ერთ მოთამაშეს? თუ ყველა მოთამაშეს აგდებს, სერვერს გასაღები აკლია ან მხოლოდ სერვერის მოდი -mod=-ში აღმოჩნდა. თუ მხოლოდ ერთ მოთამაშეს აგდებს, პრობლემა მისი ლოკალური ფაილებია.
  2. წაიკითხე სერვერის ლოგი. Kick იწერება .RPT ფაილსა და კონსოლის ლოგში profiles საქაღალდეში იმავე მომენტში, ჩვეულებრივ მოთამაშის და ფაილის ან მიზეზის დასახელებით. მოძებნე მოთამაშის სახელი იმ დროის ახლოს, როცა შესვლას ცდილობდა.
  3. იპოვე მოდი. .pbo-ს სახელი მოდის საქაღალდეს შეუსაბამე: ეს ფაილი მოძებნე ყველა @Mod/addons/ საქაღალდეში.
  4. შეამოწმე მისი გასაღები. გახსენი ამ მოდის keys საქაღალდე, დაიმახსოვრე .bikey-ს სახელი და დარწმუნდი, რომ იგივე ფაილი სერვერის keys/-შიცაა. თუ ამ სახელის ფაილი იქ არის, მაგრამ მოდი ახლახან განახლდა, მაინც გადააკოპირე - შეცვლილ გასაღებს ერთი და იგივე სახელი შეიძლება ჰქონდეს.
  5. შეამოწმე ვერსია. შეადარე Workshop-ზე მოდის ბოლო განახლების დრო იმას, როდის განახლდა სერვერზე არსებული ასლი. თუ Workshop უფრო ახალია, სერვერი განაახლე.

ერთი მოთამაშისთვის გამოსწორება მის მანქანაზეა:

  • DayZ Launcher-ში გახსნას მოდების სია, უარი თქვას გაუმართავ მოდზე და თავიდან ამოიწეროს, ან გამოიყენოს launcher-ის repair ვარიანტი. Steam-ის თამაშის თვისებებით კი არა, launcher-ით შემოწმება უზრუნველყოფს, რომ მოდებიც შემოწმდეს.
  • დარწმუნდეს, რომ არ აქვს ლოკალური შეცვლილი მოდი ან დამატებითი კლიენტის მოდები, რომელთა გასაღებებიც სერვერს არ აქვს. მოთამაშეებს, რომლებიც რამდენიმე სერვერზე თამაშობენ, ხშირად აქვთ ჩატვირთული მოდების გროვა, რომელიც შენს სერვერს არასდროს მოუთხოვია.
  • თუ მან სხვა სერვერისთვის ან მოდინგის გაკვეთილის გამო გაშვების პარამეტრებში -filePatching დაამატა, წაშალოს.

თუ ამ ყველაფერმა ვერაფერი აჩვენა, გაუშვი სერვერი მხოლოდ @CF-ით ან საერთოდ მოდების გარეშე და შედი. თუ ვანილა მუშაობს, მოდები ჯგუფებად დაამატე, სანამ kick არ დაბრუნდება. ეს ნელია, მაგრამ ყოველთვის სახელით მთავრდება.

საკუთარი repack-ების ხელმოწერა#

სერვერის მფლობელები ხანდახან მოდს ცვლიან - .pbo-ს შიგნით კონფიგს ასწორებენ, პატარა მოდებს აერთიანებენ ან ნივთს ახალ ტექსტურას უცვლიან. იმ წამს, როცა .pbo-ს თავიდან ფუთავ, მისი ორიგინალი .bisign აღარ ემთხვევა და შენი ვერსიის მტვირთავ ყველა კლიენტს აგდებს. გამოსავალია, რომ ხელი თავად მოაწერო, სწორედ ამისთვისაა სისტემა შექმნილი.

DayZ Tools, რომელიც Steam-ზე უფასოა, ამისთვის DS უტილიტებს შეიცავს: DSCreateKey გასაღებების წყვილს ქმნის, DSSignFile კი .pbo-ს პირადი ნახევრით აწერს ხელს. DayZ Tools-ის Addon Builder-საც შეუძლია შეფუთვისას ხელმოწერა, თუ პირად გასაღებს მიუთითებ. წყვილი შედგება .biprivatekey-სგან, რომელიც აწერს ხელს, და .bikey-სგან, რომელსაც ავრცელებ.

  • შენი .bikey ჩადე სერვერის keys/ საქაღალდეში და შენი repack-ის საკუთარ keys/ საქაღალდეში.
  • .biprivatekey არასდროს გაუზიარო და არ ატვირთო. ვისაც ის აქვს, შეუძლია ისეთი ფაილები მოაწეროს ხელი, რომლებსაც შენი სერვერი მიიღებს.
  • პატივი ეცი ორიგინალი ავტორის პირობებს. ბევრი მოდი repack-ს პირდაპირ კრძალავს, ხოლო სხვისი ნამუშევრის შენი გასაღებით ხელახლა ხელმოწერილად გამოქვეყნება ის გზაა, რომლითაც სერვერებს Workshop ელემენტებს უშლიან.

უმეტესი სერვერისთვის უკეთესი გზაა, საერთოდ არ გააკეთო repack: ქცევა შეცვალე mission ფაილებით, მოდის საკუთარი კონფიგით profiles საქაღალდეში ან პატარა სერვერული მოდით -serverMod=-ში, რომელსაც გასაღები საერთოდ არ სჭირდება. DayZ Expansion სერვერის გზამკვლევი გვიჩვენებს, რამდენად შორს მიხვალ ამ გზით ერთ-ერთ უდიდეს მოდთან.

გასაღებები RE:NODE-ზე#

RE:NODE-ის DayZ სერვერზე keys საქაღალდე და ყველა @Mod საქაღალდე ხელმისაწვდომია პანელის ფაილ მენეჯერით და SFTP-ით, თითო სერვერის საკუთარი მონაცემებით. ფაილ მენეჯერი არქივებს ადგილზე ხსნის, ამიტომ zip-ად ატვირთული მოდი შეიძლება პირდაპირ სერვერის ძირეულ საქაღალდეში გაიხსნას, სანამ მის გასაღებს გადააკოპირებ. მოდების სია გაშვების პარამეტრებშია, Startup ჩანართზე. ნებადართული მოდების ვაითლისტი არ არსებობს - ატვირთავ იმას, რასაც აირჩევ და თავადვე ირჩევ, რომელ გასაღებებს ენდობი.

მოდის განახლებამდე პანელიდან backup გააკეთე. Backup სლოტები DayZ-ის ყველა გეგმაზეა, backup-ის აღდგენა ღილაკით შეიძლება და წინა მდგომარეობის აღდგენა განახლების გაუმართაობიდან გამოსვლის ყველაზე სწრაფი გზაა. თავად DayZ-ის ინსტალაციას სჭირდება შენი საკუთარი Steam login, რომელიც სერვერის შექმნის შემდეგ Setup ჩანართზე შეჰყავს, ისევე როგორც ნებისმიერ ჰოსტთან, რომელიც DayZ-ს გიდგამს.

FAQ#

სად ჩავდო DayZ-ის .bikey ფაილი?

სერვერის ძირეულ საქაღალდეში keys საქაღალდეში, სერვერის შესრულებადი ფაილისა და @Mod საქაღალდეების გვერდით - არა მოდის შიგნით და არა profiles საქაღალდეში. -mod=-ში ჩამოთვლილ ყველა მოდს მისი გასაღები იქ სჭირდება. გასაღებების დამატების შემდეგ სერვერი გადატვირთე.

შეიძლება verifySignatures 0-ზე დავაყენო, რომ kick-ები შეწყდეს?

შეგიძლია და შეწყვეტს, მაგრამ ამავდროულად სერვერი შეცვლილ ფაილებს აღარ უარყოფს, ამიტომ ნებისმიერ მოთამაშეს შეუძლია შეცვლილი .pbo ჩატვირთოს, რომელიც ნივთებს კედლებში აჩვენებს ან recoil-ს აშორებს. დაკარგული გასაღების გამოსწორებას წუთი სჭირდება და დაცვას ინარჩუნებს.

სჭირდება თუ არა სერვერის მხარის მოდებს bikey?

არა. -serverMod=-ით ჩატვირთულ მოდებს კლიენტები არასდროს ტვირთავენ, ამიტომ მათ მიმართ არაფერი მოწმდება. გასაღებები მხოლოდ იმისთვისაა, რასაც კლიენტები ტვირთავენ: -mod=-ში არსებული ყველაფერი და ნებისმიერი არასავალდებულო მხოლოდ კლიენტის მოდი, რომლის დაშვებასაც გადაწყვეტ.

რატომ გაფუჭდა სერვერი მოდის განახლების შემდეგ, როცა სხვა არაფერი შეცვლილა?

მოდის ავტორმა ახალ ვერსიას, სავარაუდოდ, ახალი გასაღებით მოაწერა ხელი, ამიტომ მოთამაშეებს, რომლებმაც განახლება launcher-ით მიიღეს, ახლა ისეთი ხელმოწერები აქვთ, რომელთა შემოწმებაც სერვერს არ შეუძლია. განაახლე მოდი სერვერზე და ყველა გასაღები ისევ გადააკოპირე.

რატომ აგდებს მხოლოდ ერთ მოთამაშეს?

მათი ლოკალური ასლი განსხვავდება: დაზიანებული ან მოძველებული ჩამოტვირთვა, მათ მიერ შეცვლილი მოდი, დამატებითი კლიენტის მოდი, რომლისთვისაც შენს სერვერს გასაღები არ აქვს, ან -filePatching მათ გაშვების პარამეტრებში. სთხოვე, DayZ Launcher-ით repair გააკეთოს ან თავიდან ამოიწეროს.

შემიძლია dayz.bikey წავშალო?

არა. ეს საბაზო თამაშის საკუთარი ფაილების გასაღებია. მის გარეშე ყველა კლიენტი ვერ გაივლის signature შემოწმებას ვანილის მონაცემებზე და ვერავინ შეძლებს შესვლას, მოდიფიცირებულზეც და არამოდიფიცირებულზეც.

გამოგადგათ?