Jujuv icon

[SA:MP | POC] Advanced Prox-Detector

Jujuv | PRO | 08/08/12 10:05:17 AM UTC | 0 ⭐ | 298 👁️ | Never ⏰ | []
Pawn |

1.7 KB

|

None

|

0 👍

/

0 👎

/*
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.
*/

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