Informações
Olá, Estou postando este tópico por que estava sem nada para fazer e resolvi postar este tutorial como fazer um portao eletronico, acompanhe os passos!

• (1º)Primeiro Passo:▼
Você deverá ter um programa que edita cenários do GTA SA, Após baixar o MTA, abra ele e clique em map editor.Faça um portao, salve e converta.

• (2º)Segundo Passo:▼
Agora abra seu pawn.
Vá no topo do GameMode e coloque
:



//NO TOPO DO GAMEMODE
new NomedoPortao;
forward PortaoAndando();

• (3º)Terceiro Passo:▼
Agora ponha um:



//=====================// Portões //=============================//
NomedoPortao = CreateObject(ID, x, y, z, facinganglex, facingangley, facinganglez);
//=====================// Fim Portões //==============================//



• (4º)Quarto Passo:▼
Vá na public OnPlayerCommandText e Coloque o codigo:



if(strcmp(cmd, "/abrirportao", true) == 0)
    {
    if (PlayerToPoint(15.0, playerid, -----, ------, ------)) { //No lugar dos ------ voce coloca as cordenadas que o player deverá estar para o portao se mover
    MoveObject( NomedoPortao, -----, ------, ------,3);//No Lugar dos ----- voce coloca as cordenadas que o portao vai se mover
    SetTimer("PortaoAndando", 5000, false);
    }
    return 1;
    }


• (5º)Quinto Passo:▼
Agora para finalizar crie uma public do Settimer:


}
public PortaoAndando()
{
    MoveObject(NomedoPortao,-----, -----, -------, 2);//No Lugar dos ---- voce coloca as cordenadas que o portao foi criado!
    return 1;
}

--------------------------------------FIM DO TUTORIAL-------------------------------

Feito Por:bruno-style

Olá galera, tudo bem? Bom, esse é o meu primeiro tutorial em nível iniciante, isso mesmo, iniciante porque pra fazer isso é a coisa mais simples que tem no pawno, porém pouca gente desconhece. Vou ensinar á vocês como criar modificar o Radar do GTA, fazendo sumir os pontos de X pessoa e aparecer para Y pessoa. Parece complicado, mas não é.

Primeiramente, a gente utiliza um Timer de checagem + uma public.

//OnGameModeInit:
SetTimer("AtualizarRadar",2000,1);


forward AtualizarRadar();
public AtualizarRadar()
{
    return 1;
}

Bom, definimos a public com um tempo de 2 segundos de checagem. Você pode alterar o valor, pra 1000 ou mais se quiser...

Agora as funções que a gente utiliza nessa coisinha de Deus:

- Uma função de checagem de Distância de X player a Y player.
- Utilizamos o valor do SA-MP chamado SetPlayerMarkerForPlayer(playerid,targetid,color);

Bom, vamos lá?

public AtualizarRadar()
{
    for ( new i = 0; i < MAX_PLAYERS; i ++ )
    {
        if(IsPlayerConnected(i))
        {
            new Float:playerPos[3];
            new Float:targetPos[3];
            GetPlayerPos(i,playerPos[0],playerPos[1],playerPos[2]);


            for ( new j = 0; j < MAX_PLAYERS; j ++ )
            {
                if(IsPlayerConnected(j) && j != i)
                {
                    GetPlayerPos(j,targetPos[0],targetPos[1],targetPos[2]);
                    new distancia;
               
                    //Fórmula da Distância entre 2 X.
                    distancia = floatround(floatsqroot(floatpower(floatabs(floatsub(playerPos[0],targetPos[0])),2)+floatpower(floatabs(floatsub(playerPos[1],targetPos[1])),2)));


                    if(distancia <= 200) // Distancia é menor que 200 metros, vamos fazer o jogador sumir no mapa do outro
                    {
                        SetPlayerMarkerForPlayer(i,j,(GetPlayerColor(j) & 0xFFFFFF00));
                    }
                    else // Caso não, ele aparece no mapa
                    {
                        SetPlayerMarkerForPlayer(i,j,GetPlayerColor(j));
                    }
                }
            }
        }
    }
    return 1;
}

