Team Fortress 2-ის საზოგადოებრივ სერვერზე ყველაფერი, რაც ხალხს მოსწონს, plugin-ია. ადმინის ბრძანებები, რუკის კენჭისყრა, დაჯავშნილი ადგილები, საკუთარი რეჟიმები, სტატისტიკა, ის, რაც ერთ ადამიანს საათობით ხმაურს უკრძალავს - არცერთი მათგანი თამაშში არ არის. ეს არის Metamod:Source, რომელიც SourceMod-ს ტვირთავს, SourceMod, რომელიც ტვირთავს გამზადებული plugin-ების საქაღალდეს, და დაახლოებით ოცი წუთის კონფიგურაცია, რომელსაც უმეტესი გზამკვლევი გამოტოვებს, რადგან ვარაუდობს, რომ ეს უკვე იცი.
მუშაობა ორ ფაილზეა დამოკიდებული: tf/addons/metamod.vdf ძრავას ეუბნება, გაშვებისას Metamod ჩატვირთოს, ხოლო tf/addons/sourcemod/configs/admins_simple.ini წყვეტს, ვინ ხარ შენ. თუ ეს ორი სწორია, დანარჩენი plugin-ების არჩევაა. ეს პოსტი მოიცავს დაყენებას, ადმინის სისტემას დეტალურად, plugin-ებს, რომლებიც თან მოყვება და რომლებიც ღირს დამატება, TF2-ის cvar-ებს, რომლებიც მართლა რაღაცას ცვლის, საკუთარ კონტენტსა და ჩამოტვირთვებს და იმას, რა ტყდება, როცა Valve თამაშს ანახლებს. Team Fortress 2 სერვერი, რომელშიც ღირს შესვლა მოკლე ახსნაა იმისა, რატომ აქვს ყოველივე ამას მნიშვნელობა.
რა არის SourceMod და რა უშვებს მას#
SourceMod არის plugin-ების პლატფორმა Source 1 თამაშებისთვის. plugin-ები იწერება SourcePawn-ზე, კომპილირდება .smx ფაილებად და იყრება საქაღალდეში; SourceMod მათ ტვირთავს, აძლევს თამაშის API-ს და თავად უმკლავდება ადმინის იდენტობას, თარგმანებს, მენიუებსა და მონაცემთა ბაზასთან წვდომას, რომ ყველა plugin-მა ეს თავისთვის არ გააკეთოს. Metamod:Source მის ქვეშ დგას როგორც ის ჩამტვირთავი, რომელიც SourceMod-ს საერთოდ თამაშის პროცესში შეჰყავს.
TF2 არის Source 1 თამაში, ამიტომ ეს ყველაფერი სრულად მუშაობს. ამას იმიტომ ვამბობ, რომ Counter-Strike 2 Source 2-ია და იქ არცერთი მათგანი არ მუშაობს. დღეს ნაპოვნი SourcePawn plugin TF2-ზე იმუშავებს და CS2-ზე - ვერა.
თავად სერვერი Steam-ის აპლიკაცია 232250-ია, რომელიც ანონიმურად ინსტალირდება:
$ steamcmd +force_install_dir /home/tf2/server +login anonymous \ +app_update 232250 validate +quit$ cd /home/tf2/server$ ./srcds_run -game tf -console -usercon -port 27015 \ +maxplayers 24 +map cp_process_final \ +sv_setsteamaccount YOUR_GSLT_TOKEN| კონფიგურაცია | RAM | CPU | დისკი |
|---|---|---|---|
| 12 ადგილი, 6v6, რამდენიმე plugin | 1-2 GB | 1 core | 30 GB |
| 24-32 ადგილიანი საჯარო სერვერი, plugin-ების სრული ნაკრები | 2-3 GB | 1.5-2 cores | 30-40 GB |
| Versus Saxton Hale, Freak Fortress, საკუთარი რეჟიმები | 3-4 GB | 2+ cores | 40 GB და კონტენტი |
| MvM საკუთარი მისიებით | 3-4 GB | 2+ cores | 40 GB და კონტენტი |
TF2 იმით გამოირჩევა, რომ პატარა გეგმაზე პირველად დისკი იწურება და არა მეხსიერება. dedicated server-ის ინსტალაცია 15 GB-ზე მეტია, სანამ ერთ საკუთარ რუკას დაამატებ, და ყოველი განახლებით იზრდება. მეხსიერება მოკრძალებულია: თამაში ძველია და კარგად ოპტიმიზებული, ამიტომ სრული 24-ადგილიანი სერვერი 2 GB-ში კომფორტულად ეტევა, თუ რომელიმე plugin ყველა მოთამაშისთვის მდგომარეობას არ ინახავს.
-usercon flag RCON-ს რთავს, ხოლო sv_setsteamaccount იღებს Game Server Login Token-ს, რომელიც სერვერს Steam-ის სათამაშო სერვერის ანგარიშთან რეგისტრირებს, რომ საჯარო ბრაუზერში გამოჩნდეს. მისი შექმნა უფასოა და ის შენს კუთვნილ Steam ანგარიშს ეკუთვნის - Steam-ის სერვერის token-ები ახსნილი აღწერს, როგორ შექმნა და რისთვის გცემენ ბანს.
Metamod:Source-ისა და SourceMod-ის დაყენება#
- ჩამოტვირთე Metamod:Source და SourceMod ერთი და იმავე branch-ისთვის. მათი ვერსიები ერთად მიდის, და თუ არაფერი იტვირთება, პირველი შესამოწმებელი ისაა, ხომ არ აურიე მიმდინარე SourceMod ძველ Metamod-თან.
- ორივე ისე გახსენი, რომ მათი
addonsსაქაღალდეებიtf/-ში მოხვდეს. საბოლოოდ უნდა გქონდესtf/addons/metamod/დაtf/addons/sourcemod/. - დარწმუნდი, რომ
tf/addons/metamod.vdfარსებობს. ეს ორსტრიქონიანი ფაილია, რომელიც Metamod-ის ბინარულ ფაილს ასახელებს თამაშის ძირიდან ათვლილი გზით:
"Plugin"{ "file" "../tf/addons/metamod/bin/server"}- გადატვირთე სერვერი და გაუშვი
meta list, შემდეგsm version.
ამ VDF-ში გზა ის ადგილია, სადაც ხალხი ცდება. ის tf-ის ზემოთ მდებარე საქაღალდიდან ითვლება, სწორედ ამიტომ იწყება ../tf/-ით. TF2-ის 64-ბიტიან ბინარულ ფაილებზე გადასვლის შემდეგ სერვერის ბიბლიოთეკა linuxsteamrt64 ქვესაქაღალდეშია, ამიტომ მიმდინარე ინსტალაციაზე გზას ეს დამატებითი ელემენტი აქვს და გჭირდება Metamod-ისა და SourceMod-ის ის build-ები, რომლებიც 64-ბიტიან ბინარულ ფაილებს შეიცავს. თუ meta list საერთოდ არაფერს გამოიტანს, თითქმის ყოველთვის ეს არის მიზეზი: სწორი ფაილები, არასწორი გზა, ან 32-ბიტიანი build-ები 64-ბიტიან სერვერზე.
tf/addons/sourcemod/ configs/ admins_simple.ini admins, the simple way admins.cfg admins, the grouped way admin_groups.cfg groups and their flags admin_levels.cfg what each flag letter means databases.cfg database connections maplists.cfg which map list each plugin uses core.cfg SourceMod itself plugins/ .smx files that load plugins/disabled/ .smx files that do not extensions/ native extensions gamedata/ offsets and signatures per game logs/ errors_YYYYMMDD.log scripting/ .sp sources and the compilertf/cfg/sourcemod/ generated per-plugin configsამ საქაღალდეებიდან ორი პასუხობს მხარდაჭერის კითხვების უმეტესობას. plugins/disabled/ ის ადგილია, სადაც plugin-ს წაშლის ნაცვლად გადაიტანებ, ხოლო logs/errors_*.log ის ადგილია, სადაც იმის მიზეზი, რატომ არ ჩაიტვირთა, უბრალო ენით წერია - რასაც თამაშის კონსოლი იშვიათად ახერხებს.
ადმინები: ფაილი, flag-ები, იმუნიტეტი#
მარტივი ადმინის ფაილი ერთ ადამიანზე ერთი სტრიქონია: იდენტობა, შემდეგ იმუნიტეტი და flag-ები.
// "identity" "immunity:flags""STEAM_0:1:123456" "99:z""STEAM_0:0:987654" "50:abcdefgj""STEAM_0:1:555555" "20:bcj"ორწერტილამდე რიცხვი იმუნიტეტია: უფრო მაღალი რიცხვის მქონეს დაბალი რიცხვის მქონე ვერ გააგდებს, ვერ დაბანავს და ვერ მოკლავს. მის შემდეგ ასოები flag-ებია.
| Flag | რას იძლევა |
|---|---|
a | დაჯავშნილი ადგილი |
b | ზოგადი ადმინი. უმეტესი plugin ჯერ ამას ამოწმებს |
c | გაგდება |
d | ბანი |
e | ბანის მოხსნა |
f | მოკვლა და დარტყმა |
g | რუკის შეცვლა |
h | cvar-ების შეცვლა |
i | კონფიგურაციების გაშვება |
j | ადმინის ჩატი და შეტყობინებები |
k | კენჭისყრის დაწყება |
l | სერვერის პაროლის დაყენება |
m | RCON SourceMod-ის გავლით |
n | cheat-ების ჩართვა |
o to t | საკუთარი, რომელსაც ცალკეული plugin-ები განსაზღვრავენ |
z | Root. ყველაფერი, იმ flag-ების ჩათვლით, რომლებიც ჯერ არ არსებობს |
შენ თავს მიეცი z, საღამოობით მომუშავე ხალხს - bcdefgj, ხოლო იმას, ვინც გასულ თვეს შემოგვიერთდა, - bcj. ორი flag, რომელზეც ორჯერ უნდა დაფიქრდე, არის m და n: m RCON-ია, ანუ მთელი სერვერი, ხოლო n cheat-ებს რთავს, რაც საჯარო სერვერზე სერვერის დასასრულია.
იდენტობა შეიძლება იყოს SteamID, IP მისამართი ან სახელი პაროლით, და აზრი მხოლოდ SteamID-ს აქვს. SourceMod-ს სჭირდება ის ფორმატი, რომელსაც კონსოლში status აბეჭდავს დაკავშირებული მოთამაშისთვის, ამიტომ ხელით ნუ აკრეფ, ჩააკოპირე. sm_reloadadmins ფაილს ხელახლა კითხულობს გადატვირთვის გარეშე.
თუ პერსონალი რამდენიმე ადამიანზე მეტია, admin_groups.cfg და admins.cfg საშუალებას გაძლევს, "Moderator" ჯგუფი ერთხელ აღწერო და ადამიანები მასში ჩასვა, რაც ჯობს თორმეტი სტრიქონის flag-ების რედაქტირებას, როცა აზრს შეიცვლი. ამაზე დიდი ჯგუფისთვის ან რამდენიმე სერვერზე გავრცელებული პერსონალისთვის უკეთესია მონაცემთა ბაზაზე დაფუძნებული ადმინის სისტემა, რომელიც configs/databases.cfg-ში ყენდება:
"Databases"{ "default" { "driver" "default" "host" "your-db-host" "database" "sourcemod" "user" "generated-user" "pass" "generated-password" } "storage-local" { "driver" "sqlite" "database" "sourcemod-local" }}პანელის მონაცემთა ბაზის სლოტი გაძლევს host-ს, ბაზის სახელს, მომხმარებელსა და პაროლს, და ამ ფაილს სწორედ ეს ოთხი მნიშვნელობა სჭირდება. თუ ერთ სერვერზე მხოლოდ იმის საჭიროებაა, რომ ბანები გადატვირთვას გადაურჩეს, ზემოთ მოცემულ storage-local SQLite ჩანაწერს მონაცემთა ბაზა საერთოდ არ სჭირდება და ის უკვე იქ არის.
| ბრძანება | შედეგი |
|---|---|
sm_admin | თამაშში ხსნის ადმინის მენიუს |
sm_kick <target> [reason] | გაგდება |
sm_ban <target> <minutes> [reason] | ბანი. 0 სამუდამოა |
sm_addban <minutes> <steamid> | ბანი იმისთვის, ვინც დაკავშირებული არ არის |
sm_unban <steamid> | ბანის მოხსნა |
sm_gag / sm_mute / sm_silence | ტექსტი, ხმა ან ორივე |
sm_slay / sm_slap <target> [damage] | მოკვლა, ან დაზიანება და ჰაერში ატყორცნა |
sm_map <map> / sm_votemap <map...> | რუკის შეცვლა ან მასზე კენჭისყრა |
sm_cvar <cvar> [value] | cvar-ის წაკითხვა ან დაყენება |
sm_who | ვინ არის დაკავშირებული და რა წვდომა აქვს |
sm_reloadadmins | ადმინის ფაილების ხელახლა წაკითხვა |
sm plugins list | რა არის ჩატვირთული |
sm plugins reload <name> | ერთი plugin-ის გადატვირთვა |
target-ად მიიღება #userid, სახელის ნაწილი, @all, @blue, @red, @me და @!me, რაც ღირს იცოდე, სანამ ოცდაოთხი ადამიანის თვალწინ არასწორ ადამიანს მოკლავ.
plugin-ები, რომლებიც SourceMod-ს თან მოყვება#
SourceMod-ის ახალი ინსტალაცია უკვე შეიცავს იმის უმეტესობას, რაც საჯარო სერვერს სჭირდება, და ხალხი მესამე მხარის plugin-ებს იმის ჩასანაცვლებლად აყენებს, რაც უკვე აქვს. რა დევს ყუთში:
- ადმინის ბრძანებები, ადმინის მენიუ, ბანები და კომუნიკაციის კონტროლი -
basecommands,adminmenu,basebans,basecomm,basechat. - რუკის კენჭისყრა და ცვლა -
mapchooserრუკის ბოლოს კენჭისყრას აწარმოებს,rockthevoteმოთამაშეებს მისი გამოძახების საშუალებას აძლევს,nominations- წამოყენების,nextmapპასუხობსsay nextmap-ს,randomcycleკი შემთხვევით არჩევს. - კომფორტი -
reservedslots,antiflood,basetriggersბრძანებისთვისsay timeleft,funcommandsდაfunvotesსასაცილო რაღაცეებისთვის,clientprefs, რომ plugin-ებმა მოთამაშის პარამეტრები დაიმახსოვრონ.
თითოეული მათგანი პირველი ჩატვირთვისას tf/cfg/sourcemod/-ში კონფიგურაციის ფაილს ქმნის, სადაც ყველა მისი cvar, მათი ნაგულისხმევი მნიშვნელობა და განმარტებითი კომენტარია. ეს საქაღალდე ნამდვილი დოკუმენტაციაა, და plugin.mapchooser.cfg-ის წაკითხვა 2013 წლის ფორუმის პოსტის ძებნას სჯობს. rock the vote-ის ზღვარი, რამდენი წუთით ადრე იწყება რუკის კენჭისყრა, შეიძლება თუ არა რუკის გაგრძელება - ყველაფერი იქ ნაგულისხმევი მნიშვნელობებითაა.
რომელ რუკებს სთავაზობს ეს plugin-ები, configs/maplists.cfg-იდან მოდის, რომელიც ნაგულისხმევად მათ სერვერის mapcyclefile-ზე უთითებს. დააყენე mapcyclefile "mapcycle.txt" server.cfg-ში, ჩაწერე თითო რუკის სახელი თითო სტრიქონზე tf/cfg/mapcycle.txt-ში და კენჭისყრა, წამოყენებები და ცვლა ერთმანეთს დაეთანხმება. რუკების მოკლე სია, რომელიც ხალხს მოსწონს, სჯობს გრძელს, სადაც ორი მესამედი გამოტოვებულია.
plugin-ები, რომლებიც ღირს დამატება#
| Plugin | რას აკეთებს |
|---|---|
| TFTrue | კონკურენტული whitelist-ები, ტურნირის ფუნქციები, logs.tf-ზე ატვირთვა. იტვირთება plugin_load-ით და არა SourceMod-ის გავლით |
| F2-ის სტატისტიკის plugin-ები | supstats2, medicstats და logs.tf-ის ამტვირთავი: სტანდარტული ნაკრები ყველა მატჩის ლოგის უკან, რომელიც წაგიკითხავს |
| SOAP TF2DM | Deathmatch-ის spawn-ები და მყისიერი აღორძინება scrim და pug სერვერებისთვის |
| TF2Items და TF2Attributes | იარაღის ატრიბუტების შეცვლა. საფუძველი, რომელზეც საკუთარი იარაღის უმეტესი plugin დგას |
| Versus Saxton Hale / Freak Fortress 2 | ბოსის რეჟიმები, რომლებიც 24-ადგილიან სერვერებს სავსე ინახავს |
| Updater | ავტომატურად განაახლებს plugin-ებს, რომლებსაც ამის მხარდაჭერა აქვს |
წინააღმდეგობა გაუწიე ოცდაათის დაყენების სურვილს. ყოველი plugin შენს სათამაშო სერვერზე გაშვებული კოდია, რომელიც TF2-ის ყოველი განახლების შემდეგ ხელახლა უნდა შემოწმდეს, და ექვსი plugin-ის მქონე სერვერი, სადაც ყველაფერი მუშაობს, სჯობს ოცდაათიანს, სადაც ორი ჩუმად წერს შეცდომებს ლოგში, რომელსაც არავინ კითხულობს. plugin დააყენე იმიტომ, რომ რაღაც კონკრეტული არ მუშაობს და არა იმიტომ, რომ საინტერესოდ გამოიყურებოდა.
plugin-ები ჩვეულებრივი ფაილებია, ამიტომ საკმარისია file manager ან SFTP - SFTP და file manager შეიცავს დაკავშირების დეტალებს. ჩააგდე .smx საქაღალდეში addons/sourcemod/plugins/, შეცვალე რუკა ან გაუშვი sm plugins load <name> და შეამოწმე sm plugins list. .sp წყაროდ გავრცელებული plugin-ები კომპილაციას საჭიროებს, ან spcomp-ით საქაღალდეში addons/sourcemod/scripting/, ან SourceMod-ის საიტზე არსებული ვებ კომპილატორით. ზოგადი ჰიგიენის არგუმენტი აღწერილია პოსტში მოდიფიცირებული სერვერის სისუფთავე და აქაც მოქმედებს: plugin სერვერის სრული უფლებებით მუშაობს და sandbox-ი არ აქვს.
სერვერის cvar-ები, რომლებიც TF2-ს მართლა აინტერესებს#
hostname "Longship TF2 // No crits // EU"rcon_password "a-long-random-string"sv_password ""sv_lan 0sv_region 3sv_tags "nocrits,vanilla,eu"sv_visiblemaxplayers -1// Roundsmp_timelimit 30mp_winlimit 0mp_maxrounds 0mp_bonusroundtime 8mp_autoteambalance 1mp_teams_unbalance_limit 1mp_disable_respawn_times 0mp_idlemaxtime 5mp_idledealmethod 2// Gameplaytf_weapon_criticals 1tf_damage_disablespread 0tf_use_fixed_weaponspreads 0tf_bot_quota 0// Contentsv_pure 1sv_pure_kick_clients 1sv_allowupload 0sv_allowdownload 1sv_downloadurl ""net_maxfilesize 64// Housekeepingmapcyclefile "mapcycle.txt"sv_hibernate_when_empty 1sv_hibernate_postgame_delay 30// SourceTVtv_enable 1tv_port 27020tv_delay 90tv_name "Longship STV"ამათგან სამი განსაზღვრავს, როგორი სერვერი გაქვს. tf_weapon_criticals 0 შემთხვევით კრიტიკულ დარტყმებს თიშავს, რაც თამაშის ყველაზე გაყოფილი პარამეტრია და ყოველ შემთხვევაში სერვერის სახელში უნდა ეწეროს. tf_damage_disablespread 1 და tf_use_fixed_weaponspreads 1 კონკურენტული დაზიანების პარამეტრებია, და მათი ჩუმად ჩართვა საჯარო სერვერზე ურევს მუდმივ მოთამაშეებს, რომლებსაც ვერ ხსნიან, რატომ ეჩვენებათ რაკეტსატყორცნი სხვანაირი. mp_disable_respawn_times 1 სწრაფ, ქაოტურ სერვერს იძლევა, რაც ბევრ საზოგადოებას სინამდვილეში სურს.
mp_idlemaxtime 5 და mp_idledealmethod 2 იმ მოთამაშეებს აგდებს, რომლებიც ხუთი წუთი უმოქმედოდ არიან, და 24-ადგილიან სერვერზე ეს განსხვავებაა სავსესა და არავისით სავსეს შორის. თუ უფრო ნაზად გირჩევნია, დააყენე მეთოდი 1, რომ მათ მაყურებლებში გადაიყვანოს.
sv_hibernate_when_empty 1 ცარიელ სერვერს თითქმის ნულოვან CPU-მდე ჩამოიყვანს, რაც მნიშვნელოვანია, როცა გეგმა მთელი core-ის ნაცვლად მისი ნაწილის წილს იძლევა. SourceTV მეორე პორტი და მეორე პროცესია: ის ხალხს ცოცხლად ყურების საშუალებას აძლევს და demo-ებს წერს, და სწორედ ამიტომ მოდის აქაური TF2 გეგმები ერთის ნაცვლად სამი პორტით - თამაში, SourceTV და ერთი სათადარიგო იმისთვის, რასაც შემდეგ დაამატებ. RCON TCP-ზე მუშაობს თამაშის პორტზე და -usercon სჭირდება; პანელის კონსოლი უფრო უსაფრთხო შესასვლელია, იმ მიზეზებით, რომლებიც აღწერილია პოსტში RCON-ის უსაფრთხო გამოყენება.
ბოტები არის tf_bot_quota და tf_bot_quota_mode fill, tf_bot_difficulty 0-დან 3-მდე და tf_bot_add. მათ რუკისთვის navigation mesh სჭირდება, რომელსაც ოფიციალური რუკები შეიცავს და საკუთარი რუკების უმეტესობა - არა; სერვერს მისი გენერირება nav_generate-ით შეუძლია, რაც დიდხანს გრძელდება და რთული გეომეტრიისას ბოტებს კედლებში აჭერს.
საკუთარი კონტენტი, sv_pure და სწრაფი ჩამოტვირთვა#
sv_pure 1 კლიენტებს აიძულებს, თავიანთი თამაშის კონტენტის ნაცვლად სერვერისას გამოიყენონ, გამონაკლისებით, რომლებიც tf/pure_server_whitelist.txt-შია ჩამოთვლილი. ამით ჩერდება ხალხი, რომელიც flat-white ტექსტურების პაკეტს იყენებს, რომ ყველა ანათებდეს. sv_pure 2 უფრო მკაცრია და ბევრ უწყინარ მორგებას ტეხავს, HUD-ების ჩათვლით, რომლებზეც ხალხი დამოკიდებულია, ამიტომ უმეტესი სერვერი 1-ზე და გონივრულ whitelist-ზე ჩერდება. sv_pure_kick_clients 1 კლიენტებს, რომლებიც უარს ამბობენ, აგდებს და არ ცდილობს მათ შეთანხმებას.
საკუთარი რუკები მოთამაშემდე უნდა მივიდეს. ძრავის საკუთარი ჩამოტვირთვა sv_allowdownload 1-ით მუშაობს და იმდენად ნელია, რომ ხალხი ჩამოტვირთვისას გამორთავს კავშირს. გამოსავალი არის sv_downloadurl, რომელიც ვებ სერვერზე უთითებს და სერვერის საქაღალდის სტრუქტურას იმეორებს - maps/, sound/, materials/, models/ - ყოველი ფაილის bzip2-ით შეკუმშული ასლებით, სასურველად. ამას ნებისმიერი სტატიკური ჰოსტი გასცემს, პატარა web hosting გეგმის ჩათვლით; ეს ფაილების საქაღალდეა HTTP-ზე. მექანიზმი იგივეა, რასაც Garry's Mod იყენებს, და workshop-ის კონტენტი და FastDL საქაღალდეების განლაგებას დეტალურად განიხილავს.
sv_allowupload 0 ამ კონფიგურაციაში შეგნებულია. კლიენტის ატვირთვებით ჩნდებოდა საკუთარი spray-ის სურათები და ისინი ასევე დიდი ხნის მანძილზე პრობლემების წყარო იყო. ატვირთვების გამორთვა spray-ებს გიღირს და პრობლემების მთელ კატეგორიას აქრობს.
განახლებები, 64-ბიტიანი ვერსია და მუშაობის შენარჩუნება#
TF2-ის განახლებები SourceMod-ს ტეხავს. ყოველთვის არა, მაგრამ იმდენად ხშირად, რომ ეს გეგმიური მოვლენა უნდა იყოს და არა სიურპრიზი. გაუმართაობა ჩვეულებრივ gamedata-შია: SourceMod თამაშში ფუნქციებს signature-ით პოულობს, განახლება მათ ცვლის და plugin, რომელიც მათგან რომელიმეზეა დამოკიდებული, გამოყენებისთანავე შეცდომას გამოიტანს. გამოსწორება, თანმიმდევრობით:
- განაახლე SourceMod-ის gamedata. AlliedModders gamedata-ს განახლებებს სრული გამოშვებებისგან განცალკევებით გასცემს, და
updaterplugin-ს მათი ჩამოტვირთვა შეუძლია. - განაახლე Metamod:Source და SourceMod იმ branch-ის მიმდინარე build-ებზე, რომელიც შენი სერვერის არქიტექტურას შეესაბამება.
- განაახლე ცალკეული plugin, ან გადაიტანე
plugins/disabled/-ში და იცხოვრე მის გარეშე, სანამ ავტორი დაბრუნდება. ზოგი არასოდეს ბრუნდება.
64-ბიტიან ვერსიაზე გადასვლა ამის ის ვარიანტია, რომელსაც ყველა ერთდროულად შეეჯახა: TF2-მა 64-ბიტიანი სერვერის ბინარული ფაილები მიიღო და 32-ბიტიანი Metamod-ისა და SourceMod-ის ყველა ინსტალაცია შეწყდა, სანამ build-ები არ დაეწია. თუ დღეს აყენებ, აიღე ორივეს მიმდინარე build-ები და შეამოწმე, რომ ისინი 64-ბიტიანი ბინარული ფაილების მქონეა.
ჩვევა, რომელიც ამ ყველაფერს იაფს ხდის, არის მომუშავე addons საქაღალდის ასლის შენახვა სადმე, რაც სერვერი არ არის, რომ აღდგენა ფაილის კოპირება იყოს და არა ხელახალი ინსტალაცია. რა უნდა გააკეთო, როცა mod-ის განახლება ტყდება ზოგადი პროცედურაა. RE:NODE-ზე განახლება სერვერის გაშვებისას სრულდება, ამიტომ განახლების მიღება გადაწყვეტილებაა, რომელსაც გადატვირთვით იღებ, backup-ის სლოტები ყველა TF2 გეგმაშია შეტანილი, ხოლო Schedules ჩანართს შეუძლია ყოველდღიური backup და ღამის გადატვირთვა cron გამოსახულებით გაუშვას. თუ კონტეინერი მეხსიერების ლიმიტს მიაღწევს, ის ჩერდება და სუფთად გადაიტვირთება და არ რჩება swap-ზე, რაც უკეთესია, ვიდრე საათობით სერვერი, რომელიც ტექნიკურად პასუხობს.
პრობლემების მოგვარება#
`meta list` არაფერს ბეჭდავს. tf/addons/metamod.vdf არ არის, ან მასში გზაა არასწორი, ან build-ები 32-ბიტიანია 64-ბიტიან სერვერზე. შეამოწმე, რომ ფაილი არსებობს, შემდეგ - რომ მასში გზა ემთხვევა იქ, სადაც ბინარული ფაილი რეალურად დევს.
Metamod იტვირთება, მაგრამ `sm version` არაფერს აკეთებს. SourceMod არასწორ ადგილას არის გახსნილი. ის tf/addons/sourcemod-შია და არა addons/sourcemod-ში ძირში.
plugin იტვირთება, მაგრამ მისი ბრძანებები წერს "unknown command". ადმინის flag-ები. გაუშვი sm_who საკუთარ თავზე, შეამოწმე, რომ admins_simple.ini-ში შენი SteamID ზუსტად ისეა, როგორც status აჩვენებს, და გაუშვი sm_reloadadmins.
ყველაფერი მუშაობდა განახლებამდე. Gamedata. განაახლე SourceMod, შემდეგ plugin-ები, შემდეგ დაიწყე გამორთვა.
რუკის კენჭისყრა არასწორ რუკებს სთავაზობს. configs/maplists.cfg სხვა სიაზე უთითებს, ვიდრე ფიქრობ. ნაგულისხმევად ის mapcyclefile-ს მიჰყვება.
სერვერი ცარიელია, CPU-ს გრაფიკი კი ლიმიტზე სწორ ხაზადაა. plugin ტაიმერზე მუშაობს, როცა არავინაა დაკავშირებული, ან hibernation გამორთულია. დააყენე sv_hibernate_when_empty 1 და plugin-ები სათითაოდ გამორთე.
მოთამაშეები ვერ ჩამოტვირთავენ საკუთარ რუკას. ან sv_downloadurl არის არასწორი, ან ფაილი იმ გზაზე არ არის, ან net_maxfilesize ფაილზე ნაკლებია. სცადე URL ბრაუზერში: ფაილი პირდაპირ უნდა ჩამოიტვირთოს.
FAQ#
მჭირდება Metamod SourceMod-თან ერთად?
დიახ. Metamod:Source ის ჩამტვირთავია, რომელიც SourceMod-ს თამაშის პროცესში შეჰყავს; SourceMod plugin-ების პლატფორმაა. არცერთი არ აკეთებს მეორის საქმეს და ისინი ერთი და იმავე არქიტექტურის შესაბამისი build-ები უნდა იყოს.
სად დავამატო თავი ადმინად TF2 სერვერზე?
tf/addons/sourcemod/configs/admins_simple.ini-ში, ერთი სტრიქონით შენი SteamID-ით და "99:z"-ით სრული წვდომისთვის. გაუშვი sm_reloadadmins კონსოლში, შემდეგ თამაშში აკრიფე sm_admin მენიუს გასახსნელად.
მუშაობს SourceMod Counter-Strike 2-ზე?
არა. SourceMod Source 1 თამაშებს უჭერს მხარს, როგორიცაა TF2, Counter-Strike: Source და CS:GO. CS2 Source 2-ზე მუშაობს და იყენებს CounterStrikeSharp-ს, რაც სხვა პლატფორმაა სხვა plugin-ებით.
რამდენი RAM სჭირდება TF2 სერვერს?
ორი გიგაბაიტი ფარავს სრულ 24-ადგილიან სერვერს ჩვეულებრივი plugin-ების ნაკრებით. საკუთარი რეჟიმები, რომლებიც ყველა მოთამაშისთვის მდგომარეობას ინახავს, სამ-ოთხს ითხოვს. დისკი უფრო მკაცრი შეზღუდვაა: მხოლოდ ინსტალაცია 15 GB-ზე მეტია.
როგორ გამოვრთო შემთხვევითი კრიტიკული დარტყმები?
tf_weapon_criticals 0 server.cfg-ში. plugin არ სჭირდება. ჩაწერე ის სერვერის სახელშიც და sv_tags-შიც, რადგან ხალხი პირველ რიგში სწორედ ამით ფილტრავს.
რატომ წყვეტს ჩემი plugin-ები მუშაობას TF2-ის განახლების შემდეგ?
იმიტომ, რომ SourceMod თამაშის ფუნქციებს signature-ით პოულობს და განახლება მათ ცვლის. ჯერ განაახლე SourceMod-ის gamedata, შემდეგ თავად Metamod და SourceMod, შემდეგ ცალკეული plugin-ები.




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