Hey Leute, ich habe eine Frage, macht es einen großen unterschied
wenn ich die Fraktionskassen mit dini oder Mysql erstelle?
Frakkassen
- xFreeze
- Geschlossen
- Erledigt
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
-
-
Ich würds mit MySQL machen
-
kommt drauf an wie oft du es ladest/speicherst.. wenn du es beim gamemode start einmal in die pvars/variablen ladest und nur beim ausschalten einmal abspeicherst macht es eigentlich kein unterschied..
ob der server jetzt paar ms länger zum laden/speichern braucht wirst du nicht bemerken.. wenn du aber jede minute einmal ladest/abspeicherst würde ich zu mysql wechseln. -
Ok, ich habe es gerade versucht mit MySQL, aber ich habe es nciht geschafft, (Es speichert nichts etc)
gibt es vlt ein Tutorial? -
ajo [ SCRIPTING ] MySQL (Installation, Zugriff, Einstellungen, Login & Register Beispiel)
-
ajo [ SCRIPTING ] MySQL (Installation, Zugriff, Einstellungen, Login & Register Beispiel)
Ich meinte zum speichern von Fraktionskassen bzw globale Variablen -
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]); //Wir holen uns den wert der unter "Tode" eingetragen ist und Speichern ihn in unserer Variable.
}
return 1;
}stock mysql_GetInt(Table[], Field[], Where[], Is[])
{
new query[128];
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();
new sqlint = mysql_fetch_int();
mysql_free_result();
return sqlint;
}
Als erklärung:
mysql_GetInt gibt den Integer zurück, der an der angegebenen Position in der angegebenen Tabelle liegt.- Table[] - Die Tabelle in der der Wert liegt.
- Field[] - Das Feld (die Spalte) in der der Wert liegt.
- Where[] - Das Feld (die Spalte) in der Nach der Bedingung gesucht wird.
- Is[] - Die bedingung um die richtige Reihe zu finden.
mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName])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", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
}
}
return 1;
}
Und die Funktionen mysql_SetInt, mysql_SetFloat und mysql_SetString kommen direkt da drunter (mysql_SetString benutzen wir zwar nicht, aber falls ihr mal strings speichern wollt habt ihr diese direkt parat).
stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
{
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Where2, Where2);
format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
mysql_query(query);
return true;
}Als erklärung:
mysql_SetInt "Updatet" den Wert der an der Angegebenen Stelle in der Tabelle liegt, auf den neuen Wert den wir angegeben haben.
Table[] - Die Tabelle in der der Wert verändert werden soll.
Field[] - Das Feld (die Spalte) in der der Wert verändert werden soll.
To - Der Wert der an der in das Angegebene feld eingetragen werden soll.
Where[] - Das Feld (die Spalte) in der Nach der Bedingung gesucht wird.
Where2[] - Die bedingung um die richtige Reihe zu finden.[pwn]mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
heisst also, wir gehen in die Tabelle "accounts", und ändern den Wert der in der Spalte "Level" steht, auf den Wert den wir angegebene haben (SpielerInfo[playerid][pLevel]), da wo in der Spalte "Name" unsere bedingung (SpielerInfo[playerid][pName]) steht.</a_mysql></a_mysql>Das ist aus dem Tutorial Link von Tround also nutze mal dein Gehirn, lies das Tutorial durch und versuche es damit zu schaffen. Fragen kannst du danach ja immernoch stellen.
-
Eine Frage:
Wofür steht Where[] und Is[]?
Das ist das einzige was ich bis jetzt noch nicht verstanden habe, da komme ich auch nicht weiter...
bzw. da bin ich heute immer hängen geblieben. -
Das sind zwei Arrays, die je eine Zeichkette darstellen.
Bei einer MYSQL Abfrage könnte z.B folgendes Muster auftreten.
fraktionen wäre hier der Tabellenname,
Faktionsname wäre hier das Where[],
LSPD wäre hier das Is[],dient einfach zur schnellen und (möglich!) eindeutigen Identifizierung.
-
Ich habe aber die Variablen so in einem enum stehen, wie soll ich die dann da reinschreiben?...
enum FraktionDaten
{
LSPD,
Medic,
}
new FraktionKasse[FraktionDaten]; -
-
Bitte wenn du dir Mysql in Verbindung mit PAWN ansehen willst bitte nicht mit
den Mysql_GetInt usw scheiß... (Später ca: 80-90 Querys bei OnPlayerConnect....)Guck es dir in verbindung mit sscanf an
MfG
-
@.: xGreekz7x :.
Lol wie meinste in verbindung in Sscanf?Könnte es mir jemand vorschreiben das ich es so lernen kann? :X
-
Look @Tutorial SSCANF - 2 von Maddin
da ist ein kleiner schnippet drin, er könnte dir helfen zu verstehen wie ich es meine..
-
Ich habe es mir durchgelesen, aber habe immer noch nicht verstanden wie man globale Variablen mit MySQL speichert...
-
breadfish.de
Hat das Thema geschlossen.