Also, ich finde dein System von der Idee her nicht schlecht, jedoch, finde ich es teilweise ziemlich merkwürdig und schlecht wie du es umsetzt.
1. Du hast extra eine Funktion SpielerName(playerid) die dafür sorgt, dass du den Namen eines Spielers auslesen kannst, trotzdem erstellst du in manchen Befehlen neue Variablen und lässt ihn nochmal auslesen?! Nebenbei bemerkt ist die Funktion hier nicht die schönste Lösung.
2. Du machst teilweise unnötige abfragen, wie zum Beispiel:
//In einem Command:
if(IsPlayerConnected(playerid))
Wenn der Spieler nicht connected wäre...wer gibt dann gerade diesen Befehl ein ![]()
3. Du hast den Sinn von ProxDetector glaube ich nicht so ganz verstanden, zumindest so wie du diese Funktion verwendest, macht es keinen Sinn, da solltest du lieber eine andere verwenden.
4. GetMaxPlayers() ist eine Funktion, die in der CFG den Wert von maxplayers ausließt.
Jedoch, so wie du es geschrieben hast, macht sie das in jedem Schleifendurchgang, somit wird die Funktion langsamer, du solltest es so verwenden:
for(new i,l=GetMaxPlayers(); i!=l; i++)
5. Da die Variable "Telefoniert" bei dir nur 2 Werte haben kann, nämlich 0 oder 1, solltest du die Variable als Boolean deklarieren, da sie dann weniger Speicher belegt.
6. Du solltest aus dem Array bei "Telefoniert" mit MAX_PLAYERS ein char-Array machen, dann verbraucht jede Cell nicht 5 Byte Speicherplatz, sondern nur 1 Byte.
7. Es ist zwar ziemlich egal, trotzdem sieht es irgendwie komisch aus, mach das mit diesem #define Filterscript raus...schließlich ist es eins und dann musst du nicht noch ein main(){ } darein schreiben, das ist unnötig.
8. Teilweise machst du eine unnötige Verwendung von format, format verwendet man nur, um bestimmte Platzhalter wie %s,%d,%x,%c,%f...usw auszulesen. Wenn du einen normalen Text hast, kannst du diesen direkt mit SendClientMessage ausgeben und musst es nicht erst noch formatieren. (Zeile: 164)
9. Achso, Variablen, die man nicht verwendet, muss man auch nicht deklarieren...z.B. xname in Zeile 183
10. Allgemein, kannst du das noch viel kürzer schreiben, ist zwar nicht notwendig, finde ich aber eigentlich immer schöner. Zum Beispiel:
if(sscanf(params,"us",pID,text))
{
return SendClientMessage(playerid,ROT,"/sms [ID] [Text]");
}
Kann man auch nur so schreiben:
if(sscanf(params,"us",pID,text)) return SendClientMessage(playerid,ROT,"/sms [ID] [Text]");
Ist zwar nicht dramatisch...aber nur so als Tipp ![]()
11. Noch als Tipp...unnötige else - Abfragen, kannst du auch vermeiden, z.B. diese hier:
if(Telefoniert[pID] == 1)
{
return SendClientMessage(playerid,GRAU,"Besetzt...");
}
else
{
Wenn das if-Statement erfüllt werden würde, würde die Funktion 0 oder 1 zurückgeben. Sprich, der untere Teil würde eh nicht ausgeführt werden, also wäre, das else überflüssig und kann somit weggelassen werden.
An sich ist es nicht schlecht, aber noch Ausbaufähig ![]()
mfg. ![]()