Hallo! Ich habe eine Frage zu dem Tutorial: Kiiiilllick.
Ich möchte nun damit X Position speichern. Wie mache ich das?
Bzw. wo werden die einzelnen Werte fürs eintragen abgefragt?
MFG MassivePython
Hallo! Ich habe eine Frage zu dem Tutorial: Kiiiilllick.
Ich möchte nun damit X Position speichern. Wie mache ich das?
Bzw. wo werden die einzelnen Werte fürs eintragen abgefragt?
MFG MassivePython
Sollte helfen
Spawnen wo man Ausloggt
Danke. Aber eigentlich geht es mir um das Skript was ich verlinkt habe!
Ich möchte nur wissen wo die Werte abgefragt werden.. Da ich noch einiges wie Coords, Premium und co hinzufügen möchte.
Also wo z.B. im Skrip abgefragt wird wie viel Leben der Player noch hat
MFG MP
Bei SpielerSpeichern ?
Glaube so heißt der stock bei maddins Tutorial grad...
Habe das mal so ausprobiert. Was aber leider nicht geht:
stock SavePlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist.
{
if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist.
{
//Nun speichern wir die Daten in der Datenbank.
mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "XPos", SpielerInfo[playerid][pXPos], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "YPos", SpielerInfo[playerid][pYPos], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "ZPos", SpielerInfo[playerid][pZPos], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
}
}
return 1;
}
Alles anzeigen
Bei OnPlayerDisconnect führst du ja den stock aus.
Fragst du auch vorher ab an welcher Position er steht und speicherst dies in deine Spieler Variablen ?
public OnPlayerDisconnect(playerid, reason)
{
SavePlayer(playerid);
DeletePVar(playerid,"Eingeloggt");
return 1;
}
Aber ich habe mich nun gefragt wo die ganzen Werte abgefragt werden. Also das mit dem Health,Level & co.
Von den Spieler Variablen. Welche im enum eingetragen sind.
Und wenn du bei OnPlayerDisconnect die Position Speichern möchtest solltest du es vorher auch so machen :
public OnPlayerDisconnect(playerid, reason)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
SpielerInfo[playerid][pXPos] = x;
SpielerInfo[playerid][pYPos] = y;
SpielerInfo[playerid][pZPos] = z;
SavePlayer(playerid);
DeletePVar(playerid,"Eingeloggt");
return 1;
}
Du musst das alles natürlich auch an dein Script anpassen.
Grüße,
TimPhillip
Du musst das alles natürlich auch an dein Script anpassen.
Grüße,
TimPhillip
I Know. Ich bin vor 1 Tag erst auf MySql umgestiegen
Und es speichert nun die X,Y,Z Positionen des Players. Wo müsste ich das nun einbauen mit dem SetPlayerPos(playerid,x,y,z); ?
Wenn du die Daten dann auch ladest ich nehme an auch mit mysql_GetInt dann kannst du das bei OnPlayerSpawn machen :
SetPlayerPos(playerid,SpielerInfo[playerid][pXPos],SpielerInfo[playerid][pYPos],SpielerInfo[playerid][pYPos]);
Komischer weise werde ich nun nicht am Spawn rausgeschmissen.
PS: Bild von dem Ort wo ich rausgeschmissen werde im Dateianhang!
Aha, wie ladest du die Positionen denn ?
Wenn du die Daten dann auch ladest ich nehme an auch mit mysql_GetInt dann kannst du das bei OnPlayerSpawn machen :
SetPlayerPos(playerid,SpielerInfo[playerid][pXPos],SpielerInfo[playerid][pYPos],SpielerInfo[playerid][pYPos]);
Damit
Ich meine in deinem stock wo du den Spieler lädst.
Ich habe das so gemacht:
stock LoadPlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit)
{
GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME); //Wir Speichern den Namen des Spielers in der Variable [i]SpielerInfo[playerid][pName][/i]
SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Level" eingetragen ist und Speichern ihn in unserer Variable.
SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Geld" eingetragen ist und Speichern ihn in unserer Variable.
SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Kills" eingetragen ist und Speichern ihn in unserer Variable.
SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pXPos] = mysql_GetInt("accounts", "XPos", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pYPos] = mysql_GetInt("accounts", "YPos", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pZPos] = mysql_GetInt("accounts", "ZPos", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pHealth] = mysql_GetInt("accounts", "Health", "Name", SpielerInfo[playerid][pName]);
}
return 1;
}
Alles anzeigen
Wenn du die stocks von maddin nützt musst du schon statt GetInt, GetFloat nutzen, da Leben und Positon eine Float ist und kein Integer
SpielerInfo[playerid][pXPos] = mysql_GetFloat("accounts", "XPos", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pYPos] = mysql_GetFloat("accounts", "YPos", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pZPos] = mysql_GetFloat("accounts", "ZPos", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pHealth] = mysql_GetFloat("accounts", "Health", "Name", SpielerInfo[playerid][pName]);
Okay.
Nun kommt dieser Error:
C:\Users\\Desktop\(493) : warning 208: function with tag result used before definition, forcing reparse
Bei Zeile 493 ist:
stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
{
new query[128], Float:sqlfloat;
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Is, Is);
format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
mysql_fetch_float(sqlfloat);
mysql_free_result();
return sqlfloat;
}
Alles anzeigen
Tu den stock rauslöschen und weiter oben einfügen, am besten über dem SpielerLaden ;D
Okay
Nun falle ich dort wieder hin. (habe mich gelöscht)
Wie mache ich das hier:
stock CreateAccount(playerid, pass[])
{
new query[256],Name[MAX_PLAYER_NAME];
GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
mysql_real_escape_string(Name,Name);
mysql_real_escape_string(pass,pass);
format(query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`) VALUES ('%s', '%s')", Name, pass);
mysql_query(query);
return true;
}
Also vor eintragen was rein soll und wo man hinfällt.
Vielleicht -> SetPlayerPos?