//you should understand later why i define this: #define X 0 #define Y 1 #define Z 2 //We will now create an enumeration : enum PLAYER_INFOS { bool:Logged, ClassID, SkinID, Float:Spawn_Pos[3] } new PlayerInfo[MAX_PLAYERS][PLAYER_INFOS]; // When the player choose a class, store his skin in the player info 'SkinID' and store his class in 'ClassID': public OnPlayerRequestClass(playerid, classid) { PlayerInfo[playerid][ClassID] = classid; switch (classid) { case 0: PlayerInfo[playerid][SkinID] = 1; case 1: PlayerInfo[playerid][SkinID] = 2; case 2: PlayerInfo[playerid][SkinID] = 49; } PlayerInfo[playerid][Spawn_Pos][X] = 719.9640; PlayerInfo[playerid][Spawn_Pos][Y] = -1447.8557; PlayerInfo[playerid][Spawn_Pos][Z] = 17.6953; } //When the player exit the game, you call SaveData(playerid); : SaveData(playerid) { if (dini_Exists(FileName(playerid))) { dini_IntSet(FileName(playerid),"skinid",PlayerInfo[playerid][SkinID]); dini_IntSet(FileName(playerid),"classid",PlayerInfo[playerid][ClassID]); dini_FloatSet(FileName(playerid),"spawn_x",PlayerInfo[playerid][Spawn_Pos][X]); dini_FloatSet(FileName(playerid),"spawn_y",PlayerInfo[playerid][Spawn_Pos][Y]); dini_FloatSet(FileName(playerid),"spawn_z",PlayerInfo[playerid][Spawn_Pos][Z]); } return 1; } //And when the player login, you call LoadData(playerid); : LoadData(playerid) { if (dini_Exists(FileName(playerid))) { PlayerInfo[playerid][SkinID] = dini_Int(FileName(playerid),"skinid"); PlayerInfo[playerid][ClassID] = dini_Int(FileName(playerid),"classid"); PlayerInfo[playerid][Spawn_Pos][X] = dini_Float(FileName(playerid),"spawn_x"); PlayerInfo[playerid][Spawn_Pos][Y] = dini_Float(FileName(playerid),"spawn_y"); PlayerInfo[playerid][Spawn_Pos][Z] = dini_Float(FileName(playerid),"spawn_z"); } return 1; } // So now you can set the player pos and skin if he's logged, when he spawn : public OnPlayerSpawn(playerid) { if (PlayerInfo[playerid][Logged]) { SetPlayerSkin(playerid,PlayerInfo[playerid][SkinID]); SetPlayerPos(playerid, PlayerInfo[playerid][Spawn_Pos][X], PlayerInfo[playerid][Spawn_Pos][Y], PlayerInfo[playerid][Spawn_Pos][Z]); } } // We call SaveData in OnlayerDisconnect : public OnPlayerDisconnect(playerid) { if(PlayerInfo[playerid][Logged]) SaveData(playerid); }