[DUVIDA] Objeto Tapetes de prego realistico -
Mattos - 29.08.2011
Pessoal, sei que muitos vao de cara falar: "PQ VC NAO PROCURA NO SISTEMA DE BUSCA!"
Mas calma... й algo diferente... eu nao queria um sistema de adicionamento de tapete, e muito menos um comando para furar os pneus...
Eu queria algo mais dinamico... Tipo, todo objeto de id 2899 (tapete de pregos) que estivesse adicionado no mapa, ja tivesse sua funзгo normal (de furar pneus) ou seja, ta la dentro dos meus objetos adicionados no ongamemodinit e no server quando o jogador passa em cima ja fura... nao sei se й o caso pra fazer uma include... nao sei nem se й possivel...
Uma outra forma que pensei foi fazendo como um pickup que teria a seguinte funзгo:
pawn Код:
new pbpvluzes,pbpvpneus,pbpvpainel,pbpvportas;
new vehicleid = GetPlayerVehicleID(playerid);
GetVehicleDamageStatus(v,pbpvpainel,pbpvportas,pbpvluzes,pbpvpneus);
UpdateVehicleDamageStatus(v, pbpvpainel, pbpvportas, pbpvluzes, 15);
Porem й possivel fazer um pickup apartir de um objeto? Fiquei em duvida pq no CreatePickup, nao tem a coordenada da rotaзгo...
Bom aguardo por respostas
Obrigado
Re: [DUVIDA] Objeto Tapetes de prego realistico -
RebeloX - 29.08.2011
Nгo sei Muito bem '-', mas tenta usar o IsPlayerInRangeOfPoint
Re: [DUVIDA] Objeto Tapetes de prego realistico -
Mattos - 29.08.2011
Isso nao seria para checkpoints? sem contar que ele define uma "range" ou seja um circulo... tanto que vc esolhe o diametro e tal... e o tapete de pregos й retangular...
Alguma outra idйia?
Re: [DUVIDA] Objeto Tapetes de prego realistico -
RebeloX - 29.08.2011
Vc ainda nгo aprendeu pois nгo?
IsPlayerInRangeOfPoint irб defenir se o player esta na posiзгo, ou seja se voce usar assim:
pawn Код:
if(IsPlayerInRangeOfPoint(playerid,1.0,CordX,CordZ,CordY);
ou seja o 1.0 й o Radios, entгo significa que se que ele tem que estar a 1m do local, como se vc usar 100.0 ele o maximo й 100m, exemplo
o Ponto sгo as Coordenadas...
o R & o C й o maximo, sendo que vc definiu o Radius para 100m por exemplo, caso ele esteja a 50m de destancia do ponto a funзгo serб executada...
um exemplo...
pawn Код:
forward IsPlayerInRangeOfPoint(playerid ,Float:Radius ,Float:PX ,Float:PY ,Float:PZ);
public IsPlayerInRangeOfPoint(playerid ,Float:Radius ,Float:PX ,Float:PY ,Float:PZ)
{
//Funзгo do Damadge
return;
}
Re: [DUVIDA] Objeto Tapetes de prego realistico -
Mattos - 29.08.2011
claro que eu sei isso... e й por isso que й um problema... pq o tapete de pregos como й um retangulo ele fica dentro desse cirulo. ou seja, sу do cara aproximas do tapete ele ja vai ter a roda furada...
й um caminho...
alguem tem ourta idйia?
Re: [DUVIDA] Objeto Tapetes de prego realistico -
RockFire - 29.08.2011
pawn Код:
IsPlayerInLocation( playerid , Float:MinX , Float:MaxX , Float:MinY , Float:MaxY , Float:MinZ , Float:MaxZ ) // Em retвngulo
{
static
Float:x,
Float:y,
Float:z
;
GetPlayerPos( playerid , x , y , z );
if( MinX > x && MaxX < x && MinY > y && MaxY < y && MinZ > z && MaxZ < z )
return 1;
return 0;
}
Re: [DUVIDA] Objeto Tapetes de prego realistico -
Mattos - 29.08.2011
Boa rock... E tipo, vc tem alguma dica de como vou pegar certinho o tamanhos do objeto 2899... e tipo, existe alguma forma deu meio que por esse retangulo relacionado com o objeto 2899 para sempre que eu por um objeto 2899 no mapa ele ja interpretar a funзгo de furar?
Re: [DUVIDA] Objeto Tapetes de prego realistico -
Shadoww5 - 30.08.2011
Usa a include
SpikeStrip.inc:
PHP код:
#include <a_samp>
#define MAX_SPIKESTRIPS 200
enum sInfo
{
sCreated,
Float:sX,
Float:sY,
Float:sZ,
sObject,
};
new SpikeInfo[MAX_SPIKESTRIPS][sInfo];
public OnPlayerUpdate(playerid)
{
if(!IsPlayerConnected(playerid)) return 0;
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
for(new i = 0; i < sizeof(SpikeInfo); i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, SpikeInfo[i][sX], SpikeInfo[i][sY], SpikeInfo[i][sZ]))
{
if(SpikeInfo[i][sCreated] == 1)
{
new panels, doors, lights, tires;
new carid = GetPlayerVehicleID(playerid);
GetVehicleDamageStatus(carid, panels, doors, lights, tires);
tires = encode_tires(1, 1, 1, 1);
UpdateVehicleDamageStatus(carid, panels, doors, lights, tires);
return 0;
}
}
}
}
return 1;
}
stock CreateStrip(Float:x,Float:y,Float:z,Float:Angle)
{
for(new i = 0; i < sizeof(SpikeInfo); i++)
{
if(SpikeInfo[i][sCreated] == 0)
{
SpikeInfo[i][sCreated]=1;
SpikeInfo[i][sX]=x;
SpikeInfo[i][sY]=y;
SpikeInfo[i][sZ]=z-0.7;
SpikeInfo[i][sObject] = CreateObject(2899, x, y, z-0.9, 0, 0, Angle-90);
return 1;
}
}
return 0;
}
stock DeleteAllStrip()
{
for(new i = 0; i < sizeof(SpikeInfo); i++)
{
if(SpikeInfo[i][sCreated] == 1)
{
SpikeInfo[i][sCreated]=0;
SpikeInfo[i][sX]=0.0;
SpikeInfo[i][sY]=0.0;
SpikeInfo[i][sZ]=0.0;
DestroyObject(SpikeInfo[i][sObject]);
}
}
return 0;
}
stock DeleteClosestStrip(playerid)
{
for(new i = 0; i < sizeof(SpikeInfo); i++)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, SpikeInfo[i][sX], SpikeInfo[i][sY], SpikeInfo[i][sZ]))
{
if(SpikeInfo[i][sCreated] == 1)
{
SpikeInfo[i][sCreated]=0;
SpikeInfo[i][sX]=0.0;
SpikeInfo[i][sY]=0.0;
SpikeInfo[i][sZ]=0.0;
DestroyObject(SpikeInfo[i][sObject]);
return 1;
}
}
}
return 0;
}
encode_tires(tires1, tires2, tires3, tires4) {
return tires1 | (tires2 << 1) | (tires3 << 2) | (tires4 << 3);
}
As funзхes sгo:
Код:
CreateStrip(Float:x,Float:y,Float:z,Float:Angle)
DeleteClosestStrip(playerid)
DeleteAllStrip()
Re: [DUVIDA] Objeto Tapetes de prego realistico -
Mattos - 30.08.2011
SHADOWW vc й o cara! *-*
era exatamente o que eu queria! doble reputation!