Folgende Fehlermeldungen erhalte ich
ZitatAlles anzeigenC:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(57) : warning 213: tag mismatch
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(74) : warning 213: tag mismatch
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(74) : error 035: argument type mismatch (argument 3)
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(77) : error 017: undefined symbol "mysql_pquery"
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(293) : warning 213: tag mismatch
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(293) : error 035: argument type mismatch (argument 3)
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(296) : error 017: undefined symbol "mysql_pquery"
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(307) : warning 213: tag mismatch
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(307) : error 035: argument type mismatch (argument 3)
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(309) : error 017: undefined symbol "mysql_pquery"
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(323) : error 017: undefined symbol "cache_insert_id"
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(333) : error 017: undefined symbol "cache_get_row_count"
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(351) : error 017: undefined symbol "cache_get_row_count"
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(361) : error 017: undefined symbol "cache_get_value_name_int"
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(362) : error 017: undefined symbol "cache_get_value_name_int"
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(363) : error 017: undefined symbol "cache_get_value_name_int"
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(364) : error 017: undefined symbol "cache_get_value_name_int"
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(365) : error 017: undefined symbol "cache_get_value_name_int"
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(380) : warning 213: tag mismatch
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(383) : warning 213: tag mismatch
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(413) : warning 213: tag mismatch
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(413) : error 035: argument type mismatch (argument 3)
C:\Users\Ashkan\Desktop\SAMP Server\gamemodes\ownScript.pwn(417) : error 017: undefined symbol "mysql_pquery"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
16 Errors.
Gamemode
#include <a_samp>
#include <a_mysql>
#include <sscanf2>
#include <streamer>
//#define MYSQL_HOST    "**.**.***.**"      //IP Adresse des MySQL Servers
#define MYSQL_USER    "*******"           //Benutzername der angemeldet wird
#define MYSQL_PASS    "******************"               //Passwort des Benutzers
#define MYSQL_DBSE    "*******"        //Name der Datenbank
//Dialog IDs
#define DIALOG_REGISTER  0
#define DIALOG_LOGIN     1
new MySQL:handle;
enum pDataEnum
{
	p_id,
	bool:pLoggedIn,
	pName[MAX_PLAYER_NAME],
	pLevel,
	pMoney,
	pKills,
	pDeaths
}
new PlayerInfo[MAX_PLAYERS][pDataEnum];
//Forwards
forward OnUserCheck(playerid);
forward OnUserRegister(playerid);
forward OnUserLogin(playerid);
main()
{
	print("\n----------------------------------");
	print(" Blank Gamemode by your name here");
	print("----------------------------------\n");
}
public OnGameModeInit()
{
    MySQL_SetupConnection();
	SetGameModeText("Blank Script");
	for(new i = 1; i < 311; i++){
	    AddPlayerClass(i, 2089.1777,1683.2428,10.8203, 91.4896, 24, 999, 31, 999, 34, 999);
	}
	SetWorldTime(14);
	SetWeather(1);
	DisableInteriorEnterExits();
	return 1;
}
public OnGameModeExit()
{
	mysql_close(handle);
	return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerPos(playerid, 2089.1777,1683.2428,10.8203);
    SetPlayerFacingAngle(playerid, 91.4896);
	SetPlayerCameraPos(playerid, 2084.6057,1683.1548,10.9016);
	SetPlayerCameraLookAt(playerid, 2089.1777,1683.2428,10.8203);
		//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);
	for(new i = 0; i <= 20; i++){
	    SendClientMessage(playerid, 0xFFFFFFFF, " ");
	}
	SendClientMessage(playerid, 0xFFFFFFFF, "* Willkommen auf dem Server!");
	SendClientMessage(playerid, 0xFFFFFFFF, "* Server Version: 1.0.0");
	SendClientMessage(playerid, 0xFFFFFFFF, "* Besuche unsere Website: www.DOMAIN.tld");
	GameTextForPlayer(playerid, "SERVERNAME", 3000, 3);
	return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    SaveUserStats(playerid);
	return 1;
}
public OnPlayerSpawn(playerid)
{
	SetPlayerPos(playerid, 2218.6963,1839.2418,10.8203);
	SetCameraBehindPlayer(playerid);
	return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
    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 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}
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;
}
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 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;
}
//Stocks
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;
}
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;
}
	
			Alles anzeigen