Nem.
new savePname[MAX_PLAYERS][MAX_PLAYER_NAME], namecount = 0;new Float:savePpos[MAX_PLAYERS][4];
OnPlayerDisconek alápublic OnPlayerDisconnect(playerid, reason){ new playername[MAX_PLAYER_NAME]; // ide lementjük a játékos nevét GetPlayerName(playerid, playername, MAX_PLAYER_NAME); // ezzel new bool:megvolt = false; // ezzel a logikai változóval azt nézzük meg, hogy a játékosnak lementettük-e már a pozícióját for(new i = 0; i <= namecount; i++) // végignézzük a savePname tömböt, hogy lementettük-e már a játékos nevét. Végigmegyünk az elejétõl a namecount-ig azaz addig ahány játékos lépett már le a szerverrõl { if(!strcmp(savePname, playername)) // összehasonlítjuk az elmentett nevet a játékos nevével { // ha egyezik akkor... (Amit keresünk azt az i. rekeszben találtuk meg) GetPlayerPos(playerid, savePpos[0], savePpos[1], savePpos[2]); // lementjük a koordinátákat GetPlayerFacingAngle(playerid, savePpos[3]); // és az elfordulást megvolt = true; // és csak meg lett a játékos, szóval igazat adunk a megvoltnak! break; // leállítjuk a ciklust, mert megtaláltuk azt, amit akarunk } } if(!megvolt) // no de mi van akkor ha még sem volt meg? { savePname[namecount] = playername; // akkor egy új helyre lementjük a játékos nevét (a namecount jelzi az új helyet is) GetPlayerPos(playerid, savePpos[namecount][0], savePpos[namecount][1], savePpos[namecount][2]); // a pozícióit GetPlayerFacingAngle(playerid, savePpos[namecount][3]); // az elfordulást namecount++; // és növeljük a lementett játékosok számát } return 1;}
public OnPlayerSpawn(playerid){ new playername[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername, MAX_PLAYER_NAME); for(new i = 0; i <= namecount; i++) { if(!strcmp(savePname, playername)) { SetPlayerPos(playerid, savePpos[0], savePpos[1], savePpos[2]); SetPlayerFacingAngle(playerid, savePpos[3]); } } return 1;}
new Float:x[MAX_PLAYERS],Float:y[MAX_PLAYERS],Float:z[MAX_PLAYERS];enum pInfo{pPozicio,}public OnPlayerDisconnect(playerid, reason){ dini_IntSet(file,\"Pozicio\",GetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]));}//register parancs alá dini_IntSet(file,\"Pozicio\",GetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]));//login parancs alá SetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]);
Igen a bool több memóriát vesz igénybe (Gondolom)De a Dini össze keveri a koordinátákat itt.Nekem ezért volt a bajom vele.TErmészetesen nem mindig de felálhat ez a hiba
Tessék. new Float:x[MAX_PLAYERS],Float:y[MAX_PLAYERS],Float:z[MAX_PLAYERS];enum pInfo{pPozicio,}public OnPlayerDisconnect(playerid, reason){ dini_IntSet(file,\"Pozicio\",GetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]));}//register parancs alá dini_IntSet(file,\"Pozicio\",GetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]));//login parancs alá SetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]);
//betöltésnélnew Float:X,Float:Y,Float:Z,Float:A,file[100];if(fexist(file)) { format(file, sizeof(file), \"ladmin/users/%s.sav\", PlayerName(playerid)); sscanf(dini_Get(file, \"Position\"), \"p<,>ffff\", X, Y, Z, A);SetPlayerPos(playerid, X, Y, Z);SetPlayerFacingAngle(playerid, A);}//public OnPlayerDisconnect(playerid, reason) {new Float:Pos[4], string[128], file[100];if(!IsPlayerInAnyVehicle(playerid)) {GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);GetPlayerFacingAngle(playerid, Pos[3]);} else { GetVehiclePos(GetPlayerVehicleID(playerid), Pos[0], Pos[1], Pos[2]);GetVehicleZAngle(GetPlayerVehicleID(playerid), Pos[3]);}format(string, sizeof(string), \"%.4f,%.4f,%.4f,%.4f\", Pos[0], Pos[1], Pos[2], Pos[3]);format(file, sizeof(file), \"ladmin/users/%s.sav\", PlayerName(playerid));if(fexist(file)) dini_Set(file, \"Position\", string);return 1;}stock PlayerName(playerid) {new name[MAX_PLAYER_NAME];GetPlayerName(playerid, name, sizeof(name));return name;}