Hallöschen,
Ich möchte mal ein ziemlich Logisches System vorstellen, womit man Kekse, Waffeln, Döner, Pizza oder was einem sonst noch so einfällt im Script benutzen kann.
Da es nicht sehr kompliziert ist, können auch Unerfahrene Kekse erstellen
1) Wir müssen die Kekse definieren, damit das Script weis das wir Kekse in unserem Script haben^^
Das machen wir am besten ganz oben im Script.
new Kekse[MAX_PLAYERS]
Das [MAX_PLAYERS] steht dafür, das jeder Spieler Kekse für sich hat.
Würden wir jetzt compilen würde es nicht funktionieren, wir haben war jetzt dem Script gesagt das wir Kekse im Script haben, haber nicht was mit den Keksen passieren/sein soll.
(Bsp. der Script weis nicht was Kekse sind :D)
Damit das behoben ist müssen wir Kekse im Script anwenden.
Zunächst einmal erstellen wir ein Keksladen
2)Ihr sucht in eurem Script nach public OnPlayerCommandText(playerid, cmdtext[])
Jetzt erstellen wir einen neuen Befehl
if(strcmp(cmdtext,"/Kaufen",true)==0)
{
if(IsPlayerInRangeOfPoint(playerid,Enfernung,X,Y,Z))
{
//Das erstmal leer lassen
}
else
{
SendClientMessage(playerid,Farbcode, "TEXT");
}
}
Mit
if(IsPlayerInRangeOfPoint(playerid,Enfernung,X,Y,Z))
Sagen wir, das er den Befehl nur ausführen kann, wenn er nicht ausserhalb der Entfernung von den Koordinaten(X,Y,Z) steht.
Mit der playerid sagen wir, das der Spieler bei den Koordinaten sein muss.
Bsp:
Zitatif(IsPlayerInRangeOfPoint(playerid,3.0,31.9374,12.134511,19.97551))
Zitatif(strcmp(cmdtext,"/Kaufen",true)==0)
heist, er muss den Befehl /kaufen ausführen.
Zitatelse
{
SendClientMessage(playerid,Farbcode, "TEXT");
}
Das else bedeutet, was passiert wenn er (in diesem Fall) nicht im Laden ist, bzw. in den Koordinaten.
playerid bedeutet diesmal, das der Text an den Spieler gesendet wird, Farbcode ist der Code der Farbe und "Text" ist die Nachricht die kommt wenn der Spieler nicht in den Koordinaten ist.
Fertiger Befehl:
if(strcmp(cmdtext,"/Kaufen",true)==0)
{
if(IsPlayerInRangeOfPoint(playerid,3.0,19.311354,37.134351,93.4234213))
{
//Das erstmal leer lassen
}
else
{
SendClientMessage(playerid,0xFFFFFFFF, "Du bist nicht im Keksladen.");
}
}
Jetzt müssen wir noch dafür sorgen, das er nicht zu viele Kekse besitzen kann.
if(strcmp(cmdtext,"/Kaufen",true)==0)
{
if(IsPlayerInRangeOfPoint(playerid,3.0,19.311354,37.134351,93.4234213))
{
if(Kekse[playerid] == 0)
{
//Das noch Leer Lassen
}
else
{
SendClientMessage(playerid,0xFFFFFFFF, "Du hast bereits Kekse. Esse deine Kekse mit /kekseessen");
}
}
else
{
SendClientMessage(playerid,0xFFFFFFFF, "Du bist nicht im Keksladen.");
}
}
mit
Zitatif(Kekse[playerid] == 0)
sagen wir, das der Spieler den Befehl nur benutzen kann, wenn er noch keine Kekse hat.
if(strcmp(cmdtext,"/Kaufen",true)==0)
{
if(IsPlayerInRangeOfPoint(playerid,3.0,19.311354,37.134351,93.4234213))
{
if(Kekse[playerid] == 0)
{
GivePlayerMoney(playerid, -150);
SendClientMessage(playerid,0xFFFFFFFF, "Du hast Kekse gekauft. Esse deine Kekse mit /kekseessen");
Kekse[playerid] = 1;
}
else
{
SendClientMessage(playerid,0xFFFFFFFF, "Du hast bereits Kekse. Esse deine Kekse mit /kekseessen");
}
}
else
{
SendClientMessage(playerid,0xFFFFFFFF, "Du bist nicht im Keksladen.");
}
}
ZitatGivePlayerMoney(playerid, -150);
Sagt, das dem Spieler 150$ abgezogen werden, wenn er den Befehl ausführt.
ZitatKekse(playerid) = 1;
Sagt, das der Spieler Kekse bekommt
Gut, jetzt kann der Spieler schonmal Kekse kaufen... jetzt brauchen wir noch das er sie Essen kann.
Also machen wir einen neuen Befehl.
if(strcmp(cmdtext,"/Kekseessen",true)==0)
{
if(Kekse(playerid) == 1)
{
SetPlayerHealth(playerid, 100);
Kekse[playerid] = 0;
SendClientMessage(playerid,0xFFFFFFFF, "Du hast deine Kekse gegessen.");
}
else
{
SendClientMessage(playerid,0xFFFFFFFF, "Du hast keine Kekse, kaufe Kekse im Keksladen.");
}
}
SetPlayerHealth(playerid, 100);
Setzt das Leben des Spielers auf 100
ZitatKekse(playerid) = 0;
nimmt die Kekse des Spielers.
Ich hoffe ich konnte euch helfen =)
//Edit INk
Hab den Code mal eingerückt, außerdem war der Fabcode falsch
//Edit
Klammern korrigiert...