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