Egy kis észrevétel a kódoddal kapcsolatban.
stock Mode()
{
new string2[128], name[MAX_PLAYER_NAME];
new playerid = RandPlayerID();
// ...
WTF? Ha szükséged van a playeridre, akkor
stock Mode(playerid)
és
Mode(playerid);
-vel hívod meg.
Itt pedig, ha random id kell:
// ...
GetPlayerName(random(MAX_PLAYERS), name, sizeof(name));
format(string2, sizeof(string2), \"%s az ..........\", name);
// ...
// A MAX_PLAYERS annyira legyen beállítva, ahány slotos a szerver!
Ha több helyre kell az az ID:
// ...
new RandomID = random(MAX_PLAYERS);
[code=pawn]GetPlayerName(RandomID, name, sizeof(name));
// ...
Azonban még így is lehet olyan játékos kiválasztva, aki nem online a szerveren. Erre ajánlanám az
IsPlayerConnected(playerid);
függvényt.
Visszatérési érték (return)
return
nem feltétlenül szükséges, de ha a függvénnyel egy értéket szeretnél visszakapni, akkor pl.
// ...
new Ertek = random(20);
return Ertek;
}
Vagy pl. egy üzenetet:
// ...
return SendClientMessage(playerid, COLOR, \"Visszatérés\");
}
Vagy ha logikai értékkel térnél vissza
// ...
return 1; // 0/1, azaz false/true
}
Õszintén szólva nem hiszem, hogy a megoldás kulcsa a visszatérési értékben lenne elrejtve. A függvények meghívását pedig még mindig nem láttam.
Amiket leírtam, azokat szerintem javítsd! Ja és azt hiszem megvan a megoldás: A függvényeden belül van egy ilyened:
for(new i; i<MAX_PLAYERS; i++) {
Ez minek? Sehol sem használod fel, csupán 500-szor végrehajtja az ott megadott parancsokat. (Azért 500-szor, mert gondolom nem definiáltad a te szerverednek megfelelõ slot számot a MAX_PLAYERS-re, ezt viszont sürgõsen tedd meg!) Ja és ezt vedd ki, mert nem kell oda, és ezért \"játssza le\" a dolgokat rengetegszer (valószínûleg)!