Seite 4 von 53 ErsteErste 1234567814 ... LetzteLetzte
Ergebnis 46 bis 60 von 784

Thema: Mod für PB-Spiele: PB Mod_v1

  1. #46
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.901
    Zitat Zitat von alpha civ Beitrag anzeigen
    Warum überhaupt PhP und nicht Python nehmen? Dann hat man vor allem eine klarere Trennung zwischen der Logik und Aussehen und kein PhP-Mischmasch.

    Edit: Wobei, man wäre ja dann auf Python 2.4 beschränkt. Andernfalls könnte man so ein Framework wie Djiango nehmen.
    Also ich denke die Trennung zwischen dem PB-mod/Python und einem separaten web/Datenbank part ist auf jeden Fall gut - auch wenn das natuerlich die Komplexitaet durch ein extra Protokoll erhoeht. Aber so fliegt einem nicht der PB um die Ohren wenn mal die DB aussetzt oder so ;-). Ob man nun PHP/Python(in welcher Version auch immer)/Rails/LISP oder sonstwas nimmt ist wohl Geschmackssache. In dem Code ist eigentlich Logik und HTML / CSS ganz gut getrennt.

  2. #47
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Ein weiterer Vorteil einer Trennung liegt darin, dass nicht alle Spieler die Mod aktualisieren müssen wenn nur eine Kleinigkeit in der Weboberfläche modifiziert wird.
    Es ginge auch bei Alpha's Ansatz, aber da müsste man dann die Prüfsummenberechnung in der Mod aushebeln und hinten herum Code laden, um das gleiche Resultat zu erhalten.
    Unpraktisch ist dann auch die Restriktion auf die "Sandbox"-Python-Version die Civ4 nutzt und nicht so einfach mit neuen Bibliotheken ergänzt werden kann, wie eine normal installierte Instanz. Ich hatte vor kurzem ja mit Alpha Civ im Python-Thread darüber unterhalten, dass ich am Importieren einer einfachen Bibliothek scheiterte (was nat. auch mir gelegen haben kann.)

  3. #48
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Wo wird der Webserver eigentlich gestartet? Im EventManager habe ich da nichts gefunden.

  4. #49
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Der Webserver wird in Pitboss/PbAdmin.py gestartet.

    Der zweite Thread, der darunter gestartet wird ist wiederum für das periodische Senden des aktuellen Status an den HTTP/PHP-Server zuständig, damit dieser das Log füllt. Ereignisse für das Log werden aus der Differenz zweier Zustände abgeleitet, was in dem PHP-Teil abläuft.

  5. #50
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.901
    PHP Warnungen:

    Strict Standards: Declaration of UserClass::insert() should be compatible with DbClass::insert(&$dataset, $mode) in PBStats/web/page/contentmanager/User.php on line 5

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in PBStats/web/page/templates/template.class.php on line 341
    Anleitung:

    das Auskommentieren von
    //init_main_database_tables();
    ist nicht dokumentiert

    So und nu login funktioniert einfach nicht, obwohl die user in der DB angelegt wurden (sowohl die default als auch neue registrierte user). Schau ich mir am Wochenende mal an...

  6. #51
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.901
    Ich habe auch mal angefangen, den Datenbankkram auf PDO umzustellen. Da kann man prinzipiell einfach zwischen MySQL und SQLITE wechseln. Aber egal wie, MySQL vertraegt sich nicht mit der Idee fuer jedes Spiel eine eigene Datenbank anzulegen. Da muesste man schon entsprechend die SpielID als Spalte hinzufuegen.

  7. #52
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Bei MySql & Co könntest du bei Rückgabe des Datenbank-Handles immer auf die gleiche Datenbank verweisen. Dort sind ja weniger Probleme im Langzeitverhalten im Vergleich zu Sqlite zu erwarten, womit der Grund für den Split in verschiedene Datenbanken wegfällt.

    Du solltest alle SQL-Befehle finden können indem du nach "$sql" und "$statement" grep's. (Oder alle Aufrufe nach den Datenbank-Handlern suchen.) Danke, dass du das umstellst. Könnte man dann sogar zwischen MySql und SqLite wählen?!

    Strict Standards: Declaration of UserClass::insert() should be compatible with DbClass::insert(&$dataset, $mode) in PBStats/web/page/contentmanager/User.php on line 5
    Danke. Da fehlte in der Deklaration bei einer Variante das "&".

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in PBStats/web/page/templates/template.class.php on line 341
    Da kommt raus, dass ich nicht die aktuellste PHP-Version drauf hab

  8. #53
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Zitat Zitat von Zulan Beitrag anzeigen
    So und nu login funktioniert einfach nicht, obwohl die user in der DB angelegt wurden (sowohl die default als auch neue registrierte user). Schau ich mir am Wochenende mal an...
    Beim ersten Klick auf Login sollten den Tabellen initialisiert werden. Wenn man kein Hellseher ist wird einen da bestimmt die Meldung erwarten, dass Schreibrechte fehlen. Aber die Hürde hattest du ja schon genommen
    Ich weiß derzeit nicht, woran die Anmeldung scheitern könnte.

  9. #54
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Ich habe jetzt nochmal den Installationsprozess durchgespielt. Nach dem ersten Anlegen der Datenbank ( store/pbstats.sqlite ) hat diese bei mir gar keine Schreibrechte für die Gruppe erhalten. Wenn ich dass per chmod behebe läuft es dann bei mir.

    D.h. es sind dann insgesamt die Schritte:
    1. In globalVars.php den Pfad zum 'store'-Verzeichnis eintragen.
    2. Einmal auf Login klicken. Es wird pbstats.sqlite angelegt.
    3. chmod +w pbstats.sqlite
    4. Nochmal den Login probieren.

  10. #55
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Zitat Zitat von Zulan Beitrag anzeigen
    Es gibt sowohl fuer das Gamespy-Problem als auch fuer Steam Loesungen

    Community-Betriebene natneg server (Verlinkt hier http://www.civforum.de/showthread.ph...=1#post6247707)
    Ich weiß jetzt endlich warum die Lösung bei mir zu erst nicht klappte. Es scheitern daran, dass ein DNS Cache noch dafür sorgt, dass die alte IP genutzt wird. Hier habe ich mehr geschrieben:

    http://www.civforum.de/showthread.ph...=1#post6258767

    Edit
    Als beste Lösung für das gamespy-Problem würde ich folgendes vorschlagen: http://realmsbeyond.net/forums/showt...5052#pid495052
    D.h. wir schreiben einfach eine neue Url in die Exe. Könnten wir dafür eine Subdomain vom civforum oder civ-wiki verwenden ?! Ich hätte aber auch noch eine ungenutzte Domain übrig
    Geändert von Ramkhamhaeng (15. August 2014 um 02:27 Uhr)

  11. #56
    schläft Avatar von Frozen
    Registriert seit
    10.10.09
    Beiträge
    18.397
    Super Arbeit, die ihr da macht
    Bin schon ganz gespannt

    Zwecks Subdomain habe ich mal eine Meldung erstellt
    Freedom's just another word for nothing left to lose

  12. #57
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Zitat Zitat von Frozen Beitrag anzeigen
    Super Arbeit, die ihr da macht
    Bin schon ganz gespannt

    Zwecks Subdomain habe ich mal eine Meldung erstellt
    Gut Ich habe testweise nun meine Domain eingetragen und es klappt sogar wie erhofft
    Ideal wäre nat. die Variante bei der der Hoster des Gamespy-Ersatzes auch die Domain stellt.

    Die gleiche Idee wollte ich dann noch auf die Pitboss-Exe anwenden, aber die schmiert mit den Änderungen ab... schade.

  13. #58
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Zitat Zitat von Zulan Beitrag anzeigen
    Ich habe es heute geschafft einen wild gewordenen Uploader zu stoppen

    Die letzten 2 Pakete einer erfolgreich beendeten PB Verbindung sehen immer ähnlich aus:

    Code:
    client <-> server
    
    <007affff
    >007a00de
    <007bffff
    >007b00df
    >007c00df
     08b108c4
     
    -> fefe06007c00df
    <- fefe68
    
    -> fefe0600330075
    <- fefe68
    
    -> fefe060030006f
    <- fefe68
    
    -> fefe06004f008f
    <- fefe68
    
    -> fefe0600380087
    <- fefe68
    
    -> fefe060005002d
    <- fefe68
    fefe ist da immer wohl als magic bytes davor.
    06 ist wohl das schliessen der Verbindung.
    Der Blau markierte Teil ist, anhand der vorangegangenenen Pakete zu erkenen wohl, so eine art Sequenznummer die zwischen server und client annaehernd synchron bleibt. Die ist auch groesser je laenger die Verbindung laeuft.
    Die Sequenznummer wird die Nummer des Slices sein. Das ist die kleinste Zeiteinheit in Civ und sie beträgt 0,25 Sekunden.
    Man kann sie in der DLL über getTurnSlice() ermitteln.

    Für das IP-Spoofing könnte folgendes interessant sein, was auf die Bib scapy aufbaut: https://github.com/pankajmore/ip_spoofing
    Ältere Versionen (<=1.1.1, < 2.0 ) von Scapy sollen mit Python 2.4 kompatibel sein.

  14. #59
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.901
    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Die Sequenznummer wird die Nummer des Slices sein. Das ist die kleinste Zeiteinheit in Civ und sie beträgt 0,25 Sekunden.
    Man kann sie in der DLL über getTurnSlice() ermitteln.

    Für das IP-Spoofing könnte folgendes interessant sein, was auf die Bib scapy aufbaut: https://github.com/pankajmore/ip_spoofing
    Ältere Versionen (<=1.1.1, < 2.0 ) von Scapy sollen mit Python 2.4 kompatibel sein.
    Das schaut mir schon zu umfangreich aus. Ich glaube pyip hat alles was man braucht um die Pakete zu senden. Das muss ja auch nicht aus dem PB-Mod heraus passieren.

    Was ist mit dem Erkennen der abgebrochenen Verbindung? Kann man den Zustand im Mod irgendwie erkennen? Oder sonst von aussen z.B. pycap?

  15. #60
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Zitat Zitat von Zulan Beitrag anzeigen
    Was ist mit dem Erkennen der abgebrochenen Verbindung? Kann man den Zustand im Mod irgendwie erkennen? Oder sonst von aussen z.B. pycap?
    Geht es dir hierbei auch um die dabei gesendeten Daten? Denn falls es nur um das Ereignis an sich geht, würde ich behaupten, dass wir gar keine Erkennung brauchen. Wir senden immer ein gefaktes "Verbindung beenden"-Paket wenn ein Spieler nicht mehr online ist. Egal ob das Ausloggen von ihm erfolgreich war oder nicht.

Seite 4 von 53 ErsteErste 1234567814 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •