Quote:
Originally Posted by stabker
Вот так нужно:
pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate) { if(newstate == PLAYER_STATE_PASSENGER || newstate == PLAYER_STATE_DRIVER) { Seat_in_Vehicle[GetPlayerVehicleID(playerid)-1] [GetPlayerVehicleSeat(playerid)] = playerid; SetPVarInt(playerid, "InVehicle", GetPlayerVehicleID(playerid)), SetPVarInt(playerid, "VehSeat", GetPlayerVehicleSeat(playerid)); } else if(oldstate == PLAYER_STATE_PASSENGER || oldstate == PLAYER_STATE_DRIVER) { Seat_in_Vehicle[GetPVarInt(playerid, "InVehicle")-1][GetPVarInt(playerid, "VehSeat")] = INVALID_PLAYER_ID; DeletePVar(playerid, "InVehicle"), DeletePVar(playerid, "VehSeat"); } return 1; }
public OnPlayerDisconnect(playerid, reason) { if(GetPVarInt(playerid, "InVehicle")) Seat_in_Vehicle[GetPVarInt(playerid, "InVehicle")-1][GetPVarInt(playerid, "VehSeat")] = INVALID_PLAYER_ID; }

|
Quote:
Originally Posted by eakwarp
Пвары медленнее переменных, и предназначены для серверов остро обделенных оперативной памятью. Так что не комильфо.
|
Это всё не так уж и страшно... Время в основном занимает выделение памяти. Так что в его примере DeletePVar это действительно УГ, т.к. каждый раз SetPVarInt(playerid, "InVehicle", GetPlayerVehicleID(playerid)) будет выделять память, что не есть хорошо... а так сойдёт.
И вообще правильней было бы называть
LastVehID,
LastSeatID и т.д. И ещё, разве при дисконекте не вызывается OnPlayerStateChange ?