RE:NODE

სახელმძღვანელოები14 წუთის საკითხავი

CS2 სერვერის ბრძანებები და cvar-ები: server.cfg-დან RCON-მდე

სად ინახავს Counter-Strike 2 სერვერი პარამეტრებს, რომელი cvar-ებია მნიშვნელოვანი, როგორ გადაფარავს game mode server.cfg-ს და რომელი RCON ბრძანებები გამოიყენო პირდაპირ ეთერში.

1 მკითხველი

Counter-Strike 2 სერვერი სამ ადგილას მოეწყობა და მასთან დაკავშირებული დაბნეულობის უმეტესობა იქიდან მოდის, რომ არ იცი, ამ სამიდან რომელი იმარჯვებს. გაშვების ხაზი შეიცავს იმას, რაც ძრავას სჭირდება რაიმეს ჩატვირთვამდე - პორტს, token-ს, tick rate-ს. game/csgo/cfg/server.cfg ინახავს სერვერის იდენტობასა და ქსელის პარამეტრებს. ხოლო game mode-ის კონფიგი, რომელიც ყოველი რუკის ჩატვირთვისას server.cfg-ის შემდეგ სრულდება, შეიცავს რაუნდების წესებს და გადაწერს ყველაფერს, რასაც server.cfg-ში დააყენებ და ისიც აყენებს. ეს ბოლო წინადადება პასუხია კითხვაზე "რატომ ბრუნდება ჩემი mp_maxrounds თავის მნიშვნელობაზე".

ეს პოსტი სამივეს ცნობარია: გაშვების პარამეტრები, რომლებიც ღირს გამოყენებად, cvar-ები, რომლებიც რეალურად ცვლის რამეს, და ბრძანებები, რომლებსაც RCON-ით პირდაპირ ეთერში გაუშვებ. ვარაუდია, რომ სერვერი და token უკვე გაქვს - Counter-Strike 2 სერვერის დაყენება გიჩვენებს, როგორ მიხვიდე აქამდე.

რას კითხულობს სერვერი და რა თანმიმდევრობით#

CS2-ის dedicated სერვერი Steam-ის აპლიკაციიდან 730 მოდის, იგივე app id-ით, რაც თამაშს აქვს, და დგება ისეთ ხეში, სადაც საინტერესო ნაწილები game/csgo/-შია:

code
game/  bin/linuxsteamrt64/cs2       the server binary  csgo/    cfg/      server.cfg               execed on every map load      gamemode_competitive.cfg      Valve's mode defaults      gamemode_competitive_server.cfg   your overrides      gamemode_casual.cfg      gamemode_deathmatch.cfg    addons/                    Metamod and plugins, if you add them    maps/                      installed and workshop maps    gamemodes_server.txt       map groups and per-mode convars
ბოლო სიტყვა მისიაგაშვების ხაზიport, token, tickrateserver.cfgყოველ რუკაზეgamemode_*.cfgValve-ის ნაგულისხმევიgamemode_*_server.cfgშენი გადაფარვებიმოქმედი cvar-ებირასაც მოთამაშე იღებს
რომელი კონფიგი იმარჯვებს რუკის ჩატვირთვისას

აქედან გამომდინარე პრაქტიკული წესი: ყველაფერი, რაც mp_-ით იწყება, gamemode_<mode>_server.cfg-ში უნდა იყოს, ხოლო ყველაფერი, რაც sv_-ით, hostname-ით, rcon_password-ით ან tv_-ით იწყება, server.cfg-ში. _server ფაილები არ მოდის კომპლექტში - მათ შენ ქმნი - და სწორედ ისინი არიან გადაფარვის მხარდაჭერილი ადგილი, ამიტომ გადარჩებიან თამაშის განახლებას, რომელიც Valve-ის საკუთარ კონფიგებს ხელახლა წერს.

გაშვების ხაზი#

შენს Linux მანქანაზე დაყენება და გაშვება ასე გამოიყურება:

bash
$ steamcmd +force_install_dir /home/cs2/server +login anonymous \    +app_update 730 validate +quit$ cd /home/cs2/server$ ./game/bin/linuxsteamrt64/cs2 -dedicated -usercon \    -port 27015 -maxplayers_override 12 -tickrate 128 \    +game_alias competitive +map de_dust2 \    +sv_setsteamaccount YOUR_GSLT_TOKEN

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

