Szerző Téma: Sorsolás  (Megtekintve 1430 alkalommal)

Nem elérhető totar

  • 425
    • Profil megtekintése
Sorsolás
« Dátum: 2011. június 21. - 20:21:55 »
0 Show voters
Ü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.

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
Sorsolás
« Válasz #1 Dátum: 2011. június 21. - 20:25:38 »
0 Show voters
Ú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?

Nem elérhető Mambo

  • 4239
    • Profil megtekintése
Sorsolás
« Válasz #2 Dátum: 2011. június 21. - 20:31:36 »
0 Show voters
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.

Sorsolás
« Válasz #3 Dátum: 2011. június 21. - 20:33:56 »
0 Show voters
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!

Nem elérhető totar

  • 425
    • Profil megtekintése
Sorsolás
« Válasz #4 Dátum: 2011. június 21. - 20:35:21 »
0 Show voters
uy ahogy mambo mondja
uyg értem :D

Sorsolás
« Válasz #5 Dátum: 2011. június 21. - 20:37:02 »
0 Show voters
é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

Nem elérhető totar

  • 425
    • Profil megtekintése
Sorsolás
« Válasz #6 Dátum: 2011. június 21. - 21:15:45 »
0 Show voters
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!!!

Sorsolás
« Válasz #7 Dátum: 2011. június 21. - 21:55:07 »
0 Show voters
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?

Sorsolás
« Válasz #8 Dátum: 2011. június 21. - 22:36:17 »
0 Show voters
é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

Sorsolás
« Válasz #9 Dátum: 2011. június 21. - 23:16:34 »
0 Show voters
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)\".
« Utoljára szerkesztve: 2011. június 21. - 23:58:46 írta Zsolesszka »

Nem elérhető totar

  • 425
    • Profil megtekintése
Sorsolás
« Válasz #10 Dátum: 2011. június 22. - 06:58:01 »
0 Show voters
Akkor most hogy a  helyes?
help pls

Nem elérhető Stray

  • 617
    • Profil megtekintése
Sorsolás
« Válasz #11 Dátum: 2011. június 22. - 08:52:55 »
0 Show voters
Arnold az úgy nem minden esetben lesz jó.
Tessék inkább használd ezt.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal