Hallo, ich hab für mich so ein Markierungssystem gescriptet, wo die Positionen in einer Datei abgespeichert werden sollen, um irgendwann später wieder ausgelesen zu werden und sich dorthinzu porten.
Hier, die Auszüge aus dem Script
enum UserInfo
{
Float:MarkPosX_1,
Float:MarkPosY_1,
Float:MarkPosZ_1,
MarkInt_1,
Float:MarkPosX_2,
Float:MarkPosY_2,
Float:MarkPosZ_2,
MarkInt_2,
Float:MarkPosX_3,
Float:MarkPosY_3,
Float:MarkPosZ_3,
MarkInt_3,
};
new User[MAX_PLAYERS][UserInfo];
das hier sind die enums, auf die dann die Positionen und das Interior draufgespeichert werden solln
else if(zeile == 66) { User[playerid][MarkPosX_1] = strval(string); } // Markierung 1 PosX
else if(zeile == 67) { User[playerid][MarkPosY_1] = strval(string); } // Markierung 1 PosY
else if(zeile == 68) { User[playerid][MarkPosZ_1] = strval(string); } // Markierung 1 PosZ
else if(zeile == 69) { User[playerid][MarkInt_1] = strval(string); } // Markierung 1 Interior
else if(zeile == 70) { User[playerid][MarkPosX_2] = strval(string); } // Markierung 2 PosX
else if(zeile == 71) { User[playerid][MarkPosY_2] = strval(string); } // Markierung 2 PosY
else if(zeile == 72) { User[playerid][MarkPosZ_2] = strval(string); } // Markierung 2 PosZ
else if(zeile == 73) { User[playerid][MarkInt_2] = strval(string); } // Markierung 2 Interior
else if(zeile == 74) { User[playerid][MarkPosX_3] = strval(string); } // Markierung 3 PosX
else if(zeile == 75) { User[playerid][MarkPosY_3] = strval(string); } // Markierung 3 PosY
else if(zeile == 76) { User[playerid][MarkPosZ_3] = strval(string); } // Markierung 3 PosZ
else if(zeile == 77) { User[playerid][MarkInt_3] = strval(string); } // Markierung 3 Interior
dann, hier, wo sicher das Problem liegt, das ist unter OnUserEinloggen drinnen, also, wenn sich der Spieler einloggt
Die datei wird ausgelesen, und das, was dann in der Zeile steht sollte dann dort draufgespeichert werden, aber, das Problem ist, dass ich nur ganze Zahlen habe, ohne komma, also statt zB.: 659.4572 hab ich dann nur 659.0000
format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosX_1]); fwrite(userdatei, eintrag); // Markierung 1 PosX
format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosY_1]); fwrite(userdatei, eintrag); // Markierung 1 PosY
format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosZ_1]); fwrite(userdatei, eintrag); // Markierung 1 PosZ
format(eintrag, sizeof(eintrag), "%d\n\r", User[playerid][MarkInt_1]); fwrite(userdatei, eintrag); // Markierung 1 Interior
format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosX_2]); fwrite(userdatei, eintrag); // Markierung 2 PosX
format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosY_2]); fwrite(userdatei, eintrag); // Markierung 2 PosY
format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosZ_2]); fwrite(userdatei, eintrag); // Markierung 2 PosZ
format(eintrag, sizeof(eintrag), "%d\n\r", User[playerid][MarkInt_2]); fwrite(userdatei, eintrag); // Markierung 2 Interior
format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosX_3]); fwrite(userdatei, eintrag); // Markierung 3 PosX
format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosY_3]); fwrite(userdatei, eintrag); // Markierung 3 PosY
format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosZ_3]); fwrite(userdatei, eintrag); // Markierung 3 PosZ
format(eintrag, sizeof(eintrag), "%d\n\r", User[playerid][MarkInt_3]); fwrite(userdatei, eintrag); // Markierung 3 Interior
das ist der abschnitt, wie das ganze dann in den Dateien abgespeichert wird
-1985.5967
137.9961
27.6875
0
-1985.5967
137.9961
27.6875
0
-1985.5967
137.9961
27.6875
0
Alles anzeigen
So sieht das dann in der Datei aus, ich hab hier einfach mal auf alle 3 die gleichen Positionen drauf
if(strcmp(cmd, "/mark1", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
if(IsPlayerInAnyVehicle(playerid))
{
new Auto;
Auto = GetPlayerVehicleID(playerid);
GetVehiclePos(Auto, User[playerid][MarkPosX_1], User[playerid][MarkPosY_1], User[playerid][MarkPosZ_1]);
User[playerid][MarkInt_1] GetPlayerInterior(playerid);
}
else
{
GetPlayerPos(playerid, User[playerid][MarkPosX_1], User[playerid][MarkPosY_1], User[playerid][MarkPosZ_1]);
User[playerid][MarkInt_1] GetPlayerInterior(playerid);
}
SendClientMessage(playerid, GRUEN, "-| Du hast diese Position unter Markierung 1 gespeichert. |-");
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
}
else { SendClientMessage(playerid, ELSE_ROT, "Du bist kein Admin !"); }
return 1;
}
if(strcmp(cmd, "/mark2", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
if(IsPlayerInAnyVehicle(playerid))
{
new Auto;
Auto = GetPlayerVehicleID(playerid);
GetVehiclePos(Auto, User[playerid][MarkPosX_2], User[playerid][MarkPosY_2], User[playerid][MarkPosZ_2]);
User[playerid][MarkInt_2] GetPlayerInterior(playerid);
}
else
{
GetPlayerPos(playerid, User[playerid][MarkPosX_2], User[playerid][MarkPosY_2], User[playerid][MarkPosZ_2]);
User[playerid][MarkInt_2] GetPlayerInterior(playerid);
}
SendClientMessage(playerid, GRUEN, "-| Du hast diese Position unter Markierung 2 gespeichert. |-");
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
}
else { SendClientMessage(playerid, ELSE_ROT, "Du bist kein Admin !"); }
return 1;
}
if(strcmp(cmd, "/mark3", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
if(IsPlayerInAnyVehicle(playerid))
{
new Auto;
Auto = GetPlayerVehicleID(playerid);
GetVehiclePos(Auto, User[playerid][MarkPosX_3], User[playerid][MarkPosY_3], User[playerid][MarkPosZ_3]);
User[playerid][MarkInt_3] GetPlayerInterior(playerid);
}
else
{
GetPlayerPos(playerid, User[playerid][MarkPosX_3], User[playerid][MarkPosY_3], User[playerid][MarkPosZ_3]);
User[playerid][MarkInt_3] GetPlayerInterior(playerid);
}
SendClientMessage(playerid, GRUEN, "-| Du hast diese Position unter Markierung 3 gespeichert. |-");
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
}
else { SendClientMessage(playerid, ELSE_ROT, "Du bist kein Admin !"); }
return 1;
}
das sind die Befehle, mit denen dann die Positionen auf den enums abgespeichert werden
if(strcmp(cmd, "/gehzumark1", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
if(IsPlayerInAnyVehicle(playerid))
{
new Auto;
Auto = GetPlayerVehicleID(playerid);
SetVehiclePos(Auto, User[playerid][MarkPosX_1], User[playerid][MarkPosY_1], User[playerid][MarkPosZ_1]);
SetPlayerInterior(playerid, User[playerid][MarkInt_1]);
LinkVehicleToInterior(playerid, User[playerid][MarkInt_1]);
}
else
{
SetPlayerPos(playerid, User[playerid][MarkPosX_1], User[playerid][MarkPosY_1], User[playerid][MarkPosZ_1]);
SetPlayerInterior(playerid, User[playerid][MarkInt_1]);
}
SendClientMessage(playerid, GRUEN, "-| Du hast dich zu deiner Markierung 1 geportet. |-");
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
}
else { SendClientMessage(playerid, ELSE_ROT, "Du bist kein Admin !"); }
return 1;
}
if(strcmp(cmd, "/gehzumark2", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
if(IsPlayerInAnyVehicle(playerid))
{
new Auto;
Auto = GetPlayerVehicleID(playerid);
SetVehiclePos(Auto, User[playerid][MarkPosX_2], User[playerid][MarkPosY_2], User[playerid][MarkPosZ_2]);
SetPlayerInterior(playerid, User[playerid][MarkInt_2]);
LinkVehicleToInterior(playerid, User[playerid][MarkInt_2]);
}
else
{
SetPlayerPos(playerid, User[playerid][MarkPosX_2], User[playerid][MarkPosY_2], User[playerid][MarkPosZ_2]);
SetPlayerInterior(playerid, User[playerid][MarkInt_2]);
}
SendClientMessage(playerid, GRUEN, "-| Du hast dich zu deiner Markierung 1 geportet. |-");
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
}
else { SendClientMessage(playerid, ELSE_ROT, "Du bist kein Admin !"); }
return 1;
}
if(strcmp(cmd, "/gehzumark3", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
if(IsPlayerInAnyVehicle(playerid))
{
new Auto;
Auto = GetPlayerVehicleID(playerid);
SetVehiclePos(Auto, User[playerid][MarkPosX_3], User[playerid][MarkPosY_3], User[playerid][MarkPosZ_3]);
SetPlayerInterior(playerid, User[playerid][MarkInt_3]);
LinkVehicleToInterior(playerid, User[playerid][MarkInt_3]);
}
else
{
SetPlayerPos(playerid, User[playerid][MarkPosX_3], User[playerid][MarkPosY_3], User[playerid][MarkPosZ_3]);
SetPlayerInterior(playerid, User[playerid][MarkInt_3]);
}
SendClientMessage(playerid, GRUEN, "-| Du hast dich zu deiner Markierung 1 geportet. |-");
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
}
else { SendClientMessage(playerid, ELSE_ROT, "Du bist kein Admin !"); }
return 1;
}
und hier sind die Befehle, mit denen man sich dann wieder zu den Positionen porten kann
das ist das ganze System, wär cool, wenn mir das jmd so machen kann, dass das dann richtig funktioniert, würde mich freuen
solltet Ihr noch ein paar Auszüge brauchen, dann Bitte melden und sagen, was noch benötigt wird
Mit freundlichen Grüßen
Hofgreith