Problem mit Fraktionsbefehlen

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 Abend,
    ich wollte mal fragen ob jemand weiß, wie ich es machen könnte, dass nicht jede Fraktion über 3 solche befehle ausführen kann.


    Danke für eure Antworten! :)



    ocmd:mheal(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,3)) return SendClientMessage(playerid,Rot,"Du Bist kein Arzt!");
    new pID,kosten;
    if(sscanf(params,"ui",pID,kosten))return SendClientMessage(playerid,Rot,"INFO: /mheal [ID] [Geld]");
    if(kosten<1||kosten>100)return SendClientMessage(playerid,Rot,"1-100$");
    if(pID == playerid) return SendClientMessage(playerid,Rot,"Du kannst dich nicht selber healen!");
    GivePlayerMoney(pID,-kosten);
    GivePlayerMoney(playerid,kosten);
    SetPlayerHealth(pID,100);
    SpielerSpeichern(pID);
    return 1;
    }


    //Edit: Und vielleicht noch wie ich machen, dass man nur Spieler in der nähe healen kann, danke :)

    Mit freundlichen Grüßen!
    MoritzF


    Einmal editiert, zuletzt von mjf ()

  • Zitat von mjf

    ich wollte mal fragen ob jemand weiß, wie ich es machen könnte, dass nicht jede Fraktion über 3 solche befehle ausführen kann.


    Mit dieser Abfrage bewirkst du das doch schon
    if(!isPlayerInFrakt(playerid,3)) return SendClientMessage(playerid,Rot,"Du Bist kein Arzt!");


    Zitat von mjf

    Und vielleicht noch wie ich machen, dass man nur Spieler in der nähe healen kann


    Du kannst das mit IsPlayerInRangeOfPoint machen.

  • Zum Thema Nähe:


    Hab dir grad folgendes Snippet gebaut(Ungetestet versteht sich):


    stock IsPlayerInRangeOfPlayer(playerid, targetid, radius)
    {
    new Float:tcord[2];
    GetPlayerPos(targetid, tcord[0], tcord[1], tcord[2]);
    if(!IsPlayerInRangeOfPoint(playerid,tcord[0],tcord[1],tcord[2],radius)) return 0;
    return 1;
    }


    Abrufen kannst du es mit
    if(!IsPlayerInRangeOfPlayer(playerid, pID, 2)) return SendClientMessage(playerid, Rot, "Der Spieler ist nicht in deiner Nähe!");




    In deinem Beispiel z.B:


    ocmd:mheal(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,3)) return SendClientMessage(playerid,Rot,"Du Bist kein Arzt!");
    new pID,kosten;
    if(sscanf(params,"ui",pID,kosten))return SendClientMessage(playerid,Rot,"INFO: /mheal [ID] [Geld]");
    if(!IsPlayerInRangeOfPlayer(playerid, pID, 2)) return SendClientMessage(playerid, Rot, "Der Spieler ist nicht in deiner Nähe!")
    if(kosten<1||kosten>100)return SendClientMessage(playerid,Rot,"1-100$");
    if(pID == playerid) return SendClientMessage(playerid,Rot,"Du kannst dich nicht selber healen!");
    GivePlayerMoney(pID,-kosten);
    GivePlayerMoney(playerid,kosten);
    SetPlayerHealth(pID,100);
    SpielerSpeichern(pID);
    return 1;
    }

    Zitat von Sharpadox

    Echt fantastisch, dieses "Google" ^^