[Ajuda] checar se o jogador ta na gangzone
#1

pawn Код:
GangZoneCreate(128.1725,1274.4392,-365.3042,944.3629);

fiz isso no onplayerupdate

 if(IsPlayerInArea(playerid,128.1725,1274.4392,-365.3042,944.3629) && arena == 3) {
        return 1;
    } else {
        SendClientMessage(playerid, COLOR_RED, "volta pra arena ou vc vai ser morto!");
        return 0;
    }

e peguei essa stock no forum

IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY) {
    new Float:X, Float:Y, Float:Z;

    GetPlayerPos(playerid, X, Y, Z);
    if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) {
        return 1;
    }
    return 0;
}
eu estando ou nao na arena sempre flooda meu chat
Reply
#2

https://sampforum.blast.hk/showthread.php?tid=589169
faзa um timer usando "SetTimer", OnPlayerUpdate й muito constante vai causar lag
Reply
#3

n consegui ainda
Reply
#4

Код:
stock IsPlayerInPlace(playerid,Float:XMin,Float:YMin,Float:XMax,Float:YMax )
{
	new RetValue = 0;
	new Float:X,Float:Y,Float:Z;
	GetPlayerPos(playerid,X,Y,Z );

	if( X >= XMin && Y >= YMin && X < XMax && Y < YMax )
	{
		RetValue = 1;
	}
	return RetValue;
}
Reply
#5

Tente dessa forma

PHP код:
CMD:iniciar(playerid)
{
    
arena 3;
    
VerificarArea(playerid);
    return 
1;
}
forward VerificarArea(playerid); public VerificarArea(playerid) {
    static 
cont;
    if(
arena == 3) {
        if(!
IsPlayerInArea(playerid128.17251274.4392, -365.3042944.3629)) {
            if(
cont == 3) {
                
cont 0;
                
SetPlayerHealth(playerid0.0);
                
SendClientMessage(playeridCOLOR_RED"vocк foi morto!");
                return 
1;
            }
            
SendClientMessage(playeridCOLOR_RED"volta pra arena ou vc vai ser morto!");
            
cont++;
        }
        else 
cont 0;
        
SetTimerEx("VerificarArea"1000false"i"playerid);
    }
    return 
1;
}
IsPlayerInArea(playeridFloat:MinXFloat:MinYFloat:MaxXFloat:MaxY) {
    new 
Float:XFloat:YFloat:Z;
    
GetPlayerPos(playeridXYZ);
    if(
>= MinX && <= MaxX && >= MinY && <= MaxY) return 1;
    return 
0;

Reply
#6

funciou editpawn porem quando to na gangzone fala que nao to
Reply
#7

alguem tem outra sugestao ae?
Reply
#8

Quote:
Originally Posted by Lucas_HenryK
Посмотреть сообщение
funciou editpawn porem quando to na gangzone fala que nao to
Troque isso :

PHP код:
if(!IsPlayerInArea(playerid128.17251274.4392, -365.3042944.3629)) 
por isso:

PHP код:
if(IsPlayerInArea(playerid128.17251274.4392, -365.3042944.3629)) 
Reply
#9

eu ja tinha tentado assim e nao deu cara
Reply
#10

Tente dessa forma verificando todos os jogadores que estгo na GZ.

PHP код:
forward VerificarArea(); 
public 
VerificarArea() { 
    static 
cont[MAX_PLAYERS];
    if(
arena == 3) {
        for(new 
i!= MAX_PLAYERSi++) {
            if(!
IsPlayerConnected(i)) continue;
            
            if(
IsPlayerInArea(i128.17251274.4392, -365.3042944.3629)) cont[i] = 0;
            else
            { 
                if(
cont[i] == 3) { 
                    
cont[i] = 0
                    
SetPlayerHealth(i0.0); 
                    
SendClientMessage(iCOLOR_RED"vocк foi morto!"); 
                    return 
1
                } 
                
SendClientMessage(iCOLOR_RED"volta pra arena ou vc vai ser morto!");
                
cont[i]++; 
            }
        }
        
SetTimer("VerificarArea"1000false); 
    } 
    return 
1

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)