პარამეტრირას აკეთებს
-dedicatedგაშვება ინტერფეისის გარეშე. მის გარეშე თამაშს უშვებ
-userconრთავს RCON-ს. მის გარეშე RCON არ არსებობს, რა პაროლიც არ უნდა დააყენო
-port 27015თამაშის პორტი, UDP, და RCON-ის პორტი, TCP
-maxplayers_override 12სლოტების რაოდენობა. გადაფარავს იმას, რასაც mode ითხოვს
-tickrate 128სიმულაციის სიხშირე. ნაგულისხმევი 64-ია
-insecureთიშავს VAC-ს. მხოლოდ დახურული სატესტო სერვერისთვის
+game_alias competitiveადგენს mode-ს პირველი რუკის ჩატვირთვამდე
+map de_dust2პირველი რუკა. მის გარეშე სერვერი უქმად დგას
+sv_setsteamaccountშენი Game Server Login Token
+exec autoexec.cfgერთხელ უშვებს კონფიგს გაშვებისას, ნებისმიერ რუკამდე

token-ში ყველაზე ხშირად ცდებიან. sv_setsteamaccount გაშვების ხაზზე უნდა იყოს და არა server.cfg-ში, რადგან სერვერი Steam-ში რუკის ჩატვირთვამდე შედის, ანუ ნებისმიერი კონფიგის წაკითხვამდე. თუ ორივე ადგილას დააყენებ, ისინი ერთმანეთს წინააღმდეგობაში მოვლენ. token-ს Valve გასცემს Steam ანგარიშზე, რომელსაც თამაში ჰყავს, თითო სერვერზე ერთს, და ის შენია და არა შენი ჰოსტის - Steam-ის game server token-ები ახსნილი გიჩვენებს, როგორ შექმნა ერთი 730 აპლიკაციისთვის და რის გამო იბლოკება token. token-ის გარეშე სერვერი მაინც მუშაობს და პირდაპირ კავშირებს მაინც იღებს; უბრალოდ საჯარო browser-ში არ ჩნდება.

თამაშის mode-ები და რუკების ჯგუფი#

CS2 ინარჩუნებს CS:GO-ს სქემას ორი მთელი რიცხვით. game_type ირჩევს ოჯახს, game_mode - ვარიანტს მის შიგნით, ხოლო game_alias ორივეს სახელით ადგენს.

Aliasgame_typegame_modeMode
casual00Casual
competitive01Competitive, MR12
wingman02Wingman, 2v2
armsrace10Arms Race
demolition11Demolition
deathmatch12Deathmatch
custom20Custom, plugin-ით მართული mode-ებისთვის

alias-ის გაშვების ხაზზე დაყენება საიმედო გზაა, რადგან game_type-ის ან game_mode-ის პირდაპირ ეთერში შეცვლა ძალაში შესასვლელად რუკის შეცვლას საჭიროებს, ნახევრად გამოყენებული mode-ები კი ყველაზე უცნაურ ბაგებს ქმნის, რომლებიც ოდესმე გამოგილიათ. თუ plugin-ს უშვებ, რომელიც საკუთარ წესებს ახორციელებს - retakes, deathmatch plugin, arena mode - custom ის ოჯახია, რომელიც თამაშის წესებს ხელს არ ახლებს.

რუკების როტაციას ორი შრე აქვს. ძრავას შრეა mapcycle.txt საქაღალდეში game/csgo/, ერთი რუკის სახელი ხაზზე, რომელიც mapcyclefile cvar-ით იკითხება, ასევე changelevel <map> ახლავე გადასასვლელად და mp_match_end_changelevel 1 მატჩის დასრულებისას გასაგრძელებლად. მის ზემოთ Valve-ის შრეა gamemodes_server.txt, KeyValues ფაილი, რომელსაც ქმნი გვერდით მდგარი gamemodes_server.txt.example-იდან; ის ადგენს რუკების ჯგუფებს და საშუალებას გაძლევს, თითო game mode-ის convar-ები ერთ ადგილას დააყენო. ხმის მიცემის სისტემიანი community სერვერები ჩვეულებრივ ორივეს უგულებელყოფენ და plugin-ს ანებებენ ამის მართვას, რაც აღწერილია პოსტში CS2 plugin-ები Metamod-ით და CounterStrikeSharp-ით.

