Hallo ,
Ich möchte das jemand /pay pID cash
Und wenn man das geld nicht hat , bzw. Der spieler ist
In der nähe , oder nivht online eine error message erscheint.
Vielen Dank voraus.
Hallo ,
Ich möchte das jemand /pay pID cash
Und wenn man das geld nicht hat , bzw. Der spieler ist
In der nähe , oder nivht online eine error message erscheint.
Vielen Dank voraus.
Hast du schon einen /pay Befehl erstellt? Wenn ja zeig mal was du bisher gemacht hast.
Oder musst du den erst noch machen?
Ich habe nur einen /givemoney befehl für admins..
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.
Zitatwie kann die Punkte auf der Minimap ausschalten
Die Farbigen Punkte der Spieler?
Wenn ja musst du das mit ShowPlayerMarkers in OnGameModeInit machen.
ShowPlayerMarkers(0);
Zitatwenn der server startet soll man im occ schreiben können
Zeig mal was alles zu dem System gehört.
Wie Meinst du das ? Es gibt einen /whipser , /b (local chat 1) befehl, der /b text sieht do aus : ((spieler sagt: text))
Während wenn der occ aus ist "spieler sagt:text" sein soll..