Checar se o player estб em tal gangzone -
pWesley - 01.08.2015
Olб, eu queria saber alguma public nativa do SA-MP que faz uma checagem se o player estб ou nгo numa gangzone.
OBS: Um pequeno esboзo serve.
Re: Checar se o player estб em tal gangzone -
FanonRiouDiou - 01.08.2015
PHP код:
IsPlayerInPlace(playerid,Float:XMin,Float:YMin,Float:XMax,Float:YMax)
{
new RetValue=0,Float:aX,Float:aY,Float:aZ;
GetPlayerPos(playerid,aX,aY,aZ);
if(aX >= XMin && aY >= YMin && aX < XMax && aY < YMax)
{
RetValue=1;
}
return RetValue;
}
Re: Checar se o player estб em tal gangzone -
pWesley - 01.08.2015
Quote:
Originally Posted by FanonRiouDiou
PHP код:
IsPlayerInPlace(playerid,Float:XMin,Float:YMin,Float:XMax,Float:YMax)
{
new RetValue=0,Float:aX,Float:aY,Float:aZ;
GetPlayerPos(playerid,aX,aY,aZ);
if(aX >= XMin && aY >= YMin && aX < XMax && aY < YMax)
{
RetValue=1;
}
return RetValue;
}
|
Mas eu jogaria isso onde mais ou menos?? Eu tenho tudo elaborado aqui, sу que quando eu jogo em OnPlayerUpdate ele repete inъmeras vezes. Eu queria que ele nгo repetisse.
Re: Checar se o player estб em tal gangzone -
FanonRiouDiou - 01.08.2015
PHP код:
public OnPlayerDeath(playerid,killerid,reason) //Checando se a morte do player foi na favela
{
if(IsPlayerInPlace(playerid,1952.756103,-1160.385253,2281.945800,-972.161926)) //Coordenadas da gangzone, Checa se foi na gangzone
{
SendClientMessage(playerid,-1,"Vocк morreu na favela."); //Envia uma mensagem
}
return 1;
}
Cуdigo pode estar mal-feito mas й um exemplo, eu testei aqui esse IsPlayerInPlace pra contar kills em certas gangzones e funcionou certinho.
Й melhor criar um timer checando se ele estб na Gangzone. Colocar na OnPlayerUpdate pode dar lag. O exemplo ta ai em cima й sу vocк adaptar.
Re: Checar se o player estб em tal gangzone -
pWesley - 01.08.2015
Assim, vamos supor:
Eu entrei na zona, logo, retornaria uma mensagem: Vocк entrou na gangzone.
Eu resolvo sair da zona, logo, retornaria uma mensagem: Vocк saiu da gangzone.
Й isso que eu quero tentar entender pra elaborar aqui. A explicaзгo tб tudo bem, mas eu quero saber uma lуgica que verifique quando o cara ENTRA ou SAI da zona.
Re: Checar se o player estб em tal gangzone -
Welconha - 01.08.2015
OnGameModeInit
PHP код:
SetTimer( "ChecarArea", 1000, false );
Public
PHP код:
forward ChecarArea( );
public ChecarArea( )
{
foreach(Player, i )
{
if( IsPlayerInPlace( i, 0.0, 0.0, 0.0, 0.0 )) // Coordenadas
{
// Entrou Бrea
}
else
{
// Saiu Бrea
}
}
SetTimer( "ChecarArea", 1000, false );
return 1;
}
Re: Checar se o player estб em tal gangzone -
FanonRiouDiou - 01.08.2015
PHP код:
if(IsPlayerInPlace(playerid,1952.756103,-1160.385253,2281.945800,-972.161926)) //Coordenadas de uma gangzone da favela.
{
SendClientMessage(playerid,-1,"Vocк entrou na favela"); //Manda mensagem
EstaNaFavela[playerid]=true; //Booleana checando true ou false
}
if(!IsPlayerInPlace(playerid,1952.756103,-1160.385253,2281.945800,-972.161926) && EstaNaFavela[playerid]==true) //Se o player entrou na favela mas nгo estб lб.
{
SendClientMessage(playerid,-1,"Vocк saiu da favela"); //Manda uma mensagem
EstaNaFavela[playerid]=false; //Booleana checando true ou false
}
Com um timer fica bem melhor. Estб ai um exemplo. Vocк pode adaptar. Tenho certeza que o codigo pode ser melhorado deixando mais rбpido. Sou novo em Pawn.
Re: Checar se o player estб em tal gangzone -
Ph0ton - 01.08.2015
Realmente, em hipуtese alguma coloque um cуdigo como este na PlayerUpdate, uma vez que essa Callback й chamada inъmeras vezes por segundo
Veja:
https://sampwiki.blast.hk/wiki/OnPlayerUpdate
Como disse o amigo FanonRiouDiou, faзa um Timer que chame determinada Callback para checar se o player estб entrando ou nгo em uma gangzone.
Caso vocк possua mais de uma Gangzone que deseja checar pode fazer mъltiplos elseif, ou entгo armazenar as coordenadas e o respectivo nome da gangzone em um vetor (matriz) e usar um laзo de repetiзгo.
Cumps
Re: Checar se o player estб em tal gangzone -
Lуs - 01.08.2015