Workshop რუკები სახელით კი არა, id-ით იტვირთება:

code
host_workshop_map 3070596702ds_workshop_changelevel de_cache

პირველი ერთ workshop რუკას ჩამოტვირთავს და ჩატვირთავს. მთელი კოლექციის ჩატვირთვას CS2-ის ცხოვრების სხვადასხვა მომენტში Steam Web API გასაღები სჭირდებოდა და მოთხოვნა არაერთხელ შეიცვალა, ამიტომ როტაციის აგებამდე ახლანდელი ქცევა შეამოწმე. ერთრუკიან სერვერზე ამას გავლენა არ აქვს.

Bot-ები ავსებენ mode-ს, რომელიც სხვაგვარად ერთი ადამიანი იქნებოდა, spawn-ში მდგარი. bot_quota 8 და bot_quota_mode fill სერვერს რვა მოთამაშეზე ინარჩუნებს და bot-ებს აშორებს, როცა ადამიანები შემოდიან; bot_quota_mode normal კი რვა bot-ს ამატებს მიუხედავად ამისა. bot_difficulty იღებს 0-დან 3-მდე, bot_kick ყველას ასუფთავებს, ხოლო bot_stop 1 მათ ვარჯიშისთვის აყინავს. community სერვერზე bot-ები წარმოდგენის არჩევანია და არა ტექნიკური: browser-ში ჩანაწერი 2/10 გამოტოვებენ, 8/10 კი დააჭერენ, და ვინც შემოდის, bot-ებს პოულობს. გადაწყვიტე, რომელი კომპრომისი გინდა, სანამ ვინმე სხვა გადაწყვეტს.

server.cfg: პარამეტრები, რომლებიც ღირს დაყენებად#

აი server.cfg, რომელშიც დეკორატიული არაფერია:

game/csgo/cfg/server.cfg
hostname "Longship 5v5 // EU"rcon_password "a-long-random-string"sv_password ""sv_lan 0sv_region 3// Networksv_maxrate 0sv_minrate 196608sv_hibernate_when_empty 1sv_hibernate_postgame_delay 30// Voice and chatsv_full_alltalk 0sv_deadtalk 1// Safetysv_cheats 0sv_allow_votes 1mp_endmatch_votenextmap 1// Logginglog onsv_logfile 1sv_logecho 1sv_logbans 1// GOTVtv_enable 1tv_port 27020tv_autorecord 1tv_delay 0
Cvarშენიშვნები
hostnameსახელი browser-ში. ჩაწერე მასში რეგიონი, ხალხი მას ფილტრავს
rcon_passwordგრძელი და შემთხვევითი. ცარიელი ნიშნავს, რომ RCON გამორთულია და არა ღიაა
sv_passwordარაცარიელი სერვერს კერძოს ხდის
sv_lan 01 გამოტოვებს Steam ავთენტიფიკაციას. კერძო სერვერია და არა დამალული
sv_regionBrowser-ის რეგიონი: 0 აშშ-ის აღმოსავლეთი, 3 ევროპა, 4 აზია, 255 მთელი მსოფლიო
sv_minrateკლიენტის გამტარუნარიანობის ქვედა ზღვარი. იცავს შეზღუდულ კლიენტს საკუთარი თავისგან
sv_hibernate_when_emptyCPU-ს გამოყენებას ნულამდე ამცირებს, როცა არავინ არის
sv_full_alltalkყველა ყველას ისმენს, ორივე გუნდი, ცოცხალი თუ მკვდარი
sv_visiblemaxplayersაჩვენებს სლოტების ნაკლებ რაოდენობას, ვიდრე გაქვს, დაჯავშნილი სლოტებისთვის
sv_cheatsვარჯიშის ბრძანებებისთვის უნდა იყოს 1. საჯარო სერვერზე არასოდეს

sv_hibernate_when_empty 1 ცალკე წინადადებას იმსახურებს. უქმი CS2 სერვერი ჩართული hibernation-ით თითქმის არ იყენებს CPU-ს, რაც მნიშვნელოვანია, როცა შენი გეგმა მთელი ბირთვის კი არა, ბირთვის წილს ყიდულობს. ფასი ისაა, რომ hibernation-ის დროს GOTV წყდება და ნებისმიერი plugin, რომელიც ტაიმერით მუშაობს, ჩერდება, ამიტომ მატჩის სერვერს, რომელიც რაუნდებს შორის demo-ებს წერს, ის გამორთული უნდა ჰქონდეს, community სერვერს კი ჩართული.

