DarkRP არის Garry's Mod-ის გეიმმოდი, რაც ნიშნავს, რომ მისი დაყენება ორი საქაღალდე და ერთი გაშვების პარამეტრია: თავად გეიმმოდი garrysmod/gamemodes/darkrp/-ში და darkrpmodification addon, სადაც შენი ყველა ცვლილება ცხოვრობს. ამის მერე ყველაფერი - პროფესიები, shipment-ები, ხელფასები, ვის შეუძლია ვის დაბანვა - არის Lua, რომელსაც addon-ში ასწორებ და არასოდეს გეიმმოდში. სერვერი, რომელიც ამ ერთ წესს იცავს, DarkRP-ის განახლებებს გადაურჩება. სერვერი, რომელიც გეიმმოდს პირდაპირ ასწორებს, პირველივე განახლებაზე ყველა მორგებას კარგავს, და ასე სწავლობს ხალხი წესს.
რა სჭირდება DarkRP-ს დაწყებამდე#
DarkRP მუშაობს სტანდარტულ Garry's Mod dedicated სერვერზე, რომელიც SteamCMD-ით ინსტალირდება როგორც აპლიკაცია 4020 ანონიმური შესვლით. Garry's Mod სერვერის დაყენების გზამკვლევი საბაზო ინსტალაციას ფარავს; ეს პოსტი ვარაუდობს, რომ გაქვს სერვერი, რომელიც sandbox-ში ირთვება და კავშირებს იღებს.
ორი რამ, რაც DarkRP-ს სჭირდება და sandbox-ს არა:
- Counter-Strike: Source-ის კონტენტი. კლასიკური DarkRP რუკები -
rp_downtown_v4c_v2და მისი უმეტესი შთამომავალი - იყენებენ CS:S ტექსტურებსა და მოდელებს. მათ გარეშე შენი ქალაქი იისფერ-შავი კვადრატებია. Dedicated სერვერზე CS:S dedicated სერვერის კონტენტს SteamCMD-ით აყენებ (აპლიკაცია232330) და Garry's Mod-ს მასზეgarrysmod/cfg/mount.cfg-ში მიუთითებ. - გეგმა addon-ებისთვის ადგილით. თავად DarkRP პატარაა. workshop-ის კოლექცია არა. ტიპურ საჯარო DarkRP სერვერზე რამდენიმე გიგაბაიტი addon-ია, სანამ ერთი საკუთარი პროფესიაც გექნება.
"mountcfg"{ "cstrike" "/home/container/cstrike/cstrike"}გზა მიუთითებს საქაღალდეზე, რომელიც cstrike-ის საკუთარ კონტენტის დირექტორიებს შეიცავს. თუ შეგეშალა, გაშვებისას არაფერი წუწუნებს; გაიგებ, როცა რუკას ჩატვირთავ.
| მოთამაშეები | RAM | შენიშვნები |
|---|---|---|
| 16-მდე, მოკლე addon-ების სია | 2 GB | კომფორტული პირადი სერვერისთვის |
| 24-32, ჩვეულებრივი DarkRP | 3-4 GB | გავრცელებული საჯარო სერვერი |
| 40-64, დიდი კოლექცია | 6 GB | addon-ების სია ახლა შემზღუდველი ფაქტორია |
ერთი მკაცრი ლიმიტი, რომელიც უნდა იცოდე, სანამ რამეს იყიდი: ნაგულისხმევი Garry's Mod dedicated სერვერი 32-ბიტიანი პროცესია, და 32-ბიტიანი პროცესი დაახლოებით 3 GB resident მეხსიერებაზე ვარდება, გეგმა რასაც არ უნდა იძლეოდეს. Garry's Mod ასევე აქვეყნებს x86-64 ბრენჩს, რომელიც ამ ჭერს აქრობს. თუ შენი სერვერი მოთამაშეთა ერთსა და იმავე რაოდენობაზე ვარდება შეცდომის გარეშე, პირველი ეჭვმიტანილი მეხსიერების მისამართთა სივრცეა და არა გეგმა.
DarkRP-ისა და darkrpmodification-ის დაყენება#
DarkRP და მისი modification addon ორივეს FPtje აქვეყნებს GitHub-ზე. ჩამოტვირთე თითოეულის მიმდინარე რელიზი, ან გააკეთე clone.
- გახსენი DarkRP
garrysmod/gamemodes/darkrp/-ში. საქაღალდის სახელი ზუსტადdarkrpუნდა იყოს, პატარა ასოებით, და უნდა შეიცავდესdarkrp.txt-ს დაgamemode/საქაღალდეს. GitHub-ის zip იხსნება როგორცDarkRP-master, ამიტომ გადაარქვი სახელი. - Modification addon გახსენი
garrysmod/addons/darkrpmodification/-ში. იგივე წესი:darkrpmodification-master-დან გადაარქვი სახელი. - გაუშვი სერვერი
+gamemode darkrp-ით და DarkRP რუკით. - უყურე კონსოლს მთელი პირველი გაშვების განმავლობაში. Lua-ს შეცდომები ჩატვირთვისას ერთადერთი გაფრთხილებაა, რომ რაღაც არ დაყენდა.
$ ./srcds_run -game garrysmod -console -port 27015 \ +gamemode darkrp +map rp_downtown_v4c_v2 +maxplayers 40პანელზე იგივე მნიშვნელობები Startup tab-ის ველებია და არა ბრძანება, რომელსაც აკრეფ, მაგრამ ისინი იგივე მნიშვნელობებია. ასევე დაამატე sv_defaultgamemode "darkrp" garrysmod/cfg/server.cfg-ში, რომ რუკის შეცვლამ ჩუმად ისევ sandbox-ში არ დაგაბრუნოს.
ყველაფერი პატარა ასოებით დაწერე. Garry's Mod Linux-ზე რეგისტრზე მგრძნობიარეა, და addon-ის საქაღალდე სახელად MyAddon, Materials/-ის ქვეშ მდებარე materials-ით, ქმნის დაკარგულ ტექსტურებს, რომლებიც Windows-ის სატესტო სერვერზე იდეალურად მუშაობს. ეს არის "სახლში მუშაობდა"-ს ყველაზე გავრცელებული ერთი მიზეზი.
სტრუქტურა, რომელსაც რეალურად შეცვლი:
garrysmod/addons/darkrpmodification/lua/ darkrp_config/ settings.lua # every DarkRP setting disabled_defaults.lua # switch off built-in jobs, entities, modules mysql.lua # database connection darkrp_customthings/ jobs.lua entities.lua shipments.lua food.lua ammo.lua doorgroups.lua agendas.lua categories.luagamemodes/darkrp/-ში არაფერს არასოდეს უნდა შეეხო. თუ რომელიმე გზამკვლევი გირჩევს, იქ ფაილი შეცვალო, ის დაახლოებით ათი წლით მოძველებულია.
პარამეტრები#
darkrp_config/settings.lua ყველა პარამეტრით უკვე მოდის, თითოეული კომენტარით, რომელიც ხსნის მას და მის ნაგულისხმევს. მნიშვნელობებს ადგილზე ცვლი; გასაღებებს, რომლებიც ფაილში უკვე არ არის, არ ამატებ.
GM.Config.startingmoney = 500GM.Config.normalsalary = 45GM.Config.propertytax = falseGM.Config.adminsents = trueGM.Config.voiceradius = trueოთხი გადაწყვეტილება, რომელიც სერვერს ყველაფერზე მეტად აყალიბებს:
- საწყისი ფული და ხელფასი ერთად განსაზღვრავს ეკონომიკის ტემპს. მაღალი ხელფასი იაფ shipment-ებთან ნიშნავს, რომ ყველას ყველაფერი აქვს ერთ საათში და როლური თამაში deathmatch-ად იშლება. უფრო ადვილია, დაიწყო ძუნწად და მერე გაზარდო, ვიდრე პირიქით, რადგან ფულს ვერ წაართმევ ხალხს, ვისაც უკვე აქვს.
- Property tax მოთამაშეებს ყოველ ხელფასზე საკუთრებაში არსებულ კარებში ახდევინებს. ის ხელს უშლის მოთამაშეთა მცირე ჯგუფს, მთელი რუკა დაისაკუთრონ და გააქტიურდნენ. ისიც ნიშნავს, რომ ახალ მოთამაშეებს აშორებს, თუ სახლის საშუალება საერთოდ არ აქვთ.
- მხოლოდ ადმინისთვის ხელმისაწვდომი entity-ები (
adminsents) sandbox-ის prop-ებსა და SENT-ებს ჩვეულებრივ მოთამაშეებს აშორებს. როლურ სერვერზე ჩართული დატოვე. - Voice radius ხმოვან ჩატს გლობალურის ნაცვლად ლოკალურს ხდის, და ეს ერთადერთი ცვლილებაა, რომელიც სერვერს ლობის ნაცვლად როლურ თამაშად გრძნობინებს.
settings.lua-ში ცვლილებები გეიმმოდის ჩატვირთვისას იკითხება, ამიტომ რუკის შეცვლა ან სერვერის restart სჭირდება. მათი ერთ-ერთად შემოწმება უფრო ნელია და საერთო ჯამში ბევრად სწრაფი, ვიდრე თხუთმეტის შეცვლა და გაოცება, რომელმა გააფუჭა პროფესიები.
პროფესიები#
პროფესიები ცხოვრობს darkrp_customthings/jobs.lua-ში და იქმნება ერთი ფუნქციის გამოძახებით. ეს მთელი API-ა:
TEAM_MECHANIC = DarkRP.createJob("Mechanic", { color = Color(50, 100, 180, 255), model = { "models/player/gasmask.mdl", "models/player/riot.mdl", }, description = [[Repair vehicles. Charge too much for it.]], weapons = {"weapon_physgun"}, command = "mechanic", max = 3, salary = 60, admin = 0, vote = false, hasLicense = false, candemote = true, category = "Citizens",})ველები, რომლებიც მნიშვნელოვანია და რეგულარულად არასწორად ივსება:
commandარის ის, რასაც მოთამაშეები აკრეფენ, ანუ აქ/mechanic. ის ყველა პროფესიაში უნიკალური უნდა იყოს.maxარის, რამდენ მოთამაშეს შეუძლია პროფესიის ქონა.0შეუზღუდავია. 1-ზე ნაკლები ათწილადი მიმდინარე მოთამაშეთა რაოდენობის წილად იკითხება, ამიტომmax = 0.1სერვერის ათ პროცენტს ნიშნავს - ბევრად უკეთესია ფიქსირებულ რიცხვზე პოლიციისთვის სერვერზე, რომლის მოსახლეობაც ცვალებადია.adminარის0ყველასთვის,1ადმინებისთვის,2superadmin-ებისთვის.TEAM_MECHANICგლობალურია. ორი პროფესია საერთო სახელით ნიშნავს, რომ ერთი ჩუმად მეორეს ანაცვლებს.categoryუნდა ემთხვეოდესDarkRP.createCategory-ით შექმნილ კატეგორიას, თორემ პროფესია F4 მენიუში არ ჩანს, თუმცა კარგად ჩაიტვირთა.
პროფესიებისთვის, რომლებიც donator-ებით ან პერსონალის რანგით შემოიფარგლება, DarkRP-ს აქვს customCheck:
customCheck = function(ply) return CLIENT or table.HasValue({"superadmin", "vip"}, ply:GetUserGroup())end,CustomCheckFailMsg = "This job is for VIP members.",იმავე ფაილის მეზობლები იმავე გზით მუშაობენ. DarkRP.createEntity ამატებს საყიდელ entity-ს, მაგალითად პრინტერს, DarkRP.createShipment ამატებს იარაღის shipment-ს პროფესიების allowed სიით, რომლებსაც მისი ყიდვა შეუძლიათ, DarkRP.createFood ამატებს ნივთს, რომელიც ჯანმრთელობას აღადგენს, და DarkRP.createDoorGroup საშუალებას გაძლევს, რუკის კარები მხოლოდ გარკვეული პროფესიებისთვის საკუთრებად მონიშნო. ჩაშენებული პროფესიები და entity-ები, რომლებიც არ გინდა, disabled_defaults.lua-ში ამოიღება და არა გეიმმოდიდან იშლება.
ადმინი: FAdmin, ULX და SAM#
DarkRP-ს საკუთარი ადმინ mod მოჰყვება, FAdmin. ის პატარა პირადი სერვერისთვის საკმარისია და იცნობს DarkRP-ის ცნებებს, როგორიცაა პროფესიები და კარები. ის ასევე მიზეზია, რის გამოც ULX-ის უმეტესი ინსტალაცია DarkRP-ზე უცნაურად იქცევა, რადგან ორი ადმინ mod, რომლებიც ერთსა და იმავე ბრძანებებს ეჯიბრებიან, ზუსტად ისეთი სახალისოა, როგორც ჟღერს. თუ სხვას აყენებ, ჯერ FAdmin გამორთე:
DarkRP.disabledDefaults["modules"]["fadmin"] = trueULX ULib-თან ერთად უფასო სტანდარტია. დააყენე ორივე addon, გადატვირთე, შემდეგ პირველი superadmin შექმენი სერვერის კონსოლიდან - და არა თამაშიდან, რადგან ჯერ არავის აქვს უფლება:
ulx adduser "YourName" superadminulx addgroup vip userulx groupallow vip ulx kickULX ინახავს ჯგუფებს garrysmod/data/ulib/groups.txt-ში და მომხმარებლებს garrysmod/data/ulib/users.txt-ში. ორივე უბრალო ტექსტია, ორივეს backup ღირს, და ორივეს ხელით გასწორება უფრო ადვილია მენიუთი, როცა საკუთარ თავს ჩაკეტავ. ulx menu თამაშში XGUI-ს ხსნის ყველაფრისთვის დანარჩენისთვის.
SAM ფასიანი ადმინ mod-ია, რომელზეც დიდი DarkRP სერვერების უმეტესობა გადავიდა. ის რანგებსა და ban-ებს ტექსტური ფაილების ნაცვლად MySQL-ში ინახავს, რაც მნიშვნელოვანია, როცა ერთზე მეტ სერვერს უშვებ, და კლიენტის მენიუში შესამჩნევად მსუბუქია. ღირს თუ არა მისი ყიდვა, მთლიანად იმაზეა დამოკიდებული, შენი პერსონალი სამი მეგობარია თუ თხუთმეტი უცნობი ადამიანი.
რომელსაც არ უნდა აირჩევდე, superadmin-ების სია მოკლე გქონდეს. Superadmin ნებისმიერ GMod ადმინ mod-ში შენს სერვერზე თვითნებურ Lua-ს უშვებს, და ეს იგივეა, რაც შენი პანელის პაროლის ქონა. პანელზე წვდომა ცალკე საკითხია უკეთესი პასუხით: ქვემომხმარებლები და უმცირესი პრივილეგიები მოდერატორს კონსოლის გამოყენების საშუალებას აძლევს იმის გარეშე, რომ სერვერის წაშლა ან შენი ბილინგის ნახვა შეეძლოს.
ბაზა#
DarkRP ფულს, საკუთრებაში არსებულ კარებსა და რამდენიმე სხვა რამეს MySQLite-ით ინახავს, რომელიც ნაგულისხმევად SQLite-ია: ერთი ფაილი garrysmod/sv.db-ზე. ერთი სერვერისთვის ეს მართლა კარგია. ის სწრაფია, კონფიგურაცია არ სჭირდება და ერთადერთი ჩავარდნის რეჟიმი აქვს - ფაილი. გააკეთე მისი backup ყველაფერთან ერთად.
ნამდვილი ბაზა გინდა, როცა ერთზე მეტ სერვერს უშვებ და საერთო ფული გინდა, როცა მონაცემების შეკითხვა ან გასწორება გინდა სერვერის გათიშვის გარეშე, ან როცა addon-ს აყენებ, რომელსაც მაინც MySQL სჭირდება. კავშირი darkrp_config/mysql.lua-ში იწერება:
DarkRP.registerDatabaseConfig{ EnableMySQL = true, Host = "db.example.net", Username = "s7_user", Password = "generated-password", Database_name = "s7_gmod", Database_port = 3306, Preferred_module = "mysqloo", MultiStatements = false,}ამას სჭირდება mysqloo binary მოდული garrysmod/lua/bin/-ში და ფაილი სერვერის პლატფორმასა და არქიტექტურას უნდა ემთხვეოდეს. Garry's Mod მათ .dll გაფართოებით ასახელებს Linux-ზეც, რაც ყველას უკვირს: gmsv_mysqloo_linux.dll 32-ბიტიანი სერვერისთვის და gmsv_mysqloo_linux64.dll x86-64 ბრენჩისთვის. არასწორი საერთოდ არაფრად იტვირთება და DarkRP ჩუმად უკან ბრუნდება, ამიტომ თუ MySQL-ზე გადასვლის მერე ფული ისევ ნულდება, სწორედ ეს ფაილია მიზეზი.
RE:NODE-ის ყოველი გეიმ გეგმა მოიცავს ერთ ბაზის slot-ს, რომელიც პანელიდან იქმნება, host-ით, მომხმარებლითა და პაროლით, რომლებიც შენთვის გენერირდება, და Open in phpMyAdmin ღილაკით, რომელიც ერთჯერადი token-ით შეგიყვანს. ეს ზემოთ მოცემულ მონაცემებს ფარავს იმის გარეშე, რომ რამეს ადმინისტრირებ.
სერვერის შენარჩუნება შენად#
DarkRP სერვერები ყველა სხვა Garry's Mod გეიმმოდზე მეტად ხდება სამიზნე, რადგან მათზე მიმართული exploit მენიუების მთელი კუსტარული ინდუსტრია არსებობს. სამი პარამეტრი და ერთი ჩვევა უმეტესს ფარავს.
hostname "Northside RP"rcon_password ""sv_password ""sv_lan 0sv_allowcslua 0sv_allowupload 0sv_allowdownload 1sbox_godmode 0sbox_noclip 0sv_allowcslua 0 მნიშვნელოვანია. ის კლიენტებს საკუთარი კლიენტის მხარის Lua-ს გაშვებას უშლის, რაც მექანიზმია უფასო "DarkRP exploit" მენიუების უმეტესობის უკან, რომლებსაც ხალხი ჩამოტვირთავს. sv_allowupload 0 კლიენტებს შენს სერვერზე ფაილების გაგზავნას უშლის. ცარიელი rcon_password RCON-ს თიშავს, რაც არ გჭირდება, რადგან პანელის კონსოლი გაქვს - მსჯელობა RCON-ის უსაფრთხოდ გამოყენებაშია.
ჩვევა არის გაჟონილი ფასიანი addon-ების დაუყენებლობა. გაჟონილი სკრიპტი backdoor-ის Garry's Mod სერვერზე მოხვედრის ყველაზე საიმედო გზაა, და ადამიანი, რომელმაც ის ფორუმზე ატვირთა, ავტორი არ არის. მოდიფიცირებული სერვერის სისუფთავე ფარავს, როგორ გადაამოწმო ის, რაც უკვე გაქვს.
წარმადობა და პრობლემების მოგვარება#
პროფესიები არ გამოჩნდა. Lua-ს შეცდომა jobs.lua-ში. წაიკითხე კონსოლი გაშვების დასაწყისიდან და არა ბოლოდან.
იისფერ-შავი ტექსტურები, ან ERROR ნიშნები. დაკარგული კონტენტი. ტექსტურები CS:S-ის ან რუკის საკუთარი materials პაკეტისაა; ERROR მოდელები addon-ია, რომელიც კლიენტმა არ ჩამოტვირთა. კლიენტის ჩამოტვირთვები ცალკე სისტემაა და აღწერილია Workshop addon-ებსა და FastDL-ში.
ფული ყოველ restart-ზე ნულდება. ბაზა არ წერს. ან sv.db არ არის ჩაწერადი, ან MySQL ჩართულია და mysqloo მოდული აკლია ან არ ემთხვევა.
ყველაფერი გაფუჭდა DarkRP-ის განახლების მერე. რაღაც gamemodes/darkrp/-ის შიგნით შეიცვალა. დააყენე გეიმმოდი სუფთად თავიდან და ცვლილება გადაიტანე darkrpmodification-ში.
სერვერი იწელება მხოლოდ მაშინ, როცა ივსება. თითქმის ყოველთვის addon ციკლით, რომელიც ყოველ მოთამაშეზე მუშაობს. ასი პრინტერი, თითოეული თავისი ტაიმერით, ერთსა და იმავეს ჯდება, ოთხი ადამიანი არის ონლაინ თუ ორმოცი, მაგრამ თითო მოთამაშეზე ციკლები ოთახთან ერთად იზრდება. ამოიღე შენი addon-ების ნახევარი, გაზომე, მერე ამოიღე დარჩენილის ნახევარი.
ერთსა და იმავე მოთამაშეთა რაოდენობაზე ჩავარდნა. მეხსიერება და, სავარაუდოდ, ზემოთ აღწერილი 32-ბიტიანი ჭერი და არა გეგმის ლიმიტი.
-tickrate-ის გაზრდა CPU-ს მოთამაშეებთან პირდაპირ პროპორციულად ხარჯავს და გეიმმოდზე, რომელიც ძირითადად დგას და ლაპარაკობს, ადამიანების ვარაუდზე ნაკლებს იძლევა - რას ნიშნავს რეალურად tick rate გულწრფელ ვერსიას შეიცავს. CPU ამის ნაცვლად addon-ების სიაზე დახარჯე.
RE:NODE-ზე Garry's Mod გეგმას ერთი პორტის გამოყოფა მოჰყვება, რომელიც თამაშისა და query პორტს ფარავს 27015-ზე; თუ SourceTV გინდა, დაამატე მეორე Network tab-ზე. კონსოლი გაუფილტრავია, სადაც გატეხილი addon თავს აცხადებს, ფაილების მენეჯერი jobs.lua-ს ბრაუზერში სინტაქსის გამოკვეთით ასწორებს და backup slot-ები ყოველ გეგმაზეა - გამოიყენე ყოველ addon-ის ცვლილებამდე, რადგან backup, რომელიც არავის აღუდგენია, ჰიპოთეზაა.
FAQ#
მჭირდება Counter-Strike: Source DarkRP სერვერისთვის?
ჩვეულებრივი რუკებისთვის დიახ. rp_downtown_v4c_v2 და უმეტესი კლასიკური RP რუკა CS:S ტექსტურებს იყენებს. დააყენე CS:S dedicated სერვერის კონტენტი SteamCMD-ით და მიამაგრე cfg/mount.cfg-ში, ან აირჩიე რუკა, რომელსაც მთელი საკუთარი კონტენტი მოჰყვება.
სად დავამატო საკუთარი პროფესიები?
addons/darkrpmodification/lua/darkrp_customthings/jobs.lua-ში, DarkRP.createJob-ის გამოყენებით. არასოდეს gamemodes/darkrp/-ის შიგნით. modification addon ზუსტად იმიტომ არსებობს, რომ DarkRP-ის განახლებებმა შენი შრომა არ გადააწეროს.
ULX გამოვიყენო თუ SAM?
ULX უფასოა, კარგად დოკუმენტირებული და უმეტესი სერვერისთვის შესაფერისი. SAM ფასიანია, რანგებს MySQL-ში ინახავს და თამაშში უფრო მსუბუქია. ორივე შემთხვევაში ჯერ გამორთე DarkRP-ის ჩაშენებული FAdmin, თორემ ორი ერთსა და იმავე ბრძანებებს ეჩხუბება.
რამდენი RAM სჭირდება DarkRP სერვერს?
ორი გიგაბაიტი პირადი სერვერისთვის მოკლე addon სიით, სამიდან ოთხამდე ჩვეულებრივი საჯარო სერვერისთვის 32 მოთამაშეზე. ამის ზემოთ შემზღუდველი ჩვეულებრივ addon-ების სიაა და 32-ბიტიანი სერვერის binary გაგაჩერებს დაახლოებით 3 GB-ზე, რაც არ უნდა იყოს.
შემიძლია პროფესიების შეცვლა restart-ის გარეშე?
საიმედოდ არა. პროფესიები გეიმმოდის ჩატვირთვისას რეგისტრირდება, ამიტომ რუკის შეცვლა ან restart ცვლილებების გამოყენების პატიოსანი გზაა. მიეჩვიე კონფიგურაციის ცვლილებების შეგროვებას და ერთხელ გადატვირთვას.
რატომ არ აჩვენებს ჩემი სერვერი addon-ებს შემოსულ მოთამაშეებს?
რადგან სერვერზე addon-ის მიმაგრება და კლიენტებისთვის მისი ჩამოტვირთვის თქმა ორი განსხვავებული სისტემაა. სერვერი უშვებს იმას, რაც addons/-შია; კლიენტები იღებენ მხოლოდ იმას, რასაც workshop-ის კოლექცია ან resource.AddWorkshop მიაქვს.




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