Hallo,
ich habe mal wieder ne Frage, und zwar:
Wie erstelle ich ein Befehl den ich nur einmal verwenden kann, und danach kommt nur noch: Du hast diesen Befehl schon einmal benutzt.
LG
Befehl nur einmal benutzen können
- [ASAP]Frosty
- Geschlossen
- Erledigt
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
-
-
Mit einer Variable klappt dass pVar soll ja ressourcen schonender sein, hab aber keine Ahnung was das ist xD
new deinbefehl[MAX_PLAYERS];if(strcmp(cmdtext, "/deinbefehl") == 0)
{
if(deinbefehl[playerid] == 0)
{
deinbefehl[playerid] = 1;
SendClientMessage(playerid, COLOR_RED, "Du hast deinen Befehl aktiviert.");
return 1;
}
else if(deinbefehl[playerid] == 1)
{
SendClientMessage(playerid, COLOR_RED, "Der Befehl wurde bereits aktiviert!");
return 1;
}
} -
new deinbefehl[MAX_PLAYERS];if(strcmp(cmdtext, "/deinbefehl") == 0)
{
if(deinbefehl[playerid] == 0) deinbefehl[playerid] = 1; SendClientMessage(playerid, COLOR_RED, "Du hast deinen Befehl aktiviert.");
else if(deinbefehl[playerid] == 1) return SendClientMessage(playerid, COLOR_RED, "Der Befehl wurde bereits aktiviert!");
return 1;
}(OPtimiert)
-
new bool:deinbefehl[MAX_PLAYERS];if(strcmp(cmdtext, "/deinbefehl") == 0)
{
if(deinbefehl[playerid] == 0) deinbefehl[playerid] = 1; SendClientMessage(playerid, COLOR_RED, "Du hast deinen Befehl aktiviert.");
else if(deinbefehl[playerid] == 1) return SendClientMessage(playerid, COLOR_RED, "Der Befehl wurde bereits aktiviert!");
return 1;
}(OPtimiert)
Noch ein stück weiter optimiert
-
Was bringt 'bool' eigentlich?
Ich arbeite immer mit einer normalen Variable also ohne bool^^
-
Bool ist eigentlich genauso wie eine variable, nur das es nur wahr und nichtwahr (1 und 0 / true und false) kennt
Das spart den ungenutzen Speicherplatz bei Variablen
Beispiel:
new bool:test;
test=true; // wahr
test=false; //nichtwahr -
Eine Variable vom Typ bool ist genau so groß wie jede Andere Variable auch, 4Byte.Denn genau genommen genommen gibt es nur einen Datentyp bei PAWN.
-
Das heißt also bool ist genauso sparend wie eine noramle Variable?
Und kann man bei Bool auch 0 & 1 statt true & false benutzen? -
Soweit ich das verstanden habe ja.
Sicher
Du kannst entweder:
if(x == true)
oder
if(x == 1)
benutzen^^
-
Stimmt, du hast recht.
Ist doch eigentlich doof, da es ja nur die Möglichkeit 1 und 0 gibt...
Aber in C wird das doch sicher kleiner sein, als ein großer Integer..?Edit: Rechtschreibfehler..
-
Blos wenn du dein Script Größer hast, sieht man besser ob es davon ... mehrere funktion für diese Varibel gibt.
True und false, sagt aus ob etwas eintrifft oder halt nicht eintrifft ....
also arbeitest du nur mit 1 und 0, würde ich lieber True und false benutzen. -
Und wisst ihr was noch optimierter ist ;)?
OnPlayerDisconnect:
deinbefehl[playerid] = 0;
-
Das weiss Ich nicht genau,Ich nehme es aber an.Wäre ja logischer.
Deshalb benutzt ich kaum booleans. Ich mach das immer direkt über bits und kann so 32 Ja/Nein ; True/False Werte anhand einer Variable abfragen.Das ist dann Bitwise Operationen,aber zu schwer für die meisten.Viele erkennen auch nicht den Vorteil dabei.
-
Stimmt.. oder bei OnPlayerConnect
-
breadfish.de
Hat das Thema geschlossen.