ხმის cvar-ები CS:GO-სა და CS2-ს შორის გადაკეთდა და ძველი sv_alltalk აღარ არის ბერკეტი. თუ CS:GO-ს გზამკვლევს მიჰყვები და cvar არ არსებობს, კონსოლი პირდაპირ გეტყვის - იხილე find ბრძანება ქვემოთ.

sv_visiblemaxplayers დაჯავშნილი სლოტის ხრიკია და ღირს მისი ცოდნა, რადგან plugin არ სჭირდება. იყიდე თორმეტი სლოტი, დააყენე sv_visiblemaxplayers 11 და browser სერვერს თერთმეტზე სავსედ აჩვენებს, ხოლო მეთორმეტე თავისუფალი რჩება იმისთვის, ვისაც შემოუშვებ. ის მხოლოდ სლოტს მალავს; იმის გატარება, ვინ მიიღებს მას, plugin-ს საჭიროებს, რომელიც ყველაზე დაბალი პრიორიტეტის მოთამაშეს გააგდებს. პატარა community სერვერზე დამალული სლოტი თავისთავად წყვეტს რეალურ პრობლემას - ადმინი საკუთარ სავსე სერვერზე ვერ შედის, რომ ვინმეს გამკლავდეს.

რაუნდის, ფულისა და მატჩის cvar-ები#

ესენი mp_ cvar-ებია, ამიტომ gamemode_competitive_server.cfg-ში მიდის (ან იმ mode-ის შესაბამის ფაილში, რომელსაც უშვებ). ქვემოთ მოცემული მნიშვნელობები სტანდარტული competitive კონფიგურაციაა.

game/csgo/cfg/gamemode_competitive_server.cfg
mp_maxrounds 24mp_overtime_enable 1mp_overtime_maxrounds 6mp_overtime_startmoney 12500mp_halftime 1mp_match_can_clinch 1mp_maxmoney 16000mp_startmoney 800mp_afterroundmoney 0mp_freezetime 15mp_roundtime 1.92mp_roundtime_defuse 1.92mp_roundtime_hostage 1.92mp_buytime 20mp_buy_anywhere 0mp_friendlyfire 1mp_solid_teammates 1mp_death_drop_gun 1mp_death_drop_grenade 2mp_autoteambalance 0mp_limitteams 0mp_warmuptime 60mp_warmup_pausetimer 0mp_timelimit 0
Cvarმნიშვნელობა
mp_maxroundsრაუნდები რეგულარულ დროში. 24 არის MR12, CS2-ის competitive-ის ხანგრძლივობა
mp_overtime_maxroundsრაუნდები თითო overtime-ში. 6 არის MR3
mp_halftimeმხარეების შეცვლა შუა მატჩზე. გამორთვა ცალმხრივ მატჩს ქმნის
mp_match_can_clinchმატჩის დასრულება, როცა ანგარიშის დაწევა შეუძლებელია
mp_roundtime_defuseრაუნდის ხანგრძლივობა წუთებში. 1.92 არის 1:55
mp_freezetimeყიდვისა და საუბრის დრო რაუნდის დაწყებამდე
mp_buytimeწამები, რომლის განმავლობაშიც ყიდვის მენიუ ღიაა freezetime-ის შემდეგ
mp_maxmoneyფულის ჭერი. 16000 competitive-ის მნიშვნელობაა
mp_death_drop_gun0 არაფერი, 1 საუკეთესო იარაღი, 2 მიმდინარე იარაღი
mp_free_armor0 არაფერი, 1 kevlar, 2 kevlar და ჩაფხუტი, უფასოდ ყოველ რაუნდში
mp_autoteambalanceნებისმიერი მატჩისთვის გამორთული. ჩართული casual სერვერებისთვის, რომლებიც არათანაბრად ივსება
mp_timelimitწუთები რუკაზე. 0 ნიშნავს, რომ რაუნდები წყვეტს

