Das wird so nicht klappen, du wirst das Geld zwar in der Datenbank stehen haben, aber nach dem Register nicht bekommen.
Mache es so:
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, "Registrierung", "Bitte registrieren Sie sich:\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, level, money) VALUES ('%e', MD5('%e'),1,2500)", PlayerInfo[playerid][pName], inputtext);
//Das Query wird abgesendet und die playerid an OnUserRegister übergeben
mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
PlayerInfo[playerid][pMoney] = 2500;
PlayerInfo[playerid][pLevel] = 1;
GivePlayerMoney(playerid,PlayerInfo[playerid][pMoney]);
SetPlayerScore(playerid,PlayerInfo[playerid][pLevel]);
return 1;
}
public OnPlayerSpawn(playerid)
{
if(PlayerInfo[playerid][pErsterLogin] == 0)
{
PlayerInfo[playerid][pErsterLogin] = 1;
//Tutorial(playerid);
}
else if(PlayerInfo[playerid][pErsterLogin] >= 1)
{
}
return 1;
}
Das Ganze unter OnPlayerSpawn zu regeln ist nicht gut, da das ja jedes mal aufgerufen wird, wenn der Spieler spawnt.
Was höchstens gehen würde wäre:
public OnPlayerSpawn(playerid)
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid,PlayerInfo[playerid][pMoney]);
SetPlayerScore(playerid,PlayerInfo[playerid][pLevel]);
if(PlayerInfo[playerid][pErsterLogin] == 0)
{
PlayerInfo[playerid][pErsterLogin] = 1;
//Tutorial(playerid);
}
else if(PlayerInfo[playerid][pErsterLogin] >= 1)
{
}
return 1;
}
Dann wird das Geld beim Spawn jedes mal wieder korrekt gesetzt, zu dem was in der Variable steht.