MySQL 2 Spieleserver (Identisches Speichersystem) in 1 accounts Datei

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo Ich habe eine frage über die MySQL Tabelle (Speichersystem)


    Wenn Ich 2 Game Server habe mit einem identischen MySQL Speichersystem, also kills, deaths, accounts, Anlegeung ist 100% Identisch! Kann ich dann beide Server auf einen Accounts Tabelle zugreifen lassen ? oder stützt mir da mysql ab ?
    "Also ich spiele auf Server A mache 3 Kills, logge mich aus, logge mich auf Server B ein, und mir werden die 3 Kills geladen. Da ich ja nur einen Account habe auf 2 Server" also geht das oder ist es dann überlastet, und könnte Laggen oder sogar abstützen?

  • Klar geht das,
    du kannst doch auch Forum und Server auf eine Datenbank zugreifen lassen,
    warum sollte es dann abstürzen?

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Ja sry bin neu im MySQL System ^^
    Also wenn dann zbs. auf Server A Spieler Hans ist, kann er sich auf Server B (Ein anderer Faker USer) nicht einloggen, da er ja schon Online ist oder? nicht das sich dann Datensätze zerreissen/verloren gehen wenn sich ein faker versucht einzuloggen.

  • Moin Also so wie ich das nun verstanden habe willst du zwei Server über eine Datenbank laufen lassen?
    Ich würd das nähmlich so machen du fügts dort eine Spalte ein und nennst sie ServerID dann scriptes du das um so das das eine Script die ID 1 hat und der andere Server ID 2


    mfg kevin

  • Ich würd das nähmlich so machen du fügts dort eine Spalte ein und nennst sie ServerID dann scriptes du das um so das das eine Script die ID 1 hat und der andere Server ID 2


    Wenn ich ihn richtig verstehe, ist das was du vorhast Sinnlos, weil es nichts bring.


    @TE
    Erstell eine spalte eingeloggt und setz die auf 1 wenn er eingeloggt ist und wenn jmd versucht sich über den anderen Server zu connecten verweigerst du es, weil er ja schon eingeloggt ist.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Allerdings sollten man vermeiden das 1 Account auf beiden Servern gleichzeitig online sein kann.
    Da es mit den Stats dann Probleme gibt. Daher diese wichtige Abfrage nicht vergessen.

    RFT

  • Danke euch!
    Also einfach bei "onplayerconnect" eine "abfrage" machen "if player logged 1" wenn ja "Kick player"
    finde ich gut das das klappt wieder was positives an MySQL :)



    //habe es nun so gemacht er speichert aber beim einloggen die "1" nicht in die userdatei was mache ich falsch?



    enum gPlayerInfo
    {
    logged
    };


    logged INT(5)NOT NULL



    bei onplayerconnect:



    if(PlayerInfo[playerid][logged] == 1)
    {
    Kick(playerid);
    }


    Bei erfolgreichem Login:


    PlayerInfo[playerid][logged] = 1;




    public OnPlayerDisconnect(playerid,reason)
    {
    PlayerInfo[playerid][logged] = 0;

    Einmal editiert, zuletzt von Manuel20 ()

  • In der Tabelle sollst du das eintragen und im Script abfragen.
    Aus dem Grund wenn Spieler (A) auf Server A geht und mit einem anderen PC auf Server B. Der Spieler auf Server A 100.000k hat und auf Server B 5k.
    Wenn er jetzt von Server A runter geht werden die 100.000k gespeichert. Verlässt er nun aber auch Server B werden die 100.000k mit den 5k überschrieben.


    LG RFT

    RFT

  • Also wenn er sich ausloggt das



    public OnPlayerDisconnect(playerid,reason)
    {
    if(GetPVarInt(playerid, "Logged") == 1)
    {
    format(Query, sizeof(Query), "UPDATE `playerinfo` SET `logged` = '0' WHERE `user` = '%s'", );
    mysql_query(Query);
    }


    und wie kann ich es jetzt bei onplayer connect abrufen ohne das er sich einloggen kann ? damit er gekickt wird??

  • Das wäre dann ja wohl mit einem Select möglich, bevor dein Einloggenfenster/dialog kommt

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Kannst du mir ein bsp machen kenne mich nicht so auch mit "select" wie ich es abfrage bei connect und den spilere falls logged = 1 ist gekickt wird



    //Wenn es so viel arbeit ist würde ich auch was dafür bezahlen wenn es sein muss.


    ich brauch jetzt nur bei connect eine mysql abfrage, ob der spieler in der "accounts" tabelle " logged" eine 1 oder 0 hat, wenn 1 soll er gekickt werden bevor er sich einloggen kann.

    Einmal editiert, zuletzt von Manuel20 ()