Advertisement
Jujuv

[SA:MP | POC] Advanced Prox-Detector

Aug 8th, 2012
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 1.70 KB | None | 0 0
  1. /*
  2. Une forme de foreach (players) crée par les developeurs de Street-Kings (Minimicro et Coboll)
  3. Foreach de Y_Less fonctionne exactement sur le même principe !
  4.  
  5.  
  6. */
  7. new gMaxPlayers = 0;
  8.  
  9. public OnPlayerConnect(playerid)
  10. {
  11.     if(gMaxPlayers < playerid) { gMaxPlayers = playerid;}
  12.    
  13.     return 1;
  14. }
  15.  
  16. public OnPlayerDisconnect(playerid, reason)
  17. {
  18.        if(playerid == gMaxPlayers)
  19.         {
  20.                 for(new i = gMaxPlayers-1; i >= 0; i--)
  21.                 {
  22.                         if(IsPlayerConnected(i))
  23.                                 {gMaxPlayers = i; break;}
  24.                 }
  25.         }
  26.        
  27.     return 1;
  28. }
  29. /*
  30. Basé sur l'exemple de Ruto envoyé sur le sujet "Pawn Essentials".
  31. Un simple ProxDetectot et une fonction de ma conception.
  32. */
  33.  
  34. stock ProxDetector(playerid, targetid,Float:range)  
  35. {
  36.     if(!(IsPlayerConnected(playerid) || IsPlayerConnected(targetid)) || playerid == targetid)
  37.         return 0;
  38.     if(GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(targetid))
  39.         return 0;
  40.  
  41.     new Float:posX, Float:posY, Float:posZ;  
  42.     GetPlayerPos(playerid, posX, posY, posZ);  
  43.     return IsPlayerInRangeOfPoint(targetid, range, posX, posY, posZ);
  44. }
  45.  
  46. /*
  47. Nécessite le premier code partagé dans ce message
  48. */
  49. stock ProxDetectorEx(playerid, range)
  50. {
  51.     new nearPlayers[MAX_PLAYERS+1];
  52.    
  53.     for(new i = 0; i <= gMaxPlayers; i++)
  54.     {
  55.         if(ProxDetector(playerid, i, range))
  56.             format(nearPlayers, sizeof(nearPlayers), "%s%i", nearPlayers, i);  
  57.     }
  58.     return nearPlayers;
  59. }
  60. /*
  61. Chaque cellule de nearPlayers[] vaux l'ID d'un joueur proche.
  62.  
  63. 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.
  64. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement