Szerző Téma: ID lekérése egy telefonszámból  (Megtekintve 1208 alkalommal)

dexi

  • Vendég
ID lekérése egy telefonszámból
« Dátum: 2012. február 25. - 19:41:54 »
0 Show voters
stock GetPlayerIDFromPhoneNumb( numb )
{
new str[128];
format(str, sizeof(str),\"RolePlay_A/Telefonszámok/%d.ini\", numb);
new a;
    for( new k = 0; k < MAX_PLAYERS; k++ )
    {
       if( dini_Exists(str) )
       {
           new StRG[256];
           format( StRG, sizeof(StRG), \"%s\", dini_Get(str,\"Tulaj\"));
          
           if( !strcmp( pName(k), StRG, false) )
           {
               a = GetPlayerIDFromName( pName(k) );
         if(IsPlayerConnected(a))
         {
            printf( \"Neve: %s | ID: %d\", pName(k), a );
            return a;
         }
      }
       }
    }
return a;
}

 
Ezt sikerült alkotnom de a tapasztalataim a következõek:
Ha egyedül vagyok fent a szerveren perfektül mûködik ..
De ha már más is fentvan akkor id 0 nem mûködik...
tehát ha \"01245\" telefonszám tulaja éppen ID 0 akkor nem kéri le rendesen...
Miért lehet ez?

ID lekérése egy telefonszámból
« Válasz #1 Dátum: 2012. február 25. - 20:02:07 »
0 Show voters
Azért mert ez a kód mindig 0 val tér vissza és amikor csak te vagy fent neked 0 a playerid-d ezért mûködik de amikor többen is akkor playerid 1-nek is 0-t fog adni

dexi

  • Vendég
ID lekérése egy telefonszámból
« Válasz #2 Dátum: 2012. február 25. - 20:06:20 »
0 Show voters
Segítenél kijavítani mert nem-vágom hol rontottam el.
EDIT:
Azt elfelejtettem le írni hogy mikor van fent valaki akkor mindegyik más megy, csak ID 0 nem.
« Utoljára szerkesztve: 2012. február 25. - 20:08:52 írta Fl0rian »

ID lekérése egy telefonszámból
« Válasz #3 Dátum: 2012. február 26. - 01:04:10 »
+1 Show voters
Mivel fogalmam sincs hogy pontosan, mit is szeretnél ezért írtam egy változatot az elgondolásom alapján:
[pawn]stock
GetPlayerIDFromPhoneNumb( numb )
{
new
   str[128];
format(str, sizeof(str), \"RolePlay_A/Telefonszámok/%d.ini\", numb);
if(dini_Exists(str))
{
   format(str, sizeof(str), \"%s\", dini_Get(str, \"Tulaj\"));
   for(new i = 0; i < MAX_PLAYERS; i++)
   {
      if(IsPlayerConnected(i))
      {
         if(!strcmp(pName(i), str))
         {
            printf(\"Neve: %s | ID: %d\", pName(i), i);
            return i;
         }
      }
   }
}
return INVALID_PLAYER_ID;
}[/pawn]

dexi

  • Vendég
ID lekérése egy telefonszámból
« Válasz #4 Dátum: 2012. február 26. - 01:57:07 »
0 Show voters
Köszi a választ azóta rájöttem az én megoldásom:
 

stock GetPlayerIDFromPhoneNumb( numb )
{
new pid;
new File[256];
format( File, sizeof(File),\"RolePlay_A/Telefonszámok/%d.ini\", numb);
if( dini_Exists(File) )
{
    for(new PlayerID = 0; PlayerID < MAX_PLAYERS; PlayerID++)
    {
   if( IsPlayerConnected(PlayerID) )
   {
           if( !strcmp(pName(PlayerID), dini_Get(File, \"Tulaj\"), true) )
           {
           pid = PlayerID;
           printf(\"\\nTelefonszám: %d  \\nEbbõl való tulaj ID: %d  \\nTulaj neve: %s  \\nKiolvasott név: %s\\n\\n\",numb, pid, pName(pid), dini_Get(File, \"Tulaj\"));
      }
                else
        {
              pid = -1;
      }
   }
}
}
else
{
pid = -1;
print(\"Nincs ilyen telefonszám. Visszatérési érték: \\\" -1 \\\" \");
}
return pid;
}

ID lekérése egy telefonszámból
« Válasz #5 Dátum: 2012. február 26. - 16:52:26 »
0 Show voters


Ez ugyanaz amit írtam csak beletéve a hülyeség/meggondolatlanság.  :angel:
 
Ha van fenn a szerveren 30 játékos és a 30-dik játékosnak kell az ID-je telefonszám alapján,
akkor a te verziódnál 30-szor olvassa ki a fájlból a \"Tulaj\" nevét, ami egy fájl esetében (\"RolePlay_A/Telefonszámok/%d.ini\") mindig ugyanazt az adatot tartalmazza ezért felesleges, és leterhelõ a szervernek. (nem történik fájlmódosítás míg lefut a lekérdezés, ezért nem kell ~30-szor kiolvastatni az adatot (játékos számtól és véletlentõl függ hányszor kerül kiolvasásra az említett \"Tulaj\" adat))
 
       for(new PlayerID = 0; PlayerID < MAX_PLAYERS; PlayerID++)
    {
      if( IsPlayerConnected(PlayerID) )
      {
           if( !strcmp(pName(PlayerID), dini_Get(File, \"Tulaj\"), true) )
           {
[/quote]

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal