OpenMod Unturned-ის ორი plugin framework-იდან უფრო ახალია. ის თამაშის გვერდით მოდულად ყენდება, თავის ფაილებს სერვერის instance-ის შიგნით OpenMod საქაღალდეში ინახავს, plugin-ებს NuGet პაკეტებად აყენებს openmod install <PackageId>-ით და მართავს, ვის რისი გაშვება შეუძლია, ორი YAML ფაილით: openmod.roles.yaml და openmod.users.yaml. ის RocketMod-ს არ ცვლის. ის მის გვერდით სამუშაოდაა დაპროექტებული, Rocket-ის plugin-ების ჩატვირთვა თავსებადობის ფენით შეუძლია და Rocket-ის უფლებების მონაცემების გაზიარებაც. არჩევის პრაქტიკული წესი: Unturned-ის არსებული plugin-ების უმეტესობა RocketMod-ისთვის ქვეყნდება, ამიტომ იქიდან დაიწყე, OpenMod კი დაამატე, როცა სასურველი plugin მხოლოდ მისთვის ქვეყნდება ან საკუთარს წერ.
ეს გზამკვლევი ხსნის, რით განსხვავდება ორი framework, OpenMod-ის დაყენებას სერვერზე, რომელსაც უკვე აქვს Rocket, plugin-ების დაყენებას, უფლებების სისტემას დეტალურად, როგორ მუშაობს Rocket-ის ხიდი და გაუმართაობებს, რომლებსაც შეხვდები. Rocket-ის მხარე განხილულია Unturned-ის Commands.dat-სა და RocketMod plugin-ებში.
OpenMod და RocketMod შედარებით#
| RocketMod (LDM) | OpenMod | |
|---|---|---|
| საიდან მოდის | სერვერს მოყვება Extras-ში, თამაშთან ერთად ივლება | ცალკე პროექტი, მისი გამოშვებებიდან ყენდება |
| plugin-ის ფორმატი | DLL-ები Rocket/Plugins/-ში | NuGet პაკეტები, ან DLL-ები OpenMod/plugins/-ში |
| კონფიგურაცია | XML | YAML |
| უფლებები | ჯგუფები Permissions.config.xml-ში | როლები და მომხმარებლები YAML ფაილებში |
| plugin-ების კატალოგი | დიდი, წლების plugin-ები | უფრო პატარა |
| დიზაინი | მარტივი, სინქრონული | თანამედროვე .NET: dependency injection, async, საერთო სერვისები |
ამ შედარებისთვის RocketMod-ის ისტორიას მნიშვნელობა აქვს: თავდაპირველი პროექტი დაარქივდა, და ვერსია, რომელსაც დღეს იღებ, არის Legally Distinct Missile, რომელსაც Smartly Dressed Games უვლის და გამოყოფილ სერვერთან ერთად აწვდის. ის სტაბილურია და თითქმის ყველა plugin მას ემიზნება.
OpenMod Rocket-ის ერთ-ერთმა თავდაპირველმა მომვლელმა დაწერა თანამედროვე .NET პრაქტიკით: plugin-ები პაკეტებია გამოცხადებული დამოკიდებულებებით, სერვისები, როგორიცაა ეკონომიკა ან უფლებები, ინტერფეისებით იზიარება, ნაცვლად იმისა, რომ ყოველი plugin საკუთარს აწყობდეს, კონფიგურაცია კი YAML-ია. plugin-ის ავტორისთვის ეს უფრო სასიამოვნო პლატფორმაა. სერვერის მფლობელისთვის მნიშვნელოვანია, რომ სასურველი plugin მისთვის არსებობდეს და მისი დამოკიდებულებები გადაწყდეს.
ორივეს გაშვება ნორმალურია. ტიპური სერვერი Rocket-ს იყენებს დამკვიდრებული plugin-ების დიდი კატალოგისთვის, OpenMod-ს კი რამდენიმესთვის, რომლებიც მხოლოდ იქ ქვეყნდება.
OpenMod-ის დაყენება#
RE:NODE-ზე Unturned-ის სერვერებს RocketMod უკვე Modules საქაღალდეში მოყვება, ამიტომ OpenMod-ს ყოველთვის Rocket-ის გვერდით აყენებ და არა მის ნაცვლად. ორი გზა არსებობს.
installer plugin
ყველაზე მარტივი პატარა Rocket plugin-ია, რომელიც OpenMod-ს შენთვის აყენებს.
- გააჩერე სერვერი და instance საქაღალდის backup გააკეთე.
- ჩამოტვირთე OpenMod-ის installer plugin RocketMod-ისთვის OpenMod პროექტის გამოშვებებიდან და DLL ჩადე
Servers/<ServerID>/Rocket/Plugins/-ში. - გაუშვი სერვერი და დაელოდე, სანამ Rocket installer-ს ჩატვირთავს.
- კონსოლში გაუშვი
openmod installდა გამონატანს მიჰყევი. - გადატვირთე, როცა გეტყვის.
ხელით დაყენება
- გააჩერე სერვერი და გააკეთე backup.
- ჩამოტვირთე Unturned-ის მოდული OpenMod პროექტის გამოშვებებიდან.
- გახსენი ისე, რომ მისი მოდულის საქაღალდე პირდაპირ სერვერის
Modulesდირექტორიაში იდოს,Rocket.Unturned-ის გვერდით. - გაუშვი სერვერი.
U3DS/ Modules/ Rocket.Unturned/ OpenMod.Unturned/ Servers/ MyServer/ Rocket/ OpenMod/დაყენების შემდეგ პირველი გაშვება ნელია. OpenMod თავის კომპონენტებს NuGet პაკეტებად ჩამოტვირთავს, რასაც სერვერიდან გამავალი ინტერნეტი სჭირდება და პირველ გაშვებაზე დიდ დროს იკავებს. საათის ნაცვლად კონსოლს უყურე, და როცა დაწყნარდება, გაუშვი modules, რომ დარწმუნდე, რომ ორივე მოდული ჩატვირთულია.
რას შეიცავს OpenMod საქაღალდე#
პირველი გაშვების შემდეგ OpenMod instance-ში თავის სამუშაო საქაღალდეს ქმნის:
Servers/MyServer/OpenMod/ openmod.yaml core settings openmod.unturned.yaml Unturned-specific settings, including the Rocket bridge openmod.roles.yaml roles and their permissions openmod.users.yaml players, their roles and personal permissions logging.yaml log levels and outputs packages/ NuGet packages, including installed plugins plugins/ plugin DLLs added by hand, and each plugin's config logs/ OpenMod's own logsფაილების ზუსტი ნაკრები ყოველ გამოშვებასთან ოდნავ იზრდება. ორი ჩვევა მას სამართავს ხდის: არედაქტირე მხოლოდ გაჩერებული სერვერით ან შემდეგ გადატვირთე კონფიგურაცია, და ეს საქაღალდე შენს backup-ებში შეინახე - ის ყოველ შენ მიერ მინიჭებულ უფლებას ინახავს.
plugin-ების დაყენება#
OpenMod-ის plugin-ები ჩვეულებრივ NuGet პაკეტებად ქვეყნდება, კონსოლი კი მათ პაკეტის ID-ით აყენებს:
openmod install <PackageId>openmod install <PackageId> <version>openmod remove <PackageId>help openmodპაკეტის ID plugin-ის გვერდზეა. დაყენება პაკეტსა და მის დამოკიდებულებებს packages/-ში ჩამოიტანს, და plugin-ების უმეტესობას ჩასატვირთად გადატვირთვა სჭირდება. help openmod ჩამოთვლის ქვებრძანებებს, რომლებსაც შენი ვერსია უჭერს მხარს, რისი შემოწმებაც ღირს, რადგან ისინი გამოშვებებს შორის იცვლებოდა.
plugin, რომელიც უბრალო DLL-ად ვრცელდება, მის ნაცვლად OpenMod/plugins/-ში მიდის, ყველა ბიბლიოთეკასთან ერთად, რომელიც მას სჭირდება.
პირველი ჩატვირთვისას plugin ჩვეულებრივ ფაილების საკუთარ საქაღალდეს ქმნის - config.yaml პარამეტრებისთვის და translations.yaml შეტყობინებებისთვის. ჩვეულებრივი რუტინა:
- დააყენე plugin და გადატვირთე.
- წაიკითხე კონსოლი. დარწმუნდი, რომ plugin შეცდომების გარეშე ჩაიტვირთა.
- გააჩერე სერვერი, დაარედაქტირე plugin-ის გენერირებული კონფიგურაცია, ისევ გაუშვი.
- მიანიჭე მისი უფლებები როლს (შემდეგი სექცია).
- გატესტე როგორც ჩვეულებრივმა მოთამაშემ და არა როგორც ადმინმა.
სწორედ მეოთხე ნაბიჯზე მთავრდება "plugin არ მუშაობს" შეტყობინებების უმეტესობა, ზუსტად ისე, როგორც Rocket-თან.
როლები, მომხმარებლები და უფლებები#
OpenMod-ის უფლებები <ComponentId>:<permission> ფორმის სტრიქონებია. კომპონენტი არის plugin ან framework, რომელსაც უფლება ეკუთვნის, ამიტომ OpenMod.Core:commands.help არის ბირთვული framework-ის უფლება help-ის გასაშვებად. plugin-ის გვერდზე მისი უფლებები უნდა იყოს ჩამოთვლილი; თუ არ არის, მისი ბრძანებები ჩვეულებრივ <PluginId>:commands.<command> ნიმუშს მიჰყვება.
როლები openmod.roles.yaml-ში ცხოვრობს:
roles:- id: default displayName: Default priority: 0 isAutoAssigned: true parents: [] permissions: - OpenMod.Core:commands.help data: {}- id: vip displayName: VIP priority: 10 isAutoAssigned: false parents: - default permissions: - Example.Kits:commands.kit - Example.Kits:kits.vip data: {}| ველი | რას აკეთებს |
|---|---|
id | როლის სახელი, რომელიც ყველგან სხვაგან გამოიყენება |
isAutoAssigned | ყველა იღებს ამ როლს სიაში ჩაწერის გარეშე |
parents | როლები, რომლებისგანაც ეს როლი მემკვიდრეობით იღებს |
priority | წყვეტს, რომელი როლი იმარჯვებს, როცა ორი ერთმანეთს არ ეთანხმება |
permissions | ამ როლის მიერ მინიჭებული უფლებების სტრიქონები |
ველების სახელებისთვის ავტორიტეტი ის სტრუქტურაა, რომელიც შენმა სერვერმა დააგენერირა; თუ განსხვავდება, მას მიჰყევი და არა ამ მაგალითს.
სამუშაოს უმეტესობას სამი ფუნქცია აკეთებს:
- მემკვიდრეობა.
vipdefault-ს მშობლად ასახელებს, ამიტომ VIP-ს აქვს ყველაფერი, რაც ჩვეულებრივ მოთამაშეს, პლუს საკუთარი უფლებები. - wildcard-ები.
Example.Kits:kits.*plugin-ის მიერ განსაზღვრულ kit-ის ყველა უფლებას ანიჭებს. - უარყოფა.
!-ით დაწყებული უფლება მას ცხადად კრძალავს, რაც როლს საშუალებას აძლევს, wildcard მემკვიდრეობით მიიღოს და შემდეგ მისგან ერთი ელემენტი მოაშოროს.
ცალკეული მოთამაშეები openmod.users.yaml-შია, მათი Steam ID-ით, როლებით, რომლებიც აქვთ, და ნებისმიერი პირადი უფლებით. მისი ხელით რედაქტირება გაჩერებული სერვერით შეგიძლია, მაგრამ მუშაობისას კონსოლის ბრძანებები უფრო უსაფრთხოა, რადგან ისინი ფაილს წერენ და ერთ ნაბიჯში გადატვირთავენ. OpenMod გთავაზობს permission და role ბრძანებებს უფლებებისა და როლების დასამატებლად და მოსაშორებლად; ზუსტი სინტაქსისთვის, რომელსაც შენი ვერსია ელის, გაუშვი help permission და help role.
პრინციპი იგივეა, რაც პანელის ანგარიშებისთვის: თითოეულ როლს მხოლოდ ის მიეცი, რაც სჭირდება. მოდერატორებს kick და ban სჭირდებათ და არა ნივთების გაჩენა. subuser-ები და მინიმალური პრივილეგია ზოგად არგუმენტს გადმოსცემს.
OpenMod-ის გაშვება Rocket-ის გვერდით#
ორ framework-ს თანამშრომლობა სამი გზით შეუძლია, რაც openmod.unturned.yaml-ში კონფიგურირდება.
Rocket-ის plugin-ების ჩატვირთვა. OpenMod-ს შეუძლია Rocket-ის plugin-ების ჰოსტინგი თავისი თავსებადობის ფენით, ასე რომ სერვერს პრინციპში ყველაფრის OpenMod-ით გაშვება შეეძლო. პრაქტიკაში სერვერების უმეტესობა Rocket-ის plugin-ებს Rocket-ის ქვეშ ტოვებს, რადგან იქ არის ისინი გატესტილი.
საერთო უფლებები. Rocket-ის ხიდს შეუძლია OpenMod-ს Rocket-ის Permissions.config.xml წააკითხოს, ან ორი სისტემა ცალ-ცალკე შეინარჩუნოს. თუ უკვე გაქვს კარგად აწყობილი Rocket-ის უფლებების ფაილი, OpenMod-ისთვის მისი გამოყენების ნების დართვა ჯგუფების ორი ნაკრების მოვლას გაგარიდებს. თუ ნულიდან იწყებ, OpenMod-ის YAML როლები უფრო ადვილი წასაკითხია.
საერთო ეკონომიკა. plugin-ებს, რომლებიც მოთამაშეებს ფულს ახდევინებენ ან უხდიან, თითო მოთამაშეზე ერთი ბალანსი სჭირდებათ და არა თითო framework-ზე. ხიდს შეუძლია ეკონომიკის გამოძახებები ერთ სისტემაზე გადაამისამართოს, ასე რომ მაღაზიის plugin ერთი framework-ის ქვეშ და სამუშაოების plugin მეორის ქვეშ ერთსა და იმავე ფულს ხედავენ.
პარამეტრების სახელები და ოფციები გამოშვებებს შორის იცვლებოდა, ამიტომ რამის შეცვლამდე შენს გენერირებულ openmod.unturned.yaml-ში კომენტარები წაიკითხე. ადრევე გადაწყვიტე ერთი რამ და ჩაიწერე: რომელი framework ფლობს უფლებებს შენს სერვერზე. ორი სისტემა, რომელთაგან თითოეული ფიქრობს, რომ მთავარია, ის გზაა, რომლითაც მოთამაშეს ბრძანება ერთში აქვს და მეორეში არა.
დამუშავებული მაგალითი: ერთი OpenMod plugin-ის დამატება Rocket-ის სერვერზე#
დავუშვათ, სერვერი ერთი წელია Rocket-ზე მუშაობს, მოწესრიგებული Permissions.config.xml-ით, რომელშიც default, vip და moderator ჯგუფებია, და მფლობელებს ერთი plugin უნდათ, რომელიც მხოლოდ OpenMod-ისთვის ქვეყნდება. ეს არის რიგი, რომელიც დაბნეულობის საღამოს აგარიდებს.
პირველ რიგში, გააკეთე მთელი instance საქაღალდის backup და ჩაკეტე, რომ იყოს ცნობილი სწორი წერტილი, რომელზეც დაბრუნდები. დააყენე OpenMod installer plugin-ით და აცადე პირველი გაშვების დასრულება, რამდენ ხანსაც არ უნდა მოითხოვოს. გაუშვი modules და დარწმუნდი, რომ ორივე framework სიაშია, სანამ სხვა რამეს შეეხები.
მეორე, გადაწყვიტე, ვინ ფლობს უფლებებს. დამკვიდრებული Rocket-ის კონფიგურაციით გონივრული არჩევანია, რომ openmod.unturned.yaml-ში ხიდმა OpenMod Rocket-ის უფლებების მონაცემებზე მიმართოს, ასე რომ არსებული ჯგუფები განაგრძობენ მუშაობას და ორ სიას არავინ უვლის. წაიკითხე ამ ფაილში კომენტარები, შეიტანე ცვლილება და გადატვირთე.
მესამე, დააყენე plugin openmod install-ით და ისევ გადატვირთე. კონსოლში plugin-ის ჩატვირთვის ხაზი და დამოკიდებულებების ნებისმიერი შეცდომა მოძებნე. გააჩერე სერვერი, გახსენი plugin-ის გენერირებული კონფიგურაცია, მოაწყვე და გაუშვი.
მეოთხე, მიანიჭე plugin-ის უფლება. როცა უფლებებს Rocket ფლობს, ეს ნიშნავს უფლების დამატებას სწორ ჯგუფში Permissions.config.xml-ში, იმ ფორმით, რომელსაც ხიდი ელის - მის კონფიგში კომენტარები წერს როგორ - და გადატვირთვას /p reload-ით. როცა OpenMod ფლობს, ეს ნიშნავს მის დამატებას როლში openmod.roles.yaml-ში. ეს ის ნაბიჯია, რომელიც ყველაზე ადვილად არასწორ ფაილში ჩაიწერება, რის გამოც მეორე ნაბიჯის გადაწყვეტილება მნიშვნელოვანია.
ბოლოს, გატესტე ჩვეულებრივი მოთამაშის ანგარიშით თითოეულ ჯგუფში. ადმინები იმდენ შემოწმებას გვერდს უვლიან, რომ მათით ტესტირება ძალიან ცოტას ამტკიცებს. თუ VIP-ს შეუძლია ბრძანების გამოყენება, ჩვეულებრივ მოთამაშეს კი არა, კონფიგურაცია სწორია.
ჩაიწერე, რა გააკეთე - რომელი framework ფლობს უფლებებს, რომელი plugin-ები სად ცხოვრობს - იქ, სადაც შენი სხვა ადმინები იპოვიან. ექვს თვეში ვიღაც plugin-ს დაამატებს და გაუკვირდება, რატომ არაფერს აკეთებს მისი ბრძანება, და ჩანაწერი მას ერთ საათს დაუზოგავს.
უსაფრთხოება და plugin-ების არჩევა#
OpenMod-ის plugin-ები კოდია, რომელიც შენს სერვერზე სრული წვდომით მუშაობს: მოთამაშეების მონაცემები, save და ყველაფერი, რასაც სერვერის პროცესი მისწვდება. NuGet-ის პაკეტირება მათ დაყენებას ადვილს ხდის, და ეს ადვილს ხდის ისეთი რამის დაყენებასაც, რაც არ გინახავს.
- ამჯობინე plugin-ები საჯარო კოდით. OpenMod-ის ეკოსისტემა ძირითადად open source-ია; წაიკითხე, რას აკეთებს plugin, სანამ მას შენს სერვერს ანდობ.
- ვერსიები მიაბი.
openmod install <PackageId> <version>კონკრეტულ ვერსიას აყენებს, ასე რომ შემდგომი განახლება ქცევას შენი არჩევანის გარეშე ვერ შეცვლის. - მოაშორე ის, რასაც აღარ იყენებ. გამოუყენებელი plugin მაინც მომუშავე კოდია.
- დაყენებამდე backup გააკეთე. plugin-ებს, რომლებიც მონაცემებს ინახავს, შეუძლიათ save-ში ან საკუთარ ფაილებში წერა, და გაუქმება არ არსებობს.
RE:NODE-ზე ნებადართული plugin-ების whitelist არ არსებობს; რასაც დააყენებ, ის მუშაობს, რაც შენს საკუთრებაში მყოფი სერვერისთვის სწორი ნაგულისხმევია და შერჩევითობის მიზეზი. მოდებიანი სერვერის სისუფთავე ფართო ჩვევებს ფარავს, ხოლო backup-ები, რომლებიც მართლა აღდგება ხსნის იმის შემოწმებას, რომ შენი backup-ები მუშაობს, სანამ რომელიმე დაგჭირდება.
პრობლემების მოგვარება#
OpenMod პირველ გაშვებას ვერასოდეს ასრულებს. ის პაკეტებს ტვირთავს. თუ პირდაპირ ჩავარდება, კონსოლი NuGet-ის შეცდომას აჩვენებს, ჩვეულებრივ ქსელის ჩავარდნას ან პაკეტს, რომელიც ამ ვერსიისთვის არ არსებობს.
`modules` OpenMod-ს არ ჩამოთვლის. მოდულის საქაღალდე მეტისმეტად ღრმადაა ჩადებული, ან სერვერის Modules დირექტორიის ნაცვლად instance საქაღალდეში გაიხსნა.
plugin დაყენდა, მაგრამ მისი ბრძანებები არაფერს აკეთებს. უფლებები. დაამატე plugin-ის უფლება როლში, გადატვირთე და გატესტე არა-ადმინად.
plugin დაკარგული დამოკიდებულების გამო ვერ იტვირთება. დააყენე შეცდომაში დასახელებული დამოკიდებულების პაკეტი, ან plugin-ის ვერსია, რომელიც შენი OpenMod-ის ვერსიისთვისაა აგებული.
Unturned-ის განახლების შემდეგ ყველაფერი გატყდა. OpenMod-ის მოდულს თამაშის ახალი ვერსიისთვის აგებული გამოშვება სჭირდება. შეამოწმე პროექტის გამოშვებები; აღადგინე backup, თუ მანამდე სერვერი ჩართული გჭირდება.
უფლებები Rocket-ში მუშაობს, OpenMod-ში კი არა, ან პირიქით. openmod.unturned.yaml-ში ხიდი წყვეტს, რომელი სისტემა გამოიყენება. აირჩიე ერთი და მეორე მას მიაყოლე.
ორი plugin მოთამაშეებს სხვადასხვა ბალანსიდან ახდევინებს. ეკონომიკა საერთო არ არის. ხიდი ისე მოაწყვე, რომ ორივე framework ერთ ეკონომიკას იყენებდეს.
FAQ#
OpenMod გამოვიყენო თუ RocketMod?
დაიწყე RocketMod-ით, რომელიც სერვერს მოყვება და plugin-ების უფრო დიდი კატალოგი აქვს. დაამატე OpenMod, როცა სასურველი plugin მხოლოდ მისთვის ქვეყნდება, ან როცა საკუთარ plugin-ებს წერ და მისი თანამედროვე დიზაინი გინდა.
შეუძლიათ OpenMod-სა და RocketMod-ს ერთდროულად მუშაობა?
დიახ. OpenMod Rocket-ის გვერდით სამუშაოდაა დაპროექტებული, და მისი Unturned-ის მოდული უფლებებისა და ეკონომიკის ხიდს შეიცავს. სერვერების უმეტესობა, რომლებიც OpenMod-ს იყენებენ, Rocket-საც უშვებს.
სად ინახება OpenMod-ის უფლებები?
OpenMod/openmod.roles.yaml-ში როლებისთვის და OpenMod/openmod.users.yaml-ში ცალკეული მოთამაშეებისთვის, სერვერის instance საქაღალდის შიგნით. ამ საქაღალდის backup save-თან ერთად გააკეთე.
როგორ დავაყენო OpenMod-ის plugin?
გაუშვი openmod install <PackageId> სერვერის კონსოლში და გადატვირთე. DLL-ებად გავრცელებული plugin-ები ამის ნაცვლად OpenMod/plugins/-ში მიდის. შემდეგ plugin-ის უფლებები როლს მიანიჭე.
სჭირდება OpenMod-ს სერვერიდან ინტერნეტზე წვდომა?
დიახ, დაყენებისთვის. პაკეტები და OpenMod-ის საკუთარი კომპონენტები NuGet-იდან მოდის. დაყენების შემდეგ სერვერი ჩამოტვირთული პაკეტებით მუშაობს.
მოთამაშეებს OpenMod-ის plugin-ებისთვის რამის დაყენება სჭირდებათ?
არა. plugin-ები მხოლოდ სერვერზე მუშაობს. მოთამაშეებს არაფერი სჭირდებათ workshop-ის კონტენტის გარდა, რომელსაც სერვერი იყენებს და რომელიც ცალკე იმართება - იხილე Unturned-ის workshop რუკები და მოდები.




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