[Pedido] Portгo se mover com o IsPlayerInRangeOfPoint
#1

Teria jeito de fazer isso?
Pensei em que se o jogador chegar perto do objeto, ele se move.
Mas nгo sei em qual public colocar isso!
OnPlayerUpdate nгo daria certo, e fazendo um timer, acho que tambйm nгo.
Porque ele iria mandar a mensagem quando o jogador chegasse perto:
"O portгo foi aberto!"
E quando ele saisse do range:
"O portгo foi fechado!"
Mas se colocar no OnPlayerUpdate vai dar um flood danado!
Aluguйm tem ideia de como fazer isso?
Valeu!
Reply
#2

Quote:
Originally Posted by Detonador
Посмотреть сообщение
Teria jeito de fazer isso?
Pensei em que se o jogador chegar perto do objeto, ele se move.
Mas nгo sei em qual public colocar isso!
OnPlayerUpdate nгo daria certo, e fazendo um timer, acho que tambйm nгo.
Porque ele iria mandar a mensagem quando o jogador chegasse perto:
"O portгo foi aberto!"
E quando ele saisse do range:
"O portгo foi fechado!"
Mas se colocar no OnPlayerUpdate vai dar um flood danado!
Aluguйm tem ideia de como fazer isso?
Valeu!
Код:
new Portao1;

public OnGameModeInit()
{
	Portao1 = CreateObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance); // TROQUE PELAS COORDENADAS DO PORTГO FECHADO
	SetTimer("AbirPortao1", 1000, true);
	return 1;
}

forward AbrirPortao1(playerid);
public AbrirPortao1(playerid)
{
	if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z))) // TROQUE PELAS COORDENADAS DO PORTГO FECHADO
	{
		MoveObject(Portao1, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX, Float:RotY, Float:RotZ);  // TROQUE PELAS COORDENADAS DO PORTГO ABERTO
		SendClientMessage(playerid, -1, "Portгo 1 Aberto !");
		SetTimer("FecharPortao1", 3000, false);
	}
	return 1;
}

forward FecharPortao1(playerid);
public FecharPortao1(playerid)
{
	if(!IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z))  // TROQUE PELAS COORDENADAS DO PORTГO FECHADO
	{
		MoveObject(Portao1, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX, Float:RotY, Float:RotZ);  // TROQUE PELAS COORDENADAS DO PORTГO FECHADO
		SendClientMessage(playerid, -1, "Portгo 1 Fechado !");
	}
	else
	{
		SetTimer("FecharPortao1", 3000, false);
	}
	return 1;
}
Tente ''-''
Reply
#3

Sim, mas a mensagem vai ficar floodando!
Eu jб havia pensado nisso.
Reply
#4

Quote:
Originally Posted by Detonador
Посмотреть сообщение
Sim, mas a mensagem vai ficar floodando!
Eu jб havia pensado nisso.
Код:
new Portao1;
new bool:Avisado[MAX_PLAYERS];

public OnGameModeInit()
{
	Portao1 = CreateObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance); // TROQUE PELAS COORDENADAS DO PORTГO FECHADO
	SetTimer("AbirPortao1", 1000, true);
	return 1;
}

forward AbrirPortao1(playerid);
public AbrirPortao1(playerid)
{
	if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z))) // TROQUE PELAS COORDENADAS DO PORTГO FECHADO
	{
	    if(Avisado[playerid] = false)
	    {
	        SendClientMessage(playerid, -1, "Portгo 1 Aberto !");
                Avisado[playerid] = true;
	    }
	    MoveObject(Portao1, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX, Float:RotY, Float:RotZ);  // TROQUE PELAS COORDENADAS DO PORTГO ABERTO
	    SetTimer("FecharPortao1", 3000, false);
	}
	return 1;
}

forward FecharPortao1(playerid);
public FecharPortao1(playerid)
{
	if(!IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z))  // TROQUE PELAS COORDENADAS DO PORTГO FECHADO
	{
		MoveObject(Portao1, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX, Float:RotY, Float:RotZ);  // TROQUE PELAS COORDENADAS DO PORTГO FECHADO
		if(Avisado[playerid] = true)
		{
			SendClientMessage(playerid, -1, "Portгo 1 Fechado !");
			Avisado[playerid] = false;
		}
	}
	else
	{
		SetTimer("FecharPortao1", 3000, false);
	}
	return 1;
}
Nгo tenho nenhuma certeza se vai funcionar, a lуgica quase quebrou minha cabeзa '-' Mas tente..
Reply
#5

Teste ai!

pawn Код:
#include a_samp
//******************************************************************************
main(){}
//******************************************************************************
new Teste;
new PortaoAbrindo[MAX_PLAYERS];
//******************************************************************************
forward FecharPortao(playerid);
forward VerificarLocal(playerid);
//******************************************************************************
public OnGameModeInit(){
    SetTimer("VerificarLocal",3000,1);
    Teste = CreateObject(modelid,Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance);//Fechado
    return 1;
}
//******************************************************************************
public OnGameModeExit(){
    return 1;
}
//******************************************************************************
public VerificarLocal(playerid){
    if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z) && PortaoAbrindo[playerid] == 0){
        PortaoAbrindo[playerid] = 1;
        MoveObject(Teste,Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX, Float:RotY, Float:RotZ);//Abrindo Portгo
        SetTimer("FecharPortao",3000,false);
    }
    return 1;
}
//******************************************************************************
public FecharPortao(playerid){
    if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z)) {
        PortaoAbrindo[playerid] = 0;
        MoveObject(Teste, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX, Float:RotY, Float:RotZ);//Fechando Portгo
    }
    return 1;
}
Reply
#6

Depois testo.
Me parece que vocк cometeu um pequeno erro.
Na hora de fechar o portгo, adicione o "!" antes da native IsPlayerInRangeOfPoint.
E creio que este code irб floodar as mensagens da mesma forma
Reply
#7

Atualizado o cуdigo acima!
Reply
#8

♫ Nгo deixa o tуpico morrer! Nгo deixa o tуpico acabar! ♫ O tуpico precisa de answers, sem answers ele nгo pode ficar! ♫
@TOPIC
Nгo funcionou!
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)