[Tutorial] Respawn em Carros perto
#1

Boas pessoal, tudo tranquilo?
Bom, nunca postei aqui, entгo, venho tentar trazer a vocкs um tutorial de um comando de respawn de carro SIMPLES.
O comando consiste no seguinte, um administrador, ao executar o comando, setarб os veнculos que estгo a uma distвncia de 20.0 em suas posiзхes inicias.
O cуdigo й bem simples. Toda sugestгo e crнtica й bem vinda.

Explicaзгo
Aviso: Para entender o funcionamento deste comando, й necessбrio que se tenha noзгo bбsica de utilizaзгo de variбveis, condicionais, etc.
Lembrem-se de definir as variбveis, o cуdigo pode ser adaptado ao seu GM.

Este cуdigo pode ser adaptado ao seu GM, ele verifica se o Player que digitou o comando й um administrador de Nнvel maior que 3, caso nгo seja, o comando nгo irб completar, e serб enviada uma mensagem ao player.
Код:
            if(Player[playerid][pAdm] < 3) //Vocкs podem adaptar de acordo com o modo que vocкs tкm no GM.
            { //Caso o player que digitou o comando seja um nнvel de administrador menor que 3    
               return 1; //irб chamar o retorno, ou seja, nгo completarб o comando.
            }
Este cуdigo verifica se o administrador estб trabalhando. Caso a variбvel esteja com o valor 0, ou seja, caso ele nгo esteja trabalhando, enviarб uma mensagem ao PLAYERID (player que digitou o comando) dizendo que ele nгo estб em modo trabalho.
Caso vocк nгo saiba criar um sistema de trabalho para administradores, clique aqui.
Caso seu servidor nгo tenha sistema de trabalho, vocк pode apagar essa parte do comando.


Код:
            if(admtramp[playerid] == 0) 
            {
                SendClientMessage(playerid, CINZA, "Vocк nгo estб trabalhando, use /trabalhar."); //Enviarб ao playerid
                return 1; //logo apуs dara o retorno
            }
Else й uma resposta a condicional if, e significa, em modo bruto de se falar, se nгo.
Ou seja, se o player que digitar o comando, nгo estiver em modo trabalho, enviarб a mensagem do cуdigo acima pra ele, dizendo que ele nгo estб trabalhando, ELSE(SE NГO), ou seja, caso ele esteja em modo trabalho, o comando serб prosseguido.

Loop: foi criado um Loop em MAX_VEHICLES, ou seja, em todos os veнculos do servidor.

GetVehiclePos: Estб coletando a posiзгo X, Y e Z do veнculo do Loop, que foram salvas nas variбveis pos[0], pos[1] e pos[2].


IsPlayerInRangeOfPoint(playerid, 20.0, X,Y,Z): Caso o player esteja em uma range de 20.0 de X,Y,Z, serб prosseguido o comando. X, Y e Z no cуdigo й a pos[0], pos[1]e pos[2] do carro, ou seja, a posiзгo em que o carro do Loop se encontra.
Resumindo, caso o player esteja em uma range de 20.0 da posiзгo em que o carro estб, o veнculo serб setado em sua posiзгo inicial, seu respawn, pelo comando: SetVehicleToRespawn.
Код:
            else
            {
                new name[MAX_PLAYER_NAME]; //Variбvel criada para armazenar o nome do player
                GetPlayerName(playerid, name, sizeof(name)); //Geta o nome do player
                new Float:Pos[3]; //Variбvel criada para armazenar a posiзгo X,Y,Z do player
                GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]); //Geta a posiзгo X,Y,Z do player
                new Float:pos[3];//Cria uma variбvel para getar posiзгo de um veнculo
                for(new i; i < MAX_VEHICLES; i++) //Cria um loop em todos os veнculos do servidor
                {
                    GetVehiclePos(i, pos[0], pos[1], pos[2]); // Geta a posiзгo do veнculo no loop
                    if(IsPlayerInRangeOfPoint(playerid, 20, pos[0], pos[1], pos[2]))//Caso o player esteja perto do carro
                    {
                        SetVehicleToRespawn(i); // veнculo й setado em sua posiзгo inicial
                    }
                }
                SendClientMessage(playerid, -1, "Vocк deu respawn nos carros a 20 metros de vocк."); //Mensagem de sucesso
            }
Bom, o cуdigo й bem simples, espero que vocкs tenham gostado. Й meu primeiro tutorial, perdoem-me qualquer erro. Te ajudei? Gostou do tutorial? Achou construtivo? Deixe seu Rep+, isso me incentivarб a continuar.
Perdoem caso o cуdigo esteja mб identado.

Link: http://pastebin.com/Gxp6p3aT
Reply
#2

Muito bom!

+REP (primeiro REP)
Reply
#3

Agora sim ! Parabйns.
Reply
#4

Muito bom, um tutorial bem Ъtil, apenas tente modificar as variбveis para que fique melhor explicado, e nгo confuso.

pos[3];
Pos[3];


Support
Reply
#5

Muito legal cara, principalmente para spawnar carros bugados pela gm
Reply
#6

Obrigado a todos, continuarei a fazer tutoriais mais pra frente, sempre temos mais coisas a aprender.
Reply
#7

Bacana, acho que seria mais vбlido se desprendesse de variбveis de admins do GF, se vocк ensinar a fazer, quem tem base GF pode aplicar o cуdigo tranquilamente.

Tambйm й importante ressaltar que o id dos veнculos inicia em 1 e nгo 0, logo seu loop deve setar o valor da var i para 1
PHP код:
for(new 1MAX_VEHICLESi++) 
Tambйm seria de maior otimizaзгo utilizar GetPlayerPoolSize() no lugar de MAX_PLAYERS para obter o maior id dos veнculos criados no server, assim evitando laзos desnecessбrios.

Bom trabalho.
Reply
#8

Quote:
Originally Posted by Bruno13
Посмотреть сообщение
Bacana, acho que seria mais vбlido se desprendesse de variбveis de admins do GF, se vocк ensinar a fazer, quem tem base GF pode aplicar o cуdigo tranquilamente.

Tambйm й importante ressaltar que o id dos veнculos inicia em 1 e nгo 0, logo seu loop deve setar o valor da var i para 1
PHP код:
for(new 1MAX_VEHICLESi++) 
Tambйm seria de maior otimizaзгo utilizar GetPlayerPoolSize() no lugar de MAX_PLAYERS para obter o maior id dos veнculos criados no server, assim evitando laзos desnecessбrios.

Bom trabalho.
Obrigado pelas dicas!
Reply
#9

podes usar a negativa de GetVehiclePos para verificar se o veiculo esta spawnado:

!GetVehiclePos....


Assim nao verificas carros que nao tao e fica mais rapido
Reply
#10

Verdade, PT, obrigado!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)