DarkRP je gamemode pro Garry's Mod, takže jeho instalace jsou dvě složky a jeden startovací parametr: samotný gamemode v garrysmod/gamemodes/darkrp/ a addon darkrpmodification, kde žijí všechny tvoje změny. Všechno ostatní - joby, shipmenty, platy, kdo může koho banovat - je Lua kód, který upravuješ v addonu a nikdy v gamemodu. Server, který toto pravidlo dodržuje, přežije aktualizace DarkRP. Server, který edituje gamemode přímo, přijde při první aktualizaci o všechny úpravy, a takhle se to většina lidí učí.
Co DarkRP potřebuje, než začneš#
DarkRP běží na standardním dedikovaném serveru Garry's Mod, nainstalovaném přes SteamCMD jako aplikace 4020 s anonymním přihlášením. Základní instalaci popisuje průvodce nastavením serveru Garry's Mod; tento článek počítá s tím, že máš server, který naběhne v sandboxu a přijímá připojení.
Dvě věci, které DarkRP potřebuje a sandbox ne:
- Obsah Counter-Strike: Source. Klasické DarkRP mapy -
rp_downtown_v4c_v2a většina jejích potomků - používají textury a modely z CS:S. Bez nich je tvoje město fialovo-černá šachovnice. Na dedikovaném serveru nainstaluješ obsah dedikovaného serveru CS:S přes SteamCMD (aplikace232330) a vgarrysmod/cfg/mount.cfgna něj Garry's Mod nasměruješ. - Tarif s prostorem pro addony. Samotný DarkRP je malý. Kolekce na workshopu není. Typický veřejný DarkRP server nese několik gigabajtů addonů, ještě než má jediný vlastní job.
"mountcfg"{ "cstrike" "/home/container/cstrike/cstrike"}Cesta vede do složky, která obsahuje vlastní adresáře s obsahem cstrike. Když ji zadáš špatně, při startu si nic nestěžuje; zjistíš to až při načtení mapy.
| Hráči | RAM | Poznámky |
|---|---|---|
| Do 16, krátký seznam addonů | 2 GB | Pohodlné pro soukromý server |
| 24-32, běžný DarkRP | 3-4 GB | Obvyklý veřejný server |
| 40-64, velká kolekce | 6 GB | Limitem je teď seznam addonů |
Jedno tvrdé omezení, které je dobré znát dřív, než cokoli koupíš: výchozí dedikovaný server Garry's Mod je 32bitový proces a ten se zhroutí někde kolem 3 GB využité paměti bez ohledu na to, co tarif dovoluje. Garry's Mod zároveň nabízí větev x86-64, která tento strop zvedá. Pokud server padá při stále stejném počtu hráčů bez chybové hlášky, první podezřelý je adresní prostor paměti, ne tarif.
Instalace DarkRP a darkrpmodification#
DarkRP i jeho addon pro úpravy vydává FPtje na GitHubu. Stáhni aktuální release obou, nebo je naklonuj.
- Rozbal DarkRP do
garrysmod/gamemodes/darkrp/. Složka se musí jmenovat přesnědarkrp, malými písmeny, a musí obsahovatdarkrp.txta složkugamemode/. Zip z GitHubu se rozbalí jakoDarkRP-master, takže ji přejmenuj. - Rozbal addon pro úpravy do
garrysmod/addons/darkrpmodification/. Stejné pravidlo: přejmenuj ho zdarkrpmodification-master. - Spusť server s
+gamemode darkrpa mapou pro DarkRP. - Sleduj konzoli po celý první start. Chyby Lua při načítání jsou jediné varování, že se něco nenainstalovalo.
$ ./srcds_run -game garrysmod -console -port 27015 \ +gamemode darkrp +map rp_downtown_v4c_v2 +maxplayers 40V panelu jsou stejné hodnoty políčka na záložce Startup, ne příkaz, který píšeš, ale hodnoty jsou tytéž. Přidej také sv_defaultgamemode "darkrp" do garrysmod/cfg/server.cfg, aby tě změna mapy tiše nevrátila do sandboxu.
Piš všechno malými písmeny. Garry's Mod na Linuxu rozlišuje velikost písmen a složka addonu pojmenovaná MyAddon s materiály v Materials/ způsobí chybějící textury, které na testovacím serveru s Windows fungují bez problémů. To je nejčastější jednotlivá příčina hlášky „doma to fungovalo“.
Struktura, kterou budeš ve skutečnosti upravovat:
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.luaDo gamemodes/darkrp/ by ses neměl nikdy dotknout. Pokud ti nějaký návod radí upravit tam soubor, je zastaralý zhruba o deset let.
Nastavení#
darkrp_config/settings.lua přichází se všemi nastaveními už uvnitř, každé s komentářem, který vysvětluje, co dělá a jaká je výchozí hodnota. Hodnoty měníš přímo na místě; nepřidáváš klíče, které v souboru ještě nejsou.
GM.Config.startingmoney = 500GM.Config.normalsalary = 45GM.Config.propertytax = falseGM.Config.adminsents = trueGM.Config.voiceradius = trueČtyři rozhodnutí, která tvarují server víc než cokoli jiného:
- Startovní peníze a plat společně určují tempo ekonomiky. Vysoký plat při levných shipmentech znamená, že do hodiny má každý všechno a roleplay se zvrhne v deathmatch. Je snazší začít skromně a přidávat než naopak, protože peníze nemůžeš lidem, kteří je už mají, vzít zpátky.
- Daň z nemovitosti strhává hráčům při každé výplatě poplatek za vlastněné dveře. Brání tomu, aby hrstka hráčů vlastnila celou mapu a pak zmizela. Zároveň odhání nové hráče, pokud si nemohou dovolit vůbec žádný dům.
- Entity spawnovatelné jen adminem (
adminsents) drží sandboxové propy a SENTy dál od běžných hráčů. Na roleplay serveru to nech zapnuté. - Dosah hlasu (voice radius) udělá z hlasového chatu lokální místo globálního, což je jediná změna, která ze serveru dělá roleplay místo lobby.
Změny v settings.lua se čtou při načtení gamemodu, takže potřebují změnu mapy nebo restart serveru. Zkoušet je po jedné je pomalejší, ale celkově mnohem rychlejší než změnit patnáct najednou a pak hádat, která z nich rozbila joby.
Joby#
Joby žijí v darkrp_customthings/jobs.lua a vytváří se jedním voláním funkce. Tohle je celé 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",})Pole, na kterých záleží a která se běžně pletou:
commandje to, co hráči píšou, takže tady/mechanic. Musí být unikátní napříč všemi joby.maxje počet hráčů, kteří mohou job mít.0znamená neomezeně. Desetinné číslo pod 1 se bere jako podíl z aktuálního počtu hráčů, takžemax = 0.1znamená deset procent serveru - u policie je to mnohem lepší než pevné číslo na serveru, kde se počet hráčů hodně mění.adminje0pro všechny,1pro adminy,2pro superadminy.TEAM_MECHANICje globální proměnná. Dva joby se stejným názvem znamenají, že jeden tiše nahradí druhý.categorymusí odpovídat kategorii vytvořené přesDarkRP.createCategory, jinak se job neobjeví v menu F4, i když se načetl v pořádku.
Pro joby omezené na donátory nebo na hodnost štábu má DarkRP customCheck:
customCheck = function(ply) return CLIENT or table.HasValue({"superadmin", "vip"}, ply:GetUserGroup())end,CustomCheckFailMsg = "This job is for VIP members.",Sousední soubory fungují stejným způsobem. DarkRP.createEntity přidá entitu k nákupu, třeba tiskárnu, DarkRP.createShipment přidá zásilku zbraní se seznamem allowed s joby, které ji smějí kupovat, DarkRP.createFood přidá položku obnovující zdraví a DarkRP.createDoorGroup ti umožní označit dveře v mapě tak, aby je mohly vlastnit jen určité joby. Vestavěné joby a entity, které nechceš, se odstraňují v disabled_defaults.lua, ne mazáním z gamemodu.
Admin: FAdmin, ULX a SAM#
DarkRP se dodává s vlastním admin modem FAdmin. Pro malý soukromý server stačí a zná pojmy DarkRP jako joby a dveře. Je také důvodem, proč se většina instalací ULX na DarkRP chová divně, protože dva admin mody, které se perou o stejné příkazy, jsou přesně taková zábava, jak to zní. Pokud instaluješ jiný, FAdmin nejdřív vypni:
DarkRP.disabledDefaults["modules"]["fadmin"] = trueULX s ULib je bezplatný standard. Nainstaluj oba addony, restartuj a prvního superadmina vytvoř z konzole serveru - ne ve hře, protože zatím nikdo nemá oprávnění:
ulx adduser "YourName" superadminulx addgroup vip userulx groupallow vip ulx kickULX ukládá skupiny do garrysmod/data/ulib/groups.txt a uživatele do garrysmod/data/ulib/users.txt. Oba soubory jsou prostý text, oba stojí za zálohování a oba se snáz opraví ručně než přes menu, když se zamkneš venku. ulx menu otevře ve hře XGUI pro všechno ostatní.
SAM je placený admin mod, na který přešla většina velkých DarkRP serverů. Hodnosti a bany drží v MySQL místo textových souborů, což má smysl, jakmile provozuješ víc než jeden server, a v klientském menu je znatelně lehčí. Jestli se za to vyplatí platit, záleží čistě na tom, jestli je tvůj štáb tvořen třemi kamarády, nebo patnácti lidmi, které jsi nikdy neviděl.
Ať zvolíš cokoli, drž seznam superadminů krátký. Superadmin v jakémkoli admin modu pro GMod může na tvém serveru spouštět libovolný Lua kód, což je totéž jako mít heslo k panelu. Přístup do panelu je samostatná otázka s lepší odpovědí: subuživatelé a nejnižší nutná oprávnění umožní moderátorovi používat konzoli, aniž by mohl smazat server nebo vidět tvoje fakturační údaje.
Databáze#
DarkRP ukládá peníze, vlastněné dveře a pár dalších věcí přes MySQLite, které ve výchozím stavu používá SQLite: jediný soubor garrysmod/sv.db. Pro jeden server je to naprosto v pořádku. Je rychlé, nepotřebuje žádnou konfiguraci a má přesně jeden způsob selhání - ten soubor. Zálohuj ho spolu se vším ostatním.
Skutečnou databázi chceš, když provozuješ víc serverů a chceš sdílené peníze, když chceš data dotazovat nebo opravovat bez vypnutí serveru, nebo když nainstaluješ addon, který MySQL stejně očekává. Připojení patří do 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,}K tomu je potřeba binární modul mysqloo v garrysmod/lua/bin/ a soubor musí odpovídat platformě a architektuře serveru. Garry's Mod je pojmenovává s příponou .dll i na Linuxu, což překvapí každého: gmsv_mysqloo_linux.dll pro 32bitový server a gmsv_mysqloo_linux64.dll pro větev x86-64. Špatný se nenačte vůbec a DarkRP tiše přepne na záložní řešení, takže pokud se peníze po přechodu na MySQL pořád resetují, je na vině právě tenhle soubor.
Každý herní tarif RE:NODE obsahuje jeden slot pro databázi vytvořený z panelu, s hostem, uživatelem a heslem vygenerovanými za tebe a tlačítkem Open in phpMyAdmin, které tě přihlásí jednorázovým tokenem. To pokryje výše uvedené přihlašovací údaje, aniž bys cokoli spravoval.
Udržet server svůj#
DarkRP servery jsou terčem častěji než kterýkoli jiný gamemode pro Garry's Mod, protože existuje celý řemeslný průmysl exploit menu namířených právě na ně. S většinou si poradí tři nastavení a jeden zvyk.
hostname "Northside RP"rcon_password ""sv_password ""sv_lan 0sv_allowcslua 0sv_allowupload 0sv_allowdownload 1sbox_godmode 0sbox_noclip 0sv_allowcslua 0 je to nejdůležitější. Blokuje klientům spouštění vlastního klientského Lua kódu, což je mechanismus za většinou bezplatných menu „DarkRP exploit“, která si lidé stahují. sv_allowupload 0 brání klientům nahrávat soubory na tvůj server. Prázdné rcon_password vypíná RCON, který nepotřebuješ, protože máš konzoli v panelu - zdůvodnění najdeš v článku RCON, ale bezpečně.
Ten zvyk je neinstalovat uniklé placené addony. Uniklý skript je nejspolehlivější způsob, jak dostat backdoor na server Garry's Mod, a člověk, který ho nahrál na fórum, není jeho autor. Jak udržet modovaný server čistý popisuje, jak zkontrolovat to, co už máš.
Výkon a řešení potíží#
Joby se neobjevily. Chyba Lua v jobs.lua. Čti konzoli od začátku startu, ne od konce.
Fialovo-černé textury nebo cedule ERROR. Chybí obsah. Textury jsou z CS:S nebo z vlastního balíčku materiálů mapy; modely ERROR jsou addon, který si klient nestáhl. Stahování pro klienty je samostatný systém, popsaný v článku Addony z workshopu a FastDL.
Peníze se při každém restartu resetují. Databáze nezapisuje. Buď do sv.db nejde zapisovat, nebo je zapnuté MySQL a modul mysqloo chybí nebo nesedí.
Po aktualizaci DarkRP se všechno rozbilo. Něco bylo upraveno uvnitř gamemodes/darkrp/. Přeinstaluj gamemode načisto a změnu přesuň do darkrpmodification.
Server se zpomaluje, jen když se zaplní. Skoro vždy addon se smyčkou, která běží pro každého hráče. Sto tiskáren, každá na vlastním časovači, stojí stejně, ať jsou online čtyři lidé, nebo čtyřicet, ale smyčky na hráče se škálují s počtem lidí v místnosti. Odstraň polovinu addonů, změř, a pak odstraň polovinu toho, co zbylo.
Pravidelný pád při stejném počtu hráčů. Paměť, a pravděpodobně spíš zmíněný 32bitový strop než limit tarifu.
Zvýšení -tickrate stojí CPU přímo úměrně počtu hráčů a u gamemodu, který většinou jen stojí a povídá si, přinese méně, než lidé čekají - co tick rate vlastně znamená obsahuje poctivou verzi. CPU raději utrať za seznam addonů.
Na RE:NODE je s tarifem Garry's Mod jedna alokace portu, která pokrývá herní a query port 27015; pokud chceš SourceTV, přidej další na záložce Network. Konzole je nefiltrovaná, a právě v ní se rozbitý addon ohlásí, správce souborů upraví jobs.lua v prohlížeči se zvýrazněním syntaxe a sloty pro zálohy jsou součástí každého tarifu - stojí za to je použít před každou změnou addonů, protože záloha, kterou nikdo neobnovil, je jen hypotéza.
FAQ#
Potřebuju Counter-Strike: Source pro server DarkRP?
Pro obvyklé mapy ano. rp_downtown_v4c_v2 a většina klasických RP map používá textury z CS:S. Nainstaluj obsah dedikovaného serveru CS:S přes SteamCMD a připoj ho v cfg/mount.cfg, nebo si vyber mapu, která veškerý obsah nese sama.
Kam přidám vlastní joby?
Do addons/darkrpmodification/lua/darkrp_customthings/jobs.lua pomocí DarkRP.createJob. Nikdy dovnitř gamemodes/darkrp/. Addon pro úpravy existuje právě proto, aby aktualizace DarkRP nepřepsaly tvoji práci.
Mám použít ULX, nebo SAM?
ULX je zdarma, dobře zdokumentovaný a pro většinu serverů stačí. SAM je placený, hodnosti ukládá v MySQL a ve hře je lehčí. V obou případech nejdřív vypni vestavěný FAdmin z DarkRP, jinak se oba budou přít o stejné příkazy.
Kolik RAM potřebuje server DarkRP?
Dva gigabajty pro soukromý server s krátkým seznamem addonů, tři až čtyři pro běžný veřejný se 32 hráči. Nad to je omezením obvykle seznam addonů a 32bitový binární soubor serveru tě stejně zastaví někde kolem 3 GB.
Můžu měnit joby bez restartu?
Spolehlivě ne. Joby se registrují při načtení gamemodu, takže poctivý způsob, jak úpravy aplikovat, je změna mapy nebo restart. Zvykni si změny konfigurace sbírat a restartovat jednou.
Proč se hráčům, kteří se připojí, nezobrazují žádné addony?
Protože připojení addonu na serveru a sdělení klientům, aby si ho stáhli, jsou dva různé systémy. Server spouští to, co je v addons/; klienti dostanou jen to, co jim řekne kolekce z workshopu nebo resource.AddWorkshop.




Komentáře
Zcela anonymně: žádný účet, žádný e-mail, žádné cookie. Ukládáme jen jméno, které napíšeš, text a čas - nic dalšího. Počet odkazů je omezený a značkování se nevykresluje.