wegen mysql scriping

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
  • guten tag ich habe versucht ein script mit mysql datenbank zu erstellen und das ist nicht gelungen und brauche euer hilfe habe auch eine anleitung im breadfish gefunden und daran gearbeitet aber nicht gelungen und das sind die sachen mein script und der error und kann auch nicht mit daten bank verbinden.
    das sind die sachen:
     #include <a_samp>
    #include <a_mysql>


    #define DIALOG_REGISTER 1403
    #define DIALOG_LOGIN 2401


    enum pDataEnum
    {
    p_id,
    bool:pLoggedIn,
    pName[MAX_PLAYER_NAME],
    pLevel,
    pMoney,
    pKills,
    pDeaths
    }
    new PlayerInfo[MAX_PLAYERS][pDataEnum];


    #define MYSQL_HOST "127.0.0.1" //IP Adresse des MySQL Servers
    #define MYSQL_USER "root" //Benutzername der angemeldet wird
    #define MYSQL_PASS "" //Passwort des Benutzers
    #define MYSQL_DBSE "samp_db" //Name der Datenbank


    new MySQL:handle; //Die Connection-Handle, über die wir später auf die Tabellen der Datenbank zugreifen



    main()
    {
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
    }




    public OnGameModeInit()
    {

    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    MySQL_SetupConnection();
    return 1;
    }


    public OnGameModeExit()
    {
    mysql_close(handle);
    return 1;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);


    //Wenn der Spieler die Class-Selection betritt prüfe, ob er bereits eingeloggt ist
    if(!PlayerInfo[playerid][pLoggedIn])
    {
    //Wenn nicht, dann prüfe ob der Spieler ein Konto hat
    //Dazu wird ein Query gesendet und ein neues Callback aufgerufen
    //%e steht für einen geprüften String (sollte anstatt %s in Queries verwendet werden)
    new query[128];
    mysql_format(handle, query, sizeof(query), "SELECT id FROM users WHERE name = '%e'", PlayerInfo[playerid][pName]);


    //Das Query wird abgesendet und die playerid an OnUserCheck übergeben
    mysql_pquery(handle, query, "OnUserCheck", "d", playerid);
    }
    return 1;
    }



    public OnPlayerConnect(playerid)
    {



    PlayerInfo[playerid][p_id] = 0;
    PlayerInfo[playerid][pLoggedIn] = false;
    PlayerInfo[playerid][pLevel] = 0;
    PlayerInfo[playerid][pMoney] = 0;
    PlayerInfo[playerid][pKills] = 0;
    PlayerInfo[playerid][pDeaths] = 0;
    GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
    return 1;
    }



    public OnPlayerDisconnect(playerid, reason)
    {
    //Speichere den Spieler wenn er der Server verlässt
    SaveUserStats(playerid);
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {

    //Beispielcode
    if(killerid != INVALID_PLAYER_ID)
    {
    PlayerInfo[killerid][pKills]++;
    GivePlayerMoney(killerid, 10);
    PlayerInfo[killerid][pMoney] += 10;
    if(PlayerInfo[killerid][pKills] > 3)
    {
    PlayerInfo[killerid][pLevel] = 1;
    }
    }
    PlayerInfo[playerid][pDeaths]++;
    return 1;
    }



    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/mycommand", cmdtext, true, 10) == 0)
    {
    // Do something here
    return 1;
    }
    return 0;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnRconCommand(cmd[])
    {
    return 1;
    }


    public OnPlayerRequestSpawn(playerid)
    {
    return 1;
    }


    public OnObjectMoved(objectid)
    {
    return 1;
    }


    public OnPlayerObjectMoved(playerid, objectid)
    {
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    return 1;
    }


    public OnVehicleMod(playerid, vehicleid, componentid)
    {
    return 1;
    }


    public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
    {
    return 1;
    }


    public OnVehicleRespray(playerid, vehicleid, color1, color2)
    {
    return 1;
    }


    public OnPlayerSelectedMenuRow(playerid, row)
    {
    return 1;
    }


    public OnPlayerExitedMenu(playerid)
    {
    return 1;
    }


    public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
    {
    return 1;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    return 1;
    }


    public OnRconLoginAttempt(ip[], password[], success)
    {
    return 1;
    }


    public OnPlayerUpdate(playerid)
    {
    return 1;
    }


    public OnPlayerStreamIn(playerid, forplayerid)
    {
    return 1;
    }


    public OnPlayerStreamOut(playerid, forplayerid)
    {
    return 1;
    }


    public OnVehicleStreamIn(vehicleid, forplayerid)
    {
    return 1;
    }


    public OnVehicleStreamOut(vehicleid, forplayerid)
    {
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    return 1;
    }
    forward OnUserCheck(playerid);
    public OnUserCheck(playerid)
    {
    //Query wurde ausgeführt und das Ergebnis im Cache gespeichert
    new rows;
    cache_get_row_count(rows);
    if(rows == 0)
    {
    //Der Spieler konnte nicht gefunden werden, er muss sich registrieren
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:", "Ok", "Abbrechen");
    }
    else
    {
    //Es existiert ein Ergebnis, das heißt der Spieler ist registriert und muss sich einloggen
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:", "Ok", "Abbrechen");
    }
    return 1;
    }


    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }


    stock MySQL_SetupConnection(ttl = 3)
    {
    print("[MySQL] Verbindungsaufbau...");
    //mysql_log(); //<- Kommentar vor mysql_log entfernen um den MySQL Debug-Modus zu aktivieren


    handle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DBSE);


    //Prüfen und gegebenenfalls wiederholen
    if(mysql_errno(handle) != 0)
    {
    //Fehler im Verbindungsaufbau, prüfe ob ein weiterer Versuch gestartet werden soll
    if(ttl > 1)
    {
    //Versuche erneut eine Verbindung aufzubauen
    print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
    printf("[MySQL] Starte neuen Verbindungsversuch (TTL: %d).", ttl-1);
    return MySQL_SetupConnection(ttl-1);
    }
    else
    {
    //Abbrechen und Server schließen
    print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
    print("[MySQL] Bitte prüfen Sie die Verbindungsdaten.");
    print("[MySQL] Der Server wird heruntergefahren.");
    return SendRconCommand("exit");
    }
    }
    printf("[MySQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: %d", _:handle);
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_REGISTER)
    {
    //Spieler hat Abbrechen gewählt
    if(!response) return Kick(playerid);


    //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");


    //Wenn alles passt wird der Spieler in der Datenbank angelegt
    //Als Verschlüsselung für das Passwort wird MD5 verwendet
    new query[256];
    mysql_format(handle, query, sizeof(query), "INSERT INTO users (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext);


    //Das Query wird abgesendet und die playerid an OnUserRegister übergeben
    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    return 1;
    }
    if(dialogid == DIALOG_LOGIN)
    {
    //Spieler hat Abbrechen gewählt
    if(!response) return Kick(playerid);


    //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");


    //Wenn alles passt wird die Datenbank ausgelesen
    new query[256];
    mysql_format(handle, query, sizeof(query), "SELECT * FROM users WHERE name = '%e' AND password = MD5('%e')", PlayerInfo[playerid][pName], inputtext);


    //Das Query wird abgesendet und die playerid an OnUserLogin übergeben
    mysql_pquery(handle, query, "OnUserLogin", "d", playerid);
    return 1;
    }
    return 0;
    }


    forward OnUserRegister(playerid);
    public OnUserRegister(playerid)
    {
    //Der Spieler wurde in die Datenbank eingetragen, es wird die id ausgelesen
    PlayerInfo[playerid][p_id] = cache_insert_id();
    PlayerInfo[playerid][pLoggedIn] = true;
    SendClientMessage(playerid, 0x00FF00FF, "[Konto] Registration erfolgreich.");
    return 1;
    }
    forward OnUserLogin(playerid);
    public OnUserLogin(playerid)
    {
    //Query wurde ausgeführt und das Ergebnis im Cache gespeichert
    new rows;
    cache_get_row_count(rows);
    if(rows == 0)
    {
    //Der Spieler hat ein falsches Passwort eingegeben
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen");
    }
    else
    {
    //Es existiert ein Ergebnis, das heißt der Spieler hat das richtige Passwort eingegeben
    //Wir lesen nun die erste Zeile des Caches aus (ID 0)
    cache_get_value_name_int(0, "id", PlayerInfo[playerid][p_id]);
    cache_get_value_name_int(0, "level", PlayerInfo[playerid][pLevel]);
    cache_get_value_name_int(0, "money", PlayerInfo[playerid][pMoney]);
    cache_get_value_name_int(0, "kills", PlayerInfo[playerid][pKills]);
    cache_get_value_name_int(0, "deaths", PlayerInfo[playerid][pDeaths]);
    PlayerInfo[playerid][pLoggedIn] = true;
    SendClientMessage(playerid, 0x00FF00FF, "[Konto] Eingeloggt.");
    GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
    }
    return 1;
    }
    stock SaveUserStats(playerid)
    {
    //Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht
    if(!PlayerInfo[playerid][pLoggedIn]) return 1;


    //Ansonsten speichere sie
    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d' WHERE id = '%d'",
    PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][p_id]);


    //Das Query wird abgesendet
    mysql_pquery(handle, query);
    return 1;
    }


    das sind die error und warning : C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(47) : warning 213: tag mismatch
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(65) : error 017: undefined symbol "mysql_format"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(65) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(65) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(65) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(68) : error 017: undefined symbol "mysql_pquery"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(280) : error 017: undefined symbol "cache_get_row_count"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(304) : warning 213: tag mismatch
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(307) : warning 213: tag mismatch
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(331) : error 021: symbol already defined: "OnDialogResponse"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(343) : error 017: undefined symbol "mysql_format"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(343) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(343) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(343) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(343) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(346) : error 017: undefined symbol "mysql_pquery"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(359) : error 017: undefined symbol "mysql_format"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(359) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(359) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(359) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(359) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(362) : error 017: undefined symbol "mysql_pquery"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(372) : error 017: undefined symbol "cache_insert_id"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(382) : error 017: undefined symbol "cache_get_row_count"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(392) : error 017: undefined symbol "cache_get_value_name_int"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(393) : error 017: undefined symbol "cache_get_value_name_int"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(394) : error 017: undefined symbol "cache_get_value_name_int"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(395) : error 017: undefined symbol "cache_get_value_name_int"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(396) : error 017: undefined symbol "cache_get_value_name_int"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(410) : error 017: undefined symbol "mysql_format"
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(410) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(410) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(410 -- 411) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(410 -- 411) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(410 -- 411) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(410 -- 411) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(410 -- 411) : warning 202: number of arguments does not match definition
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(414) : error 017: undefined symbol "mysql_pquery"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    17 Errors.


    ps: bin der [RSS]kevin7372

  • ich habe das neuste genommen und habe keine anderer gefunden im google.


  • echo Executing Server Config...
    lanmode 0
    rcon_password xx
    maxplayers 500
    port 7777
    hostname sa-mp server by kevin
    gamemode0 Untitled
    filterscripts
    announce 1
    query 1
    weburl www.german-dream-reallife.de
    onfoot_rate 40
    incar_rate 40
    plugins mysql
    weapon_rate 40
    stream_distance 300.0
    stream_rate 1000
    maxnpc 0
    logtimeformat [%H:%M:%S]

  • naturlich nein habe geschaut und dan bin ich in der richtigen pawno ordner gegenagen und das ist jetzt der fehler:
    C:\Users\Kevin\Desktop\selfmade von kevin\gamemodes\Untitled.pwn(331) : error 021: symbol already defined: "OnDialogResponse"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase




    1 Error.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Du hast OnDialogResponse 2x im Script.
    Schätze du hast es aus dem Tutorial einfach rauskopiert, ohne das Public zu löschen.

    nein ech sind nicht habe nachtgeschaut sehe code:
    #include <a_samp>
    #include <a_mysql>
    #include <md5>



    #define DIALOG_REGISTER 1403
    #define DIALOG_LOGIN 2401



    enum pDataEnum
    {
    p_id,
    bool:pLoggedIn,
    pName[MAX_PLAYER_NAME],
    pLevel,
    pMoney,
    pKills,
    pDeaths
    }
    new PlayerInfo[MAX_PLAYERS][pDataEnum];



    #define MYSQL_HOST "127.0.0.1" //IP Adresse des MySQL Servers
    #define MYSQL_USER "root" //Benutzername der angemeldet wird
    #define MYSQL_PASS "" //Passwort des Benutzers
    #define MYSQL_DBSE "samp_db" //Name der Datenbank



    new MySQL:handle; //Die Connection-Handle, über die wir später auf die Tabellen der Datenbank zugreifen




    main()
    {
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
    }





    public OnGameModeInit()
    {

    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    MySQL_SetupConnection();
    return 1;
    }



    public OnGameModeExit()
    {
    mysql_close(handle);
    return 1;
    }



    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);




    //Wenn der Spieler die Class-Selection betritt prüfe, ob er bereits eingeloggt ist
    if(!PlayerInfo[playerid][pLoggedIn])
    {
    //Wenn nicht, dann prüfe ob der Spieler ein Konto hat
    //Dazu wird ein Query gesendet und ein neues Callback aufgerufen
    //%e steht für einen geprüften String (sollte anstatt %s in Queries verwendet werden)
    new query[128];
    mysql_format(handle, query, sizeof(query), "SELECT id FROM users WHERE name = '%e'", PlayerInfo[playerid][pName]);



    //Das Query wird abgesendet und die playerid an OnUserCheck übergeben
    mysql_pquery(handle, query, "OnUserCheck", "d", playerid);
    }
    return 1;
    }




    public OnPlayerConnect(playerid)
    {





    PlayerInfo[playerid][p_id] = 0;
    PlayerInfo[playerid][pLoggedIn] = false;
    PlayerInfo[playerid][pLevel] = 0;
    PlayerInfo[playerid][pMoney] = 0;
    PlayerInfo[playerid][pKills] = 0;
    PlayerInfo[playerid][pDeaths] = 0;
    GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
    return 1;
    }




    public OnPlayerDisconnect(playerid, reason)
    {
    //Speichere den Spieler wenn er der Server verlässt
    SaveUserStats(playerid);
    return 1;
    }



    public OnPlayerSpawn(playerid)
    {
    return 1;
    }



    public OnPlayerDeath(playerid, killerid, reason)
    {

    //Beispielcode
    if(killerid != INVALID_PLAYER_ID)
    {
    PlayerInfo[killerid][pKills]++;
    GivePlayerMoney(killerid, 10);
    PlayerInfo[killerid][pMoney] += 10;
    if(PlayerInfo[killerid][pKills] > 3)
    {
    PlayerInfo[killerid][pLevel] = 1;
    }
    }
    PlayerInfo[playerid][pDeaths]++;
    return 1;
    }




    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }



    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }



    public OnPlayerText(playerid, text[])
    {
    return 1;
    }



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/mycommand", cmdtext, true, 10) == 0)
    {
    // Do something here
    return 1;
    }
    return 0;
    }



    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }



    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }



    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    return 1;
    }



    public OnPlayerEnterCheckpoint(playerid)
    {
    return 1;
    }



    public OnPlayerLeaveCheckpoint(playerid)
    {
    return 1;
    }



    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    return 1;
    }



    public OnPlayerLeaveRaceCheckpoint(playerid)
    {
    return 1;
    }



    public OnRconCommand(cmd[])
    {
    return 1;
    }



    public OnPlayerRequestSpawn(playerid)
    {
    return 1;
    }



    public OnObjectMoved(objectid)
    {
    return 1;
    }



    public OnPlayerObjectMoved(playerid, objectid)
    {
    return 1;
    }



    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    return 1;
    }



    public OnVehicleMod(playerid, vehicleid, componentid)
    {
    return 1;
    }



    public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
    {
    return 1;
    }



    public OnVehicleRespray(playerid, vehicleid, color1, color2)
    {
    return 1;
    }



    public OnPlayerSelectedMenuRow(playerid, row)
    {
    return 1;
    }



    public OnPlayerExitedMenu(playerid)
    {
    return 1;
    }



    public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
    {
    return 1;
    }



    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    return 1;
    }



    public OnRconLoginAttempt(ip[], password[], success)
    {
    return 1;
    }



    public OnPlayerUpdate(playerid)
    {
    return 1;
    }



    public OnPlayerStreamIn(playerid, forplayerid)
    {
    return 1;
    }



    public OnPlayerStreamOut(playerid, forplayerid)
    {
    return 1;
    }



    public OnVehicleStreamIn(vehicleid, forplayerid)
    {
    return 1;
    }



    public OnVehicleStreamOut(vehicleid, forplayerid)
    {
    return 1;
    }



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_REGISTER)
    {
    //Spieler hat Abbrechen gewählt
    if(!response) return Kick(playerid);



    //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");



    //Wenn alles passt wird der Spieler in der Datenbank angelegt
    //Als Verschlüsselung für das Passwort wird MD5 verwendet
    new query[256];
    mysql_format(handle, query, sizeof(query), "INSERT INTO users (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext);



    //Das Query wird abgesendet und die playerid an OnUserRegister übergeben
    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    return 1;
    }
    if(dialogid == DIALOG_LOGIN)
    {
    //Spieler hat Abbrechen gewählt
    if(!response) return Kick(playerid);



    //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");



    //Wenn alles passt wird die Datenbank ausgelesen
    new query[256];
    mysql_format(handle, query, sizeof(query), "SELECT * FROM users WHERE name = '%e' AND password = MD5('%e')", PlayerInfo[playerid][pName], inputtext);



    //Das Query wird abgesendet und die playerid an OnUserLogin übergeben
    mysql_pquery(handle, query, "OnUserLogin", "d", playerid);
    return 1;
    }
    return 0;
    }
    forward OnUserCheck(playerid);
    public OnUserCheck(playerid)
    {
    //Query wurde ausgeführt und das Ergebnis im Cache gespeichert
    new rows;
    cache_get_row_count(rows);
    if(rows == 0)
    {
    //Der Spieler konnte nicht gefunden werden, er muss sich registrieren
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:", "Ok", "Abbrechen");
    }
    else
    {
    //Es existiert ein Ergebnis, das heißt der Spieler ist registriert und muss sich einloggen
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:", "Ok", "Abbrechen");
    }
    return 1;
    }



    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }



    stock MySQL_SetupConnection(ttl = 3)
    {
    print("[MySQL] Verbindungsaufbau...");
    //mysql_log(); //<- Kommentar vor mysql_log entfernen um den MySQL Debug-Modus zu aktivieren



    handle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DBSE);



    //Prüfen und gegebenenfalls wiederholen
    if(mysql_errno(handle) != 0)
    {
    //Fehler im Verbindungsaufbau, prüfe ob ein weiterer Versuch gestartet werden soll
    if(ttl > 1)
    {
    //Versuche erneut eine Verbindung aufzubauen
    print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
    printf("[MySQL] Starte neuen Verbindungsversuch (TTL: %d).", ttl-1);
    return MySQL_SetupConnection(ttl-1);
    }
    else
    {
    //Abbrechen und Server schließen
    print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
    print("[MySQL] Bitte prüfen Sie die Verbindungsdaten.");
    print("[MySQL] Der Server wird heruntergefahren.");
    return SendRconCommand("exit");
    }
    }
    printf("[MySQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: %d", _:handle);
    return 1;
    }



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_REGISTER)
    {
    //Spieler hat Abbrechen gewählt
    if(!response) return Kick(playerid);



    //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");



    //Wenn alles passt wird der Spieler in der Datenbank angelegt
    //Als Verschlüsselung für das Passwort wird MD5 verwendet
    new query[256];
    mysql_format(handle, query, sizeof(query), "INSERT INTO users (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext);



    //Das Query wird abgesendet und die playerid an OnUserRegister übergeben
    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    return 1;
    }
    if(dialogid == DIALOG_LOGIN)
    {
    //Spieler hat Abbrechen gewählt
    if(!response) return Kick(playerid);



    //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");



    //Wenn alles passt wird die Datenbank ausgelesen
    new query[256];
    mysql_format(handle, query, sizeof(query), "SELECT * FROM users WHERE name = '%e' AND password = MD5('%e')", PlayerInfo[playerid][pName], inputtext);



    //Das Query wird abgesendet und die playerid an OnUserLogin übergeben
    mysql_pquery(handle, query, "OnUserLogin", "d", playerid);
    return 1;
    }
    return 0;
    }



    forward OnUserRegister(playerid);
    public OnUserRegister(playerid)
    {
    //Der Spieler wurde in die Datenbank eingetragen, es wird die id ausgelesen
    PlayerInfo[playerid][p_id] = cache_insert_id();
    PlayerInfo[playerid][pLoggedIn] = true;
    SendClientMessage(playerid, 0x00FF00FF, "[Konto] Registration erfolgreich.");
    return 1;
    }
    forward OnUserLogin(playerid);
    public OnUserLogin(playerid)
    {
    //Query wurde ausgeführt und das Ergebnis im Cache gespeichert
    new rows;
    cache_get_row_count(rows);
    if(rows == 0)
    {
    //Der Spieler hat ein falsches Passwort eingegeben
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen");
    }
    else
    {
    //Es existiert ein Ergebnis, das heißt der Spieler hat das richtige Passwort eingegeben
    //Wir lesen nun die erste Zeile des Caches aus (ID 0)
    cache_get_value_name_int(0, "id", PlayerInfo[playerid][p_id]);
    cache_get_value_name_int(0, "level", PlayerInfo[playerid][pLevel]);
    cache_get_value_name_int(0, "money", PlayerInfo[playerid][pMoney]);
    cache_get_value_name_int(0, "kills", PlayerInfo[playerid][pKills]);
    cache_get_value_name_int(0, "deaths", PlayerInfo[playerid][pDeaths]);
    PlayerInfo[playerid][pLoggedIn] = true;
    SendClientMessage(playerid, 0x00FF00FF, "[Konto] Eingeloggt.");
    GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
    }
    return 1;
    }
    stock SaveUserStats(playerid)
    {
    //Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht
    if(!PlayerInfo[playerid][pLoggedIn]) return 1;



    //Ansonsten speichere sie
    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d' WHERE id = '%d'",
    PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][p_id]);



    //Das Query wird abgesendet
    mysql_pquery(handle, query);
    return 1;
    }