IsPlayerInRangeOfPoint -
TheBob - 06.09.2016
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?
Re: IsPlayerInRangeOfPoint -
LockedLucas - 06.09.2016
pra nгo floodar й sу criar outra variбvel '-'
Re: IsPlayerInRangeOfPoint -
F1N4L - 06.09.2016
IsPlayerInRangeOfPoint + SetTimer = Soluзгo
@LockedLucas
HAHAHAHAHA
Re: IsPlayerInRangeOfPoint -
TheBob - 06.09.2016
hmm nгo tinha pensado nisso boa
Re: IsPlayerInRangeOfPoint -
LockedLucas - 06.09.2016
Quote:
Originally Posted by TheBob
hmm nгo tinha pensado nisso boa
|
na minha soluзгo ou na do F1N4L ?
Re: IsPlayerInRangeOfPoint -
F1N4L - 06.09.2016
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;
}
Re: IsPlayerInRangeOfPoint -
TheBob - 07.09.2016
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
Re: IsPlayerInRangeOfPoint -
Bruno13 - 07.09.2016
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", 2000, false, "i", playerid);
}
return 1;
}
forward CheckPlayerInPlace(playerid);
public CheckPlayerInPlace(playerid)
{
if(IsPlayerInRangeOfPoint(playerid, 7.0, 0.0, 0.0, 0.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.
Re: IsPlayerInRangeOfPoint -
RiqueP - 07.09.2016
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", 2000, false, "i", playerid);
}
return 1;
}
forward CheckPlayerInPlace(playerid);
public CheckPlayerInPlace(playerid)
{
if(IsPlayerInRangeOfPoint(playerid, 7.0, 0.0, 0.0, 0.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.
Re: IsPlayerInRangeOfPoint -
TheBob - 07.09.2016
Й um bom Exemplo tambйm, Agradece.