Beiträge von Marius.B


    Hier ein kleiner Code zum abfragen:
    new query[200];
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(query, sizeof(query), "SELECT * FROM Accounts WHERE Name = '%s'", pname);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows() >= 1)
    {
    //Wenn etwas in der Spalte ist...
    }
    Das frägt ab oder der Name des Spielers in der Tabelle vorhanden ist. Du must es dann nur noch für dich anpassen ;)


    MfG
    Marius

    weils keiner an was das liegt? .....
    Also ich erklärs nochmal kurz. Wenn ich z.B. "/veh 451 0 0" eingebe spawnt das fahrzeug nicht sofort, sondern erst alle 5 sekunden. Das ist irgendwie total komisch. Also es is als würde ein Timer laufer der erst nach 5 sek. alle autos spawnt die gespawnt werden sollen.

    Hallo zusammen.
    Ich habe ein Frage. Und zwar benutze ich das LoH 0.4. Was ich jetzt aber festgestellt habe, das die Fahrzeuge nur alle 5 Sekunden gespawnt werden. Also nicht sofort wenn sie eingetlich sollten, sondern es spawnen einfach alle immer nach 5 sekunden... .
    Ich wollte jetzt fragen ob mir jemand sagen kann an was das liegt. Und wie ich es beheben könnte, also das sie halt sofort spawnen.

    da muste einfach mit strtok sscanf oder sonst was model, farbe1, farbe2 auslesen und dann mit CreateVehicle(...); erstellen.
    Davor einfach ne Adminabfrage machen. (wenn du noch kein admin system mit ränge hast muste erst das machen).


    Ein kleines beispiel mit dem command prozessor ZCMD:
    CMD:veh(playerid, params[])
    {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, *DeineFarbe, " Du bist kein Admin.");
    new tmp[21], model, color1, color2, string[130], nomistake;
    if(sscanf(params, "s[20]ii", tmp, color1, color2)) return SendClientMessage(playerid, COLOR_ERROR, " Benutzung: /Veh [Model ID] [Farbe 1] [Farbe 2]");
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, angle);
    model = strval(tmp);
    new vid = CreateVehicle(model, X, Y, Z, angle, color1, color2, -1);
    SendClientMessage(playerid, *DeineFarbe, "Fahrzeug erfolgreich gespawnt.");
    return 1;
    }


    Du kannst diesem Befehl nur ausführen wenn du rcon admin bsit. Du must das halt an deine Admin abfrage anpassen.
    Und übrall wo *DeineFarbe steht musst du halt dein gewünnschten Farbcode machen ;)


    Mit freundlichen Grüßen,
    Marius

    ok.
    Aber wenn mal wieder was sein sollte, schau mal in deine Debug datei. Da wird jede mysql Abfrage gespeichert und fals ein fehler/error passieren wir er dort angezeigt ;)


    Bei mir wird komicher weise nur das Passwort und der Name in der MySQL datenbank gespeichert.
    Weiß jemand woran das liegen könnte ?


    Bestehen alle Felder in deiner Mysql Daten bank? Wenn ja schau mal in deiner Debug datei. Da sollte eingetlich der fehler drin sein.



    //Edit Zweiter teil eingefügt (mit dem Zitat)

    Also du hast doch unter OnGameModeInit eine verbindung mit mysql_connect(....); gemacht.
    Dann könntest du eingetlich direkt danach das machen:


    if(mysql_ping() == 1)
    {
    print("[MYSQL] Verbindung stabil!");
    }
    else if(mysql_ping() == -1)
    {
    Mysql_Reconnect();
    print("[MYSQL] Verbindung fehlgeschlagen.");
    print("[MYSQL] Verbindung wird hergestellt.");
    if(mysql_ping() == 1)
    {
    print("[MYSQL] Verbindung stabil!");
    }
    else if(mysql_ping() == -1)
    {
    Mysql_Reconnect();
    print("[MYSQL] Verbindung konnte nicht hergestellt werden.");
    SendRconCommand("exit");
    }
    }
    Wenn du das unter OnGameModeInit einfügts (Nach mysql_Connect!! ) wird überprüft ob eine Verbindung besteht. Falls sie besteht, wird in der Konsole "[MYSQL] Verbindung stabil!" geschrieben, damit man weis das die Verbindung steht. falls das nicht der Fall sein sollte, wird als erstes erneut versucht eine Verbindung herzustellen und man bekommt in der Konsole die Meldung: "[MYSQL] Verbindung fehlgeschlagen." .Wenn es dann auch bein zweiten mal nicht klappt kommt die Meldung: [MYSQL] Verbindung konnte nicht hergestellt werden." und das Script wird beendet.
    Das Problem ist, wenn das Script weiterläuft jedoch ohne verbindung. Treten fehler beim Laden, Speichern etc auf. Es wird auch immer angezeigt das man kein Account hat. Das liegt daran das er ja nicht auf die Datenbank zu greifen kann.


    PS: Lad mal die Debug.txt in deinem Server Ordner (Ganz vorne also da wo auch die samp-server.exe ist) hoch. Dort wird alles gespeichert was Mysql abfragen betrifft. Dort solltest du auch einen Fehler/Error sehen.


    //Verbesserung vorgenommen

    also erstens würd ich das Adminlevel beim einlogen in ner Variable speicher, dann must du des nicht immer über die datenbank abfrage.
    Dann würd ich schon bevor du das erste mal SpielerInfo[playerid][pName] benutzt, das machen:
    GetPlayerName(playerid, SpielerInfo[playerid][pName], sizeof(SpielerInfo[playerid][pName]));


    so wird der Name des spieler in "SpielerInfo[playerid][pName]" gespeichert.
    Als nächtest, hast du schonmal überprüft ob deine Verbindung wirklich da ist(du kannst im Script mysql_ping(); benutzen um zu sehen ob die Verbindung steht. -1=sie steht nicht).
    Und als drittest würde mir nurnoch einfalen, dass du die Datenbank nochnicht erstellt hast.


    Du kannst auch im script ein Mysql Command machen das die Tabellen automatisch erstellt.
    Bsp:
    new query[126];
    format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `Accounts` (`Name` varchar(30), `Adminlevel` int(5), PRIMARY KEY (`Name`) );"
    mysql_query(query);


    Sobalt die Tabelle Accounts nicht vorhanden ist, wird sie erstellt und in die Talbele kommt ein 30Zeichen langer string und ein 5Zeichen langes Adminlevel.
    In diese kannst du dann alles speicher, laden usw.

    Ich hab mal en kleines problem^^. Jetzt wollt ich dich mal fragen, ob du mir viell jemand helfen könnten.


    Undzwar hab ich das Problem das mein GameServer immer crashed sobalt ich die stehende Mysql verbindung stope und dann mysql_ping aufrufe -.-
    Also ich hab halt ien Timer der jede minute schaut ob die verbindung noch steht.
    Weis jemand an was das liegt?


    Edit: Ich hab jetzt im Internet darüber gelesen. Dort habe ich dann auch die Antwort gefunden, dass man einfach nicht viel bei der Abfrage machen soll, sondern einfach nur die Verbindung neu starten, jedoch klappt das auch nicht -.-
    Hat keiner eine Ahnung an was das liegen könnte?

    Hallo zusammen!
    Wie die Überschrift schon sagt habe ich ein Problem mit meinem Login & Register System.
    Ich habe eins gemacht damit man sich mit /register registrieren und mit /login einloggen kann.
    Nur klappt das mit meinem OnPlayerCommandReceived public nicht. Das sieht so aus:
    public OnPlayerCommandReceived(playerid, cmdtext[])
    {
    if(!IsPlayerConnected(playerid)) return 1;
    if(gPlayerLogged[playerid] != 1)
    {
    if(strcmp(cmdtext, "login", true) == 0 || strcmp(cmdtext, "register", true) == 0)
    {
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERROR, " Fehler: Du bist nochnicht eingeloggt.");
    return 0;
    }
    }
    return 1;
    }


    Ich wills so machen, dass man kein Befehl benutzen kann, außer wenn man sich einloggen will.
    Aber es geht einfach nicht-.-
    Auch wenn ich Login oder Register eingebe, kommt immer die Fehlermeldung das ich nochnicht eingeloggt bin...


    Kann mir da jemand helfen? ?(


    Ich bedanke mich schonmal im vorraus.


    //Edit das muss ja nicht zu OnPlayerCommandPerformed(playerid, cmdtext[], success) oder? Das wird doch aufegerufen nachdem der Befehl aufgerufen wurde, oder habe ich da was falsch verstanden?
    //Edit ok habs mir nochmal genau angeschaut OnPlayerCommandPerformed wird aufgerufen wenn das Command ausgeführt wurde. also muss es doch OnPlayerCommandReceived sein. Aber warum geht das nicht??


    //Edit ok ich habs selber geschafft^^ ich musste nicht "login"&"register" sondern "/Login" & "/Register" also ich hab die "/" vergessen^^


    Mit freundlichen Grüßen,
    Marius

    Ich kenne James schon was länger und er macht echt super Mapps sehr nice James weiter so ;)


    MFg


    Ps. du kennst mich unter einem anderen namen ;)


    10/10