Ich versuch schon seit Stunden einen /gmx Befehl zu machen, jedoch ohne Erfolg.
Ich möchte, dass die Koordinaten in der Account.ini vor dem Restart gespeichert werden und mein Script ist kein GF.
Der Befehl sollte mit dcmd gemacht werden (sollte ja nicht allzu schwer sein, ich nehm auch strcmp Befehle an)
/gmx Befehl
- maddinat0r
- 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
-
-
dcmd_gmx(playerid, params[])
{
if(IsPlayerAdmin(playerid)) SendRconCommand("gmx");
else return 0;
return 1;
}
Ansonsten weiß ich nicht wie dein Accountsystem aussieht von daher kann ich den Code jetzt nicht erahnen oder so -
Wird alles mit dini gemach, es sollten einfach die aktuellen Koordinaten gespeichert werden.
Gemacht wird es mit Spieler[playerid][lastx] = Die x Koordinate
Und das gleiche mit y und z. -
Hi
Das geht mit einer for-Schleife, 3 Floats und GetPlayerPos der andere Kram mit den dateien musst du ja wissen
MFG, Robdeflop®
-
Soll ich dann die Koordinaten gleich mit dini_FloatSet in die Datei speichern?
-
Ja.
-
Die Koordinaten werden einfach nicht gespeichert
Wenn ich normal das Spiel beende und wieder einlogge, werde ich an der letzten Position gespawnt.
Wenn ich aber /gmx mache und mich einlogge werde ich bei den 0-Punkten gespawnt (bei der farm), aber z.B. mein Adminlevel bleibt 5.
Hier mein Code:
dcmd_gmx(playerid, params[])
{
#pragma unused params
if(Spieler[playerid][Admin] >= 3)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
new pname[MAX_PLAYERS],accFormat[128];
new Float:x, Float:y, Float:z;
GetPlayerPos(i, x, y, z);
Spieler[i][Geld] = GetPlayerMoney(i);
Spieler[i][Skin] = GetPlayerSkin(i);
Spieler[i][lastx] = x;
Spieler[i][lasty] = y;
Spieler[i][lastz] = z;
GetPlayerName(i,pname,sizeof pname);
format(accFormat,sizeof accFormat,"/Accounts/%s.user",pname);
if(fexist(accFormat) && Spieler[i][Eingeloggt])
{
dini_IntSet(accFormat,"Geld",Spieler[i][Geld]);
dini_IntSet(accFormat,"Skin",Spieler[i][Skin]);
dini_FloatSet(accFormat,"lastx",Spieler[i][lastx]);
dini_FloatSet(accFormat,"lasty",Spieler[i][lasty]);
dini_FloatSet(accFormat,"lastz",Spieler[i][lastz]);
}
}
GameModeExit();
}
return 1;
}
//Edit, Problem verdeutlicht -
Ähm Pain er wird sicher ein komplett anderes
System haben also bringt ihm dein Befehl herzlich
wenig xD
nimm einfach einen Timer, eine Info für die
Player das der Server in so und so viel Sekunden
neustartet und dann "SendRconCommand("gmx");"Lg
-
Es soll ja nicht nur einfach ein GMX passieren, es sollen ja auch die Koordinaten beim Befehl GMX in die Datei gespeichert werden
Aber wenn ich einen GMX mache, werden die Koordinaten nach dem GMX immer auf 0 gesetzt, also x = 0, y = 0, z = 0
Und eben das ist mein Problem^^ -
Wenn du die Koordinaten speichern willst, würd ich das bei OnPlayerDisconect machen und bei /gmx mit einer for-Schleife alle kicken und dann das Rcon Command senden.
-
Hm, ist ne Möglichkeit, aber die User müssen dann den Clienten neustarten^^
Falls niemand mehr ne Lösung postet, nehm ich einfach deine^^
//Edit: Okay, da niemand mehr was postet, nehme ich die Lösung von Michael Pittino.
Und somit ein Danke an dich!