[Pedido] RETORNAR AO ULTIMO CHECKPOINT
#1

Tenho Um Sistema De Corrida Por Checkpoint.... Tava Pensando Em Fazer Um Reset Por Exemplo Se O Player Pegar o Checkpoint e ela digitar o comando /reset ele retornar ao ultimo checkpoint que ele pegou.. queria uma base pra eu ter uma noзгo do que fazer poderia mim ajudar ?
Reply
#2

Quote:
Originally Posted by Gleidson
View Post
Tenho Um Sistema De Corrida Por Checkpoint.... Tava Pensando Em Fazer Um Reset Por Exemplo Se O Player Pegar o Checkpoint e ela digitar o comando /reset ele retornar ao ultimo checkpoint que ele pegou.. queria uma base pra eu ter uma noзгo do que fazer poderia mim ajudar ?
mano explique mais seus pedidos e duvidas 2° vez que nгo entendo tu quer que se ele tiver la no meio ele de /reset dai ele para no checkpoint que tava atras dele й isso ? se for vo construir uma base
Reply
#3

Quote:
Originally Posted by WoozieBRz
View Post
mano explique mais seus pedidos e duvidas 2° vez que nгo entendo tu quer que se ele tiver la no meio ele de /reset dai ele para no checkpoint que tava atras dele й isso ? se for vo construir uma base
Isso, Slc Nгo Sou Muito Bom Em Explicar kk Desculpas

Eu Uso Esse Sistema de Corrida:
https://sampforum.blast.hk/showthread.php?tid=377163
Reply
#4

Quote:
Originally Posted by Gleidson
View Post
Isso, Slc Nгo Sou Muito Bom Em Explicar kk Desculpas
jб estou terminando mais uma pergunta tu quer um evento ou uma corrida ? tipo o admin da /race dai todo mundo online ja й teleportado ? e cria um carro para cada e eles jб dentro do carro para corrida e manda uma mensagem: 1,2,3 jб dai comeзa , isso ?
Reply
#5

Quote:
Originally Posted by WoozieBRz
View Post
jб estou terminando mais uma pergunta tu quer um evento ou uma corrida ? tipo o admin da /race dai todo mundo online ja й teleportado ? e cria um carro para cada e eles jб dentro do carro para corrida e manda uma mensagem: 1,2,3 jб dai comeзa , isso ?
Corrida Olhem o Link Ali Em Cima E o Sistema Que Tou Usando..
Reply
#6

Quote:
Originally Posted by Gleidson
View Post
Corrida Olhem o Link Ali Em Cima E o Sistema Que Tou Usando..
mano acho que tu й novato correto ? tipo mano eu to terminando uma avanзada que nem essa que tu mandou o link vocк quer uma base basica de corrida dai vocк vai fazendo ela aos poucos ou a avanзada que to terminando porque eu to pensando e tu nгo vai entender muito bem oque ta aqui eu posso fazer ela virar basica de novo em 1 instante ja ta feito a corrida e o comando /reset e /race para ir para ela o basico ta bom ? porque senгo vai demorar mais kkk й complicado mano
Reply
#7

Quote:
Originally Posted by WoozieBRz
View Post
mano acho que tu й novato correto ? tipo mano eu to terminando uma avanзada que nem essa que tu mandou o link vocк quer uma base basica de corrida dai vocк vai fazendo ela aos poucos ou a avanзada que to terminando porque eu to pensando e tu nгo vai entender muito bem oque ta aqui eu posso fazer ela virar basica de novo em 1 instante ja ta feito a corrida e o comando /reset e /race para ir para ela o basico ta bom ? porque senгo vai demorar mais kkk й complicado mano
So Faz o Reset Eu Adaptado Ao Meu Sistema ...
Reply
#8

quando o player entrar no checkpoint obter float + angulo ou uma variбvel

PHP Code:
new Float:Xx,Float:Yy,Float:ZzFloat:Anglee 
PHP Code:
//checkpoints
{
    
GetPlayerPos(playeridXx,Yy,Zz);
    
GetPlayerFacingAngle(playerid,Anglee);
}
/
reset
{
    
SetPlayerPos(playerid,  Xx,Yy,Zz);
    
SetPlayerFacingAngle(playeridAnglee);
    
GetPlayerPos(playeridXx,Yy,Zz);
    
GetPlayerFacingAngle(playerid,Anglee);
    return 
1;

Reply
#9

Quote:
Originally Posted by DarkBr
View Post
quando o player entrar no checkpoint obter float + angulo ou uma variбvel

PHP Code:
new Float:Xx,Float:Yy,Float:ZzFloat:Anglee 
PHP Code:
//checkpoints
{
    
GetPlayerPos(playeridXx,Yy,Zz);
    
GetPlayerFacingAngle(playerid,Anglee);
}
/
reset
{
    
SetPlayerPos(playerid,  Xx,Yy,Zz);
    
SetPlayerFacingAngle(playeridAnglee);
    
GetPlayerPos(playeridXx,Yy,Zz);
    
GetPlayerFacingAngle(playerid,Anglee);
    return 
1;

Nгo Intendi Muito Bem.. Mais Vlw Pela A Ajuda..
Reply
#10

Quote:

Nгo Intendi Muito Bem.. Mais Vlw Pela A Ajuda..

new Float:Xx,Float:Yy,Float:Zz, Float:Anglee

Solicitamos um Flutuador traduzindo.. "Posiзгo e o вngulo que queremos utilizar.

ordem de posiзхes:

X,Y, Z,Anglee, RotX, RotY, RotZ);

Code:
X = Lado
Y = Frente
Z = Altura tanto para cima como para baixo
вngulo = Bom se vocк estudou geometria sabe o que й.
RotX = Rotaзгo para o Lado
RotY = Rotaзгo para o Frente
RotZ = Rotaзгo para cima/Baixo
Pegando sua Posiзгo de jogador apenas o que й vбlido X, Y e Z.

GetPlayerPos(%0, %f, %f, %f);

GetPlayerPos(playerid, PosX, PosY, PosZ);

Setando a posiзгo que foi pegada anteriormente

SetPlayerPos(%0, %f, %f, %f);

SetPlayerPos(playerid, PosX, PosY, PosZ);

й bem importante ressaltar que:

%0 = Alguйm vocк mesmo "playerid"
%f = Float = Posiзгo
Reply
#11

Quote:
Originally Posted by Gleidson
View Post
So Faz o Reset Eu Adaptado Ao Meu Sistema ...
toma a base a net caiu ontem se nгo conseguiu toma ae:

PHP Code:
#include < a_samp >
//utilizei a include zcmd caso nгo tenha procura que tem ai no fуrum
#include < zcmd >
//fiz na forma de um fs
#define FILTERSCRIPT
//parar dar funзхes para os checkpoits iremos usar uma variavel e a corrida iniciada
new checkpoint[MAX_PLAYERS] , carroinq[MAX_VEHICLES] , nacorrida[MAX_PLAYERS];
public 
OnPlayerConnect(playerid)
{
    
checkpoint[playerid] = 0//checkpoint 0 ou seja nenhum...
    
return 1;
}
//comando que manda ele para a corrida
CMD:entrarc(playeridparams[])
{
    
//no lugar de 1, 1, 1 coloque as coordenadas da sua corrida
    
SetPlayerPos(playerid111);
    
//vai mandar a mensagem que ele foi para corrida
    //                               o {00FF00} vai deixar a cor verde
    
SendClientMessage(playerid, -1"{00FF00}Vocк foi para a corrida!");
    
//vai pegar as coordenadas do player e criar um veiculo perto dele e por ele dentro
    
new Float:X,Float:Y,Float:Z,Float:AGetPlayerPos(playeridXYZ); GetPlayerFacingAngle(playeridA);
    
//vai criar um veiculo(um infernus)
    
new carro CreateVehicle(411XYZA, -1, -10);
    
//vai por ele dentro do veiculo(infernus)
    
PutPlayerInVehicle(playeridcarro0);
    
//vai criar um checkpoint com tamanho 10(igual o das corridas)
    //esse checkpoint й o 1
    
SetPlayerCheckpoint(playerid11110.0);
    
//coloca ele dentro do checkpoint 1
    
checkpoint[playerid] = 1;
    
//ativa o god car
    
carroinq[GetPlayerVehicleID(playerid)] = 1;
    
nacorrida[playerid] = 1;
         
    return 
1;
}
public 
OnVehicleDamageStatusUpdate(vehicleidplayerid)
{
    
//se o carroinq tiver ligado(1)
    
if(carroinq[vehicleid] == 1)
    {
        
//quando o carro sofre dano ele repara o veiuclo
        
if(carroinq[vehicleid]) RepairVehicle(vehicleid);
    }
    return 
1;
}
CMD:desistir(playeridparams[])
{
    if(
nacorrida[playerid] == 1)
    {
        
SendClientMessage(playerid, -1"{FF0000}Vocк desistiu da corrida!");
        
checkpoint[playerid] = 0;
        new 
idc GetPlayerVehicleID(playerid);
        
carroinq[idc] = 0;
        
SetPlayerPos(playerid0,0);
    }
    else
    {
        
SendClientMessage(playerid, -1"{FF0000}Vocк nem esta em uma corrida!");
    }
    return 
1;
}
//comando reset
CMD:reset(playeridparams[])
{
    
//se o checkpoint dele for o 1...
    
if(checkpoint[playerid] == 1)
    {
        
checkpoint[playerid] = 1;
        
//vai criar novamente o checkpoint 1
        
SetPlayerCheckpoint(playerid11110.0);
        
//se ele estiver em um veiculo
        
if(IsPlayerInAnyVehicle(playerid))
          {
              
//ele teleporta o veiculo + o player
            
new veiculo GetPlayerVehicleID(playerid);
              
SetVehiclePos(veiculo111);
         }
         else
//se nao estiver em um veiculo
         
{
             
//ele teleporta so o player
            
SetPlayerPos(playerid111);
         
         }
    
    
    }
    
    
//mesma coisa do de cima soque й o 2° checkpoint
    
if(checkpoint[playerid] == 2)
    {
        
checkpoint[playerid] = 2;
        
SetPlayerCheckpoint(playerid22210.0);
        if(
IsPlayerInAnyVehicle(playerid))
          {
            new 
veiculo GetPlayerVehicleID(playerid);
              
SetVehiclePos(veiculo222);
         }
         else
         {
            
SetPlayerPos(playerid222);
         }
    }
    
    if(
checkpoint[playerid] == 3)
    {
        
checkpoint[playerid] = 3;
        
SetPlayerCheckpoint(playerid33310.0);
        if(
IsPlayerInAnyVehicle(playerid))
          {
            new 
veiculo GetPlayerVehicleID(playerid);
              
SetVehiclePos(veiculo333);
         }
         else
         {
            
SetPlayerPos(playerid333);
         }
    }
    
    if(
checkpoint[playerid] == 4)
    {
        
checkpoint[playerid] = 4;
        
SetPlayerCheckpoint(playerid44410.0);
        if(
IsPlayerInAnyVehicle(playerid))
          {
            new 
veiculo GetPlayerVehicleID(playerid);
              
SetVehiclePos(veiculo444);
         }
         else
         {
            
SetPlayerPos(playerid444);
         }
    }
    
    if(
checkpoint[playerid] == 5)
    {
        
checkpoint[playerid] = 5;
        
SetPlayerCheckpoint(playerid55510.0);
        if(
IsPlayerInAnyVehicle(playerid))
          {
            new 
veiculo GetPlayerVehicleID(playerid);
              
SetVehiclePos(veiculo5551);
         }
         else
         {
            
SetPlayerPos(playerid555);
         }
    }
    return 
1;
}
//essa callback serve para quando ele entrar em um checkpoint
public OnPlayerEnterCheckpoint(playerid)
{
    
//se esse checkpoint dele for o 1
    
if(checkpoint[playerid] == 1)
    {
        
//manda a mensagem que ele passou
        
SendClientMessage(playerid, -1"{00FF00}Vocк passou pelo checkpoint 1!");
        
        
//para nгo se confundir abaixo й o checkpoint 2!
        
        //vai criar o checkpoint 2
        
SetPlayerCheckpoint(playerid22210.0);
        
//vai colocar ele dentro do checkpoint 2
        
checkpoint[playerid] = 2;
    }
    
    if(
checkpoint[playerid] == 2)
    {
        
//manda a mensagem que ele passou
        
SendClientMessage(playerid, -1"{00FF00}Vocк passou pelo checkpoint 2!");
        
        
//para nгo se confundir abaixo й o checkpoint 3!
        
        //vai criar o checkpoint 3
        
SetPlayerCheckpoint(playerid33310.0);
        
//vai colocar ele dentro do checkpoint 3
        
checkpoint[playerid] = 3;
    }
    
    if(
checkpoint[playerid] == 3)
    {
        
//manda a mensagem que ele passou
        
SendClientMessage(playerid, -1"{00FF00}Vocк passou pelo checkpoint 3!");
        
        
//para nгo se confundir abaixo й o checkpoint 4!
        
        //vai criar o checkpoint 4
        
SetPlayerCheckpoint(playerid44410.0);
        
//vai colocar ele dentro do checkpoint 4
        
checkpoint[playerid] = 4;
    }
    
    if(
checkpoint[playerid] == 4)
    {
        
//manda a mensagem que ele passou
        
SendClientMessage(playerid, -1"{00FF00}Vocк passou pelo checkpoint 4!");
        
//para nгo se confundir abaixo й o checkpoint 4!
        //vai criar o checkpoint 5
        
SetPlayerCheckpoint(playerid55510.0);
        
//vai colocar ele dentro do checkpoint 5
        
checkpoint[playerid] = 5;
    }
    
    if(
checkpoint[playerid] == 5)
    {
        
//manda o premio do player que ganhou
        
SendClientMessage(playerid, -1"{00FF00}Vocк ganhou a corrida!");
        
SendClientMessage(playerid, -1"{00FF00}Premio: {FF0000}$10000");
        
GivePlayerMoney(playerid10000);
        
//apaga o checkpoint
        
DisablePlayerCheckpoint(playerid);
        
//coloca o checkpoint dele novamento no 0 (sem checkpoint)
        
checkpoint[playerid] = 0;
        new 
idc GetPlayerVehicleID(playerid);
        
carroinq[idc] = 0;
        
nacorrida[playerid] = 0;
    }
    return 
1;

Reply
#12

Bom, eu tenho um realese de CheckPoints, que traz muitas funcionalidades extras, com muitas utilidades:
[Include] MULTI COLERED FUNCTIONAL CP
й minha recomendaзгo, para usar no seu sistema de corrida, abaixo tem um codigo de exemplo que eu fiz para vocк, leia com carinho!

Declaraзгo de variaves:
PHP Code:
//topo do GM:
new CorridaCP[MAX_CPS];
new 
LastPlayerCP[MAX_PLAYERS]; 
Criando os CheckPoints de corrida
PHP Code:
//Na criaзгo do evento ou corrida:
   
CorridaCP[CreateCheckPoint("corrida"CP_CIRCLE_BIG0x99FF0000Float:xFloat:yFloat:z)] = 0;
   
CorridaCP[CreateCheckPoint("corrida"CP_CIRCLE_BIG0x99FF0000Float:xFloat:yFloat:z)] = 1
   ... 
Salvando ultimo CP da corrida:
PHP Code:
CPEnter:corrida(playeridCPID)
{
   if(
LastPlayerCP[playerid] == CorridaCP[CPID 1])
   {
     
LastPlayerCP[playerid]= CorridaCP[CPID];
     return 
1;
   }
   return 
SendClientMessage(playerid, -"Caminho errado! pressione /reset, ou aperte F");

Se o player apertou F, para voltar ao CP anterior
PHP Code:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
      if (
PRESSED(KEY_SECONDARY_ATTACK) && VariavelDoEvento[playerid]) cmd_reset(playerid" ");
      ...

Comando para voltar ao ultimo CP:
PHP Code:
CMD:reset(playeridparam[]);
{
    new  
Float:xFloat:yFloat:z;
    new 
CPID=LastPlayerCP[playerid];
    
GetCPpos(CPIDx,y,z);
    new 
vehicleid GetPlayerVehicleID(playerid);
    
SetVehiclePos(vehicleidx,y,z);
    
RepairVehicle(vehicleid);
    
PutPlayerInVehicle(playeridvehicleid0);    

@OFF: a funзгo "GetCPpos" nгo foi lanзada no github, mas ainda hoje, detarde, irei atualizar minha include, com as novas funзхes que fiz, e acho que vai te ajudar muito
Reply
#13

Quote:
Originally Posted by RazorGuigo
View Post
Bom, eu tenho um realese de CheckPoints, que traz muitas funcionalidades extras
vocк criou essa include para ajudar ou para se gabar ...
Reply
#14

Vocк q ta inventando coisa, pois ele fez essa include para ajudar a comunidade e nгo se gabar.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)