mp_roundtime სარეზერვოა და ორი კონკრეტული cvar იმარჯვებს იმ რუკის ტიპებზე, რომლებსაც ისინი ასახელებენ, ამიტომ სამივე დააყენე, თორემ defuse რუკებზე 1:55 მიიღებ, hostage რუკებზე კი სხვა რამეს. Warm-up-ს ამთავრებ mp_warmup_end ბრძანებით და არა ლოდინით, ხოლო mp_warmup_pausetimer 1 warm-up-ის საათს უსასრულოდ აჩერებს, რითაც მატჩის სერვერი ელოდება, სანამ ათი ადამიანი მოვა.

scrim-ისთვის გუნდების სახელები არის mp_teamname_1 და mp_teamname_2, ხოლო mp_teamflag_1 და mp_teamflag_2 იღებს ორასოიან ქვეყნის კოდებს. ისინი ჩანს ანგარიშის ტაბლოსა და GOTV-ში. მატჩის სერვერის მთლიანი მოწყობა, knife round-სა და demo-ების დამუშავების ჩათვლით, აღწერილია პოსტში CS2 competitive მატჩის სერვერი.

Tick rate და sub-tick#

CS2 სერვერები 64 tick-ზე მუშაობს, თუ -tickrate 128-ს არ გადასცემ. რას ცვლის ეს, CS:GO-ზე ნაკლებია და ღირს იმის გაგება, რატომ, სანამ მასში ფულს გადაიხდი.

Source 2 მოთამაშის შეყვანებს იმ მომენტის დროით ანიჭებს, როცა ისინი მოხდა და არა იმ tick-ისას, რომელშიც მოვიდა, ამიტომ სროლა და მოძრაობა sub-tick სიზუსტით ფასდება 64 tick სერვერზე. Hit registration, რაც CS:GO-ში 128 tick-ის სასარგებლო მთელი არგუმენტი იყო, დიდწილად აღარ არის tick-ზე დამოკიდებული. რაც ჯერ კიდევ tick-ზეა მიბმული, ყველაფერია, რაც tick-ზე ისიმულირება: გრენადების ფიზიკა, jump-throw-ს ზუსტი კადრები და ის, რასაც plugin tick handler-ში აკეთებს. 128 tick სერვერი ასევე შესამჩნევად უფრო მძიმე GOTV demo-ებს ქმნის.

ფასი დაახლოებით ორჯერ მეტი CPU-ა თითო მოთამაშეზე. გეგმაზე, რომელიც ბირთვის ფიქსირებულ წილს ყიდულობს, ეს რეალური შეზღუდვაა და არა აბსტრაქცია, და 128 tick სერვერი, რომელიც თავის CPU ლიმიტზე დგას, უარესია, ვიდრე 64 tick სერვერი, რომელსაც მას არასოდეს აღწევს. რას ნიშნავს tick rate სინამდვილეში გაზომვას განიხილავს; CS2-ისთვის მოკლე ვერსია ასეთია: community სერვერზე 64 გამოიყენე, 128 კი მხოლოდ competitive-ზე, სადაც ხალხი jump-throw-ებზე იდავებს.

Rate cvar-ები უფრო მარტივია, ვიდრე ადრე იყო. sv_minrate და sv_maxrate ზღუდავს ბაიტებს წამში თითო კლიენტზე, 0 კი ზედა ზღვრის გარეშეა, ხოლო CS:GO-ს sv_maxcmdrate და sv_maxupdaterate წყვილი აღარ მოქმედებს ისე, როგორც ძველი გზამკვლევები აღწერს. Rate-ებს ხელს ნუ ახლებ, თუ პრობლემა არ გაგიზომავს. CS2-ში დაახლოებით 60-დან 120 KB/s-მდე თითო მოთამაშეზე ნორმალურია.

RCON, kick-ები და ban-ები#

RCON TCP-ით მუშაობს თამაშის პორტზე, სჭირდება -usercon გაშვების ხაზზე და არაცარიელი rcon_password. კლიენტის კონსოლიდან:

code
rcon_address 203.0.113.10:27015rcon_password a-long-random-stringrcon status

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

