|
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) { if(hittype == 3) { if(IsValidObject(hitid) == veado1[playerid]) { DestroyObject(veado1[playerid]); } if(IsValidObject(hitid) == veado2[playerid]) { DestroyObject(veado2[playerid]); } } return 1; } |
|
O que tem de errado nesse codigo, quando eu atiro no veado2 ele destroi o veado1?
|
// no topo do GM //
enum vInfo
{
ObjetoVeado,
Float:VeadoPos[3]
};
new VeadoInfo[500][vInfo];
// em OnGameModeInit
VeadoInfo[0][ObjetoVeado] = CreateObject .....
VeadoInfo[1][ObjetoVeado] = CreateObject .....
VeadoInfo[2][ObjetoVeado] = CreateObject .....
VeadoInfo[3][ObjetoVeado] = CreateObject .....
VeadoInfo[4][ObjetoVeado] = CreateObject .....
// na OnPlayerWeaponShot
new Float:fOriginX, Float:fOriginY, Float:fOriginZ, Float:fHitPosX, Float:fHitPosY, Float:fHitPosZ;
GetPlayerLastShotVectors(playerid, fOriginX, fOriginY, fOriginZ, fHitPosX, fHitPosY, fHitPosZ);
// acabamos de criar umas variaveis, para armazenar de onde a bala sai, e para onde a bala vai, mais sу usaremos para onde a bala vai.
for(new Veados; Veados<500; Veados++)
{
IsValidObject(VeadoInfo[Veados][ObjetoVeado]);
{
new Float:rx,Float:ry,Float:rz;
GetObjectPos(VeadoInfo[Veados][ObjetoVeado], rx,ry,rz); // getamos a localizaзгo do veado e salvamos nas variaveis.
if( fHitPosX >= rx-0.3 && fHitPosY >= ry-0.3 && fHitPosZ >= rz-0.1 && fHitPosX <= rx+0.3 && fHitPosY <= ry+0.3 && fHitPosZ <= rz+0.3) // isso confere se a bala atingiu ou chegou muito proximo ao veado, se for verdadeiro ...
{
GameTextForPlayer(playerid,"~r~~>~~w~Veado Destruido~r~~<~",1000,3);
DestroyObject(VeadoInfo[Veados][ObjetoVeado]);
}
}
}
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
new msg[100];
if(hittype == BULLET_HIT_TYPE_OBJECT)
{
if(IsValidObject(hitid))
{
DestroyObject(hitid);
format(msg, sizeof(msg), "vocк matou o veado com a arma id %i, o veado id %i ", weaponid, hitid);
SendClientMessage(playerid, -1, msg);
}
}
return 1;
}
new Veados[5]; Veados[0] = CreateObject(19315, 0.0, 0.0, 0.0, 0.0, 0.0, 96.0, 300.0); Veados[1] = CreateObject(19315, 0.0, 0.0, 0.0, 0.0, 0.0, 96.0, 300.0); Veados[2] = CreateObject(19315, 0.0, 0.0, 0.0, 0.0, 0.0, 96.0, 300.0); Veados[3] = CreateObject(19315, 0.0, 0.0, 0.0, 0.0, 0.0, 96.0, 300.0); Veados[4] = CreateObject(19315, 0.0, 0.0, 0.0, 0.0, 0.0, 96.0, 300.0);
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
if(hittype == BULLET_HIT_TYPE_OBJECT)
{
if(IsValidObject(hitid))
{
for(new a; a < sizeof(Veados); ++a)
{
if(hitid == Veados[a])
{
new msg[100];
DestroyObject(hitid);
format(msg, sizeof(msg), "vocк matou o veado com a arma id %i, o veado id %i - %i", weaponid, hitid, Veados[a]);
SendClientMessage(playerid, -1, msg);
break;
}
}
}
}
return 1;
}