Zeig mal bitte den "IsPlayerAtAnyCar" Stock.
/lock wenn der Spieler in der Nähe ist
- Andre_R
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
siehe ElDiablo
stock isPlayerAtAnyCar(playerid,Float:radius)
{
new Float:vx,Float:vy,Float:vz;
for(new v = 0; v <= MAX_VEHICLES; v++)
{
GetVehiclePos(v,vx,vy,vz);
if(IsPlayerInRangeOfPoint(playerid,radius,vx,vy,vz)) return 1;
}
return 0;
} -
//Edit
Fail falsch verstanden
-
Hat sonst jemand ne Idee?
-
Yop
Den Stock bitte so übernehmen
stock GetNearestCarAtPlayer(playerid,Float:radius)
{
new Float:vx,Float:vy,Float:vz;
for(new v = 0; v <= MAX_VEHICLES; v++)
{
GetVehiclePos(v,vx,vy,vz);
if(IsPlayerInRangeOfPoint(playerid,radius,vx,vy,vz)) return v;
}
return 0;
}Und dann halt so machen:
ocmd:lock(playerid,params[])
{
new vehicleid = GetNearestCarAtPlayer(playerid,1);
if(vehicleid != -1)
{
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
if(Schloss[vehicleid] == 0)
{
SetVehicleParamsEx(vehicleid,engine,lights,alarm,1,bonnet,boot,objective);
Schloss[vehicleid] = 1;
SendClientMessage(playerid,dchat,"[Auto abgeschlossen!]");
}
else
{
SetVehicleParamsEx(vehicleid,engine,lights,alarm,0,bonnet,boot,objective);
Schloss[vehicleid] = 0;
SendClientMessage(playerid,gruen3,"[Auto aufgeschlossen!]");
}
}
else
{
SendClientMessage(playerid,hörst,"Du bist in keinem Fahrzeug!");
}
return 1;
} -
Danke, Klappt.
Nur wie kann ich es machen, das es nur kommt wenn man auch in der Näche ist?
Muss ich da was im Stock ändern?
Denn es kommt nicht:else
{
SendClientMessage(playerid,hörst,"Du bist in keinem Fahrzeug!");
} -
Versuch mal so:
ocmd:lock(playerid,params[])
{
new vehicleid = GetNearestCarAtPlayer(playerid,1);
if(vehicleid == -1) return SendClientMessage(playerid,hörst,"Du bist an keinem Fahrzeug!");
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
if(Schloss[vehicleid] == 0)
{
SetVehicleParamsEx(vehicleid,engine,lights,alarm,1,bonnet,boot,objective);
Schloss[vehicleid] = 1;
SendClientMessage(playerid,dchat,"[Auto abgeschlossen!]");
return 1;
}
else
{
SetVehicleParamsEx(vehicleid,engine,lights,alarm,0,bonnet,boot,objective);
Schloss[vehicleid] = 0;
SendClientMessage(playerid,gruen3,"[Auto aufgeschlossen!]");
return 1;
}
return 1;
} -
Leider immer noch nicht und kommt ein Warn:
warning 225: unreachable code
-
Das letze return einfach raus
-
Stimmt, Danke
Aber immernoch das Problem:
SendClientMessage(playerid,hörst,"Du bist an keinem Fahrzeug!");
es kommt nicht, wenn man nicht in der nähe eines Vehicles ist.
-
stock GetNearestCarAtPlayer(playerid,Float:radius)
{
new Float:vx,Float:vy,Float:vz;
for(new v = 0; v <= MAX_VEHICLES; v++)
{
GetVehiclePos(v,vx,vy,vz);
if(IsPlayerInRangeOfPoint(playerid,radius,vx,vy,vz)) return v;
}
return -1;
} -
BlackAce hat mir gesagt, Fahrzeuge starten erst bei ID 1
//EDIT: Post 777 Yaaay
ZitatReturns ID of the vehicle or 0 if not in a vehicle
-
Die Abfrage würde trotzdem niemals wahr werden weil nie -1 returnt wird
if(vehicleid == -1) return SendClientMessage(playerid,hörst,"Du bist an keinem Fahrzeug!"); -
Danke, Klappt InternetInk aka Benjamin und Deadmau5
stock GetNearestCarAtPlayer(playerid,Float:radius)
{
new Float:vx,Float:vy,Float:vz;
for(new v = 0; v <= MAX_VEHICLES; v++)
{
GetVehiclePos(v,vx,vy,vz);
if(IsPlayerInRangeOfPoint(playerid,radius,vx,vy,vz)) return v;
}
return -1;
}ocmd:lock(playerid,params[])
{
new vehicleid = GetNearestCarAtPlayer(playerid,2.5);
if(vehicleid == -1)return SendClientMessage(playerid,hörst,"Du bist an keinem Fahrzeug!");new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
if(Schloss[vehicleid] == 0)
{
SetVehicleParamsEx(vehicleid,engine,lights,alarm,1,bonnet,boot,objective);
Schloss[vehicleid] = 1;
SendClientMessage(playerid,dchat,"[Auto abgeschlossen!]");
return 1;
}
else
{
SetVehicleParamsEx(vehicleid,engine,lights,alarm,0,bonnet,boot,objective);
Schloss[vehicleid] = 0;
SendClientMessage(playerid,gruen3,"[Auto aufgeschlossen!]");
return 1;
}
} -
Hast du es auch schon mit mehreren Fahrzeugen versucht?
-
Hast du es auch schon mit mehreren Fahrzeugen versucht?Jo, mit 6 PD-Cars
-
stock GetNearestCarAtPlayer(playerid,Float:radius)
{
new Float:vx,Float:vy,Float:vz;
for(new v = 0; v <= MAX_VEHICLES; v++)
{
GetVehiclePos(v,vx,vy,vz);
if(IsPlayerInRangeOfPoint(playerid,radius,vx,vy,vz)) return v;
}
return -1;
}
die Funktion gibt dir aber das erst beste Fahrzeug aus, das im gewünschten Radius steht.
Wenn du jetzt z.b. 3 Fahrzeuge hast (id 1, 2 und 3), die nebeneinander stehen und der Radius 5.0 ist,
dann wird das erste Fahrzeug, das neben dir steht (in diesem Fall: id 1) erkannt, auch wenn Fahrzeug 2 und 3 einen geringeren Abstand zu dir haben.stock GetNearestCar(playerid,Float:max = 3.0)
{
new Float:pos[3], id = -1, Float:temp;
for(new v = 0; v <= MAX_VEHICLES; v++)
{
GetVehiclePos(v,pos[0],pos[1],pos[2]);
temp = GetPlayerDistanceFromPoint(playerid,pos[0],pos[1],pos[2]);
if(temp < max)
{
max = temp;
id = v;
}
}
return id;
}
diese Funktion macht fast das gleiche, nur dass du die ID vom nächsten Fahrzeug bekommst. -
Nice, geht.
-
Haxler könntest du bitte genauer erklären was die einzelnen Sachen bei dem Stock bewirken?
Würde das nämlich gerne verstehen können und nicht nur kopieren.. -
breadfish.de
Hat das Thema geschlossen.