Zoals jullie weten word het volgende zeer veel gebruikt als je een bepaald iets voor alle online spelers wil uitvoeren:
for(new i;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
// Hier wat je wil doen...
}
}
Maar waarom eigenlijk de loop 500x uitvoeren als er toch maar bijvoorbeeld 5 spelers in de server zitten? Het kan in feite toch nog net wat efficiënter. Namelijk een variable die ik nu HID noem waarin de hoogste playerid in zit die zich op het moment in de server bevindt. Dan zal als er maar 5 spelers zijn in principe de loop dus maar 5x moeten lopen inplaats van die 500 (of iets anders als je de MAX_PLAYERS define redefined) keer. Dat brengt toch wat meer efficiëntie met zich mee.
Bij OnPlayerConnect moet er nagekeken worden of de playerid van de speler die net heeft geconnect groter is dan de huidige ID die zich HID bevindt. Zoja dan zal HID moeten verhoogt worden, dit kan heel simpel zo:
Of als je het liever wat anders wilt al komt het wel op hetzelfde neer:
public OnPlayerConnect(playerid)
{
if(playerid>HID) HID=playerid;
return 1;
}
Maar wanneer de speler met de hoogste playerid de server verlaat moet HID dus weer verlaagt worden naar de dan hoogste playerid. We hebben eigenlijk 2 mogelijkheden, we laten HID naar de werkelijke op dat moment hoogste playerid gaan of we doen gewoon -1. Gezien het feit dat in een normale server de id nadat een speler de server verlaten heeft snel weer zal opgevuld worden.
Zoals jullie weten word het volgende zeer veel gebruikt als je een bepaald iets voor alle online spelers wil uitvoeren:
Maar waarom eigenlijk de loop 500x uitvoeren als er toch maar bijvoorbeeld 5 spelers in de server zitten? Het kan in feite toch nog net wat efficiënter. Namelijk een variable die ik nu HID noem waarin de hoogste playerid in zit die zich op het moment in de server bevindt. Dan zal als er maar 5 spelers zijn in principe de loop dus maar 5x moeten lopen inplaats van die 500 (of iets anders als je de MAX_PLAYERS define redefined) keer. Dat brengt toch wat meer efficiëntie met zich mee.
Bij OnPlayerConnect moet er nagekeken worden of de playerid van de speler die net heeft geconnect groter is dan de huidige ID die zich HID bevindt. Zoja dan zal HID moeten verhoogt worden, dit kan heel simpel zo:
Of als je het liever wat anders wilt al komt het wel op hetzelfde neer:
Maar wanneer de speler met de hoogste playerid de server verlaat moet HID dus weer verlaagt worden naar de dan hoogste playerid. We hebben eigenlijk 2 mogelijkheden, we laten HID naar de werkelijke op dat moment hoogste playerid gaan of we doen gewoon -1. Gezien het feit dat in een normale server de id nadat een speler de server verlaten heeft snel weer zal opgevuld worden.
Mogelijkheid #1: Loop
Mogelijkheid #2: -1
Ik zou meer voor de 2de gaan aangezien deze efficiënter is en de playerid normaal wel opgevuld zou moeten worden. Althans dat is toch wat je hoopt...
Wat vinden jullie van dit idee en de mogelijke mogelijkheden?