31/05/2021 17:44
(Esta mensagem foi modificada pela última vez a: 31/05/2021 17:45 por robertjwx.)
Existe alguma forma no pawn de passar uma função por parametro?
Eu estou com um problema de performace nessa função:
Isso porque o meu #define MAX_BIZZ é 5000
Então o loop é muito grande...
Pra resolver isso seria bom se desse pra passar uma função dentro de outra, tipo:
Mas parece que não da...
Ou da?
E agora, o que eu faço?
Eu estou com um problema de performace nessa função:
Código:
public AtualizarRoubos() {
// atualizar roubos
for(new bizzid = 1; bizzid < MAX_BIZZ; bizzid++) {
BizzInfo[bizzid][rexaustedrobbery] -= 5;
if(BizzInfo[bizzid][rexaustedrobbery] < 0) BizzInfo[bizzid][rexaustedrobbery] = 0;
}
}
Isso porque o meu #define MAX_BIZZ é 5000
Então o loop é muito grande...
Pra resolver isso seria bom se desse pra passar uma função dentro de outra, tipo:
Código:
forward LoopAllBizz(func);
forward ActionLoopRangeBizz(func, idStart, idEnd);
forward PrintBizzName(bizzid);
public LoopAllBizz(func) {
SetTimerEx("ActionLoopRangeBizz", 10, false, "iii", func, 1, 1000);
SetTimerEx("ActionLoopRangeBizz", 20, false, "iii", func, 1001, 2000);
SetTimerEx("ActionLoopRangeBizz", 30, false, "iii", func, 2001, 3000);
SetTimerEx("ActionLoopRangeBizz", 40, false, "iii", func, 3001, 4000);
SetTimerEx("ActionLoopRangeBizz", 50, false, "iii", func, 4001, 5000);
}
public ActionLoopRangeBizz(func, idStart, idEnd) {
for(new bizzid = idStart; bizzid <= idEnd; bizzid++) {
func();
}
}
function PrintBizzName(bizzid) {
print("[%i]: %s", bizzid, BizzInfo[bizzid][bizzName] )
}
CMD:test(playerid) {
LoopAllBizz(PrintBizzName(bizzid));
return true;
}
Mas parece que não da...
Ou da?
E agora, o que eu faço?