[Ajuda] Passar função por parametro - Versão de Impressão +- Portal SAMP (https://portalsamp.com) +-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5) +--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6) +--- Tópico: [Ajuda] Passar função por parametro (/showthread.php?tid=1244) |
Passar função por parametro - robertjwx - 31/05/2021 Existe alguma forma no pawn de passar uma função por parametro? Eu estou com um problema de performace nessa função: Código: public AtualizarRoubos() { 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); Mas parece que não da... Ou da? E agora, o que eu faço? RE: Passar função por parametro - xbruno1000x - 31/05/2021 Por que você precisa de 5000 negócios? Não há possibilidade de diminuir? RE: Passar função por parametro - ProKillerPa - 31/05/2021 Boa noite. Não entendi muito bem o que voce quis tentar demonstrar nesse seus código com o settimerex, porém faço da minha resposta a do bruno, diminuia o total de empresas. No seu caso o loop é o melhor jeito. Abraços RE: Passar função por parametro - xbruno1000x - 31/05/2021 (31/05/2021 18:20)ProKillerPa Escreveu: Boa noite. Não entendi muito bem o que voce quis tentar demonstrar nesse seus código com o settimerex, porém faço da minha resposta a do bruno, diminuia o total de empresas. No seu caso o loop é o melhor jeito. Ele tentou dividir um looping de 5000 em 5 loopings de 1000. Mas ainda assim eu acho muitos negócios... se levarmos em consideração que um servidor samp pode comportar no máximo 1000 players, cada um player poderia ter 5 negócios. RE: Passar função por parametro - ProKillerPa - 31/05/2021 Sim, com certeza, 5000 negocios é absurdo.. Mas enfim, faça o loop como voce já estava fazendo, no seu caso não há uma solução melhor. Abraços RE: Passar função por parametro - ipsLuan - 31/05/2021 Você quer atualizar o roubo de uma propriedade específica? Se sim, você pode fazer dessa maneira: Código PHP: public AtualizarRoubos(prop) { Sendo a variável 'prop' o ID da propriedade que está sendo roubado. RE: Passar função por parametro - Luiz - 01/06/2021 Recomendo que use foreach e Iterator. Código PHP: new Iterator:Empresas<MAX_EMPRESAS>; Código PHP: Iter_Add(Empresas, i); // Substitua i pelo ID da empresa Código PHP: foreach(new i: Empresas) RE: Passar função por parametro - robertjwx - 01/06/2021 (01/06/2021 08:42)Luiz Escreveu: Recomendo que use foreach e Iterator. É uma boa ideia, mas no meu caso não serve, pq essas 5000 já estão setadas e eu pretendo setar ainda mais... Precisava de alguma forma optimizar esse loop... Pra cada entrada de loja no mapa do GTA tem uma empresa setada por causa da proposta do meu servidor... Eu ainda vou setar LS e SF eu só setei LV... --- E respondendo aos outros comentários, não.. A solução não pode ser uma defeature Esse sistema de empresa faz parte da proposta do servidor Se fosse em outra linguagem teria como passar a função por parametro e dividir o loop, mas o pawn não colabora... Alguém tem alguma ideia de como optimizar isso? RE: Passar função por parametro - xbruno1000x - 01/06/2021 (01/06/2021 15:17)robertjwx Escreveu: É uma boa ideia, mas no meu caso não serve, pq essas 5000 já estão setadas e eu pretendo setar ainda mais... Já trabalhei em um GM que dividia as empresas por tipos e isso talvez te ajude. Ele funcionava basicamente duplicando os sistema base de empresas. Então havia os Bizz[ID][Var], Fazenda[ID][Var], etc. Talvez dividindo o sistema por algum critério criativo você consegue diluir o tamanho de 1 looping em vários. Minha visão sobre sua ideia: O SA-MP foi criado para rodar em máquinas 32 bits, e como todos sabem, 32 bits limita muito a capacidade de processamento da máquina. Para otimizar esse sistema terá que pensar em soluções criativas que ainda não foram pensadas no SA-MP. (E que podem nunca existir...) Boa sorte com isso. |