Portal SAMP
[Tutorial] OTIMIZAÇÕES DE LOOPINGS - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Guias e Tutoriais (https://portalsamp.com/forumdisplay.php?fid=7)
+--- Tópico: [Tutorial] OTIMIZAÇÕES DE LOOPINGS (/showthread.php?tid=1308)



OTIMIZAÇÕES DE LOOPINGS - nilat - 23/06/2021

Recentemente percebi que não existem bons tópicos de dicas para otimizações na linguagem Pawn.
Decidi criar esse tópico, para que quem souber, possa responder aqui com a sua contribuição.


Bom, lá vai a minha: Otimização de Loop's

Código:
// A INCLUDE a_samp.inc NATURALMENTE DEFINE QUE O MAXIMO DE JOGADORES QUE O SAMP SUPORTA É 1000(MIL) SLOTS
// E SE VOCÊ NÃO REDEFINIR O MAXIMO DE PLAYERS OU USAR OUTRA FORMA DE LOOP, EM GRANDE ESCALA O SERVIDOR IRÁ LAGAR E DAR RT.

//VAMOS LÁ
#include <a_samp> //include base
#include <foreach> //include para loops/listas


//INICIALMENTE, PARA CRIAR UM LOOP PARA TODOS OS JORADORES, FAZEMOS DESSA FORMA:
for(new i; i < MAX_PLAYERS; i++) //Esse loop é executado 1000 vezes, em todos os slots(Mesmo que o slot não tenha ninguém conectado)
{
    SetPlayerHealth(i, 100.0); //Essa função seta para todos os jogadores a vida para 100(Máximo).
}

//A INCLUDE FOREACH FAZ ATÉ QUE MELHOR, ELA APENAS EXECUTA EM JOGADORES CONECTADOS:
foreach(new i: Players)//Se tiver 100 slots, mas 30 jogadores conectados, ele só ira executar 30x(Nos Conectados)
{
    SetPlayerHealth(i, 100.0);//Essa função seta para todos os jogadores a vida para 100(Máximo).
}


[color=#333333][size=small][font=Monaco, Consolas, Courier, monospace]//Créditos: nilat_[/font][/size][/color]


Considerações Importantes:
- O Foreach usa a include YSI do Y_Less, caso não tenha: Link
- Include Foreach: Link


RE: OTIMIZAÇÕES DE LOOPINGS - xbruno1000x - 23/06/2021

Bom tópico! É básico para muita gente, mas tenho certeza que existem pessoas que não sabem isso.

É possível também utilizar a foreach standalone(foreach que só necessita ela mesma).
Link abaixo:
https://github.com/karimcambridge/samp-foreach

(Movi o tópico para guias e tutoriais pois estava em área incorreta)


RE: OTIMIZAÇÕES DE LOOPINGS - LeleziiN - 23/06/2021

(23/06/2021 11:56)nilat Escreveu: Recentemente percebi que não existem bons tópicos de dicas para otimizações na linguagem Pawn.
Decidi criar esse tópico, para que quem souber, possa responder aqui com a sua contribuição.


Bom, lá vai a minha: Otimização de Loop's

Código:
// A INCLUDE a_samp.inc NATURALMENTE DEFINE QUE O MAXIMO DE JOGADORES QUE O SAMP SUPORTA É 1000(MIL) SLOTS
// E SE VOCÊ NÃO REDEFINIR O MAXIMO DE PLAYERS OU USAR OUTRA FORMA DE LOOP, EM GRANDE ESCALA O SERVIDOR IRÁ LAGAR E DAR RT.

//VAMOS LÁ
#include <a_samp> //include base
#include <foreach> //include para loops/listas


//INICIALMENTE, PARA CRIAR UM LOOP PARA TODOS OS JORADORES, FAZEMOS DESSA FORMA:
for(new i; i < MAX_PLAYERS; i++) //Esse loop é executado 1000 vezes, em todos os slots(Mesmo que o slot não tenha ninguém conectado)
{
    SetPlayerHealth(i, 100.0); //Essa função seta para todos os jogadores a vida para 100(Máximo).
}

//A INCLUDE FOREACH FAZ ATÉ QUE MELHOR, ELA APENAS EXECUTA EM JOGADORES CONECTADOS:
foreach(new i: Players)//Se tiver 100 slots, mas 30 jogadores conectados, ele só ira executar 30x(Nos Conectados)
{
    SetPlayerHealth(i, 100.0);//Essa função seta para todos os jogadores a vida para 100(Máximo).
}


[color=#333333][size=small][font=Monaco, Consolas, Courier, monospace]//Créditos: nilat_[/font][/size][/color]


Considerações Importantes:
- O Foreach usa a include YSI do Y_Less, caso não tenha: Link
- Include Foreach: Link

Muito bom tutorial mano


RE: OTIMIZAÇÕES DE LOOPINGS - Sysner - 30/09/2021

Muito bom