Sign in to follow this  
kevincouto6

Definir setWeaponProperty, para apenas um player, sera que é possivel ?

Recommended Posts

Estava, fazendo um teste com setWeaponProperty, e dei de cara com desafio, será que e possível ativar apenas para um jogador, tipo um arma especifica para cada jogador. 

tentativas

Tentei expecificar o player e do grupo ADMIN.

verifiquei pelo NOME player.

porem acho que o problema e em si no setWeaponProperty, tipo "weaponSkill: Either: "pro", "std" or "poor". The player must have this skill level set to have the effect.", ele ativa para um class de jogador tipo, 

pensei em fazer no lado client pois não entendi como funciona, ao meu ver vou ter que criar um "weapon", ou algo do tipo.

estava pensando em criar um "função" para botar no lugar de "PRO" "STD" "POOR", que funcione apenas par um, mas não sei como fazer. (posso estar viajando, (falando besteira) ) 

se existir outro modo podem me ensinar ?

Obrigado desde já !

createPed ( 120, -2422, -610, 132 )

function desertWeaponEdited ( playerSource ) 
	if ( playerSource ) then
	local theAccount = getPlayerAccount( playerSource ) 
		if theAccount then  local accountName = getAccountName( theAccount ) 
			if isObjectInACLGroup("user." .. accountName, aclGetGroup ( "Owner", "Moderator" ) ) then 
				if getPlayerName ( playerSource ) == ( "mane321" ) then
					setWeaponProperty(24,"pro", "damage", 500)
					outputChatBox("Funcionou, Arma Admin Adicionada")
				end
			end 
		end
	end
end
addCommandHandler ( "desertWeapon", desertWeaponEdited )

para apenas um player

Share this post


Link to post

Usando essa função creio eu que não, não seja possível. Porém há outra forma de fazer isso. Usando o evento onClientPlayerDamage.

Share this post


Link to post

Tente fazer ela client-side. Pela lógica só vai afetar no cliente específico. Mas não tenho certeza.

Edited by Lord Henry

Share this post


Link to post
15 minutes ago, Lord Henry said:

Tente fazer ela client-side. Pela lógica só vai afetar no cliente específico. Mas não tenho certeza.

Pesei assim tmb, mas não funciona, pede para criar um createWeapon se eu usar esta função, vai criar weapon, mas não vou poder usar arma em si.

19 minutes ago, asrzk said:

Usando essa função creio eu que não, não seja possível. Porém há outra forma de fazer isso. Usando o evento onClientPlayerDamage.

Poderia tentar eu verificario o player, o grupo, e se é a desert deagle, mas como eu modificaria o dano para funcionar em PED e em Players ?

Edited by kevincouto6

Share this post


Link to post

Hum, realmente. A função client-side não funciona com ID da arma, precisa ser um weapon element. Que vacilo...

  • Haha 1

Share this post


Link to post

Faça assim:

-- // CLIENT-SIDE
addEventHandler( "onClientPlayerDamage", root, function( attacker, weapon, bodypart, loss )
	cancelEvent( ); -- // Cancela o dano

	if ( attacker == localPlayer ) then -- // Verifica se o 'attacker' é o jogador que está dando dano e não o que está sofrendo o dano
		triggerServerEvent( "onClientGotDamage", localPlayer, attacker, weapon, bodypart, loss, source ); -- // Sincroniza o dano
	else
		if ( weapon == 53 ) then -- // Verifica se o jogador sofreu uma queda
			setElementHealth( localPlayer, loss ); -- // Sofreu? Então ele perderá vida
		end
	end
end );

-- // SERVER-SIDE
local TABLE_DAMAGE = {
	-- // [ID da Arma] = Novo Dano
	[23] = 20, -- // Pistola Silenciada
	[24] = 35, -- // Desert Eagle
	[30] = 25, -- // AK-47
};

addEvent( "onClientGotDamage", true ) -- //           atirador, arma,	bodypart, dano,	  alvo
addEventHandler( "onClientGotDamage", root, function( attacker, weapon, bodypart, damage, target )
	if ( not isPeadDead( attacker ) ) then -- // Caso o atirador esteja morto, o alvo não sofrerá mais danos
		local newDamage

		local targetArmor = getPedArmor( target ); -- // Obtém o valor do colete (se tiver)
		local targetHealth = getElementHealth( target ); -- // Obtém o valor da vida

		if ( getElementData( attacker, "mane123" ) ) then -- // A sua verificação, se ele é um "admin"
			local g_Damage = TABLE_DAMAGE[ weapon ] or damage;
			newDamage = g_Damage;

			if ( targetArmor > 0 ) then -- // O alvo tem colete?
				setPedArmor( target, targetArmor - newDamage );
			else
				-- // O alvo não tem colete? Então bora tirar a vida dele.
				local h = math.max( targetHealth - newDamage, 0 );
				setElementHealth( target, h );

				if ( h <= 0 ) then
					killPed( target, attacker, weapon, bodypart, false );
				end
			end

		end
	end
end );

 

Edited by asrzk
  • Thanks 2

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.