29.10.2013, 03:31
Fiz este script em poucos minutos, basicamente ele detecta quando um usuбrio estб atirando sobre algum veнculo
Na parte
Й quando detecta qual jogador atirou em qual veнculo, isso pode ser usado para muita coisa.
A precisгo nгo й 100% e este script й um esboзo, apenas fiz para ajudar o membro arakuta.
Obrigado
pawn Код:
#include a_samp
#include IPSI/load.main
#define ShootVeh:: ShootVeh_
public OnFilterScriptInit() {
SetTimer("ShootVeh_OnPlayerVehicleUpdate", 50, true);
printf("OnPlayerShootVehicle INICIADO\n\nCriado por Bruno da Silva\n\n@ipsbr.net\n@brunodasilva.com");
return true;
}
stock Float:ShootVeh::Distance( Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2 )
return Float:(((((x1-x2) * (x1-x2)) + ((y1-y2) * (y1-y2)) + ((z1-z2)*(z1-z2)))));
stock bool:ShootVeh::InRange( Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float: range )
return bool:(ShootVeh::Distance ( x1, y1, z1, x2, y2, z2 ) < (range * range));
stock
bit1:ShootVeh::jogadorAtirando<MAX_PLAYERS>,
ShootVeh::ultimoTiro [ MAX_PLAYERS ] ;
public ShootVeh::OnPlayerVehicleUpdate();
public ShootVeh::OnPlayerShootVehicle(playerid, vehicleid);
public ShootVeh::OnPlayerVehicleUpdate() {
static Float: zPos[3], Float: pPos[3], Float: dis, Float: pCam[3];
each(Spawned->new i) {
if(gettime() - ShootVeh::ultimoTiro[i] > 1 && !getBit1(ShootVeh::jogadorAtirando, i) ) continue;
GetPlayerPos(i , pPos[0], pPos[1], pPos[2]) ;
each(VehiclesCreated->new j) {
GetPlayerPos(j , zPos[0], zPos[1], zPos[2]) ;
dis = ShootVeh::Distance( pPos[0], pPos[1], pPos[2], zPos[0], zPos[1], zPos[2] );
if((dis < 200.0)) {
GetPlayerCameraPos(i, pPos[0], pPos[1], pPos[2]);
GetPlayerCameraFrontVector(i, pCam[0], pCam[2], pCam[2]);
if(ShootVeh::InRange( pPos[0] + floatmul( pCam[0], dis), pPos[1] + floatmul( pCam[1], dis), pPos[2] + floatmul( pCam[2], dis), zPos[0], zPos[1], zPos[2], 8.0)) {
ShootVeh::OnPlayerShootVehicle(i, j);
}
}
}
}
return true;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if((((newkeys & (KEY_FIRE)) == (KEY_FIRE)) && ((oldkeys & (KEY_FIRE)) != (KEY_FIRE))))
setBit1(ShootVeh::jogadorAtirando, playerid, 1);
else {
if((((newkeys & (KEY_FIRE)) != (KEY_FIRE)) && ((oldkeys & (KEY_FIRE)) == (KEY_FIRE))))
{
ShootVeh::ultimoTiro[playerid] = gettime();
setBit1(ShootVeh::jogadorAtirando, playerid, 0);
}
}
return true;
}
public ShootVeh::OnPlayerShootVehicle(playerid, vehicleid) {
SendClientMessage(playerid, -1, "Para de atirar no veнculo seu lesado");
return true;
}
Na parte
pawn Код:
public ShootVeh::OnPlayerShootVehicle(playerid, vehicleid) {
A precisгo nгo й 100% e este script й um esboзo, apenas fiz para ajudar o membro arakuta.
Obrigado