[Ajuda] OnPlayerWeaponShot
#1

O que tem de errado nesse codigo, quando eu atiro no veado2 ele destroi o veado1?

Quote:

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

Reply
#2

Quote:
Originally Posted by OtimoJogo
View Post
O que tem de errado nesse codigo, quando eu atiro no veado2 ele destroi o veado1?
no seu codigo, nao importa em q veado vocк atira, esta destruindo o primeiro veado, eu fiz algo bem mais detalhado em meu GM, mais usei para meu sistema de radio portati. vou ver se da pra colocar ele aki, e eu dou um @edit no comentario.


pawn Code:
//  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]);
                   
                }
            }
        }
// estude o codigo e entenda
Reply
#3

Entгo como faz para isso funcionar para cada veado?
Reply
#4

o hitid pega o id do objeto entгo vocк destroi o id que levou o dano..
Code:
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;
}
um exemplo:
Code:
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);
Code:
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;
}
Reply
#5

Vlw a todos vocкs que mim ajudaram pricipalmente vocк "Whoo" muito obrigado mim ajudou a sua resposta +rep
Reply
#6

Como fazer para aparecer uma msg no final assim, tem cinco veados ai eu mato os cincos ai aparecer uma msg
falando "Vocк matou todos os veados vocк pode usa /cacar novamente"
tem como fazer isso?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)