Guten Morgen, ich brauche mal bitte eure hilfe. Weil ich eine Abfrage für meinen /cuff befehl brauche, aber ich weiß nicht genau wie die geht. Die Abfrage soll dafür dasein das Cops einen Spieler nur Handschellen anlegen können, wen die Spieler vor ihnen stehen. Ich hoffe mir kann jemand helfen.
Abfrage ob der Spieler vor einem steht
- Mister.Anonym
- 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
-
-
Abfragen ob der Spieler IsPlayerInRangeOfPoint von http://forum.sa-mp.de/gta-mult…eschnipsel-56#post1890617 ist.
Also GetPosVorSpieler von dem der den Befehl eingibt, und dann fragen ob der andere Spieler IsPlayerInRangeOfPoint von den zurückgegebenen Koordinaten ist.
-
Danke. Ich habe es mal so eingefügt. Leider kann ich es nicht testen weil ich noch einen zweiten Spieler brauche.
Das habe ich in den Cuff befehl reingemacht.
if(GetPosVorSpieler(pID, 1.0, x, y, z))return SendClientMessage(playerid,GRAU,"Der Spieler steht nicht vor dir!");
SetPlayerPos(playerid, x, y, z);Den Stock habe ich ganz unten im Script reingemacht.
stock GetPosVorSpieler(playerid, Float:dist, &Float:x, &Float:y, &Float:z)
{
if(IsPlayerConnected(playerid))
{
new Float:a;
if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
else GetPlayerFacingAngle(playerid, a);
GetPlayerPos(playerid, x, y, z);
x += (dist * floatsin(-a, degrees));
y += (dist * floatcos(-a, degrees));
return true;
}
return false;
}Ich wollte dich fragen ob das so Richtig ist?
-
Nein.
GetPosVorSpieler(playerid, 1.0, x, y, z);
if(IsPlayerInRangeOfPoint(pID, 1.0, x, y, z))
{
//passt
}Wir fragen erst nach der Position von dem Spieler der den Befehl eingibt und fragen dann ob der andere Spieler im Bereich vor dem Spieler ist, der den Befehl eingegeben hat.
-
Aso ok. Das mache ich dann wieder unter den Cuff befehl aber meinst du mit Passt das da nix hin muss?
-
Bei passt muss das Zeugs hin mit dem du die Handschellen anlegst.
Oder du machst es so:
GetPosVorSpieler(playerid, 1.0, x, y, z);
if(!IsPlayerInRangeOfPoint(pID, 1.0, x, y, z)) return SendClientMessage(playerid, rot, "Spieler nicht vor dir.");
//cuff Zeug hier -
Aso ja danke. Da habe ich mich jetzt Doom angestellt.
Ich habe es jetzt so gemacht.
GetPosVorSpieler(playerid, 1.0, x, y, z);
if(!IsPlayerInRangeOfPoint(pID, 1.0, x, y, z))return SendClientMessage(playerid,GRAU,"Der Spieler ist nicht vor dir.")
{
new pID,string[128];
new Float:x, Float:y, Float:z;
if(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,GRAU,"Im Fahrzeug nicht möglich.");
if(sscanf(params,"u",pID))return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /cuff [playerid/Name]");
if(pID == playerid)return SendClientMessage(playerid,GRAU,"Du kannst dich nicht fesseln!");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,GRAU,"Der angegebene Spieler ist nicht eingeloggt!");
if(GetPVarInt(pID,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Der angegebene Spieler ist nicht eingeloggt!");
if(IsPlayerNPC(pID))return SendClientMessage(playerid,GRAU,"Das kannst du nicht!");
if(!ProxDetectorS(5.0,playerid,pID))return SendClientMessage(playerid,GRAU,"Der angegebene Spieler ist nicht in deiner Nähe!");
if(GetPosVorSpieler(pID, 1.0, x, y, z))return SendClientMessage(playerid,GRAU,"Der Spieler steht nicht vor dir!");
SetPlayerPos(playerid, x, y, z);
if(IsPlayerInAnyVehicle(pID))return SendClientMessage(playerid,GRAU,"Spieler ist in einem Fahrzeug.");
if(Spieler[pID][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Spieler hat bereits Handschellen angelegt.");
//if(HandsUpPerson[playerid] == false;
SetPlayerSpecialAction(pID,SPECIAL_ACTION_CUFFED);
SetPlayerAttachedObject(pID,0,19418,6,-0.011000,0.028000,-0.022000,-15.600012,-33.699977,-81.700035,0.891999,1.000000,1.168000);
TogglePlayerControllable(pID,true);
Spieler[pID][pCuffed] = 1;
GameTextForPlayer(pID,"~r~Handschellen angelegt",5000,3);
format(string,sizeof(string),"Du hast %s Handschellen angelegt.",SpielerName(pID));
SendClientMessage(playerid,HELLBLAU,string);
format(string,sizeof(string),"%s legt dir Handschellen an.",SpielerName(playerid));
SendClientMessage(pID,HELLBLAU,string);
format(string,sizeof(string),"** %s legt %s Handschellen an **",SpielerName(playerid),SpielerName(pID));
PlayerTalkPublic(playerid,MEFARBE,string,10);
return 1;
}
return SendClientMessage(playerid,GRAU,"Du bist nicht in der jeweiligen Fraktion."); -
Mit den geschwungenen Klammern macht man das eigentlich nicht, wenn du hinter der Abfrage die Nachricht ausgibst.
Und die Nachricht am Ende macht bei dieser Klammersetzung wenig Sinn, da die Nachricht nie erreicht wird.
Das musst du etwas umstellen.
-
Okay danke dir. Ich werde es nochmal anpassen.
-
breadfish.de
Hat das Thema geschlossen.