Quake3 Server

Uputstva, saveti i trikovi

Moderator: Urednik

Post Reply

Elitni član
Elitni član
offline
User avatar

Posts: 204
Joined: 07 Mar 2007, 13:34

Post Napisano: 20 Sep 2013, 11:58


Slackware server nije ništa bez Quake3 servera! :grin:


Instalacija Quake3 se svodi na skidanje izvršnih fajlova za Linux i kopiranje nekih od .pk3 fajlova sa win verzije. U prevodu, možete linux quake3 fajlove kopirati u windows instalaciju. Ja sam to uradio, tako da na jednom mestu pakujem sve modove i mape, a ceo foldere je sposoban da radi ili na winu ili na linuxu. Jedino držite foldere osp, cpma, defrag, itd. malim slovima zbog Linuxa!

Kroz ovo uputstvu ću objasniti neka od podešavanja config fajla za server, konfigurisanje linuxa tako da se server startuje sa sistemom i kako da podesite windows prečice da se automatski povezuju na vaš server. Varijacija na sve ovo ima prilično, ali ako ste početnik i ovo niste ranije radili poslužiće vam za početak. Jedno od detaljnijih uputstava na engleskom imate ovde, a pretražite web za dodatne informacije.


1. Evo mog, za ovaj tutorijal malo izmenjenog, konfiguracionog quake3 fajla:

Code: Select all

set sv_hostname "Slackware-Srbija Quake3 Server"	// ima quake3 servera

set server_motdfile "slacksrb-motd.txt"			// fajl iz koga čita message of the day


set ref_password SlackSrbref		// referee pass
set rconpassword SlackSrbrcon		// šifra za administraciju servera, sa njom iz igre možete upravljati serverom

set g_needpass 1			// podešavate da li da se traži šifra prilikom konektovanja na server, 0 bez šifre
set g_password SlackSrbGamePass	// šifra koja se traži prilikom konektovanja na server    	

set sv_maxclients 16				// maksimalan broj igrača
// seta sv_privateClients 2				// rezervisani slotovi za igrače koji znaju privatnu šifru
// seta sv_privatePassword SlackSrbPriv		// privatna šifra
set sv_pure 1					// provera .pk3 fajlova da nisu menjani
set sv_allowdownload 0		// ako nekom od klijenata fali neka mapa on je može skinuti sa servera ako ovo postavite na 1
// set sv_maxrate 50000	// podešavanje brzine downloada

// seta sv_master1 master0.gamespy.com:28900 	// za opciju startovanja +set dedicated 2, objašnjenje kasnije

set pb_sv_disable		// PunkBuster (detekcija) cheat-a je isključena, pravio mi je neke probleme

set server_gameplay cpm	// podešavate fiziku; cpm, pmc, cq3, vq3 
set mode_start ffa		// ffa, tourney, tdm, ctf

set mode_idletime 10		// vreme u minutima posle koga se server koji idluje resetuje na default 
set fraglimit 25			// frag limit
set timelimit 0			// time limit

set g_quadfactor 1		// jačina Quad Damage-a, 4 maksimum, 3 default (meni ovo ne radi)

set map_delay 0		// podešavanja za mape
set map_restrict 0		// možete napraviti fajl za rotaciju mapa, ali ja uglavnom "callvote map" menjam mape 
set map_rotate 0		// stavite ovo na 1 za rotiranje mapa
// exec mape.cfg		// fajl sa mapama

set g_allowvote 1		// da li će biti dozvoljeno glasanje na callvote komandu
set vote_limit 0		
set vote_percent 20		// procenat potreban za prihvatanje glasanja
set match_readypercent 51	// procenat potreban za startovanje meča (sa /ready komandom)

set weaponrespawn 5		// vreme u sekundama za respawn oružija
set g_forcerespawn 10		// vreme u sekundama za respawn igrača (mislim da mi ni ovo nije radilo)

map pro-q3dm6   		// mapa koju učitava prilikom startovanja

Snimite fajl kao slacksrb-ffa.cfg i stavite ga u folder /baseq3



2. Fajl za rotaciju mapa mape.cfg treba da izgleda ovako (takođe ga stavite u /baseq3 folder)

Code: Select all

