[Ajuda] IsPlayerInRangeOfPoint
#1

opa eai galerinha do forum samp tudo bem com vocкs?
to quebrando a cabeзa com isso aqui
qnd o player entra em um local e esse local tem 7.0 de raio, ai eu quero que apareзa um textdraw pra ele, qnd ele ficar nessa area, e tambйm ativar uma booleana para true, e se ele sair a booleana volta para false. n sei como fazer isso, no onplayerupdate pode floodar serб que no ongamemodeinit da certo?
Reply
#2

pra nгo floodar й sу criar outra variбvel '-'
Reply
#3

IsPlayerInRangeOfPoint + SetTimer = Soluзгo

@LockedLucas

HAHAHAHAHA
Reply
#4

hmm nгo tinha pensado nisso boa
Reply
#5

Quote:
Originally Posted by TheBob
Посмотреть сообщение
hmm nгo tinha pensado nisso boa
na minha soluзгo ou na do F1N4L ?
Reply
#6

Quote:
Originally Posted by LockedLucas
Посмотреть сообщение
na minha soluзгo ou na do F1N4L ?
Ele jб estб criando uma variбvel booleana para realizar a verificaзгo, certo? Entгo nгo hб necessidade de haver outra variбvel pra checar ou seja lб qual foi sua lуgica, enfim...

Ao meu ver nem haveria necessidade de usar uma variбvel, pois se verificar se estб ou nгo na бrea jб й o suficiente.

@topic

OnPlayerUpdate deve ser sempre a ultima opзгo para ser utilizado, por isso segue um cуdigo exemplo de como seria com timer e sem variбvel:

Код:
main()
{
	SetTimer("MostraTD", 1000, true);
}

forward MostraTD();
public MostraTD()
{
	for(new i; i < MAX_PLAYERS; ++ i)
	{
		if(IsPlayerInRangeOfPoint(i, 7.0, 0.0, 0.0, 0.0))
		{
			//Mostra o TD
		}
		else
		{
			//Oculta TD
		}
	}

	return true;
}
Reply
#7

Cara realmente vlw, +rep
pensava que o main() sу fosse usado para isso:
Код:
main()
{
	print("\n---------------------------------------");
	print("Running New.pwn - by the SA-MP team\n");
	print("---------------------------------------\n");
}
Thank for your comments xD
Reply
#8

O que F1NAL apresentou й um dos mйtodos, mas acho que hб maneiras melhores de nгo se utilizar tanto processamento...
PHP код:
static 
    
bool:spawned[MAX_PLAYERS],
    
bool:playerInPlace[MAX_PLAYERS];
public 
OnPlayerConnect(playerid)
{
    
spawned[playerid] = false;
    return 
1;
}
public 
OnPlayerSpawn(playerid)
{
    if(!
spawned[playerid])
    {
        
spawned[playerid] = true;
        
playerInPlace[playerid] = false;
        
SetTimerEx("CheckPlayerInPlace"2000false"i"playerid);
    }
    return 
1;
}
forward CheckPlayerInPlace(playerid);
public 
CheckPlayerInPlace(playerid)
{
    if(
IsPlayerInRangeOfPoint(playerid7.00.00.00.0))
    {
        if(!
playerInPlace[playerid])
        {
            
playerInPlace[playerid] = true;
            
//Mostra o TD
        
}
    }
    else if(
playerInPlace[playerid])
    {
        
playerInPlace[playerid] = false;
        
//Oculta TD
    
}

Na lуgica acima, verificarб de 2 em 2 segundos se o jogador estб no local indicado, logo, caso esteja, a TextDraw serб mostrada apenas uma vez, e quando sair, a TextDraw serб ocultada tambйm uma ъnica vez.

Altere o intervalo do timer a seu gosto, mas creio que 2 segundos seja suficiente.
Reply
#9

Quote:
Originally Posted by Bruno13
Посмотреть сообщение
O que F1NAL apresentou й um dos mйtodos, mas acho que hб maneiras melhores de nгo se utilizar tanto processamento...
PHP код:
static 
    
bool:spawned[MAX_PLAYERS],
    
bool:playerInPlace[MAX_PLAYERS];
public 
OnPlayerConnect(playerid)
{
    
spawned[playerid] = false;
    return 
1;
}
public 
OnPlayerSpawn(playerid)
{
    if(!
spawned[playerid])
    {
        
spawned[playerid] = true;
        
playerInPlace[playerid] = false;
        
SetTimerEx("CheckPlayerInPlace"2000false"i"playerid);
    }
    return 
1;
}
forward CheckPlayerInPlace(playerid);
public 
CheckPlayerInPlace(playerid)
{
    if(
IsPlayerInRangeOfPoint(playerid7.00.00.00.0))
    {
        if(!
playerInPlace[playerid])
        {
            
playerInPlace[playerid] = true;
            
//Mostra o TD
        
}
    }
    else if(
playerInPlace[playerid])
    {
        
playerInPlace[playerid] = false;
        
//Oculta TD
    
}

Na lуgica acima, verificarб de 2 em 2 segundos se o jogador estб no local indicado, logo, caso esteja, a TextDraw serб mostrada apenas uma vez, e quando sair, a TextDraw serб ocultada tambйm uma ъnica vez.

Altere o intervalo do timer a seu gosto, mas creio que 2 segundos seja suficiente.
Na verdade, no exemplo do F1NAL criaria apenas um time para ver se estб ou nгo na бrea. No seu caso, criaria mais de um.
Reply
#10

Й um bom Exemplo tambйm, Agradece.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)