20.09.2014, 04:58
I need some help with this virtual when parking a vehicle, i already try do it on my own but failed,
here's the code.
please help.
here's the code.
Код:
CMD:park(playerid, params[]) { if(PlayerInfo[playerid][pVehicleKeysFrom] != INVALID_PLAYER_ID) { new ownerid = PlayerInfo[playerid][pVehicleKeysFrom]; if(IsPlayerConnected(ownerid)) { new d = PlayerInfo[playerid][pVehicleKeys]; if(IsPlayerInVehicle(playerid, PlayerVehicleInfo[ownerid][d][pvId])) { if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessageEx(playerid, COLOR_GREY, "You must be in the driver seat."); new Float:x, Float:y, Float:z, Float:angle, virtual, Float:health; GetVehicleHealth(PlayerVehicleInfo[ownerid][d][pvId], health); if(health < 800) return SendClientMessageEx(playerid, COLOR_GREY, " Your vehicle is too damaged to park it."); if(PlayerInfo[playerid][pLockCar] == GetPlayerVehicleID(playerid)) PlayerInfo[playerid][pLockCar] = INVALID_VEHICLE_ID; if(IsARC(GetPlayerVehicleID(playerid))) // RC Vehicles { new Float:vehPos[3]; GetVehiclePos(GetPlayerVehicleID(playerid),vehPos[0], vehPos[1], vehPos[2]); SetPlayerPos(playerid,vehPos[0], vehPos[1]+0.5, vehPos[2]+2.5); } GetVehiclePos(PlayerVehicleInfo[ownerid][d][pvId], x, y, z); GetVehicleZAngle(PlayerVehicleInfo[ownerid][d][pvId], angle); GetPlayerVirtualWorld(PlayerVehicleInfo[ownerid][d][pvId], virtual); SurfingCheck(GetPlayerVehicleID(playerid)); UpdatePlayerVehicleParkPosition(ownerid, d, x, y, z, angle, virtual, health); PutPlayerInVehicle(playerid, GetPlayerVehicleID(playerid), 0); SetPlayerArmedWeapon(playerid, 0); new string[29 + (MAX_PLAYER_NAME * 2)]; format(string, sizeof(string), "* %s has parked %s's vehicle.", GetPlayerNameEx(playerid), GetPlayerNameEx(ownerid)); ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); return 1; } } } for(new d = 0 ; d < MAX_PLAYERVEHICLES; d++) { if(IsPlayerInVehicle(playerid, PlayerVehicleInfo[playerid][d][pvId])) { new Float:x, Float:y, Float:z, Float:angle, virtual, Float:health; GetVehicleHealth(PlayerVehicleInfo[playerid][d][pvId], health); if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessageEx(playerid, COLOR_GREY, "You must be in the driver seat."); if(health < 800) return SendClientMessageEx(playerid, COLOR_GREY, " Your vehicle is too damaged to park it."); if(PlayerInfo[playerid][pLockCar] == GetPlayerVehicleID(playerid)) PlayerInfo[playerid][pLockCar] = INVALID_VEHICLE_ID; GetVehiclePos(PlayerVehicleInfo[playerid][d][pvId], x, y, z); GetVehicleZAngle(PlayerVehicleInfo[playerid][d][pvId], angle); GetPlayerVirtualWorld(PlayerVehicleInfo[playerid][d][pvId], virtual); SurfingCheck(GetPlayerVehicleID(playerid)); UpdatePlayerVehicleParkPosition(playerid, d, x, y, z, angle, virtual, health); PutPlayerInVehicle(playerid, PlayerVehicleInfo[playerid][d][pvId], 0); SetPlayerArmedWeapon(playerid, 0); new string[30 + (MAX_PLAYER_NAME * 2)]; format(string, sizeof(string), "* %s has parked their vehicle.", GetPlayerNameEx(playerid)); ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); return 1; } } SendClientMessageEx(playerid, COLOR_GREY, "You need to be inside a vehicle that you own."); return 1; } stock UpdatePlayerVehicleParkPosition(playerid, playervehicleid, Float:newx, Float:newy, Float:newz, Float:newangle, virtual, Float:health) { new playername[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername, sizeof(playername)); if(PlayerVehicleInfo[playerid][playervehicleid][pvId] != INVALID_PLAYER_VEHICLE_ID) { new Float:oldx, Float:oldy, Float:oldz, Float: oldfuel; oldx = PlayerVehicleInfo[playerid][playervehicleid][pvPosX]; oldy = PlayerVehicleInfo[playerid][playervehicleid][pvPosY]; oldz = PlayerVehicleInfo[playerid][playervehicleid][pvPosZ]; if(oldx == newx && oldy == newy && oldz == newz) return 0; PlayerVehicleInfo[playerid][playervehicleid][pvPosX] = newx; PlayerVehicleInfo[playerid][playervehicleid][pvPosY] = newy; PlayerVehicleInfo[playerid][playervehicleid][pvPosZ] = newz; PlayerVehicleInfo[playerid][playervehicleid][pvPosAngle] = newangle; PlayerVehicleInfo[playerid][playervehicleid][pvVirtual] = virtual; oldfuel = VehicleFuel[PlayerVehicleInfo[playerid][playervehicleid][pvId]]; VehicleFuel[PlayerVehicleInfo[playerid][playervehicleid][pvId]] = 100.0; UpdatePlayerVehicleMods(playerid, playervehicleid); DestroyVehicle(PlayerVehicleInfo[playerid][playervehicleid][pvId]); GetVehicleVirtualWorld(playerid); new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][playervehicleid][pvModelId], PlayerVehicleInfo[playerid][playervehicleid][pvPosX], PlayerVehicleInfo[playerid][playervehicleid][pvPosY], PlayerVehicleInfo[playerid][playervehicleid][pvPosZ], PlayerVehicleInfo[playerid][playervehicleid][pvPosAngle],PlayerVehicleInfo[playerid][playervehicleid][pvVirtual],PlayerVehicleInfo[playerid][playervehicleid][pvColor1], PlayerVehicleInfo[playerid][playervehicleid][pvColor2], -1); PlayerVehicleInfo[playerid][playervehicleid][pvId] = carcreated; VehicleFuel[carcreated] = oldfuel; // SetVehicleNumberPlate(carcreated, PlayerVehicleInfo[playerid][playervehicleid][pvNumberPlate]); SetVehicleHealth(carcreated, health); if(PlayerVehicleInfo[playerid][playervehicleid][pvLocked] == 1) LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][playervehicleid][pvId], PlayerVehicleInfo[playerid][playervehicleid][pvLock]); LoadPlayerVehicleMods(playerid, playervehicleid); return 1; } return 0; }