- Savet -
Nije me dugo bilo i primetio sam da dosta vas ovde ne koristi neke fine stvari koje dosta ubrzavaju vreme pisanja koda tj. potrebno vam je manje vremena za to, primer iz nekog random SA moda:
forward AdminGameMaster(color, const string[]);
public AdminGameMaster(color, const string[])
{
foreach(new i : Player)
{
if(PlayerInfo >= 1|| PlayerInfo >= 1)
{
SendClientMessage(i, color, string);
}
}
}
// I posle
new string;
format(string, sizeof(string), "Poruka od %s", GetName(playerid));
AdminGameMaster(-1, string);
Ovo bi moglo da bude mnogo drugačije:
stock AdminGameMaster(color, const string[], {Float,_}:...)
{
if(numargs() > 2)
{
foreach(new i : Player)
{
if(PlayerInfo >= 1 || PlayerInfo >= 1)
{
va_SendClientMessage(i, color, string, ___(2));
}
}
}
else
{
foreach(new i : Player)
{
if(PlayerInfo >= 1 || PlayerInfo >= 1)
{
SendClientMessage(i, color, string);
}
}
}
return 1;
}
// I sada:
AdminGameMaster(0xFF0000FF, "Poruka od %s", GetName(playerid));
Takodje, kad smo vec kod ovog parčeta koda, ovo bi moglo malo (mnogo, zavisi od broja igrača na serveru) brže da radi:
#include
new Iterator:Admins;
public OnAccountLoaded(const playerid) // Recimo da ovo pozivate kada se igrac uloguje
{
if (PlayerInfo > 0) {
Iter_Add(Admins, playerid); // Dodajmo igraca u iterator Admins
}
}
public OnPlayerDisconnect(playerid, reason)
{
if (PlayerInfo > 0) {
Iter_Remove(Admins, playerid); // Maknimo taj ID igraca iz iteratora
}
}
YCMD:setadmin(playerid, const params[])
{
new tagetID, level; // Necu celu CMD pisati sada, podrazumeva se da dole ima sve tj. kod vas
// Kod
if (level <= 0) { // Namerno <=, vi dodajte zastite ostale
// Kod
Iter_Remove(Admins, targetID);
}
else {
// Kod
Iter_Add(Admins, targetID);
}
return COMMAND_OK;
}
// I sada kada sam sve objasnio (valjda)
stock AdminGameMaster(color, const string[], {Float,_}:...)
{
if(numargs() > 2)
{
foreach( new i : Admins ) { // Ime iteratora sa linije broj 3
va_SendClientMessage(i, color, string, ___(2));
}
}
else
{
foreach( new i : Admins ) { // Ime iteratora sa linije broj 3
SendClientMessage(i, color, string);
}
}
return 1;
}
// Sada umesto da npr loopujemo kroz 1000 igrača, mi loopujemo samo kroz one koji postoje u iteratoru (mnogo brže nego u primeru gore da uvek loopujemo kroz SVE igrače dok ovako loopujemo samo kroz slotove iteratora) 
