Komm in unsere Facebook Gruppe

Willkommen Gast
Du bist nicht angemeldet, um alle Funktionen des Forums zu nutzen musst du dich registrieren und anmelden. Die Registrierung ist natürlich völlig kostenlos und kann jeder Zeit wiederrufen werden.

Aktuelle Zeit: 25. Mai 2012 23:41

server map wechseln via script

Das Forum zu Wolfenstein Server oder seinen Mods wie Enemy Territory.


server map wechseln via script

Beitragvon germanaia am 29. Okt 2007 00:53

so eine frage mal an die spezis von euch

also ich habe mir folgendes überlegt , ich habe ein et 255 linux server , problem an dem is das er mit mehr als 6 custom maps beim mapwechsel die player kickt ...
so nun dachte ich mir mache ich mal ein verzeichnis wo alle maps drinne sind , nenne wir es "custommaps", sagen wir 25 custom maps hauen wir da rein, jetzt würde ich es gerne so haben das er via cron alle 12stunden 4 neue maps in das "tcetest" verzeichnis verschiebt und die alten wieder ins custommap verzeichnis zurück verschiebt , ok das sollte denke ich kein problem weiter sein das zu scripten nun aber das eigentliche problem was ich dabei noch habe. unter et gibt es ja die maps.cfg datei , so wenn nun ein map kopiert vorgang vonstatten geht habe ich ja ne sozusagen ne falsche maps.cfg datei weil da ja noch die alten maps drinnne stehen. ich würde gerne wissen wie ich es machen kann das er das "tcetest" verzeichnis nach maps bzw dem_*.pk3 dateien absucht und diese dann als maps.cfg datei erstellt plus die 4 Standard build in maps aber nach möglichkeit nich einfach der reihe nach sondern eher zufallsgeneriert.. und zu schluss soll er an screen ein befehl über geben "exec server.cfg" damit der server sich mit den neuen maps neustartet ohne die players zu kicken

hier mal ne maps.cfg datei ohne custom maps

Code: Alles auswählen
set obj  "set g_gametype 5"
set bc   "set g_gametype 7"

set map1  "vstr bc      ; map dem_northport    ; set nextmap vstr map1"
set map2  "vstr bc    ; map dem_railhouse    ; set nextmap vstr map3"
set map3  "vstr bc      ; map dem_snow      ; set nextmap vstr map4"
set map4  "vstr bc    ; map dem_hideout      ; set nextmap vstr map5"
set map5  "vstr bc    ; map dem_village     ; set nextmap vstr map1"

vstr map1


wichtig is auch das er beim erstellen der maps.cfg auch den syntax einhält
php läuft auch auf mein system also könnten wir ggf php mit einbeziehen : print " set map1 "vstr bc ; map dem_northport ; set nextmap vstr map1""
oder so änlich

hoffe der ein oder andere hat da ein tip wie ich das am besten hinbekomme
Danke an alle
wenn ihr noch infos brauch bitte sagt bescheid
germanaia
Mitglied
Mitglied
 
Beiträge: 25
Registriert: 29. Okt 2007 00:13

Re: server map wechseln via script

Beitragvon Tobi am 30. Okt 2007 20:16

Per PHP ein Verzeichnis auszulesen und den Inhalt in eine Datei zu schreiben ist weniger das Problem.
Code: Alles auswählen
<?php
//Standard werte die in jeder Datei stehen sollen
$maplist = 'set obj  "set g_gametype 5"' . "\n";
$maplist .= 'set obj  "set bc   "set g_gametype 7"' . "\n";
// Verzeichnis ausledsen
$pfad="./";
$verz=opendir ($pfad);
while (
$file=readdir($verz))
{
    if (
filetype($pfad.$file)!="dir")
    {
        
$i++;
        
$maplist .= 'set map1  "vstr bc      ; map $file;"' . "\n";
    }
}
closedir($verz);

// Datei schreiben
$datei = fopen("maps.cfg","r+");
rewind($datei);
fwrite($datei, $maplist);
fclose($datei);     

Das PHP Script kannst du ja dann per Cron aufrufen nachdem du die Maps verschoben hast.
Benutzeravatar
Tobi
Administrator
Administrator
[ Anbieter Profil ]
 
Beiträge: 1569
Registriert: 13. Sep 2004 15:11
Wohnort: Stuttgart

Re: server map wechseln via script

Beitragvon germanaia am 2. Nov 2007 18:53

wow Danke tobi :love: :love: :love: :love: :love: :love: :love: :love: ich werde es nachher gleich mal ausprobieren ..also wenn das klappt hut ab :)
germanaia
Mitglied
Mitglied
 
Beiträge: 25
Registriert: 29. Okt 2007 00:13

Re: server map wechseln via script

Beitragvon Tobi am 2. Nov 2007 21:51

Benutzeravatar
Tobi
Administrator
Administrator
[ Anbieter Profil ]
 
Beiträge: 1569
Registriert: 13. Sep 2004 15:11
Wohnort: Stuttgart

Re: server map wechseln via script

Beitragvon germanaia am 3. Nov 2007 03:22

hast du noch ne idee wie ich von dem map ordner 5 zufällige maps raussuchen per zufall und diese dann in die maps.cfg eingetragen werden ?

Danke
germanaia
Mitglied
Mitglied
 
Beiträge: 25
Registriert: 29. Okt 2007 00:13

Re: server map wechseln via script

Beitragvon Tobi am 3. Nov 2007 05:09

readdir() liest das Verzeichniss schon nach zufälliger Reihenfolge aus, wobei das auch immer vom Betriebssystem abhängt, wenn dir der Zufall nicht reicht schreibe das Ergebniss erst in ein Array und lass das dann mit array_rand() zufällig sortieren.

Um nur 5 Maps auszulesen tausche die Zeile
[code=phpjyc]while ($file=readdir($verz))     [/codejyc]
durch
[code=phpjyc]for($i < 5; $file=readdir($verz); $i++) [/codejyc]

Ich schau mir das sobald ich dazu komm mal genauer an und schreibe dann einen Artikel dazu für die Knowledge Base.
Benutzeravatar
Tobi
Administrator
Administrator
[ Anbieter Profil ]
 
Beiträge: 1569
Registriert: 13. Sep 2004 15:11
Wohnort: Stuttgart

Re: server map wechseln via script

Beitragvon germanaia am 3. Nov 2007 10:41

ok Danke

habe das mal probiert mit dem umschreiben der zeile aber jetz habe ich noch ein paar probleme

er erstellt zwar die datei maps.cfg aber ohne maps ..

[quotel0b]set obj "set g_gametype 5"
set obj "set bc "set g_gametype 7"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"
set map1 "vstr bc ; map $file;"[/quotel0b]

in dem verzeichnis /usr/local/games/maps befinden sich .pk3 dateien
die endun .pk3 sollte in der maps.cfg nich vorhanden sein und zweitens hast du noch ne idee wie ich die set mapN immer im einen zähler erhöhkann , also erste map wäre set map1 ,zweite map dann set map2 ,aso und hinter ; map $file;" müsste dann noch ; set nextmap vstr map2" kommen , dies auch mit fortlaufenden zähler

ich poste info halber nochmal eine vollständige maps.cfg
[quotel0b]//set r-obj "set g_gametype 2"
//set obj "set g_gametype 5"
set bc "set g_gametype 7"

set map1 "vstr bc ; map dem_hs_v2 ; set nextmap vstr map2"
set map2 "vstr bc ; map dem_village ; set nextmap vstr map3"
set map3 "vstr bc ; map dem_northport ; set nextmap vstr map4"
set map4 "vstr bc ; map dem_ersatz1 ; set nextmap vstr map5"
set map5 "vstr bc ; map dem_railhouse ; set nextmap vstr map6"
set map6 "vstr bc ; map dem_ptd_2 ; set nextmap vstr map7"
set map7 "vstr bc ; map dem_depot ; set nextmap vstr map8"
set map8 "vstr bc ; map dem_np2 ; set nextmap vstr map9"
set map9 "vstr bc ; map dem_gk50o ; set nextmap vstr map10"
set map10 "vstr bc ; map dem_snow ; set nextmap vstr map1"

vstr map1[/quotel0b]

ps: was noch richtig gut wäre, wäre wenn man die 5 zufälligen ausgewälten dateien noch auf deren gesamt grösse hin prüfen kann sagen wir das sie alle zusammen nich
mehr als 35MB gross sein sollen

Danke
hoffe ich ärgere dich nich allzusehr ;P :lol:
germanaia
Mitglied
Mitglied
 
Beiträge: 25
Registriert: 29. Okt 2007 00:13

Re: server map wechseln via script

Beitragvon Tobi am 3. Nov 2007 15:03

Versuch mal den Code hier
[code=php7yz]<?php     
    
//Standard werte die in jeder Datei stehen sollen
    
$maplist = 'set obj  "set g_gametype 5"' . "\n";
    
$maplist .= 'set obj  "set bc   "set g_gametype 7"' . "\n";
    
// Verzeichnis ausledsen
    
$pfad="./";
    
$verz=opendir ($pfad);
    for(
$i < 5; $file=readdir($verz); $i++)
    {
        if (
filetype($pfad.$file)!="dir" AND !preg_match('#.pk3#', $file) AND $size < 35000000)
        {
            
$size = $size + filesize($file);
            
$maplist .= 'set map'.$i.'  "vstr bc      ; map '.$file.';"' . "\n";
        }
    }
    
    
// Am ende der dAtei anhängen
    
$maplist .= 'vstr map1';
    
    
closedir($verz);

    
// Datei schreiben
    
$datei = fopen("maps.cfg","r+");
    
rewind($datei);
    
fwrite($datei, $maplist);
    
fclose($datei);      [/code7yz]
Benutzeravatar
Tobi
Administrator
Administrator
[ Anbieter Profil ]
 
Beiträge: 1569
Registriert: 13. Sep 2004 15:11
Wohnort: Stuttgart

Re: server map wechseln via script

Beitragvon germanaia am 4. Nov 2007 11:44

Danke nochmals tobi

schade, naja der neue code macht auch nich das was er soll ...
gucks du hier :

[code6qd]set obj "set g_gametype 5"
set obj "set bc "set g_gametype 7"
set map "vstr bc ; map maps.cfg;"
set map1 "vstr bc ; map best_top10_players.php;"
vstr map1[/code6qd]

hast du noch ne idee auf lager ?

Danke
germanaia
Mitglied
Mitglied
 
Beiträge: 25
Registriert: 29. Okt 2007 00:13


Zurück zu Wolfenstein




Ähnliche Beiträge

IP-Projects - V-Server jetzt kostenlos testen
Forum: Angebote
Autor: yLABS|nExUs
Antworten: 0
Root-Server Restposten im Monat Mai - Atom bis Core i7 930
Forum: Angebote
Autor: yLABS|nExUs
Antworten: 0
V-Server Angebote
Forum: Angebote
Autor: Gamewebi
Antworten: 0
V-Server so billig wie noch nie!!
Forum: Marktplatz
Autor: phonerep
Antworten: 0
Neuer Css Server 21.04.2012
Forum: Counter Strike Source
Autor: Psyonix
Antworten: 0