FireSniperRifle: Difference between revisions

From NPC for VCMP 0.4 Servers
Jump to navigation Jump to search
No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 9: Line 9:
</poem>|
</poem>|
example=<source lang="lua">
example=<source lang="lua">
//Sniper Rifle
//Sniper Rifle example taken from Attack Script
function SnipeAt(tPos, isReloading=false, isHeadShot=false)
function SnipeAt(tPos, isReloading=false, isHeadShot=false)
{
{
Line 23: Line 23:
local ammo = GetLocalValue(I_CURWEP_AMMO );
local ammo = GetLocalValue(I_CURWEP_AMMO );
aimPos+=Vector( dx, dy, dz);
aimPos+=Vector( dx, dy, dz);
SendOnFootSyncData( keys, Pos.x,Pos.y, Pos.z, angle, GetPlayerHealth( npcid ), GetPlayerArmour( npcid ), GetPlayerArmedWeapon( npcid ),ammo, 0.0, 0.0, 0.0, aimPos.x, aimPos.y, aimPos.z, dx, dy, dz, false, isReloading );  
/*SendOnFootSyncData( keys, Pos.x,Pos.y, Pos.z, angle, GetPlayerHealth( npcid ), GetPlayerArmour( npcid ), GetPlayerArmedWeapon( npcid ),ammo, 0.0, 0.0, 0.0, aimPos.x, aimPos.y, aimPos.z, dx, dy, dz, false, isReloading ); */
SetTimerEx("FireSniperRifle", 60, 1, GetPlayerArmedWeapon(npcid), Pos.x, Pos.y, Pos.z, 16.0*dx, 16.0*dy, 16.0*dz );
SetTimerEx("FireSniperRifle", 60, 1, GetPlayerArmedWeapon(npcid), Pos.x, Pos.y, Pos.z, 16.0*dx, 16.0*dy, 16.0*dz );
}
}
Line 32: Line 32:
     npcid<-myplayerid;
     npcid<-myplayerid;
}
}
</source>
</source>|
}}
}}

Latest revision as of 18:53, 26 February 2023


Description:
This will send a packet to server which is filled by the following parameters.


Parameters:

( sniperid, aimposx, aimposy, aimposz, dx, dy, dz)

sniperid : The weapon ID of sniper (28 or 29) to fire.
aimposx : The x co-ordinate of aim position of NPC ( can be determined using server using player.AimPos or can be calculated artificially).
aimposy : The y co-ordinate of aim pos
aimposz : The z co-ordinate of aimpos
dx, dy, dz = The normalized direction vector(from aimpos to target ) multiplied by 16.


Return Values:
This function does not return any specific values.


Example

//Sniper Rifle example taken from Attack Script
function SnipeAt(tPos, isReloading=false, isHeadShot=false)
{
	if(isHeadShot)tPos.z+=0.627299;
	local Pos= GetMyPos();
	local aimPos = Vector( Pos.x, Pos.y, Pos.z-0.2);
	local angle= atan2(-(tPos.x-aimPos.x), tPos.y-aimPos.y);
	local alpha = atan2( tPos.z - aimPos.z, sqrt( pow( tPos.y - aimPos.y, 2 ) + pow( tPos.x - aimPos.x , 2 ) ) );
	local dx = cos(alpha) * sin(-angle);
	local dy = cos(alpha) * cos(-angle);
	local dz = sin(alpha);
	local keys= 577 ;
	local ammo = GetLocalValue(I_CURWEP_AMMO );
	aimPos+=Vector( dx, dy, dz);
	/*SendOnFootSyncData( keys, Pos.x,Pos.y, Pos.z, angle, GetPlayerHealth( npcid ), GetPlayerArmour( npcid ), GetPlayerArmedWeapon( npcid ),ammo, 0.0, 0.0, 0.0, aimPos.x, aimPos.y, aimPos.z, dx, dy, dz, false, isReloading ); */
	SetTimerEx("FireSniperRifle", 60, 1, GetPlayerArmedWeapon(npcid), Pos.x, Pos.y, Pos.z, 16.0*dx, 16.0*dy, 16.0*dz );
}

//Grab npc ID 
function OnNPCConnect(myplayerid) 
{ 
     npcid<-myplayerid;
}