#include enum savePosData { bool:s_check, // zmienna sprawdzajaca czy jakakolwiek pozycja zostala zapisana s_vid, // id pojazdu Float:s_x, // pozycja na osi X Float:s_y, // pozycja na osi Y Float:s_z, // pozycja na osi Z Float:s_a, // obrot s_v, // numer wirtualnego swiata (virtual world) s_i // numer 'wymiaru' (interior) } new savedPositions[MAX_PLAYERS][savePosData]; public OnPlayerConnect(playerid) { savedPositions[playerid][s_check] = false; return 1; } public OnPlayerCommandText(playerid,cmdtext[]) { if(!strcmp(cmdtext,"/s",true)) { GetPlayerPos(playerid,savedPositions[playerid][s_x],savedPositions[playerid][s_y],savedPositions[playerid][s_z]); savedPositions[playerid][s_v] = GetPlayerVirtualWorld(playerid); savedPositions[playerid][s_i] = GetPlayerInterior(playerid); savedPositions[playerid][s_vid] = GetPlayerState(playerid) == PLAYER_STATE_DRIVER ? GetPlayerVehicleID(playerid) : -1; if(savedPositions[playerid][s_vid] != -1) GetVehicleZAngle(savedPositions[playerid][s_vid],savedPositions[playerid][s_a]); else GetPlayerFacingAngle(playerid,savedPositions[playerid][s_a]); savedPositions[playerid][s_check] = true; SendClientMessage(playerid,0x008000FF,"Zapisales pozycje! Wpisz /l aby ja wczytac!"); return 1; } if(!strcmp(cmdtext,"/l",true)) { new p_vehicle, p_driver; if(!savedPositions[playerid][s_check]) { SendClientMessage(playerid,0xFF0000FF,"Nie zapisales jeszcze pozycji! Wpisz /s aby ja zapisac"); return 1; } p_driver = GetPlayerState(playerid) == PLAYER_STATE_DRIVER; p_vehicle = p_driver ? GetPlayerVehicleID(playerid) : private_IsVehicleInUse(savedPositions[playerid][s_vid]); SetPlayerInterior(playerid,savedPositions[playerid][s_i]); SetPlayerVirtualWorld(playerid,savedPositions[playerid][s_v]); if(p_vehicle != -1) { SetVehicleVirtualWorld(p_vehicle,savedPositions[playerid][s_v]); LinkVehicleToInterior(p_vehicle,savedPositions[playerid][s_i]); SetVehiclePos(p_vehicle,savedPositions[playerid][s_x],savedPositions[playerid][s_y],savedPositions[playerid][s_z]); SetVehicleZAngle(p_vehicle,savedPositions[playerid][s_a]); if(!p_driver) PutPlayerInVehicle(playerid,p_vehicle,0); } else { SetPlayerPos(playerid,savedPositions[playerid][s_x],savedPositions[playerid][s_y],savedPositions[playerid][s_z]); SetPlayerFacingAngle(playerid,savedPositions[playerid][s_a]); } SetCameraBehindPlayer(playerid); SendClientMessage(playerid,0x008000FF,"Wczytales zapisana pozycje!"); return 1; } return 0; } stock private_IsVehicleInUse(vehicleid) { if(vehicleid == -1 || !GetVehicleModel(vehicleid)) return -1; for(new i; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && IsPlayerInVehicle(i,vehicleid)) return -1; return vehicleid; }