Cuff Befehl im ganzen Server verwenden?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Cuff Befehl im ganzen Server verwenden?

    Heyho,

    Wie kann ich machen das man ein Mensch nur in einem bestimmten Radius Cuffen kann.
    Da man bei meinen jetzigen Cuff Befehl den Spieler egal wo er ist cuffen kann.

    [pwn]ocmd:cuff(playerid,params[])
    {
    new pID;
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,Grau,"Du bist kein Beamter.");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,Weis,"Nutze: /cuff [ID/Teilname]");
    TogglePlayerControllable(pID,false);
    return 1;
    }
    ocmd:uncuff(playerid,params[])
    {
    new pID;
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,Grau,"Du bist kein Beamter.");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,Weis,"Nutze: /uncuff [ID/Teilname]");
    TogglePlayerControllable(pID,true);
    return 1;
    }[/pwn]
  • [pwn]
    ocmd:cuff(playerid,params[])
    {
    new pID, Float:X, Float:Y, Float:Z;
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,Grau,"Du bist kein Beamter.");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,Weis,"Nutze: /cuff [ID/Teilname]");
    GetPlayerPos(pID, X, Y, Z);
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))return SendClientMessage(playerid, Weis, "Der User ist zu weit weg!");
    TogglePlayerControllable(pID,false);
    return 1;
    }
    ocmd:uncuff(playerid,params[])
    {
    new pID, Float:X, Float:Y, Float:Z;
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,Grau,"Du bist kein Beamter.");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,Weis,"Nutze: /uncuff [ID/Teilname]");
    GetPlayerPos(pID, X, Y, Z);
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))return SendClientMessage(playerid, Weis, "Der User ist zu weit weg!");
    TogglePlayerControllable(pID,true);
    return 1;
    }
    [/pwn]

    Einfach Koordinaten vom user auslesen, den man fesseln will,
    dann einfach abfragen, ob du in der Nähe bist (In dem fall nu 5.0),
    ist man weiter weg, kommt die Fehlermeldung: SendClientMessage(playerid, Weis, "Der User ist zu weit weg!"
    Gruß,
    Dennis
  • Diese Funktion gibt es standartmäßig nicht, zumindest nach meinem Wissen.
    "ProxDetector" ist eine von jemanden geschriebene Funktion,
    ob dies als Filterscript oder ähnliches gibt, weiß ich im moment nicth, da ich mit SAMP nicht mehr so UpToDate bin.

    [pwn]forward ProxDetector(playerid, text[], Float:radius);

    public ProxDetector(playerid, text[], Float:radius)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInRangeOfPoint(i, radius, X, Y, Z))
    {
    new string[128];
    format(string, sizeof(string), "%s", text);

    SendClientMessage(i, Weis, string);
    }
    }
    }
    return 1;
    }[/pwn]

    Nun kannst du mit ProxDetector() einen Text nach belieben in der Umgebung von playerid ausgeben,
    z.B.:
    [pwn]ProxDetector(playerid, "Hallo du da!", 5.0);[/pwn]

    Ist jetzt so eine Entwurfsidee,
    ungetestet und eben schnell hingeschrieben,
    m+üsste meines Erachtens nach klappen,
    wenn nicht einfach mal fehler posten,
    wie gesagt bin nicht mehr so sehr mit pawn zugange ^^

    Gruß,
    Dennis

    //EDIT: Sry,
    kleiner Fehler in den usercoordinaten, behoben ;)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Dennis321 ()

  • //Edit

    Befehl:

    [pwn]ocmd:uncuff(playerid,params[])
    {
    new pID, Float:X, Float:Y, Float:Z;
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,Grau,"Du bist kein Beamter.");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,Weis,"Nutze: /uncuff [ID/Teilname]");
    GetPlayerPos(pID, X, Y, Z);
    ProxDetector(playerid,"%s legt %s die Handschellen ab.",SpielerName(playerid),SpielerName(pID),5.0);
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))return SendClientMessage(playerid, Weis, "Der Spieler ist nicht in deiner Nähe.");
    TogglePlayerControllable(pID,true);
    return 1;
    }[/pwn]

    Errors:

    [pwn]C:\Users\Alex\Desktop\Selfmade!\gamemodes\Selfmade.pwn(2725) : error 035: argument type mismatch (argument 3)
    C:\Users\Alex\Desktop\Selfmade!\gamemodes\Selfmade.pwn(2752) : error 030: compound statement not closed at the end of file (started at line 2735)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    2 Errors.
    [/pwn]

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von John_Jones ()

  • [pwn]ProxDetector(playerid, "%s legt %s die Handschellen ab.",SpielerName(playerid),SpielerName(pID),5.0);[/pwn]
    Da hast du einen Fehler gemacht ;)

    in dem Fall machst du folgendes:
    [pwn]
    new string[128];
    format(string, sizeof(string), "%s legt %s die Handschellen ab.",SpielerName(playerid),SpielerName(pID));
    ProxDetector(playerid, string, 5.0);
    [/pwn]

    Du darfst keine anderen Parameter in die Funktion rein machen als playeris, einen String und einen Float.
    So müsste es klappen.
  • 1 Error noch :S

    [pwn]ocmd:uncuff(playerid,params[])
    {
    new pID, Float:X, Float:Y, Float:Z;
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,Grau,"Du bist kein Beamter.");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,Weis,"Nutze: /uncuff [ID/Teilname]");
    GetPlayerPos(pID, X, Y, Z);
    new string[128];
    format(string, sizeof(string), "%s legt %s die Handschellen ab.",SpielerName(playerid),SpielerName(pID));
    ProxDetector(playerid, string, 5.0);
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))return SendClientMessage(playerid, Weis, "Der Spieler ist nicht in deiner Nähe.");
    TogglePlayerControllable(pID,true);
    return 1;
    }[/pwn]

    [pwn]C:\Users\Alex\Desktop\Selfmade!\gamemodes\Selfmade.pwn(2754) : error 030: compound statement not closed at the end of file (started at line 2737)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    1 Error.
    [/pwn]
  • [pwn]
    forward ProxDetector(playerid, text[], color[], Float:radius);

    public ProxDetector(playerid, text[], color[], Float:radius)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInRangeOfPoint(i, radius, X, Y, Z))
    {
    new string[128];
    format(string, sizeof(string), "%s", text);

    SendClientMessage(i, color, string);
    }
    }
    }
    return 1;
    }
    [/pwn]

    Hier das ganze noch mal, mit einem neuen Parameter "color",
    wo du die Farbe angeben kannst.

    Nun also als Beispiel: ProxDetector(playerid, "Hallo", "Weiß", 5.0)

    //EDIT:
    Nein, vorhin war sie quasi fixiert auf Weis in der Funktion,
    denn der Text wurde hier ausgegeben: SendClientMessage(i, color, string);,
    also in der Funktion (public) drinnen. Mit ProxDetector hast du ja quasi nu den Player, Text und Radius übergeben, jetzt auch farbe^^
    Müsste nun so wie jetzt klappen, hoffe ich zumindest,
    wie gesagt das ist jetzt so aus meinen wagen Erinnerungen :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dennis321 ()

  • gern geschehen ^^

    Hab mir kurz die Animation angeguckt und muss Sirius recht geben,
    wieht echt gut aus, vor allem mit dem Handschellenobject:

    [pwn]
    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CUFFED);
    SetPlayerAttachedObject(playerid, 0, 19418, 6, -0.011000, 0.028000, -0.022000, -15.600012, -33.699977, -81.700035, 0.891999, 1.000000, 1.168000);
    [/pwn]


    PS: Coordinaten aus dem Internet gesucht.