set m1 "fraglimit 30; timelimit 0 ; g_gametype 0 ; map q3dm2 ; set nextmap vstr m2"
set m2 "fraglimit 30; timelimit 0 ; g_gametype 0 ; map q3dm3 ; set nextmap vstr m3"
set m3 "fraglimit 30; timelimit 0 ; g_gametype 0 ; map q3dm6 ; set nextmap vstr m4"
set m4 "fraglimit 30; timelimit 0 ; g_gametype 0 ; map q3dm17 ; set nextmap vstr m1"
vstr m1
3. motd (Message of the day) fajl je običan tekstualni fajl koji se učita i prikaže prilikom startovanja servera i može da izgleda ovako nekako:

Code: Select all

^5* * * ^2Slackware-Srbija.org ^1Quake3 ^3Server ^5* * * 
 

^7*-*-*-*-*-*-*-*-*-*-*-*-*
^7*  Slackware zakon!     *
^7*-*-*-*-*-*-*-*-*-*-*-*-*
Pošto smo ga u gornjem konfiguracionom fajlu nazvali slacksrb-motd.txt, vi napravite fajl pod tim imenom u /baseq3 folderu.
Simbol ^ praćen brojem podešava boju za tekst iza njega.


4. Iz sigurnosnih razloga napravite quake3 korisnika, a privilegije foldera gde ste kopirali quake3 setujete na 700 ili na 750.

Code: Select all

useradd -g users -d /home/quake3 -s /bin/bash -m quake3
Ovako napravljen korisnik, će pripadati grupi users i njegovo logovanje na sistem će biti onemogućeno (! u polju za šifru u /etc/shadow fajlu), ali za potrebe administracije možete kao root sa su izvršavati komande u njegovo ime. Ukoliko želite više sigurnosti možete kreirati i grupu quake3.


5. U /etc/rc.d/ kreirajte rc.q3server i napravite ga izvršnim (ali dodelite vlasništvo korisniku quake3 sa komandom chown quake3:users), a u njega upišite:

Code: Select all

#!/bin/sh

echo Starting quake3 server

screen -A -m -d -S q3server /mnt/sda6/games/quake3/q3ded +set fs_basepath /mnt/sda6/games/quake3/ +set dedicated 1 +set net_port 27960 +set fs_game cpma +exec slacksrb-ffa.cfg
Ovo će startovati screen sesiju quake3 servera pod imenom q3server, koju možete prizvati na terminal sa komandom:

Code: Select all

screen -r q3server
Sa +set dedicated 2 opcijom q3 server će se javiti master serveru, pa će vaš server biti dostupan igračima iz celog sveta (u tom slučaju postavite server bez šifre). Spisak master servera potražite na netu.

Sa +set net_ip i +set net_port podešavate IP adresu i portove na kojima quake3 server radi. Default port na kome quake3 osluškuje je 27960, a svaki sledeći klijent koji se poveže na njega zauzeće port za 1 veći. Tako da otvorite portove 27960-27980 (recimo za 20 konekcija) na firewallu i postarajte se da ti portovi budu forward-ovani na vašem ruteru ka server mašini.
Možete namestiti više q3 servera sa različitim konfiguracionim fajlovima, ali obavezno stavite različite portove.

+set fs_game cpma pokreće Challenge ProMode Arena mod, a +exec slacksrb-ffa.cfg izvršava naš konfig fajl.


6. Da bi se quake3 server startovao sa sistemom kao korisnik quake3 u /etc/rc.d/rc.local dodajte sledeću liniju:

Code: Select all

sudo -u quake3 /etc/rc.d/rc.q3server
 
7. Povezivanje na vaš server možete uraditi ručno; kada startujete quake3 idete na Multiplayer -> Specify i unesete IP adresu i port vašeg servera (127.0.0.1 ako igrate sa ručanara na kom je server, mrežnu adresu ukoliko ste u LAN-u ili spoljnu IP adresu) ili kreiranjem shortcut-a za win ili skrpti za linux.
Još jedan trik koji možete da primenite ovde ukoliko imate dinamičku IP adresu je da registrujete besplatan no-ip.info domen (imaju čak u ponudi i quakeserver.com domene) i da preko imena pristupate serveru.

U windowsu napravite shortcut do quake3.exe fajla, desni klik na njega, Properties, tab Shortcut, polje Target tu upišite:

