draw vote

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
addinol
Jau po truputį tampa savu
Posts: 144
Joined: 2010 Sep 05 15:20
Skype: kasparas94

draw vote

Post by addinol »

Padariau pluginą, jog žmonės galėtų balsuoti mappradžioje roundtime:
  • 1. 1:00
    2. 1:25
    3. 1:45
    4. 2:00
    5. 2:25
    6. 2:50
Ir kas tada jei pasirinkimas 3 (1:45) surinks 5 balsus ir pasirinkimas 4 (2:00) surinks taipogi 5 balsus ???
Ir kiti galimi atvejai ... kas tada ???

Kaip padaryti jog gautu 2 daugiausia balsų gavusius pasirinkimus ir išsirinktų vieną iš jų.

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: draw vote

Post by aaarnas »

Random. Daugiau nieko nelieka.

Čia ant greičio sugalvojau. Tikiu, kad galima padaryti daug paprasčiau:

Code: Select all

 balsai[0] = 0balsai[1] = 5balsai[2] = 1balsai[3] = 5balsai[4] = 5    // Gaunam max ir keli su vienodais balsu skaiciais new maksimalus if(balsai[0] > maksimalus) maksimalus = balsai[0]if(balsai[1] > maksimalus) maksimalus = balsai[1]if(balsai[2] > maksimalus) maksimalus = balsai[2]if(balsai[3] > maksimalus) maksimalus = balsai[3]if(balsai[4] > maksimalus) maksimalus = balsai[4] new vienodi[5], skaiciusif(balsai[0] == maksimalus) { vienodi[0] = true; skaicius++; }if(balsai[1] == maksimalus) { vienodi[1] = true; skaicius++; }if(balsai[2] == maksimalus) { vienodi[2] = true; skaicius++; }if(balsai[3] == maksimalus) { vienodi[3] = true; skaicius++; }if(balsai[4] == maksimalus) { vienodi[4] = true; skaicius++; } // Tikrinam ir atrenkam atsitiktini punktaif(skaicius > 1) {    for(new i; i<=4; i++) {                if(vienodi[i] && random_num(0, 2) == 1) {                        client_print(id, print_chat, "Isrinktas punktas nr: %d. Balsu skaicius: %d", vienodi[i]+1, maksimalus)            break;        }    }}else { // Parodom kuris punktas pasirinktas    for(new i; i<=4; i++) {                if(vienodi[i]) {                        client_print(id, print_chat, "Isrinktas punktas nr: %d. Balsu skaicius: %d", vienodi[i]+1, maksimalus)            break;        }    }} 
Palikau CS pasaulį ;/ . Nebepasiekiamas.

addinol
Jau po truputį tampa savu
Posts: 144
Joined: 2010 Sep 05 15:20
Skype: kasparas94

Re: draw vote

Post by addinol »

Ką tiksliau tas break padaro ?

Code: Select all

 if(vienodi[i] && random_num(0, 2) == 1) {         client_print(id, print_chat, "Isrinktas punktas nr: %d. Balsu skaicius: %d", vienodi[i]+1, maksimalus)         break;         }
Ir kaip patikrinti kokie punktai buvo, nes kiekvienas punktas turi skirtingus nustatymus ;/

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: draw vote

Post by aaarnas »

break visiškai nutraukia ciklą.
Kaip tai kokie punktai buvo?

Beje sugalvojau žymiai paprasčiau kaip padaryti. Maksimalų skaičiuoti tiesiog balsavimų skaičiavimo funkcijoje. Na čia su skriptu niekaip neparodysiu. Reikia visą pluginą padaryti.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

addinol
Jau po truputį tampa savu
Posts: 144
Joined: 2010 Sep 05 15:20
Skype: kasparas94

Re: draw vote

Post by addinol »

Sakykim, kokie tie maksimalus didžiausi buvo ir iš jų išrinko kokį vieną. kai su random_num ir else jei nepavyko, tai iš kur žinoti kuris buvo parinktas, ta prasme balsai[0] ar balsai[1] ar balsai[2] ar balsai[3] ar balsai[4] ...

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: draw vote

Post by aaarnas »

i raidė.

Code: Select all

if(vienodi[i] && random_num(0, 2) == 1) {         client_print(id, print_chat, "Isrinktas punktas nr: %d. Balsu skaicius: %d", vienodi[i]+1, maksimalus)         balsai[i] // Tavo pasirikntasis         break;         } 
Bet sakau, galima žymiai paprasčiau padaryti. Štai kaip reikia. Tiesiog ten kur skaičiuojami balsai (vote handle funcijoje) daryti kažką tokio:

Code: Select all

 new g_isrinktasis_punktas // Globalus kintamasis kur saugoma išrinktasis punktasnew g_maksimalus // Globalus kintamasis kur saugoma maksimalus balsų skaičiusnew balsai[6] // Globalus kintamasis kur saugomi balsų skaičiai vote_handle(menu_punktas) {    switch(menu_punktas) {        case 0: {        balsai[0]++        if(g_maksimalus <= balsai[0]) {                        g_isrinktasis_punktas = 0            g_maksimalus = balsai[0]        }    }    case 1: {        balsai[1]++        if(g_maksimalus <= balsai[1]) {                        g_isrinktasis_punktas = 1            g_maksimalus = balsai[1]        }    }    case 2: {        balsai[2]++        if(g_maksimalus <= balsai[2]) {                        g_isrinktasis_punktas = 2            g_maksimalus = balsai[2]        }    }    ... // Taip toliau}
Beje prieš kiekvieną balsavimą nepamiršk išvalyti visų globalių kintamųjų, nebent tas balsavimas tik kartą žemėlapyje vyks.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

addinol
Jau po truputį tampa savu
Posts: 144
Joined: 2010 Sep 05 15:20
Skype: kasparas94

Re: draw vote

Post by addinol »

o tai kaip toliau, kaip tikrinti ar yra vienodu ?

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: draw vote

Post by aaarnas »

Nereikia. Viskas jau bus sutvarkyta.
g_isrinktas_punktas tai sistemos pagal balsus atrinktas daugiausiai balsų surinktas pinktas. Bus parinktas paskutinis paspaustas, jei jis bus didžiausias.
g_maksimalus tai daugiausiai surinkta balsų už vieną balsavimą.

Kad sužinoti kuris punktas išrinktas tai:
balsai[g_isrinktas_punktas]
Palikau CS pasaulį ;/ . Nebepasiekiamas.

Post Reply

Who is online

Users browsing this forum: No registered users and 9 guests