Caso você não entendeu porque daquele valor com & nas cores, verifique isto na Wiki SA-MP: http://wiki.sa-mp.com/wiki/SetPlayerMarkerForPlayer

Bom, é isso ai, um simples exemplo de como fazer sumir e aparecer o jogador. Agora, vamos viajar um pouco? Vamos fazer que um cara do TEAM_LEI pode enxergar os outros no radar somente pelo level de procurado?

Acompanhe:

//Topo
#define TEAM_LEI 0


public AtualizarRadar()
{
    for ( new i = 0; i < MAX_PLAYERS; i ++ )
    {
        if(IsPlayerConnected(i))
        {
            new Float:playerPos[3];
            new Float:targetPos[3];
            GetPlayerPos(i,playerPos[0],playerPos[1],playerPos[2]);


            for ( new j = 0; j < MAX_PLAYERS; j ++ )
            {
                if(IsPlayerConnected(j) && j != i)
                {
                    GetPlayerPos(j,targetPos[0],targetPos[1],targetPos[2]);
                    new distancia;
               
                    //Fórmula da Distância entre 2 X.
                    distancia = floatround(floatsqroot(floatpower(floatabs(floatsub(playerPos[0],targetPos[0])),2)+floatpower(floatabs(floatsub(playerPos[1],targetPos[1])),2)));
   
                    if(GetPlayerTeam(i) == TEAM_LEI && GetPlayerTeam(j) != TEAM_LEI)
                    {
                        switch(GetPlayerWantedLevel(j))
                        {
                            case 0: SetPlayerMarkerForPlayer(i,j,0xF6F669AA); // Amarelo bem fraquinho
                            case 1: SetPlayerMarkerForPlayer(i,j,0xF6F62EAA); // Amarelo Fraco
                            case 2: SetPlayerMarkerForPlayer(i,j,0xF6F600AA); // Amarelo Médio
                            case 3: SetPlayerMarkerForPlayer(i,j,0xF6C600AA); // Amarelo
                            case 4: SetPlayerMarkerForPlayer(i,j,0xE5B700AA); // Amarelo Forte
                            case 5: SetPlayerMarkerForPlayer(i,j,0xE58400AA); // Laranja
                            case 6: SetPlayerMarkerForPlayer(i,j,0xE51E00AA); // Vermelho
                        }
                    }
                }


                else
                {


                    if(distancia <= 200) // Distancia é menor que 200 metros, vamos fazer o jogador sumir no mapa do outro
                    {
                        SetPlayerMarkerForPlayer(i,j,(GetPlayerColor(j) & 0xFFFFFF00));
                    }
                    else // Caso não, ele aparece no mapa
                    {
                        SetPlayerMarkerForPlayer(i,j,GetPlayerColor(j));
                    }
                }
            }
        }
    }
    return 1;
}

Entendendo o Biribondo do código:

Temos uma comparação, de que se o Player (i) estar no time 0 (TEAM_LEI) e o Target (j) não estiver no time 0 (TEAM_LEI), ele vai aparecer segundo as cores do seu Level de procurado. As cores que escolhi foi uma variação entre Amarelo, Laranja e Vermelho.

Bom, é isso ai galera. Fiz o tuto correndo, deve ter uns errinhos básicos ai e algumas coisinhas que dá para arrumar e optimizar mais... Enfim, aprendi isso lendo, vendo e quebrando a cara...

Então, dá para vocês viajarem nesses codes. Dá para fazer que um admin enxergue os players de acordo com a ameaça (Total de Reports), que os players não enxerguem administradores... enfim...

Qualquer erro assustador, é só gritar.


Feito Por: LuaN_

 Ola galera como todos sabe eu DENETHOR fiquei um tempao sem posta nada so vim avisar que é por que tenho um site de Naruto http://www.narutoworld.uni7.net/ e Tenho um Otimao Trabalho para Voce me Amigao KIZANO entre em contato comigo Obrigado vc tem meu MSN vlw

So eu da EXPERT TEMPLATES

Google Pluss Youtube Google Pluss