Code: Select all

D:\Games\Quake3\quake3.exe +set fs_game cpma +connect 127.0.0.1:27960 +password SlackSrbGamePass
Naravno, stavite vašu putanju do fajla i odgovarajuću IP adresu, port i šifru.


Šta da vam kažem osim: Prepare to fight! :cool:



Elitni član
Elitni član
offline
User avatar

Posts: 204
Joined: 07 Mar 2007, 13:34

Post Napisano: 07 May 2014, 14:26


Ronjajući po netu u pokušaju da nađem dobru skriptu za startup Minecraft servera naiđem na ovo.

Skripta odlično radi i malopre sam je prilagodio za Quake3 pa evo ovde kratkog tutorijala dok mi je sveže, ko će se posle setiti :D

Ja sam sve fajlove stavio u game foldere i putanje su mi drugačije nego u primerima iz prethodnih postova, vi ih u svakom slučaju prilagodite sebi.


Fajl: /games/quake3/Quake3Server.common

Code: Select all

MC_DIR=/games/quake3/
PID_FILE="$MC_DIR/Quake3Server.pid"

WaitForPid()
  {
  if [[ ! -e "$PID_FILE" ]] ; then return false ; fi

  PID=$(cat "$PID_FILE")
  while ps --pid "$PID" > /dev/null ; do sleep 2 ; done
  }

CheckPid()
  {
  if [[ ! -e "$PID_FILE" ]] ; then return 1 ; fi

  ps --pid $(cat "$PID_FILE") > /dev/null
  if [[ $? == 0 ]] ; then return 0 ; fi

  return 1
  }
Fajl: /games/quake3/rc.quake3

Code: Select all

#!/bin/bash -e

. /games/quake3/Quake3Server.common

case "$1" in
  start)
    if CheckPid ; then
      echo "Quake3 server is already running."
      exit 0
    fi

    echo "Starting Quake3 server..."
    sudo -H -n -u quake3 screen -m -d -S quake3 "$MC_DIR/Quake3Server.helper"
    sleep 1
    if CheckPid ; then
      echo "Quake3 server started."
    else
      echo "Error starting Quake3 server."
    fi
    ;;
  stop)
    if ! CheckPid ; then
      echo "Quake3 server is not running."
      exit 0
    fi

    echo "Stopping Quake3 server..."
    sudo -H -n -u quake3  screen -S quake3 -p 0 -X stuff "stop^M"
    WaitForPid $(cat "$PID_FILE")
    echo "Quake3 server stopped."
    ;;
  console)
    if ! CheckPid ; then
      echo "Quake3 server is not running."
      exit 1
    fi

    TTY=$(tty)
    USER=$(stat -c %U "$TTY")
    set +e
    sudo chown quake3 "$TTY"
    sudo -H -n -u quake3 screen -S quake3 -p 0 -x
    sudo chown --from=quake3: "$USER" "$TTY"
    ;;
  status)
    if CheckPid ; then
      echo "Quake3 server is running."
    else
      echo "Quake3 server is stopped."
    fi
    ;;
  *)
    echo "Usage: $0 {start | stop | status | console}"
    exit 1
    ;;
esac


Fajl: /games/quake3/Quake3Server.helper

Code: Select all

#!/bin/bash

. /games/quake3/Quake3Server.common

echo $$ > "$PID_FILE"
cd "$MC_DIR"
/games/quake3/q3ded +set fs_basepath /games/quake3/ +set dedicated 1 +set net_port 27960 +set fs_game cpma +exec slacksrb-ffa.cfg
rm "$PID_FILE" > /dev/null
Editovati /etc/sudoers i dodati linje:

Code: Select all

%quake3 ALL=(quake3) NOPASSWD: ALL
%quake3 ALL=(root) NOPASSWD: /bin/chown quake3 /dev/pts/[0-9][0-9]*
%quake3 ALL=(root) NOPASSWD: /bin/chown --from\=quake3 [a-z][a-z0-9]* /dev/pts/[0-9][0-9]*

I na kraju editovati /etc/rc.local

Code: Select all

/games/quake3/rc.quake3 start
i /etc/rc.local_shutdown

Code: Select all

/games/quake3/rc.quake3 stop


Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest