Szerző Téma: Random választás hiba  (Megtekintve 604 alkalommal)

Random választás hiba
« Dátum: 2013. Október 12. - 08:25:37 »
0 Show voters
Hali.
Egy timerbe beraktam már függvényt(stock-ost), amibõl random ki kéne választania egyet a 20-ból.
Az a gond, hogy nem egyet választ ki, hanem tovább megy és mindig újra és újra lefut, ettõl belaggol a szeró.
Mitõl lehet? Esetleg valahol
return

-t kell állítani?

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Random választás hiba
« Válasz #1 Dátum: 2013. Október 12. - 08:32:31 »
0 Show voters
Amit írtál PÜ-t benne a nem publikálandó kódoddal, szerintem eléggé kaotikus, és feleslegesen túlbonyolított. Na de sebaj. Szóval a problémára térve: a timerben a true logikai értéket állítsd át falsera, hogy ne ismétlõdjön a timer. Habár amit írtál nekem, abban timer sincs, szóval még mindig nincs meg az egész kód.
« Utoljára szerkesztve: 2013. Október 12. - 08:49:33 írta Dfoglalo »

Random választás hiba
« Válasz #2 Dátum: 2013. Október 12. - 08:48:07 »
0 Show voters
false-on van...

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Random választás hiba
« Válasz #3 Dátum: 2013. Október 12. - 09:00:46 »
+1 Show voters
Egy kis észrevétel a kódoddal kapcsolatban.
 
stock Mode()
{
new string2[128], name[MAX_PLAYER_NAME];
new playerid = RandPlayerID();
// ...

 
WTF? Ha szükséged van a playeridre, akkor
 
stock Mode(playerid)

 
és
 
Mode(playerid);

 
-vel hívod meg.


Itt pedig, ha random id kell:
 

// ...
GetPlayerName(random(MAX_PLAYERS), name, sizeof(name));
format(string2, sizeof(string2), \"%s az ..........\", name);
// ...
// A MAX_PLAYERS annyira legyen beállítva, ahány slotos a szerver!

 
Ha több helyre kell az az ID:
 
// ...
new RandomID = random(MAX_PLAYERS);
[code=pawn]GetPlayerName(RandomID, name, sizeof(name));
// ...

 
Azonban még így is lehet olyan játékos kiválasztva, aki nem online a szerveren. Erre ajánlanám az
 
IsPlayerConnected(playerid);

 
függvényt.


Visszatérési érték (return)
 
Idézetet írta: sticky2 date=1381559137\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"43579\" data-ipsquote-contentclass=\"forums_Topic

return

 

nem feltétlenül szükséges, de ha a függvénnyel egy értéket szeretnél visszakapni, akkor pl.
 
      // ...
      new Ertek = random(20);
      return Ertek;
}

 
Vagy pl. egy üzenetet:
 
      // ...
      return SendClientMessage(playerid, COLOR, \"Visszatérés\");
}

 
Vagy ha logikai értékkel térnél vissza
 
      // ...
      return 1; // 0/1, azaz false/true
}

 
Õszintén szólva nem hiszem, hogy a megoldás kulcsa a visszatérési értékben lenne elrejtve. A függvények meghívását pedig még mindig nem láttam.


Amiket leírtam, azokat szerintem javítsd! Ja és azt hiszem megvan a megoldás:
 
A függvényeden belül van egy ilyened:
 
for(new i; i<MAX_PLAYERS; i++) {

 
Ez minek? Sehol sem használod fel, csupán 500-szor végrehajtja az ott megadott parancsokat. (Azért 500-szor, mert gondolom nem definiáltad a te szerverednek megfelelõ slot számot a MAX_PLAYERS-re, ezt viszont sürgõsen tedd meg!) Ja és ezt vedd ki, mert nem kell oda, és ezért \"játssza le\" a dolgokat rengetegszer (valószínûleg)!
« Utoljára szerkesztve: 2013. Október 12. - 09:04:28 írta Dfoglalo »

Random választás hiba
« Válasz #4 Dátum: 2013. Október 12. - 09:13:02 »
0 Show voters
Jó hosszú leírás :D
Köszönöm szépen :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal