/* Une forme de foreach (players) crée par les developeurs de Street-Kings (Minimicro et Coboll) Foreach de Y_Less fonctionne exactement sur le même principe ! */ new gMaxPlayers = 0; public OnPlayerConnect(playerid) { if(gMaxPlayers < playerid) { gMaxPlayers = playerid;} return 1; } public OnPlayerDisconnect(playerid, reason) { if(playerid == gMaxPlayers) { for(new i = gMaxPlayers-1; i >= 0; i--) { if(IsPlayerConnected(i)) {gMaxPlayers = i; break;} } } return 1; } /* Basé sur l'exemple de Ruto envoyé sur le sujet "Pawn Essentials". Un simple ProxDetectot et une fonction de ma conception. */ stock ProxDetector(playerid, targetid,Float:range) { if(!(IsPlayerConnected(playerid) || IsPlayerConnected(targetid)) || playerid == targetid) return 0; if(GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(targetid)) return 0; new Float:posX, Float:posY, Float:posZ; GetPlayerPos(playerid, posX, posY, posZ); return IsPlayerInRangeOfPoint(targetid, range, posX, posY, posZ); } /* Nécessite le premier code partagé dans ce message */ stock ProxDetectorEx(playerid, range) { new nearPlayers[MAX_PLAYERS+1]; for(new i = 0; i <= gMaxPlayers; i++) { if(ProxDetector(playerid, i, range)) format(nearPlayers, sizeof(nearPlayers), "%s%i", nearPlayers, i); } return nearPlayers; } /* Chaque cellule de nearPlayers[] vaux l'ID d'un joueur proche. La cellule qui vaux "\0" (caractère spéciale de fin de chaîne de caractère) est celle qui suis la dernière cellule contenant un ID de joueur. */