ბრძანებარას აკეთებს
statusმოთამაშეები, მათი user id-ები, Steam id-ები, ping და მიმდინარე რუკა
usersმოკლე სია მოთამაშეების
kick <name>მოთამაშეს სახელით აშორებს
kickid <userid> <reason>აშორებს status-ის დაბეჭდილი id-ით. საიმედოა უცნაური სახელების დროს
banid <minutes> <userid>Ban. 0 წუთი მუდმივს ნიშნავს
banip <minutes> <ip>მისამართის ban
writeidინახავს id ban-ებს banned_user.cfg-ში
writeipინახავს მისამართის ban-ებს banned_ip.cfg-ში
removeid / removeipერთ ჩანაწერს ხსნის
changelevel <map>რუკას ცვლის, მოთამაშეები დაკავშირებული რჩებიან
mp_restartgame 1თამაშს ერთ წამში რესტარტს უკეთებს
mp_warmup_endwarm-up-ს ახლავე ამთავრებს
mp_pause_match / mp_unpause_matchთამაშს აჩერებს და აგრძელებს
exec <file>უშვებს კონფიგს game/csgo/cfg/-იდან
say <text>ჩატში ლაპარაკობს სერვერის სახელით

ძრავას ban-ები მწირია: ისინი ბრტყელ ფაილში ინახება, writeid სჭირდება, თორემ რესტარტისას ქრება, და არც მიზეზი აქვს, არც წასაკითხი ვადა, არც სერვერებს შორის საერთო სია. ერთი ადამიანის გაგდებაზე მეტისთვის პასუხია plugin, რომლის უკან მონაცემთა ბაზაა, და სწორედ ესაა მთავარი მიზეზი, რის გამოც community CS2 სერვერები საერთოდ აყენებენ CounterStrikeSharp-ს.

Logging და cvar-ის პოვნა, რომელიც ნახევრად გახსოვს#

log on პლუს sv_logfile 1 წერს game/csgo/logs/-ში, თითო ფაილი სესიაზე, კავშირებით, მკვლელობებით, ჩატით და ადმინის ქმედებებით. sv_logecho 1 მას კონსოლში ასახავს, რაც გინდა პანელზე, სადაც კონსოლი ის არის, რასაც რეალურად უყურებ. sv_logbans 1 ban-ებს იმავე ნაკადში წერს, რომ ექვსი კვირის შემდეგ კითხვას "ვინ დაბანა და როდის" უპასუხო.

CS2 log-ების გადაგზავნას HTTP-ით გთავაზობს logaddress_add_http "http://10.0.0.5:8080/"-ით, რაც CS:GO-ს UDP logaddress_add არ არის, რომელსაც ძველი სტატისტიკის ინსტრუმენტები ელიან. თუ გარე სტატისტიკის სერვისს აერთებ, შეამოწმე, ამ ორიდან რომელზე მუშაობს, სანამ ერთ საღამოს firewall-ის წესზე დახარჯავ.

ორი კონსოლის ბრძანება უფრო მეტ დროს გიზოგავს, ვიდრე ნებისმიერი გზამკვლევი:

code
find alltalkhelp mp_maxrounds

find <text> ჩამოთვლის ყველა cvar-სა და ბრძანებას, რომლის სახელი ან დახმარების ტექსტი შეიცავს ამ ტექსტს, მიმდინარე მნიშვნელობით. help <cvar> ბეჭდავს აღწერასა და ნაგულისხმევს. ორივეთი ნებისმიერ კითხვას "არსებობს თუ არა ეს cvar CS2-ში" ხუთ წამში დაასრულებ, რაც მნიშვნელოვანია, რადგან CS2-ის შესახებ ინტერნეტში არსებული რჩევების დიდი ნაწილი CS:GO-ს რჩევაა შეცვლილი რიცხვებით. კონსოლის კითხვა გიჩვენებს, კიდევ რა ღირს ამ გამოტანაში დაკვირვება.

პრობლემების მოგვარება#

სერვერი browser-ში არ ჩანს. თითქმის ყოველთვის token-ია: არ არის sv_setsteamaccount, token გაუქმებულია, ან ერთი და იგივე token ორ სერვერზეა. შეამოწმე გაშვების log-ი Steam-ში შესვლის ხაზებისთვის. თუ პირდაპირი დაკავშირება მუშაობს, browser-ის სია კი - არა, ეს token-ის პრობლემის ნიშანია და არა ქსელისა.

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

