Abfrage ob der Spieler vor einem steht

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
  • 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.

  • 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.

  • 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. :D


    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.");