@Jeffry
Nee tatsächlich nicht da die privaten fahrzeuge durchgegangen werden vom spieler :). Zu dem wurde Getnearestvehicle von mir entfernt da die Funktion, auf die ich verlinkt hab die position auch prüft ^^.
Hier nochmal im Quellcode-tag , war davor nur am Handy online
for(new slot = 0;slot < MAX_PLAYER_VEHICLES; slot++)
{
if(IsValidVehicle(PrivateVehicle[playerid][slot][vehID])) // nur die Fahrzeuge des Spielers werden durch iteriert
{
if(IsPlayerBehindVehicle(playerid,PrivateVehicle[playerid][slot][vehID])){ // Überprüfung ob der Spieler am Kofferraum steht
ShowPlayerDialog(playerid, DIALOG_TRUNK, DIALOG_STYLE_LIST, "Kofferraum", "Gegenstände einlagern\nGegenstände auslagern\nKofferraum Inhalt überprüfen", "Auswählen", "Schließen");
SetVehicleParamsEx(PrivateVehicle[playerid][slot][vehID],engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_ON,objective);
return SendClientMessage(playerid, -1, "Privatcar"); // Falls dies zutrifft schleife wird abgebrochen nachfolgender Code wird nicht mehr ausgeführt
}
}
}
return SendClientMessage(playerid, COLOR_GREY, "Du befindest dich nicht am Kofferraum des Fahrzeuges.");
stock IsPlayerBehindVehicle(playerid,veh)
{
new Float:vcoord[3]; GetVehiclePos(veh,vcoord[0],vcoord[1],vcoord[2]);
new Float:vangle; GetVehicleZAngle(veh,vangle);
new Float:vinfo[3]; GetVehicleModelInfo(GetVehicleModel(veh),VEHICLE_MODEL_INFO_SIZE,vinfo[0],vinfo[1],vinfo[2]);
new Float:lenge = floatdiv(vinfo[1],2.0);
new Float:radius = floatdiv(vinfo[0],2.0);
vcoord[0] = floatadd(vcoord[0],(-lenge * floatsin(-vangle,degrees)));
vcoord[1] = floatadd(vcoord[1],(-lenge * floatcos(-vangle,degrees)));
if(IsPlayerInRangeOfPoint(playerid,radius,vcoord[0],vcoord[1],vcoord[2])) return 1;
else return 0;
}
Alles anzeigen