Szerző Téma: TextDrawSetString, timer, format()  (Megtekintve 1385 alkalommal)

TextDrawSetString, timer, format()
« Dátum: 2013. augusztus 26. - 11:48:14 »
0 Show voters
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?

TextDrawSetString, timer, format()
« Válasz #1 Dátum: 2013. augusztus 26. - 12:12:04 »
0 Show voters
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.

TextDrawSetString, timer, format()
« Válasz #2 Dátum: 2013. augusztus 26. - 12:23:16 »
0 Show voters
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},
        {...}
};
« Utoljára szerkesztve: 2013. augusztus 26. - 12:24:58 írta Extasy449 »

TextDrawSetString, timer, format()
« Válasz #3 Dátum: 2013. augusztus 26. - 13:26:11 »
0 Show voters
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 ]

TextDrawSetString, timer, format()
« Válasz #4 Dátum: 2013. augusztus 26. - 14:28:12 »
0 Show voters
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;
        }

TextDrawSetString, timer, format()
« Válasz #5 Dátum: 2013. augusztus 26. - 19:26:57 »
0 Show voters
Nem értem, mi ez a sok változó ask1, ask2, ask3 ... ?
Mit szeretnél létrehozni, milyen második kérdés?

TextDrawSetString, timer, format()
« Válasz #6 Dátum: 2013. augusztus 26. - 19:50:58 »
0 Show voters
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.

TextDrawSetString, timer, format()
« Válasz #7 Dátum: 2013. augusztus 26. - 23:35:22 »
+1 Show voters
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.

TextDrawSetString, timer, format()
« Válasz #8 Dátum: 2013. augusztus 27. - 11:39:19 »
0 Show voters
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
« Utoljára szerkesztve: 2013. augusztus 27. - 11:57:17 írta Extasy449 »

TextDrawSetString, timer, format()
« Válasz #9 Dátum: 2013. augusztus 27. - 17:59:41 »
+1 Show voters
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]);

TextDrawSetString, timer, format()
« Válasz #10 Dátum: 2013. augusztus 28. - 14:08:41 »
0 Show voters
       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:)
« Utoljára szerkesztve: 2013. augusztus 28. - 17:04:28 írta Extasy449 »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal