-
Sziasztok!
Van egy random kérdés választós scriptem, ami textdrawra adja ki a random kiválasztott szöveget:
SetTimerEx(\"testtimer\", 3000, false, \"i\", playerid);
new rand1 = random(sizeof(Kerdesek));
switch(rand1)
{
case 0: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 1) return ask1[playerid] = 1;
case 1: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 2) return ask1[playerid] = 2;
case 2: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 3) return ask1[playerid] = 3;
case 3: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 4) return ask1[playerid] = 4;
case 4: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 5) return ask1[playerid] = 5;
case 5: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 6) return ask1[playerid] = 6;
case 6: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 7) return ask1[playerid] = 7;
case 7: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 8) return ask1[playerid] = 8;
case 8: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 9) return ask1[playerid] = 9;
case 9: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 10) return ask1[playerid] = 10;
case 10: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 11) return ask1[playerid] = 11;
case 11: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 12) return ask1[playerid] = 12;
case 12: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 13) return ask1[playerid] = 13;
case 13: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 14) return ask1[playerid] = 14;
case 14: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 15) return ask1[playerid] = 15;
case 15: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 16) return ask1[playerid] = 16;
case 16: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 17) return ask1[playerid] = 17;
case 17: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 18) return ask1[playerid] = 18;
case 18: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 19) return ask1[playerid] = 19;
case 19: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 20) return ask1[playerid] = 20;
case 20: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 21) return ask1[playerid] = 21;
case 21: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 22) return ask1[playerid] = 22;
case 22: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 23) return ask1[playerid] = 23;
case 23: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 24) return ask1[playerid] = 24;
case 24: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 25) return ask1[playerid] = 25;
case 25: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 26) return ask1[playerid] = 26;
case 26: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 27) return ask1[playerid] = 27;
case 27: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 28) return ask1[playerid] = 28;
case 28: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 29) return ask1[playerid] = 29;
case 29: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 30) return ask1[playerid] = 30;
case 30: if(ask2[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 31) return ask1[playerid] = 31;
}
public testtimer(playerid)
{
new testestring1[150];
format(testestring1, sizeof(testestring1), \"~y~K¾rd¾s 1:~w~ %s\", Kerdesek[ask1[playerid]][1]);
TextDrawSetString(Text:Textdraw88[playerid], testestring1);
}
A probléma annyi, hogy módosítja a textdrawot, de nem a szövegre, hanem mintha nem lenne ott semmi. Mi lehet a probléma?
-
Valószínû ez nem kell oda mivel az egész karakterláncot szeretnéd megjeleníteni nem egy betût.
Kerdesek[ask1[playerid]][1]
Ui.:
De ez csak tipp mivel nem látom a kérdésekkel létrehozott tömböt.
-
Az [1] azt jelzi, hogy az elsõt használja, azaz a szöveget, mivel így épül fel(igaz/hamis állítás és így akarom hozzá rendelni a választ, hogy késõbb tudjam használni(nem tudom hogy így jó lesz-e, javíts ki ha nem)):
new Kerdesek[][][] = {
{\"A szerveren megengedett az MG\", false},
{...}
};
-
Az elsõ tartalmazza a szöveget amit nullával kell jelölni, a második a megoldást amit egyel (1).
Kerdesek[ ask1[playerid] ][ 0 ]
-
Nagyon köszönöm! Végre kiírja. Most az elsõ üzenet mindig random úgy ahogy annak történnie is kell, viszont a többi 7 mindig ugyanazt az elsõ üzenetet adja ki. Itt egy példa, ez a 2. üzenet:
new rand2 = random(sizeof(Kerdesek));
switch(rand2)
{
case 0: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 1) return ask2[playerid] = 1;
case 1: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 2) return ask2[playerid] = 2;
case 2: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 3) return ask2[playerid] = 3;
case 3: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 4) return ask2[playerid] = 4;
case 4: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 5) return ask2[playerid] = 5;
case 5: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 6) return ask2[playerid] = 6;
case 6: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 7) return ask2[playerid] = 7;
case 7: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 8) return ask2[playerid] = 8;
case 8: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 9) return ask2[playerid] = 9;
case 9: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 10) return ask2[playerid] = 10;
case 10: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 11) return ask2[playerid] = 11;
case 11: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 12) return ask2[playerid] = 12;
case 12: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 13) return ask2[playerid] = 13;
case 13: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 14) return ask2[playerid] = 14;
case 14: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 15) return ask2[playerid] = 15;
case 15: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 16) return ask2[playerid] = 16;
case 16: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 17) return ask2[playerid] = 17;
case 17: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 18) return ask2[playerid] = 18;
case 18: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 19) return ask2[playerid] = 19;
case 19: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 20) return ask2[playerid] = 20;
case 20: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 21) return ask2[playerid] = 21;
case 21: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 22) return ask2[playerid] = 22;
case 22: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 23) return ask2[playerid] = 23;
case 23: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 24) return ask2[playerid] = 24;
case 24: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 25) return ask2[playerid] = 25;
case 25: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 26) return ask2[playerid] = 26;
case 26: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 27) return ask2[playerid] = 27;
case 27: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 28) return ask2[playerid] = 28;
case 28: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 29) return ask2[playerid] = 29;
case 29: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 30) return ask2[playerid] = 30;
case 30: if(ask1[playerid] || ask3[playerid] || ask4[playerid] || ask5[playerid] || ask6[playerid] || ask7[playerid] || ask8[playerid] != 31) return ask2[playerid] = 31;
}
-
Nem értem, mi ez a sok változó ask1, ask2, ask3 ... ?
Mit szeretnél létrehozni, milyen második kérdés?
-
8 változót hoztam létre(ask1, ask2...), mivel 8 kérdést szeretnék csinálni és mindegyiket az elõre leírt kérdésekbõl véletlenszerûen megadni.
-
Akkor gyakorlatilag egy olyanra lenne szükséged hogy 8 darab random kérdést adjon a játékosnak, ismétlõdés nélkül? ( ne legyen még egyszer egy olyan kérdés ami már volt.
Ami azt jelenti hogy 8 darab random érték kell számodra ami nem egyezik, hát van egy eps szkriptjében fellelt kód amit feltudnál használni erre a célra, mellesleg a poker szkriptben is alkalmaztam mivel egyszerûbb annál amit használtam.
stock
Randomvalue(array[], size = sizeof array)
{
new
bool:e[24] = { false, ... }; // A 24-esek helyére a létrehozott kérdések számát kell megadnod.
for(new p = 0; p < size; p++)
{
do
array[p] = random(24);
while(e[array[p]]);
e[ array[p] ] = true;
}
}
Majd kell egy 8-as méretû változó melyet elküldesz ennek a funkciónak. (persze minden játékosnak külön)
new
randkerdes[MAX_PLAYERS][8];
Randomvalue(randkerdes[playerid], 8);
Így kapni fogsz most a példában szereplõ érték szerint 8 darab -1 és 24 közé esõ számot, vagyis 0-tól 23-ig, azaz 24 darab érték közül 8-at. :D :D
Ezt tudod felhasználni a kérdések megjelenítésére.
Ha ezen változót a kérdés megválaszolása után megváltoztatod mondjuk -1-re azt már újra ellenõrizheted -1-e az értéke és ha igen nem jeleníted meg a kérdést vagy megválaszoltnak tekinted sõt példaként lehetne -1 a megfelelõ válasz -2 a nem megfelelõ válasz érték, de ez már rajtad múlik.
-
Hú rendben köszönöm, megpróbálom megcsinálni:D
E: most ebben azt nem értem, hogy hol fogom hozzárendelni a szöveget, és melyik változót kell használnom, hogy a játékosnak meg is jelenítsem
-
Létrehoztál egy változót minden játékosnak, mint mondjuk amit írtam feljebb, azt elküldted a random eljárásnak és ezt használod fel a kérdések megjelenítésére.
new
randkerdes[MAX_PLAYERS][8];
Randomvalue(randkerdes[playerid], 8);
Az meg a te kérdéseket tartalmazó változódba beillesztve így néz ki:
Kerdesek[randkerdes[playerid][0]][0];
De kihelyezem neked hogy jobban átlásd:
new rand = randkerdes[playerid][0];
printf(\"%s\", Kerdesek[rand][0]);
És így végig mind a nyolc darabot, persze majd sorban egymás után:
rand = randkerdes[playerid][1]; printf(\"%s\", Kerdesek[rand][0]);
rand = randkerdes[playerid][2]; printf(\"%s\", Kerdesek[rand][0]);
...
rand = randkerdes[playerid][7]; printf(\"%s\", Kerdesek[rand][0]);
-
format(testestring1, sizeof(testestring1), \"~y~K¾rd¾s 1:~w~ %s\", Kerdesek[randkerdes[playerid][0]][0]);
format(testestring2, sizeof(testestring2), \"~y~K¾rd¾s 2:~w~ %s\", Kerdesek[randkerdes[playerid][1]][0]);
format(testestring3, sizeof(testestring3), \"~y~K¾rd¾s 3:~w~ %s\", Kerdesek[randkerdes[playerid][2]][0]);
format(testestring4, sizeof(testestring4), \"~y~K¾rd¾s 4:~w~ %s\", Kerdesek[randkerdes[playerid][3]][0]);
format(testestring5, sizeof(testestring5), \"~y~K¾rd¾s 5:~w~ %s\", Kerdesek[randkerdes[playerid][4]][0]);
format(testestring6, sizeof(testestring6), \"~y~K¾rd¾s 6:~w~ %s\", Kerdesek[randkerdes[playerid][5]][0]);
format(testestring7, sizeof(testestring7), \"~y~K¾rd¾s 7:~w~ %s\", Kerdesek[randkerdes[playerid][6]][0]);
format(testestring8, sizeof(testestring8), \"~y~K¾rd¾s 8:~w~ %s\", Kerdesek[randkerdes[playerid][7]][0]);
Ezt csináltam és mindegyik kérdésnek a legelsõt hozta ki a 31-bõl :\'( :@ :mistrust:
E: kihagytam egy részt, msotmár mûködik:D Nagyon köszönöm, megy a +, nagyon sokat segítettél:)