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; }