Nicht nur sollte, sondern müsste, da es sonst zu unnötigen Komplikationen führt.
Gruss: Sonic
Nicht nur sollte, sondern müsste, da es sonst zu unnötigen Komplikationen führt.
Gruss: Sonic
Die Frage ist nur, aus welcher Datei soll ich es laden?
Habe eine MySQL Tabelle, und keine Datei zumladen o.ä
Ja, ich verstehe, das ist bei mir auch so.
In dem Moment, wo Du die Daten des Spielers
aus der Datenbank ließt und bestimmt in die Funktion
PlayerInfo deklarierst, also in die Variablen davon, genau
dort müsstest Du ansetzen und das gesamte System überarbeiten.
Für jede Variable von PlayerInfo, müsstest Du dann eine Spielervariable
setzen und diese aber keines Falls beim Verlassen des Spielers, vergessen
wieder zu löschen.
Und das ist das aufwendige, wenn man nicht gleich von Anfang
an mit dem System arbeitet.
Ich empfehle nicht, ein Script danach umzubauen.
Nur bei Neuanfängen von Scripts empfehle ich es sofort einzusetzen.
Dann zeige mal deine Lade-, und Savefunktionen von MySQL ;]
Gruss: Sonic
Ja also, ich werde jetzt nicht noch 3200 Zeilen umschreiben. - Keine Möglich die Variable einzeln zu deklaren beim PlayerConnect?
//Edit: MySQL SpielerLaden ->
stock SpielerLaden(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
GetPlayerName(playerid,SpielerInfo[playerid][pName],MAX_PLAYER_NAME);
if(r_LoadSQLEntrance("accounts","Name",SpielerInfo[playerid][pName]))
{
SpielerInfo[playerid][Level] = r_mysql_GetInt("Level");
SpielerInfo[playerid][Health] = r_mysql_GetFloat("Health");
SpielerInfo[playerid][Adminlevel] = r_mysql_GetInt("Adminlevel");
SpielerInfo[playerid][Fraktion] = r_mysql_GetInt("Fraktion");
GivePlayerMoney(playerid,r_mysql_GetInt("Geld"));
SpielerInfo[playerid][Banned] = r_mysql_GetInt("Banned");
SpielerInfo[playerid][Paytime] = r_mysql_GetInt("Paytime");
SpielerInfo[playerid][Rang] = r_mysql_GetInt("Rang");
SpielerInfo[playerid][Morde] = r_mysql_GetInt("Morde");
SpielerInfo[playerid][SkinID] = r_mysql_GetInt("SkinID");
SpielerInfo[playerid][Spielzeit] = r_mysql_GetInt("Spielzeit");
SpielerInfo[playerid][RespektPunkte] = r_mysql_GetInt("RespektPunkte");
SpielerInfo[playerid][Fuehrerschein] = r_mysql_GetInt("Fuehrerschein");
SpielerInfo[playerid][Konto] = r_mysql_GetInt("Konto");
SpielerInfo[playerid][Job] = r_mysql_GetInt("Job");
SpielerInfo[playerid][Contracted] = r_mysql_GetInt("Contracted");
SpielerInfo[playerid][Wanteds] = r_mysql_GetInt("Wanteds");
printf("Spielerdaten vom Spieler %s erfolgreich aus der Datenbank geladen",SpielerName(playerid));
if(SpielerInfo[playerid][Banned] == 1)
{
Kick(playerid);
}
r_UnloadSQLEntrance();
}
}
return 1;
}
Es ist machbar. Aber nur mit etwas Aufwand ;]
Gruss: Sonic
Ehrlich gesagt, würde ich mir die Mühe auch nicht machen.
Aber wenn Du sie am Nachhinein nochmal deklarieren willst,
ist es letzten Endes eigentlich Quatsch.
Verwende einfach Dein System, wie Du es jetzt hast oder
schreibs einfach um. Beides zu machen wäre Quark, weil
Du dann die Speicherung der Variablen des Spielers wieder
von den eigentlichen Variablen auf Deine PlayerInfo durchführen musst.
Somit würdest Du Dir sogar nochmehr Ressourcen rauben.
Das heisst ich soll jetzt, in der SpielerInfo -> Kopfgeld eintragen, MySQL Feld -> Kopfgeld anlegen. -> MySQL Feld Kopfgeld auslesen.
Denn kann ich die PVars ja wieder löschen
Ja, in dem Fall ist es natürlich unsinnig die neuen
Spielervariablen zu verwenden. Aber das konnten
wir vohrer ja nicht ahnen.
Ich bin generell dafür, dass es jeder so machen würde.
Aber das liegt ja wohl nicht ein meiner Entscheidungsgewalt.
NACHTRAG
Um Dein Problem zu klären, definierst Du einfach eine neue Variable.
Beispielsweise diese hier:
new PlayerContractPrice[MAX_PLAYERS];
Dann kannst Du diese in Deiner Funktion einfach mit targetid
setzen und gleich noch festlegen, wie hoch das Kopfgeld sein soll.
MySQL benötigt nicht gerade wenig Resourcen..
Es empfiehlt sich die Var beim Login auszulesen und beim Dissconnect zu saven... als Zwischenbuffer verwendest eine Playervariable ;]
Gruss: Sonic
Danke.
Habe es jetzt mal an mein System angepasst, Kopfgeld wird auch richtig angezeigt.
Was meinst du Zwischenbuffer,wenn ich fragen darf?
Eine Var die du anstelle der MySQL Database ausliest. Sehr viel Resourcenschonender ;]
Gruss: Sonic
Okey. - Ich werde mal schauen, da ich jetzt eigentlich schon alles aus der Datenbank ausgelesen habe, mit dem Enum..
Danke, kann erst mal geschlossen werden, geht nu alles.
In Ordnung, super.
Noch ein letzter Nachtrag dazu.
Mach so, wie Du damit zurecht kommst!
Das ist eigentlich der beste Weg, Ressourcen hin oder her.
In Ordnung, super.
Noch ein letzter Nachtrag dazu.
Mach so, wie Du damit zurecht kommst!
Das ist eigentlich der beste Weg, Ressourcen hin oder her.
Naja ob es Funktioniert ist eine Sache... die andere ob der Server nicht anfängt zu laggen.. "hust"
Gruss: Sonic
Naja, aufm lokalem Server läufts noch.
Aufm Root später, wirds ja denn wieder was ganz anderes.
Ansonsten muss ich da mal debugen später wenns laagt.
So //Closed. Danke