SA-MP Forums Archive
[Ajuda] OnPlayerWeaponShot - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] OnPlayerWeaponShot (/showthread.php?tid=616344)



OnPlayerWeaponShot - OtimoJogo - 03.09.2016

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




Re: OnPlayerWeaponShot - Andinho - 03.09.2016

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


Re: OnPlayerWeaponShot - OtimoJogo - 03.09.2016

Entгo como faz para isso funcionar para cada veado?


Re: OnPlayerWeaponShot - Whoo - 03.09.2016

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



Re: OnPlayerWeaponShot - OtimoJogo - 03.09.2016

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


Re: OnPlayerWeaponShot - OtimoJogo - 04.09.2016

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?