Jump to content

Recommended Posts

Posted (edited)

Salutare bugged, recent am incercat sa fac un sistem de helperi asemanator cu cel de pe bugged, insa am o intrebare.

 

Cum pot alege un helper random dintre cei care indeplinesc conditiile puse de mine. Nu vreau cu "foreach" pentru ca se opreste la primul id gasit si as vrea sa se aleaga dintre toti helperii. Am incercat sa fac ceva de genu:

http://pastebin.com/qtmCT74i

Insa intrebarea ajunge mereu la un id care nu e conectat pe server, de exemplu: sunt 2 playeri pe server si intrebarea ajunge la player-ul cu id 805.

 

Va rog sa ma ajutati.

Edited by Kannon
Posted

Daca ai explica mai bine ce ai vrea sa faci poate te-as putea ajuta.

 

Foloseste for, nu prea inteleg ce vrei sa faci dar ca sa verifici daca are helper prin for faci asa:

 

// Exemplu cu variabile de pe gm saints/bigzone:
for(new x = 1; x<=MAX_PLAYERS; x++){
       if(PlayerInfo[playerid][pHelper] >= 1){
             // INSTRUCTIUNILE TALE 
       }
}
 
Posted

Daca ai explica mai bine ce ai vrea sa faci poate te-as putea ajuta.

 

Foloseste for, nu prea inteleg ce vrei sa faci dar ca sa verifici daca are helper prin for faci asa:

 

// Exemplu cu variabile de pe gm saints/bigzone:
for(new x = 1; x<=MAX_PLAYERS; x++){
       if(PlayerInfo[playerid][pHelper] >= 1){
             // INSTRUCTIUNILE TALE 
       }
}
 
Vreau sa aleg un helper random dintre helperii online. Daca folosesc "for" codul se opreste la primul id gasit.
Posted (edited)

Vreau sa aleg un helper random dintre helperii online. Daca folosesc "for" codul se opreste la primul id gasit.

new hrandom = random(sizeof(WaitingList));

 

public WaitingList(playerid);

{

if(estehelper > 0)

{

//n-are intrebare

}

return 1;

}

te descurci.

Edited by Un4m3d
Posted

Loop-ul 'for' nu se opreste la primul id gasit daca nu folosesti 'break'. De asta se numeste 'loop'.

Posted

Vreau sa aleg un helper random dintre helperii online. Daca folosesc "for" codul se opreste la primul id gasit.

Nu vorbi prostii, nici daca folosesti bucla for, nici foreach-ul nu se opreste la primul player gasit. Aceste doua functii parcurg toti playerii online.

Posted

Nu vorbi prostii, nici daca folosesti bucla for, nici foreach-ul nu se opreste la primul player gasit. Aceste doua functii parcurg toti playerii online.

Poate folosi bucla for

Posted

stock trimiteintrebarea(playerid) // in playerid ai id-ul player-ului care a pus intrebarea

{

      new j = 0;

      new Helperi[MAX_PLAYERS];

      foreach(Player, i)

      {

            if(playerVariables[pHelperDuty] == 1) // pui conditiile tale ca helper-ul sa fie duty si sa nu aiba intrebare

            {

                   Helperi[j] = i;

                   j++;

            }

      }

      j--; // asta o faci pentru ca el isi mai pregateste un spatiu de care nu ai nevoie

      new a = random(j); // Si acum in Helperi[a] ai un id de helper (random) care indeplineste conditiile puse de tine si poti sa-i trimiti intrebarea

      return 1;

}

 

Sper ca ai inteles, bafta!

  • Upvote 2
Posted

stock trimiteintrebarea(playerid) // in playerid ai id-ul player-ului care a pus intrebarea

{

      new j = 0;

      new Helperi[MAX_PLAYERS];

      foreach(Player, i)

      {

            if(playerVariables[pHelperDuty] == 1) // pui conditiile tale ca helper-ul sa fie duty si sa nu aiba intrebare

            {

                   Helperi[j] = i;

                   j++;

            }

      }

      j--; // asta o faci pentru ca el isi mai pregateste un spatiu de care nu ai nevoie

      new a = random(j); // Si acum in Helperi[a] ai un id de helper (random) care indeplineste conditiile puse de tine si poti sa-i trimiti intrebarea

      return 1;

}

 

Sper ca ai inteles, bafta!

daca sunt conectati 1000 de jucatori, serverul o sa treaca prin 1000 de jucatori, si alege doar 3 helperi, e cv..

Posted

daca sunt conectati 1000 de jucatori, serverul o sa treaca prin 1000 de jucatori, si alege doar 3 helperi, e cv..

 

I-am dat o idee, poate sa-l optimizeze in cate feluri vrea el. Comentariul tau e foarte degeaba, in loc sa comentezi aiurea mai bine il ajuti. Tipic romanesc

  • Upvote 3
Posted

stock trimiteintrebarea(playerid) // in playerid ai id-ul player-ului care a pus intrebarea

{

      new j = 0;

      new Helperi[MAX_PLAYERS];

      foreach(Player, i)

      {

            if(playerVariables[pHelperDuty] == 1) // pui conditiile tale ca helper-ul sa fie duty si sa nu aiba intrebare

            {

                   Helperi[j] = i;

                   j++;

            }

      }

      j--; // asta o faci pentru ca el isi mai pregateste un spatiu de care nu ai nevoie

      new a = random(j); // Si acum in Helperi[a] ai un id de helper (random) care indeplineste conditiile puse de tine si poti sa-i trimiti intrebarea

      return 1;

}

 

Sper ca ai inteles, bafta!

Multumesc mult. Masodion e singurul care a inteles la ce ma refeream. +1

Posted

I-am dat o idee, poate sa-l optimizeze in cate feluri vrea el. Comentariul tau e foarte degeaba, in loc sa comentezi aiurea mai bine il ajuti. Tipic romanesc

Folosesti iteratori.

 

Multumesc mult. Masodion e singurul care a inteles la ce ma refeream. +1

Nu e singurul care a inteles, e singurul care ti-a dat mura-n gura.

Posted

Folosesti iteratori.

 

Nu e singurul care a inteles, e singurul care ti-a dat mura-n gura.

 

 

Exact, sunt mai multe feluri dar iteratorii sunt cei mai recomandati in situatia de fata. Adaugi helperii cand folosesc comanda /hduty si ii scoti cand ies din duty sau cand se deconecteaza de pe server si erau on-duty. Am zis sa nu ii dau chiar mura in gura, i-am explicat babeste o idee relativ usoara pe care el o poate transpune in ce mod vrea el ca sa aibe un gamemode bine optimizat.

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

moduri samp