SA-MP Forums Archive
[Pedido] Checar se o player estб em tal gangzone - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Pedido] Checar se o player estб em tal gangzone (/showthread.php?tid=583949)



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"1000false ); 
Public
PHP код:
forward ChecarArea( );
public 
ChecarArea( )
{
    foreach(
Player)
    {
        if( 
IsPlayerInPlacei0.00.00.00.0 )) // Coordenadas
        
{
            
// Entrou Бrea
        
}
        else
        {
            
// Saiu Бrea
        
}
    }
    
SetTimer"ChecarArea"1000false );
    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