cvar ყოველ რაუნდზე ან რუკაზე ბრუნდება. game mode-ის კონფიგი მას ხელახლა ადგენს. გადაიტანე gamemode_<mode>_server.cfg-ში.

`mp_maxrounds` არაფერს ცვლის. ან mp_timelimit არანულოვანია და რუკას წინასწარ ამთავრებს, ან mode არ არის competitive. შეამოწმე game_type და game_mode status-ით და find game_mode-ით.

მოთამაშეები უერთდებიან და მაშინვე წყდებიან. შეამოწმე, რომ sv_lan არის 0, და log-ში VAC-ის ან Steam-ის ავთენტიფიკაციის შეცდომები ნახე. -insecure-ით გაშვებული სერვერი კლიენტებს ნორმალურად არ ავთენტიფიცირებს.

კონსოლი სავსეა "unknown command"-ით. CS:GO-ს კონფიგია CS2 სერვერზე. გაიარე find-ით; დაახლოებით ყოველი მეათე cvar-ის სახელი შეიცვალა ან გაქრა.

მაღალი CPU, როცა არავინ არის. sv_hibernate_when_empty არის 0, ან plugin სერვერს ღვიძლად ინარჩუნებს. უქმი პერიოდის განმავლობაში უყურე CPU-ს გრაფიკს და ნუ გამოიცნობ.

FAQ#

სად არის server.cfg CS2 სერვერზე?

game/csgo/cfg/server.cfg, ინსტალაციის საქაღალდის შიგნით. ყურადღება მიაქციე გაორმაგებულ გზას: CS2-ის ხეს აქვს game საქაღალდე და მის შიგნით mod-ის საქაღალდეს ისევ csgo ჰქვია. ის ყოველი რუკის ჩატვირთვისას სრულდება, ამიტომ კონფიგის ცვლილება შემდეგ რუკაზე ამოქმედდება რესტარტის გარეშე.

რატომ ანულებს ჩემი CS2 სერვერი mp_ პარამეტრებს?

იმიტომ, რომ game mode-ის კონფიგი server.cfg-ის შემდეგ სრულდება და იგივე cvar-ებს აყენებს. mp_ მნიშვნელობები ჩააწერე game/csgo/cfg/gamemode_competitive_server.cfg-ში - _server ვარიანტი Valve-ის მხარდაჭერილი გადაფარვის ფაილია და განახლებებს გადაურჩება.

ღირს თუ არა 128 tick CS2-ში?

competitive სერვერისთვის, სადაც ხალხი გრენადების ხაზებს ივარჯიშებს, დიახ. community სერვერისთვის - არა. Sub-tick შეყვანის დრომ hit registration-ის არგუმენტის უმეტესობა მოხსნა, 128 tick კი დაახლოებით ორჯერ მეტ CPU-ს ითხოვს თითო მოთამაშეზე.

მჭირდება თუ არა GSLT კერძო CS2 სერვერისთვის?

მხოლოდ საჯარო browser-ისთვის. token-ის გარეშე სერვერი მუშაობს და მეგობრები მისამართით უერთდებიან, რაც კერძო ჯგუფისთვის საკმარისია. token-ით სერვერი ჩანს სიაში, ამასთან token შენი უნდა იყოს და ერთდროულად ერთ სერვერზე გამოიყენებოდეს.

როგორ გავხადო ერთი მოთამაშე ადმინი?

CS2-ში ძრავას დონეზე ადმინის ცნება RCON პაროლის გარდა არ არსებობს. შეზღუდული უფლებების მიცემა - kick, რუკის შეცვლა, mute - Metamod:Source-ის და plugin framework-ის დაყენებას ნიშნავს, რომელსაც აქვს ადმინის ფაილი თითო მოთამაშის flag-ებით.

რამდენი მოთამაშე ეტევა CS2 სერვერზე?

-maxplayers_override-ით 64-მდე, მაგრამ პრაქტიკული პასუხი mode-ზეა დამოკიდებული. Competitive არის 10, Wingman 4, casual 10-დან 20-მდე და deathmatch 16-დან 24-მდე. დაახლოებით 24-ზე მეტზე CPU-ს ფასი თითო მოთამაშეზე და რუკების ზომა ერთმანეთს აღარ ერგება.


კომენტარები

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

0/2000