[Ajuda] Sistema profissгo de gari
#1

preciso de um loop pra checar a carcaзa mais prуxima me ajudem!!
Code:
public OnVehicleDeath(vehicleid, killerid)
{
    new Float: sX, Float: sY, Float: sZ;
	GetVehiclePos(vehicleid, sX, sY, sZ);
	SetVehicleToRespawn(vehicleid);
	CarroDestruido = CreateObject(3594, sX, sY, sZ, 0.0, 0.0, 0.0, 300.0);
	carcaca[carcacaID][posx] = float:sX, carcaca[carcacaID][posy] = float:sY, carcaca[carcacaID][posz] = float:sZ;
	carcaca[carcacaID][IDcarcaca] = CarroDestruido;
	carcacaID++;
	return 1;
}
Code:
CMD:pegarcarcaca(playerid, params[])
{
// preciso de um loop pra checar a carcaзa mais prуxima me ajudem!!
		if(IsPlayerInRangeOfPoint(playerid, 10.0, carcaca[carcacaID][posx], carcaca[carcacaID][posy], carcaca[carcacaID][posz]))
		{
			CarroDestruido = carcaca[carcacaID][IDcarcaca];
			DestroyObject(CarroDestruido);
	    	SendClientMessage(playerid,-1,"| INFO | Carcaзa coletada!");
		}
		else
		{
        	SendClientMessage(playerid,Vermelho,"| ERRO | Vocк nгo esta prуximo a uma carcaзa!");
        	return 1;
		}
	}
	return 1;
}
Reply
#2

utilize: else if
Reply
#3

Poderia me dar um exemplo?
Reply
#4

Quote:
Originally Posted by connork
View Post
pawn Code:
stock InRangeOfAnyVehicle(playerid)
{
    new Float:X, Float:Y, Float:Z, id = -1;
    for(new I = 0; I < MAX_VEHICLES; I++)
    {
        GetVehiclePos(I, X, Y, Z);
        if(IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))
        {
            id = I;
            break;
        }
    }
    return id;
}
esse exemplo ele fez para verificar os carros mais proximos.
Reply
#5

Tente assim:

Code:
CMD:pegarcarcaca(playerid, params[])
{
	for(new carcacaID = 0; carcacaID < 500 /*altere para o nє mбximo de veнculos*/; ++ carcacaID)
	{
		if(IsPlayerInRangeOfPoint(playerid, 10.0, carcaca[carcacaID][posx], carcaca[carcacaID][posy], carcaca[carcacaID][posz]))
		{
			CarroDestruido = carcaca[carcacaID][IDcarcaca];
			DestroyObject(CarroDestruido);
	    	SendClientMessage(playerid,-1,"| INFO | Carcaзa coletada!");
			
			return true;
		}
	}
	
	SendClientMessage(playerid,Vermelho,"| ERRO | Vocк nгo esta prуximo a uma carcaзa!");
	
	return 1;
}
Esse cуdigo vai fazer, basicamente, encontrar o objeto mais prуximo e se for encontrado vai retornar a msg "Carcaзa coletada!" e retornando o comando para que o restante do cуdigo nгo seja executado, assim como mais voltas desnecessбrias no loop.
Caso nгo encontre, a mensagem "Vocк nгo esta prуximo a uma carcaзa!" serб chamada.
Reply
#6

Code:
(449) : warning 219: local variable "carcacaID" shadows a variable at a preceding level
Mesmo com o warning testei. Sу da a mensagem de erro
Quote:
Originally Posted by F1N4L
View Post
Tente assim:

Code:
CMD:pegarcarcaca(playerid, params[])
{
	for(new carcacaID = 0; carcacaID < 500 /*altere para o nє mбximo de veнculos*/; ++ carcacaID)
	{
		if(IsPlayerInRangeOfPoint(playerid, 10.0, carcaca[carcacaID][posx], carcaca[carcacaID][posy], carcaca[carcacaID][posz]))
		{
			CarroDestruido = carcaca[carcacaID][IDcarcaca];
			DestroyObject(CarroDestruido);
	    	SendClientMessage(playerid,-1,"| INFO | Carcaзa coletada!");
			
			return true;
		}
	}
	
	SendClientMessage(playerid,Vermelho,"| ERRO | Vocк nгo esta prуximo a uma carcaзa!");
	
	return 1;
}
Esse cуdigo vai fazer, basicamente, encontrar o objeto mais prуximo e se for encontrado vai retornar a msg "Carcaзa coletada!" e retornando o comando para que o restante do cуdigo nгo seja executado, assim como mais voltas desnecessбrias no loop.
Caso nгo encontre, a mensagem "Vocк nгo esta prуximo a uma carcaзa!" serб chamada.
Reply
#7

Quote:
Originally Posted by MicroSof
View Post
Code:
(449) : warning 219: local variable "carcacaID" shadows a variable at a preceding level
Mesmo com o warning testei. Sу da a mensagem de erro
Nгo sei como tu estб utilizando a variбvel carcacaID global, mas tente assim:

Code:
CMD:pegarcarcaca(playerid, params[])
{
	for(carcacaID = 0; carcacaID < 500 /*altere para o nє mбximo de veнculos*/; ++ carcacaID)
	{
		if(IsPlayerInRangeOfPoint(playerid, 10.0, carcaca[carcacaID][posx], carcaca[carcacaID][posy], carcaca[carcacaID][posz]))
		{
			CarroDestruido = carcaca[carcacaID][IDcarcaca];
			DestroyObject(CarroDestruido);
	    	SendClientMessage(playerid,-1,"| INFO | Carcaзa coletada!");
			
			return true;
		}
	}
	
	SendClientMessage(playerid,Vermelho,"| ERRO | Vocк nгo esta prуximo a uma carcaзa!");
	
	return 1;
}
@edit

Se a mensagem de erro permanecer, verifique se as posiзхes dos objetos estгo sendo carregadas corretamente.
Reply
#8

obrigado +REP
Quote:
Originally Posted by F1N4L
View Post
Nгo sei como tu estб utilizando a variбvel carcacaID global, mas tente assim:

Code:
CMD:pegarcarcaca(playerid, params[])
{
	for(carcacaID = 0; carcacaID < 500 /*altere para o nє mбximo de veнculos*/; ++ carcacaID)
	{
		if(IsPlayerInRangeOfPoint(playerid, 10.0, carcaca[carcacaID][posx], carcaca[carcacaID][posy], carcaca[carcacaID][posz]))
		{
			CarroDestruido = carcaca[carcacaID][IDcarcaca];
			DestroyObject(CarroDestruido);
	    	SendClientMessage(playerid,-1,"| INFO | Carcaзa coletada!");
			
			return true;
		}
	}
	
	SendClientMessage(playerid,Vermelho,"| ERRO | Vocк nгo esta prуximo a uma carcaзa!");
	
	return 1;
}
@edit

Se a mensagem de erro permanecer, verifique se as posiзхes dos objetos estгo sendo carregadas corretamente.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)