SaW.Mania Posted August 14, 2016 Posted August 14, 2016 (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 August 14, 2016 by Kannon
CrImA Posted August 16, 2016 Posted August 16, 2016 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 } }
SaW.Mania Posted August 17, 2016 Author Posted August 17, 2016 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.
Alynush02 Posted August 17, 2016 Posted August 17, 2016 (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 August 17, 2016 by Un4m3d
Zooky. Posted August 17, 2016 Posted August 17, 2016 Loop-ul 'for' nu se opreste la primul id gasit daca nu folosesti 'break'. De asta se numeste 'loop'.
L0K3D. Posted August 17, 2016 Posted August 17, 2016 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.
VoDcKa Posted August 17, 2016 Posted August 17, 2016 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
L0K3D. Posted August 18, 2016 Posted August 18, 2016 Poate folosi bucla for Poate, dar tot foreach-ul e mai rapid.
VoDcKa Posted August 18, 2016 Posted August 18, 2016 Poate, dar tot foreach-ul e mai rapid. Ce foloseste for, ce foloseste foreach tot la fel de rapide sunt.
MasodionSparge Posted August 20, 2016 Posted August 20, 2016 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! 2
Alynush02 Posted August 21, 2016 Posted August 21, 2016 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..
MasodionSparge Posted August 21, 2016 Posted August 21, 2016 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 3
SaW.Mania Posted August 21, 2016 Author Posted August 21, 2016 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
L0K3D. Posted August 21, 2016 Posted August 21, 2016 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.
MasodionSparge Posted August 21, 2016 Posted August 21, 2016 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.
Recommended Posts