/pay Befehl

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
  • Dann erklär ich dir das.


    Ich benutzte dazu ocmd. Dafür brauchst du aber dann auch das sscanf Include + Plugin oder die Funktion direkt in deinem Script. Diese findest du hier: http://wiki.sa-mp.com/wiki/Sscanf_code
    Nun aber zum Befehl. Erstmal brauchst du ein Grundgerüst womit du das ganze dann machen kannst. Dazu machst du jetzt das hier irgendwo ins Script:


    ocmd:pay(playerid,params[])
    {
    return 1;
    }


    Hast du das gemacht musst du nun neue Variablen erstellen die wir dann später brauchen werden.


    new AndereID, Betrag;


    Zu diesen Variablen müssen wir jetzt Floats erstellen, da wir ja abfragen wollen ob der Spieler, den man dann im Befehl wählt, in der Nähe ist. Dazu ergänzt du jetzt folgende Zeile:


    new AndereID, Betrag, Float:X,Float:Y,Float:Z;


    Jetzt können wir mit dem eigentlichen Befehl anfangen, dazu benutze ich hier jetzt sscanf.


    if(sscanf(params,"ud",AndereID,Betrag))return SendClientMessage(playerid,-1,"Benutze: /pay [ID][Betrag]");


    Was das mit dem u und d auf sicht hat kannst du hier nachlesen: http://wiki.sa-mp.com/wiki/Fast_Commands#Data_types
    Jetzt steht die Abfrage ob alle nötigen Parameter eingegeben wurden, die wir brauchen. Haben wir das gemacht können wir weiter machen. Ich macher hier jetzt mit der Abfrage ob der Spieler in der nähe ist weiter.
    Dazu müssen wir jetzt zuerst die Position herausfinden, und das macht man mit GetPlayerPos.


    GetPlayerPos(AndereID,X,Y,Z);


    Jetzt haben wir die Position des ausgewählten Spielers. Nun können wir mit der Abfrage beginnen. Das macht man mit IsPlayerInRangeOfPoint.


    if(!IsPlayerInRangeOfPoint(playerid,RANGE,X,Y,Z))return SendClientMessage(playerid,-1,"Der Spieler ist nicht in der nähe");


    Die Abfrage ob der Spieler in der nähe ist steht, und damit auch der Halbe Befehl. Mit Range ist die Distanz zum Spieler gemeint. Kommen wir nun zu der Abfrage ob der Spieler genug Geld auf der Hand für diese Aktion hat. Das machen wir mit GetPlayerMoney und einer if Abfrage.


    if(!GetPlayerMoney(playerid) > Betrag)return SendClientMessage(playerid,-1,"Du hast nicht genug Geld für diese Aktion");


    Wenn wir diese Abfrage haben, haben wir es gleich geschafft. Nun muss man dem Player wo ausgewählt wurde das Geld geben, und dem der den Befehl anwendet, das angegebene Geld abziehen.


    GivePlayerMoney(playerid,-Betrag);
    GivePlayerMoney(AndereID,Betrag);


    Jetzt könnte man den Befehl noch ausschmücken, das mache ich hier nicht da das einfach nur zur Demonstration sein soll.
    Jetzt kannst du dir den Befehl zusammenbasteln.


    Notwendige Sachen für den Befehl:
    OCMD: [ INCLUDE ] ocmd 2.1.1 [ Update 3.11.2013 ]
    SSCANF Plugin + Include: http://forum.sa-mp.com/showthread.php?t=120356
    SSCANF Funktion: http://wiki.sa-mp.com/wiki/Sscanf_code

  • Okay , Danke!


    Ich hab noch ne frage ;) , wie kann die Punkte auf der Minimap ausschalten (mi Befehl) , und den occ ausschalten mi befehl , (wenn der server startet soll man im occ schreiben können , ohne befehl , und die Minimap soll auch an sein , wenn der occ aus ist soll man automatisch local schreiben.