Servus liebe Community ,
ist es möglich das ich abfragen kann ob der Spieler in der nähe von diesem Objekt ist ohne das ich eine Abfrage erstellt habe wo das Objekt ist?
Bedeutet beispiel
if(IsPlayerInRageOfObject(playerid, 3.0 , OBJEKT ID))return SendClientMessage(playerid,BLAU,"BLABLABLA");
Ist Spieler in der nähe vom Object
- iTsTiMe
- 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
-
-
Ist das Object denn dynamisch oder gibt es das des öfteren?
-
ocmd:test
{
CreateDynamicObject(blablablabla);
}
Es wird wie da oben gesehn das Object mit Command erstellt aber dieser Command wird mehrfach genutzt -
IsPlayerInRangeOfPoint(playerid,&Float:Range ,&Float:X, &Float:Y, &Float:Z) ??
-
IsPlayerInRangeOfPoint(playerid,&Float:Range ,&Float:X, &Float:Y, &Float:Z) ??
Das Objekt wird aber da gesetzt wo der spieler steht und nicht an einem bestimmten punkt
-
Hier
stock IsPlayerInRageOfObject(playerid, Float:Range, Objectid) {
new Float:pos[3];
GetObjectPos(Objectid,pos[0],pos[1],pos[2]);
if(IsPlayerInRangeOfPoint(playerid,Range,pos[0],pos[1],pos[2]))return 1;
return 0;
}Bei dynamischen Objecten:
stock IsPlayerInRageOfDynamicObject(playerid, Float:Range, Objectid) {
new Float:pos[3];
GetDynamicObjectPos(Objectid,pos[0],pos[1],pos[2]);
if(IsPlayerInRangeOfPoint(playerid,Range,pos[0],pos[1],pos[2]))return 1;
return 0;
} -
Hier
stock IsPlayerInRageOfObject(playerid, Float:Range, Objectid) {
new Float:pos[3];
GetObjectPos(Objectid,pos[0],pos[1],pos[2]);
if(IsPlayerInRangeOfPoint(playerid,Range,pos[0],pos[1],pos[2]))return 1;
return 0;
}Bei dynamischen Objecten:
stock IsPlayerInRageOfDynamicObject(playerid, Float:Range, Objectid) {
new Float:pos[3];
GetDynamicObjectPos(Objectid,pos[0],pos[1],pos[2]);
if(IsPlayerInRangeOfPoint(playerid,Range,pos[0],pos[1],pos[2]))return 1;
return 0;
}
bringt nichts -
Poste bitte den Code wie du das Objekt an dem der Spieler sein muss erstellst, und den Code mit dem du abfragst, ob der Spieler in der Nähe diese Objekts ist.
-
Poste bitte den Code wie du das Objekt an dem der Spieler sein muss erstellst, und den Code mit dem du abfragst, ob der Spieler in der Nähe diese Objekts ist.
new Float:px,Float:py,Float:pz,Float:pr;
GetPlayerPos(playerid,Float:px,Float:py,Float:pz);
GetPlayerFacingAngle(playerid,Float:pr);
CreateDynamicObject(19491, px, py, pz+4, 0.00000, 0.00000, 0.00000); //Die Koordinaten unten abziehen:
CreateDynamicObject(19492, px+129.56802-129.56030, py+1723.08643-1723.13037, pz+21.44730-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(3260, px+136.00462-129.56030, py+1725.62195-1723.13037, pz+18.26360-21.44730+4, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(3260, px+136.01131-129.56030, py+1723.18750-1723.13037, pz+18.26360-21.44730+4, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(3260, px+136.00462-129.56030, py+1725.62195-1723.13037, pz+20.96095-21.44730+4, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(3260, px+136.00084-129.56030, py+1721.78296-1723.13037, pz+20.96095-21.44730+4, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(3260, px+123.53154-129.56030, py+1722.59692-1723.13037, pz+20.96100-21.44730+4, 0.00000, 90.00000, 270.00000);
CreateDynamicObject(3260, px+123.50445-129.56030, py+1726.76599-1723.13037, pz+20.96100-21.44730+4, 0.00000, 90.00000, 270.00000);
CreateDynamicObject(3260, px+123.53154-129.56030, py+1722.59692-1723.13037, pz+18.28495-21.44730+4, 0.00000, 90.00000, 270.00000);
CreateDynamicObject(1491, px+126.35200-129.56030, py+1726.66760-1723.13037, pz+16.63670-21.44730+4, 0.00000, 0.00000, 270.00000);
CreateDynamicObject(1491, px+135.97960-129.56030, py+1722.02246-1723.13037, pz+16.73670-21.44730+4, 0.00000, 0.00000, 270.00000);
CreateDynamicObject(1491, px+129.86740-129.56030, py+1719.71375-1723.13037, pz+19.31300-21.44730+4, 0.00000, 0.00000, 270.00000);
CreateDynamicObject(3383, px+131.66316-129.56030, py+1719.25476-1723.13037, pz+16.63670-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(2708, px+127.51160-129.56030, py+1720.57312-1723.13037, pz+16.60390-21.44730+4, 0.00000, 0.00000, 180.00000);
CreateDynamicObject(2891, px+132.58389-129.56030, py+1719.28540-1723.13037, pz+17.65080-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(1279, px+130.66920-129.56030, py+1719.39136-1723.13037, pz+17.65100-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(1252, px+131.66341-129.56030, py+1719.73438-1723.13037, pz+17.77100-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(3057, px+124.00320-129.56030, py+1721.12073-1723.13037, pz+16.95760-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(3057, px+124.81224-129.56030, py+1721.10596-1723.13037, pz+16.95760-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(3057, px+124.01508-129.56030, py+1722.17017-1723.13037, pz+16.95760-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(3057, px+124.80905-129.56030, py+1722.16809-1723.13037, pz+16.95760-21.44730+4, 0.00000, 0.00000, 0.00000);
Bisjetzt hab ich keine abfrage ob der spieler in der nähe ist vom Objekt -
Willst du wissen ob er genau zu einem bestimmten Objekt nahe genug ist oder willst du das nächste ungewiss welches das jetzt ist?
-
-
Willst du wissen ob er genau zu einem bestimmten Objekt nahe genug ist oder willst du das nächste ungewiss welches das jetzt ist?
Also ich will wissen ob er zu einem gewissen Objekt in der nähe ist das es aber mehrfach auf dem Server gibt wo man es auch unten sieht.
Ich will also abfragen ob er irgendwo in der range von 2.0 ein Objekt mit der bestimmten id ist. -
Wie erstellst du diese Objekte, denen du nahe sein willst, denn? Poste den Teil mal.
-
Wie erstellst du diese Objekte, denen du nahe sein willst, denn? Poste den Teil mal.
Also das wird alles per Command gebautBeispiel
ocmd:bauen(playerid,params[])
{
new Float:px,Float:py,Float:pz,Float:pr;
GetPlayerPos(playerid,Float:px,Float:py,Float:pz);
GetPlayerFacingAngle(playerid,Float:pr);
CreateDynamicObject(19491, px, py, pz+4, 0.00000, 0.00000, 0.00000); //Die Koordinaten unten abziehen:
CreateDynamicObject(19492, px+129.56802-129.56030, py+1723.08643-1723.13037, pz+21.44730-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(3260, px+136.00462-129.56030, py+1725.62195-1723.13037, pz+18.26360-21.44730+4, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(3260, px+136.01131-129.56030, py+1723.18750-1723.13037, pz+18.26360-21.44730+4, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(3260, px+136.00462-129.56030, py+1725.62195-1723.13037, pz+20.96095-21.44730+4, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(3260, px+136.00084-129.56030, py+1721.78296-1723.13037, pz+20.96095-21.44730+4, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(3260, px+123.53154-129.56030, py+1722.59692-1723.13037, pz+20.96100-21.44730+4, 0.00000, 90.00000, 270.00000);
CreateDynamicObject(3260, px+123.50445-129.56030, py+1726.76599-1723.13037, pz+20.96100-21.44730+4, 0.00000, 90.00000, 270.00000);
CreateDynamicObject(3260, px+123.53154-129.56030, py+1722.59692-1723.13037, pz+18.28495-21.44730+4, 0.00000, 90.00000, 270.00000);
CreateDynamicObject(1491, px+126.35200-129.56030, py+1726.66760-1723.13037, pz+16.63670-21.44730+4, 0.00000, 0.00000, 270.00000);
CreateDynamicObject(1491, px+135.97960-129.56030, py+1722.02246-1723.13037, pz+16.73670-21.44730+4, 0.00000, 0.00000, 270.00000);
CreateDynamicObject(1491, px+129.86740-129.56030, py+1719.71375-1723.13037, pz+19.31300-21.44730+4, 0.00000, 0.00000, 270.00000);
CreateDynamicObject(3383, px+131.66316-129.56030, py+1719.25476-1723.13037, pz+16.63670-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(2708, px+127.51160-129.56030, py+1720.57312-1723.13037, pz+16.60390-21.44730+4, 0.00000, 0.00000, 180.00000);
CreateDynamicObject(2891, px+132.58389-129.56030, py+1719.28540-1723.13037, pz+17.65080-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(1279, px+130.66920-129.56030, py+1719.39136-1723.13037, pz+17.65100-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(1252, px+131.66341-129.56030, py+1719.73438-1723.13037, pz+17.77100-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(3057, px+124.00320-129.56030, py+1721.12073-1723.13037, pz+16.95760-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(3057, px+124.81224-129.56030, py+1721.10596-1723.13037, pz+16.95760-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(3057, px+124.01508-129.56030, py+1722.17017-1723.13037, pz+16.95760-21.44730+4, 0.00000, 0.00000, 0.00000);
CreateDynamicObject(3057, px+124.80905-129.56030, py+1722.16809-1723.13037, pz+16.95760-21.44730+4, 0.00000, 0.00000, 0.00000);
} -
Das ist mir schon klar. Aber du willst doch in der Nähe von bestimmten Objekten sein. Welche Objekte? Und wie erstellst du diese?
-
Ich glaube wir drehen uns gerade im Kreis^^
Du erstellst zwar die Objekte müsstest sie aber eingrenzen da du ja sicher noch andere Objekte hast also würde ich sie in ein Array packen, dort musst du dir natürlich im Klaren sein wieviele es maximal gleichzeitig geben wird.
dann erstellst du dein Objekt und returnst es in eine Variable damit du die Objekt ID in der Variable hast.Dann beim nachsehen ob der spieler in der nähe ist gehst du das Array in einer schleife durch und schaust mittels GetObjectPos und der ID die gerade in der Schleife durchläuft ob der Spieler die ähnlichen Koordinaten hat.
Ich nehme mal an du löscht die Objekte auch irgendwann mal wieder also brauchst du sowieso die Variable in der das Objekt gespeichert ist.
-
Du musst auch die Objectid speichern?
-
Du musst auch die Objectid speichern?
Nico ganz ehrlich deine unnötigen Kommentare die keinen helfen kannst du bei dir lassen. -
Nico ganz ehrlich deine unnötigen Kommentare die keinen helfen kannst du bei dir lassen.
Was ist daran unnötig,? Ich versuche hier zu helfen, anstatt hier ein doof anzumaulen denkst du ersteinmal nach was ich hier meinenew objid = CreateDynamicObject(19491, px, py, pz+4, 0.00000, 0.00000, 0.00000); //Die Koordinaten unten abziehen:
So und nun kannst du auch abfragen ob du in der Nähe des Objektes bist
new Float:Pos[3];
GetObjectPos(objid,Pos[0],Pos[1],Pos[2]);
if(IsPlayerInRangeOfPoint(playerid,2.0,Pos[0],Pos[1],Pos[2])) {
//ja
}So, und wenn du mal etwas nachdeenken würdest weisst du siche, wie man das alles in ein Enum speichert
Und nun denk mal nach bevor du hier Leuten die helfen wollen anmaulst, ich glaub es hackt! -
Falls du es nicht getan hast, solltest du zum einen die Position des Spielers (GetPlayerPos) abfragen und die des Objekts (GetObjektPos). Und dann eben die Position von Spieler und Objekt ermitteln bzw. schauen, ob der Spieler sich in der Nähe der besagten Objekte befindet. So hab ich es gemacht und so hat's geklappt. Bin hier leider noch ziemlich Neu im Forum.
-
Was ist daran unnötig,? Ich versuche hier zu helfen, anstatt hier ein doof anzumaulen denkst du ersteinmal nach was ich hier meinenew objid = CreateDynamicObject(19491, px, py, pz+4, 0.00000, 0.00000, 0.00000); //Die Koordinaten unten abziehen:
So und nun kannst du auch abfragen ob du in der Nähe des Objektes bist
new Float:Pos[3];
GetObjectPos(objid,Pos[0],Pos[1],Pos[2]);
if(IsPlayerInRangeOfPoint(playerid,2.0,Pos[0],Pos[1],Pos[2])) {
//ja
}So, und wenn du mal etwas nachdeenken würdest weisst du siche, wie man das alles in ein Enum speichert
Und nun denk mal nach bevor du hier Leuten die helfen wollen anmaulst, ich glaub es hackt!
Jaa komm wenn die Leute was Posten und du dannach das Kopierst oder dss gleiche in anderen Themen so unnötigSpoiler anzeigen Hat sich erledigt -