15.08.2010, 22:49
(
Последний раз редактировалось ipsBruno; 25.08.2010 в 22:45.
)
[TUT] Criando Simples Streamer
Olб a Todos Primeiramente vou fazer um Breve introduзгo de como Criar um Simples Sistema de Streamer neste Tutorial vamos nos Basear em Objetos espero que gostem..
Resumindo:
Streamer mais conhecido como Stream sгo o que colocam em Jogos normalmente usados para Carregarem quando um player chega perto do Local para pesar Menos o Jogo e nгo ter que Rodar vбrios Objetos de uma Ъnica vez, entгo aparecendo o que foi usado no Streamer..
Porque:
Bom Atualmente a Versгo mais usada 0.3a tem um Limite de Objetos de '200' esse Limite nгo й bom para quem tem Servidor que Ocupam bastante Objetos,Arenas,Stunts ou atй Drift e outros.
Por Padrгo esses objetos Sгo criados idependente se O Player estб em Los Santos e O Objeto esta em San Fiero, por isso foi criado e tiveram e idйia de criar o Streamer que й Praticamente vбrias Arrays Floats (Nъmeros Decimais) para Armazenar as Coordenadas dos Objetos,assim checando, quando o player chegasse perto de um Tal Ponto o Objeto й Criado,caso contrбrio destruido,assim nunca fazendo '200' objetos de uma vez sу, e sim Ultilizando a Tйcnica de Stream que eu Falei Acima..
Cуdigos:
Bom Primeiramente coloquem ao Topo de Seu Projeto:
pawn Код:
#define ATUALIZAR_OBJETOS 800
#define DISTANCIA 100 //-- Distancia para Cria-los
forward ChecarObjetos();
forward AtualizarObjetos();
ATUALIZAR_OBJETOS 800 -> Tempo para Atualizar & Checar Objetos (Milisegundos)
forward -> Definir Public Responsбvel pela Criaзгo dos Objetos
Agora Logo em OnFilterScriptInit/GameModeInit:
pawn Код:
SetTimer("ChecarObjetos",ATUALIZAR_OBJETOS,true);
SetTimer -> Inicia Tempo para Atualizar & Checar Objetos (Milisegundos)
ChecarObjetos -> Public Responsбvel pela Criaзгo dos Objetos
true -> Indica que O Timer Deve se Repetir
ATUALIZAR_OBJETOS -> Indica que O Timer Deve repetir-se a cada 800 Seg (Definido Anteriormente)
Vamos Definir a Array do Objeto:
pawn Код:
new object;
Final de Seu Projeto:
pawn Код:
public AtualizarObjetos()
{
for(new all = 0; all <= MAX_PLAYERS; ++ all)
{
if(IsPlayerConnected(all))
{
if(PlayerToPoint(DISTANCIA,all,2001.195679,1547.113892,14.283400)) return object = CreatePlayerObject( all, 2587, 2001.195679, 1547.113892, 14.283400, 0, 0, 96 );
DestroyPlayerObject(all,object );
}
}
return 1;
}
pawn Код:
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}
stock PlayerToPoint = Essa funзгo serб a que calcularб a Distancia entre o Player e O Objeto
for(new all = 0;... Este Serб o Loop que pegara Todos o Nъmeros de Slots Possiveis
if(IsPlayerConnected(all)) = Essa funзгo verifica os Player conectados para nгo criar Objetos para Player Inexistente,Evitando de Lagar o Server..
if(PlayerToPoint(DISTANCIA,all,2001.195679,1547.11 3892,14.283400)) return object = CreatePlayerObject( all, 2587, 2001.195679, 1547.113892, 14.283400, 0, 0, 96 );
DestroyPlayerObject(all,object );
Esse Cуdigo verifica se o Player esta perto do Objeto,Caso estiver Perto Retorna Criando Objeto,Caso esta Longe Destroi Objeto..
FIM
Se ainda tiverem dъvidas de como Criar vбrios Objetos sem precisar tudo Isso,nгo excite em pedir