[Ajuda] Duvida
#1

Sou novato em linguagem Pawn e to querendo criar um sistema de missхes, por exemplo o player pega uma missгo com o NPC e essa missгo manda ele ir a um local e voltar pro NPC para receber a recompensa.

Duvidas :
O que eu faзo pra chegar se o player foi atй o local e quando voltar no NPC poder pegar a recompensa ?
e quando ele completar a missгo nгo poder faze-la de novamente?
Nгo precisa ser nada complexo, uma base jб seria de grande ajuda.
Reply
#2

Acho que isso jб daria uma boa base para seu sistema.
PHP код:
new ActorMissao,
    
boolEmMissao[MAX_PLAYERS],
    
boolChegouNaMissao[MAX_PLAYERS];

public 
OnGameModeInit() {
    
ActorMissao CreateActor(00.00.03.00.0); //Cria o Actor com suas coordenadas, skin, etc..
    
return 1;
}

CMD:missao(playerid) {
    if(
EmMissao[playerid])
        return 
SendClientMessage(playerid, -1"Vocк jб estб em uma missгo.");

    if(!
IsPlayerInRangeOfPoint(playerid2.0xyz)) //Coordenada X, Y, Z do Actor criado acima
        
return SendClientMessage(playerid, -1"Vocк precisa estar perto de um Actor para aceitar uma missao.");

    
EmMissao[playerid] = true;
    
SetPlayerCheckpoint(playeridxyzsize); //Utilize as coordenadas na qual vocк deseja que seja o local da missгo
    
SendClientMessage(playerid, -1"Missгo iniciada.");
    return 
1;
}

CMD:recompensa(playerid) {
    if(!
EmMissao[playerid])
        return 
SendClientMessage(playerid, -1"Vocк nгo estб em uma missгo.");

    if(!
IsPlayerInRangeOfPoint(playerid2.0xyz)) //Coordenada X, Y, Z do Actor criado acima
        
return SendClientMessage(playerid, -1"Vocк precisa estar perto de um Actor para pegar sua recompensa.");

    if(!
ChegouNaMissao[playerid])
        return 
SendClientMessage(playerid, -1"Vocк precisa ir na missгo para pegar sua recompensa.");

    
EmMissao[playerid] = ChegouNaMissao[playerid] = false;
    
SendClientMessage(playerid, -1"Vocк pegou sua recompensa e ganhou R$ 100.");
    
GivePlayerMoney(playerid100);
    return 
1;
}

public 
OnPlayerEnterCheckpoint(playerid) {
    if(
EmMissao[playerid] && IsPlayerInRangeOfPoint(playeridrangexyz)) { //Range й o mesmo range que vocк colocou no "Size" do Checkpoint, X, Y, Z й a coordenada da missao
        
SendClientMessage(playerid, -1"Vocк chegou na missгo. Volte ao Actor para pegar sua recompensa.");
        
ChegouNaMissao[playerid] = true;
        
DisablePlayerCheckpoint(playerid);
    }
    return 
1;

Espero ter ajudado.
Reply
#3

Quote:
Originally Posted by EditPawn
Посмотреть сообщение
Acho que isso jб daria uma boa base para seu sistema.
PHP код:
new ActorMissao,
    
boolEmMissao[MAX_PLAYERS],
    
boolChegouNaMissao[MAX_PLAYERS];
public 
OnGameModeInit() {
    
ActorMissao CreateActor(00.00.03.00.0); //Cria o Actor com suas coordenadas, skin, etc..
    
return 1;
}
CMD:missao(playerid) {
    if(
EmMissao[playerid])
        return 
SendClientMessage(playerid, -1"Vocк jб estб em uma missгo.");
    if(!
IsPlayerInRangeOfPoint(playerid2.0xyz)) //Coordenada X, Y, Z do Actor criado acima
        
return SendClientMessage(playerid, -1"Vocк precisa estar perto de um Actor para aceitar uma missao.");
    
EmMissao[playerid] = true;
    
SetPlayerCheckpoint(playeridxyzsize); //Utilize as coordenadas na qual vocк deseja que seja o local da missгo
    
SendClientMessage(playerid, -1"Missгo iniciada.");
    return 
1;
}
CMD:recompensa(playerid) {
    if(!
EmMissao[playerid])
        return 
SendClientMessage(playerid, -1"Vocк nгo estб em uma missгo.");
    if(!
IsPlayerInRangeOfPoint(playerid2.0xyz)) //Coordenada X, Y, Z do Actor criado acima
        
return SendClientMessage(playerid, -1"Vocк precisa estar perto de um Actor para pegar sua recompensa.");
    if(!
ChegouNaMissao[playerid])
        return 
SendClientMessage(playerid, -1"Vocк precisa ir na missгo para pegar sua recompensa.");
    
EmMissao[playerid] = ChegouNaMissao[playerid] = false;
    
SendClientMessage(playerid, -1"Vocк pegou sua recompensa e ganhou R$ 100.");
    
GivePlayerMoney(playerid100);
    return 
1;
}
public 
OnPlayerEnterCheckpoint(playerid) {
    if(
EmMissao[playerid] && IsPlayerInRangeOfPoint(playeridrangexyz)) { //Range й o mesmo range que vocк colocou no "Size" do Checkpoint, X, Y, Z й a coordenada da missao
        
SendClientMessage(playerid, -1"Vocк chegou na missгo. Volte ao Actor para pegar sua recompensa.");
        
ChegouNaMissao[playerid] = true;
        
DisablePlayerCheckpoint(playerid);
    }
    return 
1;

Espero ter ajudado.
Obrigado , mais e pra ele nгo poder refazer a missгo depois de concluir ?
Reply
#4

Quote:
Originally Posted by HatedS
Посмотреть сообщение
Obrigado , mais e pra ele nгo poder refazer a missгo depois de concluir ?
Crie outra variбvel
Ex:
PHP код:
new boolFezMissao[MAX_PLAYERS]; 
Caso ele pegou sua recompensa seta a variбvel FezMissao a true e crie um Timer com um certo tempo para que a variбvel seja setada a false novamente para ele fazer outra missгo. E nгo se esqueзa de fazer uma verificaзгo para a variбvel, se nгo ele poderб fazer mais do que uma missгo.
Reply
#5

mano se voce quiser que o npc faзa a missгo junto com o jogador precisarб de includes para controla o NPC
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)