[Ajuda] Verificaзгo de checkpoint Atual/Anterior
#1

Queria pedir uma ajuda a quem entender meu cуdigo, eu criei um sistema de criar pontos aleatуrio em casas no mapa de minha GM para poder a profissгo de Jornaleiro fazer suas entregas, atй ai beleza, porйm algumas vezes ele seta o checkpoint (local de entrega) no mesmo local onde o jogador jб esta pegando, entгo exibe na tela duas vezes a mensagem que foi entregue os jornais...

teria como fazer uma verificaзгo no ultimo checkpoint pra poder nгo repetir (O ULTIMO)?

OnPlayerEnterCheckpoint
PHP код:
public OnPlayerEnterCheckpoint(playerid)
{
    new 
str_pnome[MAX_PLAYER_NAME], str_format[128];
    
GetPlayerName(playeridstr_pnomesizeof(str_pnome)); //Pegar o Nome completo do jogador
    
format(str_formatsizeof(str_format), pContasstr_pnome); //Formatar o nome do jogador ligado ao arquivo
    
if(EntregandoJornais[playerid])
    {
        
DisablePlayerCheckpoint(playerid);
        new 
formatmsg[256];
        new 
randjornais random(sizeof(JornaisAleatorio));
        new 
formatgGameTextJornaleiro[128];
        new 
randpagjornaleiros random(sizeof(pagJornaleiros));
        
GivePlayerMoney(playeridpagJornaleiros[randpagjornaleiros][playerid]);
        new 
formatstrganhojornaleiro[128];
        new 
totalganhojornaleiros pagJornaleiros[randpagjornaleiros][0];
        new 
gTotalJornais = (DOF2_GetInt(str_format"TotalJornais") - 1); //diminuir o total de jornais
        
DOF2_WriteFile();
        
DOF2_SetInt(str_format"TotalJornais"gTotalJornais); //Armazenar o total de jornais no arquivo
        
DOF2_SaveFile();
        if(!
gTotalJornais//verificar se nгo possui mais jornais
        
{
            
EntregandoJornais[playerid] = false//definir que nгo esta mais entregando jornais por falta de jornais
            
format(formatgGameTextJornaleirosizeof(formatgGameTextJornaleiro), "~W~Ganho pela entrega~N~+~G~$%d"totalganhojornaleiros);
            
SendClientMessage(playeridCor_Laranja"====================================================================");
            
SendClientMessage(playerid, -1"{FF0000}» {80FF80}Jornaleiro {FF0000}«{ffffff} Entregas concluida!");
            
SendClientMessage(playerid, -1"» {ffffff}Volte atй a HQ para pegar mais jornais e fazer mais entregas!");
            
SendClientMessage(playeridCor_Laranja"====================================================================");
            
PlayerPlaySound(playerid10580.00.010.0);
            
GameTextForPlayer(playeridformatgGameTextJornaleiro30005);
            return 
1;
        }
        
format(formatmsgsizeof(formatmsg), "{FF0000}» {80FF80}Jornaleiro {FF0000}«{ffffff} Vocк possui ainda {FF0000}%d{ffffff} Jornais para entregar!"gTotalJornais); //Mensagem mostrando o total restante de jornais
        
SetPlayerCheckpoint(playeridJornaisAleatorio[randjornais][0], JornaisAleatorio[randjornais][1], JornaisAleatorio[randjornais][2], 2.0); //Gerar o checkpoint aleatorio de entrega
        
format(formatstrganhojornaleirosizeof(formatstrganhojornaleiro), "» {ffffff}Ganho Pela Entrega: {00ff00}$%d"totalganhojornaleiros); //Formatar a mensagem no chat
        
format(formatgGameTextJornaleirosizeof(formatgGameTextJornaleiro), "~W~Ganho pela entrega~N~+~G~$%d"totalganhojornaleiros); //Formatar a mensagem "GameText"
        
PlayerPlaySound(playerid10580.00.010.0);
        
SendClientMessage(playeridCor_Laranja"====================================================================");
        
SendClientMessage(playerid, -1formatmsg);
        
SendClientMessage(playerid, -1"» {ffffff}Vб atй ao prуximo {ff0000}Checkpoint {ffffff}vermelho para fazer a prуxima entrega.");
        
SendClientMessage(playerid, -1formatstrganhojornaleiro);
        
SendClientMessage(playeridCor_Laranja"====================================================================");
        
GameTextForPlayer(playeridformatgGameTextJornaleiro30005); //exibir a mensagem na tela com o dinheiro ganho pela entrega
        
return 1;
    }
    
DisablePlayerCheckpoint(playerid); //desmarcar o checkpoint
    
PlayerPlaySound(playerid10580.00.010.0); //reproduzir um audio
    
return 1;

caso precise de mais algum cуdigo, avise, agradeзo dкs de jб!
Reply
#2

Se eu entendi certo minha soluзгo seria voce criar uma variavel global para todos os players й na hora de pegar a nova entrega voce faria da seguinte forma:

PHP код:
do{
     
randjornais rand(sizeof(JornaisAleatorio));
}while(
randjornais == randJornaisAnterior[playerid]);
randJornaisAnterior[playerid] = randjornais
Tambem poderia ser feito de outras maneiras mais fiz de uma forma mais explicativa.

No caso toda vez que for fazer uma nova entrega o ponto anterior sempre seria comparado com o proximo ponto ate que sejam diferentes.
Reply
#3

Quote:
Originally Posted by PedroH
Посмотреть сообщение
Se eu entendi certo minha soluзгo seria voce criar uma variavel global para todos os players й na hora de pegar a nova entrega voce faria da seguinte forma:

PHP код:
do{
     
randjornais rand(sizeof(JornaisAleatorio));
}while(
randjornais == randJornaisAnterior[playerid]);
randJornaisAnterior[playerid] = randjornais
Tambem poderia ser feito de outras maneiras mais fiz de uma forma mais explicativa.

No caso toda vez que for fazer uma nova entrega o ponto anterior sempre seria comparado com o proximo ponto ate que sejam diferentes.
Entгo eu teria que criar a variavel global
PHP код:
new randJornaisAnterior[MAX_PLAYERS]; 
mas como em forma de condiзгo eu poderia incluila verficando? sou bem leigo em programaзгo, mas estou buscando entender.. antes nunca tinha usado
PHP код:
do{
}while() 
Reply
#4

Na parte do codigo onde tem
Quote:

new randjornais = random(sizeof(JornaisAleatorio));

Voce apaga essa linha e coloca:

PHP код:
new randjornais;
do{
     
randjornais rand(sizeof(JornaisAleatorio)); 
}while(
randjornais == randJornaisAnterior[playerid]);
randJornaisAnterior[playerid] = randjornais
Nгo se esquece de declarar a variavel randJornaisAnterior
Reply
#5

Quote:
Originally Posted by PedroH
Посмотреть сообщение
Na parte do codigo onde tem

Voce apaga essa linha e coloca:

PHP код:
new randjornais;
do{
     
randjornais rand(sizeof(JornaisAleatorio)); 
}while(
randjornais == randJornaisAnterior[playerid]);
randJornaisAnterior[playerid] = randjornais
Nгo se esquece de declarar a variavel randJornaisAnterior
perfeito, tudo certo sem erros, somente na
PHP код:
    randjornais rand(sizeof(JornaisAleatorio)); 
pois no lugar de rand seria random, muito obrigado! ++Rep
Reply
#6

Quote:
Originally Posted by zHellSync
Посмотреть сообщение
perfeito, tudo certo sem erros, somente na
PHP код:
    randjornais rand(sizeof(JornaisAleatorio)); 
pois no lugar de rand seria random, muito obrigado! ++Rep
Isso! Kk й pq eu tou escrevendo pelo celular ai nao prestei atenзгo nisso.
Ql quer coisa pode pergunta aqui ou no pvd.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)