Das gleiche kannst dir ja dann noch einmal für ein Motorrad Basteln, dann hast eine Funktion ohne Include.
So kann man das zwar lösen, aber eigentlich ist die Funktion nicht so gut.
Das liegt daran, dass:
- Immer eine Schleife durchlaufen werden muss, je mehr Fahrzeuge, desto länger dauert es.
- Du jedes mal eine Model Abfrage machst in der Schleife.
Besser wäre es da mit switch zu arbeiten, was als Jump-Table fungiert.
Dort wird dann direkt hingesprungen oder nicht.
Immer O(1), anstatt O(n) und du hast nur eine Model Abfrage (wobei es schon sinnvoller wäre, das Modell im eigentlichen Code in einer Variable zu speichern und dann nur zu übergeben).
Code sähe dann so aus:
stock IsVehicleBoat(vehicleid)
{
switch(GetVehicleModel(vehicleid))
{
case 472, 473, 493, 495, 484, 430, 453, 452, 446, 454, 595: return 1;
}
return 0;
}
Eventuell noch 2 Dinge als Info:
1. Es ist nicht schlimm Includes zu inkludieren, wenn sie richtig geschrieben sind. Sprich überall stock oder defines verwendet wurden. Falls man diese dann nämlich nicht nutzt, werden alle Dinge die nicht benötigt werden vom Compiler ignoriert und es gelangt nix unerwünschtes in die .amx Datei.
2.
new Boat[] = { 472, 473, 493, 495, 484, 430, 453, 452, 446, 454, 595};
So denkt der Compiler, dass es sich hierbei um eine Variable handelt.
Sprich, dass eventuell später (während der Server läuft) noch Dinge geändert werden, was ja aber nicht der Fall ist.
Zeig ihm das, indem man es als const deklariert, dadurch kann der Compiler das besser optimieren.
stock const Boat[] = { 472, 473, 493, 495, 484, 430, 453, 452, 446, 454, 595};
@Allrounder18
Schreib es mal nur so:
public AdminList(playerid)
{
new string[700] = "{FFFFFF}Rang\t{FFFFFF}Name\t{FFFFFF}Onlinestatus",adminrang,name[MAX_PLAYER_NAME],pID,rows;
cache_get_row_count(rows);
for(new i; i<rows; i++)
{
cache_get_value_name_int(i,"Admin",adminrang);
if(adminrang < 3) continue;
cache_get_value_name(i,"Name",name,sizeof(name));
pID = GetPlayerIdFromName(name);
format(string, sizeof(string), "%s\n%s\t%s\t%s",string, GetAdminName(adminrang), name, GetPlayerStatus(pID));
}
ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_TABLIST_HEADERS, "{FF0000}Austrian Roleplay {FFFFFF}- Team",string,"{FFFFFF}Abbrechen","");
return 1;
}
Alles anzeigen
In der Funktion GetPlayerStatus ändere mal die String-Größe von 500 auf 32.
Selbst 32 wäre noch zu groß, 16 würde da vollkommen ausreichen, musst die nicht immer so riesig machen xD
Und nutze da nicht GetPlayerIdFromName, sondern meine Funktion:
stock GetPlayerFromAdminName(const pName[])
{
new playerid,n[MAX_PLAYER_NAME] = "[ARP]";
strcat(n,pName),sscanf(n, "u", playerid);
return playerid;
}