GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: dexi - 2012. január 30. - 12:09:06

Cím: Ciklus gondok..
Írta: dexi - 2012. január 30. - 12:09:06
Nos ugye teszem azt van ez a ciklus:
 
for(new i = 0; i < MAX_PLAYERS; i++)
{
new Float:x,Float:y,Float:z;
if(IsPlayerConnected(i))
   {
      GetPlayerPos(i,x,y,z);
      if(IsPlayerInRangeOfPoint(playerid, 2.0, x, y, z))
      {
         SendClientMessage(playerid, -1, \"Van itt valaki!\");
      }
      else SendClientMessage(playerid, -1, \"Nincs a közeledben senki.\");
   }
}

 
Ezzel egy a gond.. ha van a szerveren 20 játékos és csak 1 van a közeledben, akkor 19szer ki írja hogy Nincs a közeledben senki... Hogy tudnám megoldani hogyha akár 1 ember a közelemben van ne írja ki azt hogy \"Nincs a közeledben senki.\".. Meg azt hogyha tényleg nincs senki a közelemben akkor csak 1-szer írja ki.. ne pedig floodolja,
Cím: Ciklus gondok..
Írta: Bazsi - 2012. január 30. - 13:34:12
Hát szerintem inkább így csináld, így jobb lesz, mivel így csak a saját pozícióját kéri le és (ha minden igaz), csak egyszer írja ki xD
 
for(new i = 0; i < MAX_PLAYERS; i++)
{
new Float:x,Float:y,Float:z;
if(IsPlayerConnected(i))
   {
      GetPlayerPos(playerid,x,y,z);
      if(IsPlayerInRangeOfPoint(i, 2.0, x, y, z))
      {
         SendClientMessage(playerid, -1, \"Van itt valaki!\");
      }
      else SendClientMessage(playerid, -1, \"Nincs a közeledben senki.\");
   }
}
Cím: Ciklus gondok..
Írta: dexi - 2012. január 30. - 14:01:14
Rossz példát írtam a kérdésbe :D Akkor mondom a konkrétan:
Van nekem egy ház rendszerem... ha be akarok menni az egyikbe ugye ottkell lennem az ajtó elõtt.. de a ciklus miatt pl van 15 ház akkor 14-szer kiírja hogy nem vagyok a háznál.
Cím: Ciklus gondok..
Írta: Game94 - 2012. január 30. - 14:45:58
Próbáld meg így:
[pawn]for(new h = 0; h < MAX_HOUSES; h++)
{
if(IsPlayerInRangeOfPoint(playerid, 2, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ]))
{
   inHouse[playerid] = h;
   SetPlayerPos(playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ]);
   break;
}
else { if((MAX_HOUSE - 1) == i) return SendClientMessage(playerid, -1, \"Nem vagy háznál\"); }
}[/pawn]
Ha nem mûködik akkor szóljál és kijavítom ;)
Cím: Ciklus gondok..
Írta: lackos888 - 2012. január 30. - 15:02:34
Próbáld így:
 

new bool:vaneott;
for(new i = 0; i < MAX_PLAYERS; i++)
{
new Float:x,Float:y,Float:z;
if(IsPlayerConnected(i))
   {
      GetPlayerPos(i,x,y,z);
      if(IsPlayerInRangeOfPoint(playerid, 2.0, x, y, z))
      {
         vaneott=true;
         break;
      }
   }
}
if(vaneott)
{
    // ha van ott valaki
} else {
   // ha nincs
}