Szerző Téma: Ciklus gondok..  (Megtekintve 505 alkalommal)

dexi

  • Vendég
Ciklus gondok..
« Dátum: 2012. Január 30. - 12:09:06 »
+1 Show voters
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,

Nem elérhető Bazsi

  • 345
    • Profil megtekintése
Ciklus gondok..
« Válasz #1 Dátum: 2012. Január 30. - 13:34:12 »
0 Show voters
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.\");
   }
}
« Utoljára szerkesztve: 2012. Január 30. - 13:37:49 írta Bazsi »

dexi

  • Vendég
Ciklus gondok..
« Válasz #2 Dátum: 2012. Január 30. - 14:01:14 »
+1 Show voters
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.

Nem elérhető Game94

  • 405
    • Profil megtekintése
Ciklus gondok..
« Válasz #3 Dátum: 2012. Január 30. - 14:45:58 »
0 Show voters
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 ;)

Ciklus gondok..
« Válasz #4 Dátum: 2012. Január 30. - 15:02:34 »
+1 Show voters
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
}

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal