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: totar - 2011. június 21. - 20:21:55

Cím: Sorsolás
Írta: totar - 2011. június 21. - 20:21:55
Üdv
Megoldható e , hoyg van egy paransc, ami olyan lenne hogy /sorsol és utánna kellene írni a szerveren lévó playerid-k et vagyis pl.: 45
És ez így nézne ki: /sorsol 45
És akkor véletlenszerüen kisorsolna egy nyertes playerid-t. (ezt nem tudom megcsinálni :D)
Ebbe kellene segítenetek , hogy hogyan lehetséges megcsinálni.
Aki segít annak nagyon megköszönném a segítséget.
Cím: Sorsolás
Írta: ZeRo - 2011. június 21. - 20:25:38
Úgy érted, hogy pl
 
/sorsol 1 2 3 5 6 10

 
És akkor az 1, 2, 3, 5, 6, 10-es ID közül választ egyet véletlenszerûen?
Cím: Sorsolás
Írta: Mambo - 2011. június 21. - 20:31:36
Idézetet írta: ZeRo date=1308680738\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"9050\" data-ipsquote-contentclass=\"forums_Topic
Úgy érted, hogy pl
 
/sorsol 1 2 3 5 6 10

 
És akkor az 1, 2, 3, 5, 6, 10-es ID közül választ egyet véletlenszerûen?
 
ha beleszólhatok szerintem úgy gondolja, hogy például fentvannak 13-an, beírja hogy /sorsol 13, és akkor a 13 player (0,1,2,3,4,5,6,7,8,9,10,11,12,13) között sorsol egyet, és az kap valamit.
Cím: Sorsolás
Írta: Detrot - 2011. június 21. - 20:33:56
Mód elejére:
 
new playerek[MAX_PLAYERS];

 

CMD:sorsol(playerid, params)
{
if(IsPlayerConnected(playerid))
{
for(new i; i<MAX_PLAYERS; i++)
{
   if(IsPlayerConnected(playerid))
   {
      playerek[playerid] ++;
   }
}
new rand = random(playerek[playerid]);
    new str[256];
new name[64];
GetPlayerName(rand, name, sizeof (name));
format(str, 256, \"Kisorsolt ID: %d, Játékos neve: %s\", rand, name );
SendClientMessage(playerid, COLOR_WHITE, str);
}
}

 
Pawno nem ír hibát, de nem teszteltem!
Cím: Sorsolás
Írta: totar - 2011. június 21. - 20:35:21
uy ahogy mambo mondja
uyg értem :D
Cím: Sorsolás
Írta: Detrot - 2011. június 21. - 20:37:02
én úgy írtam, hogy megnézi hány online player van és azokból random sorsol egyet és kiirja a nevét meg az idjét
Cím: Sorsolás
Írta: totar - 2011. június 21. - 21:15:45
Oké köszi Detrot még nem teszteltem , de bízok benned hogy jól összedobtad ezt.
Köszönöm szépen a segítséget!!!
Cím: Sorsolás
Írta: Zsolesszka - 2011. június 21. - 21:55:07
Idézetet írta: Detrot date=1308681236\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"9050\" data-ipsquote-contentclass=\"forums_Topic
Mód elejére:
 
new playerek[MAX_PLAYERS];

 

CMD:sorsol(playerid, params)
{
if(IsPlayerConnected(playerid))
{
for(new i; i<MAX_PLAYERS; i++)
{
   if(IsPlayerConnected(playerid))
   {
      playerek[playerid] ++;
   }
}
new rand = random(playerek[playerid]);
    new str[256];
new name[64];
GetPlayerName(rand, name, sizeof (name));
format(str, 256, \"Kisorsolt ID: %d, Játékos neve: %s\", rand, name );
SendClientMessage(playerid, COLOR_WHITE, str);
}
}

 
Pawno nem ír hibát, de nem teszteltem!
 
Pár indexet nem jól adtál meg!
És természetesen megint rossz az elképzelés mert azt veszitek alapul hogy egy szerveren mindig 0 tól vannak a playerid értékek, és minden értéken van csatlakozva valaki holott ez nem igaz.
Mi van akkor ha a 2, 3, 5, 6,  8, 10,-es id-n vannak játékosok a szerveren akkor hogy választanátok ki egyet véletlenül?
Cím: Sorsolás
Írta: Detrot - 2011. június 21. - 22:36:17
én azt számoltam hogy hány player van online. Nem idket. Ha egy játékos bevan lépve akkor rakja feljebb a változót szóval amit írtam ilyen szempontból helyes
Cím: Sorsolás
Írta: Zsolesszka - 2011. június 21. - 23:16:34
Idézetet írta: Detrot date=1308688577\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"9050\" data-ipsquote-contentclass=\"forums_Topic
én azt számoltam hogy hány player van online. Nem idket. Ha egy játékos bevan lépve akkor rakja feljebb a változót szóval amit írtam ilyen szempontból helyes
 
Ha lefuttatsz egy for ciklust i változóval jelölve, akkor ne playeridet használj!
 
      for(new i; i<MAX_PLAYERS; i++)
      {
         if(IsPlayerConnected(playerid))
         {
            playerek[playerid] ++;
         }
      }
[/quote]
Helyesen:
 

      for(new i; i<MAX_PLAYERS; i++)
      {
         if(IsPlayerConnected(i))
         {
            playerek ++;
         }
      }

 
De most így végig gondolva még jobban az egész úgy ahogy van rossz, hamár bizonygatod hogy helyes.  :angel:
Edit:
Írtam egy kis kódot amit itt postoltam, sokat nem tudtam tesztelni de a bot játékosokkal a házi szerveren jól mûködött, talán ez hasznos lesz számodra, ha meg használsz foreach.inc-t akkor egyszerûbb a dolgod \"Itter_Random(Player)\".
Cím: Sorsolás
Írta: totar - 2011. június 22. - 06:58:01
Akkor most hogy a  helyes?
help pls
Cím: Sorsolás
Írta: Stray - 2011. június 22. - 08:52:55
Arnold az úgy nem minden esetben lesz jó.
Tessék inkább használd ezt.