09/03/2023 22:10
(09/03/2023 18:23)strelo Escreveu: Uma alternativa ao uso do timer congelante é o uso de threads para carregar os recursos do jogo em segundo plano, permitindo que o jogo continue a funcionar enquanto os recursos são carregados. Aqui está um exemplo de como isso pode ser:
Código:// Define uma variável global para controlar a thread
new g_ThreadRunning = false;
// Função da thread para carregar os recursos do jogo
forward thread_LoadResources();
// Função para mostrar a mensagem de carregamento na tela do jogador
forward ShowLoadingScreen(playerid);
public OnPlayerConnect(playerid)
{
// Inicia a thread para carregar os recursos do jogo
g_ThreadRunning = true;
thread thread_LoadResources();
}
public OnPlayerSpawn(playerid)
{
// Mostra a tela de carregamento enquanto a thread estiver em execução
while(g_ThreadRunning)
{
ShowLoadingScreen(playerid);
Sleep(1000);
}
}
public thread_LoadResources()
{
// Carrega os recursos do jogo aqui, por exemplo:
LoadMyTextures();
LoadMyModels();
LoadMySounds();
// Marca a thread como concluída
g_ThreadRunning = false;
}
public ShowLoadingScreen(playerid)
{
// Mostra a mensagem de carregamento na tela do jogador aqui, por exemplo:
SendClientMessage(playerid, 0xFFFFFFFF, "Carregando...");
}
Neste exemplo, a função thread_LoadResources() é chamada quando o jogador se conecta ao servidor, e carrega os recursos do jogo em segundo plano. Enquanto a thread estiver em execução, a variável g_ThreadRunning é definida como verdadeira e a função OnPlayerSpawn() é executada para mostrar a tela de carregamento para o jogador. A função ShowLoadingScreen() é chamada a cada segundo para atualizar a mensagem de carregamento na tela do jogador. Quando a thread de carregamento de recursos for concluída, a variável g_ThreadRunning é definida como falsa e a tela de carregamento é removida.
Espero que isso ajude a resolver o problema de carregamento em seu jogo. Se tiver alguma dúvida, sinta-se à vontade para perguntar!
Mas tipo, geralmente os interiores personalizados de objetos são no céu e muito distantes das cidades. Existe a possibilidade de carregar em segundo plano objetos streamer de longe? E caso seja possível, não causaria lag?
E outro detalhe, por eles serem no céu(interiores), se não carregar os objetos na hora, os jogadores caem e morrem. O tal do "limbo"