JoaoVieira
12-28-2016, 18:39
Hello , i would like you to help me with this:
public EventSpray( )
{
if( g_iCurrentGame == LR_SPRAY )
{
new iOrigin[ 3 ];
iOrigin[ 0 ] = read_data( 3 );
iOrigin[ 1 ] = read_data( 4 );
iOrigin[ 2 ] = read_data( 5 );
new Float:vecSprayOrigin[ 3 ];
IVecFVec( iOrigin, vecSprayOrigin );
new iPlayerCT = read_data( 2 );
new iPlayerT = read_data( 2 );
new Float:vecPlayerOrigin[ 3 ];
get_user_origin( iPlayerT, iOrigin, 1 );
get_user_origin( iPlayerCT, iOrigin, 1 );
IVecFVec( iOrigin, vecPlayerOrigin );
new Float:vecDirection[ 3 ];
xs_vec_sub( vecSprayOrigin, vecPlayerOrigin, vecDirection );
xs_vec_mul_scalar( vecDirection, 10.0 / vector_length( vecDirection ), vecDirection );
new Float:vecStop[ 3 ];
xs_vec_add( vecSprayOrigin, vecDirection, vecStop );
xs_vec_mul_scalar( vecDirection, -1.0, vecDirection );
new Float:vecStart[ 3 ];
xs_vec_add( vecSprayOrigin, vecDirection, vecStart );
engfunc( EngFunc_TraceLine, vecStart, vecStop, IGNORE_MONSTERS, -1, 0 );
get_tr2( 0, TR_vecPlaneNormal, vecDirection );
vecDirection[ 2 ] = 0.0;
xs_vec_mul_scalar( vecDirection, 5.0 / vector_length( vecDirection ), vecDirection );
xs_vec_add( vecSprayOrigin, vecDirection, vecStart );
xs_vec_copy( vecStart, vecStop );
vecStop[ 2 ] -= 9999.0;
engfunc( EngFunc_TraceLine, vecStart, vecStop, IGNORE_MONSTERS, -1, 0 );
get_tr2( 0, TR_vecEndPos, vecStop );
new szNameT[ 32 ], Float:SprayDistance[33]
get_user_name( iPlayerT, szNameT, charsmax( szNameT ) );
new szNameCT[ 32 ]
get_user_name( iPlayerCT, szNameCT, charsmax( szNameCT ) );
SprayDistance[iPlayerT] = ( vecStart[ 2 ] - vecStop[ 2 ] );
SprayDistance[iPlayerCT] = ( vecStart[ 2 ] - vecStop[ 2 ] );
give_item( iPlayerT, "weapon_knife" )
give_item( iPlayerCT, "weapon_knife" )
if( iPlayerT == g_iLastRequest[ LR_PRISONER ] )
{
g_spray++
}
else if( iPlayerCT == g_iLastRequest[ LR_GUARD ] )
{
g_spray++
}
if(SprayDistance[ g_iLastRequest[ LR_PRISONER ] ] > SprayDistance[ g_iLastRequest[ LR_GUARD ] ])
{
if(g_spray == 2)
{
user_kill(g_iLastRequest[ LR_GUARD ], 1 );
}
}
else (SprayDistance[ g_iLastRequest[ LR_PRISONER ] ] < SprayDistance[ g_iLastRequest[ LR_GUARD ] ])
{
if(g_spray == 2)
{
user_kill(g_iLastRequest[ LR_PRISONER ], 1 );
}
}
}
return PLUGIN_CONTINUE;
}
I have tryed and i though this is fine , but it does not work , and i dont know why.
I want it to do: If last guard spray more high than prisoner , the prisoner die , and if prisoner spray more high than guard , the guard dies.
Thanks.
public EventSpray( )
{
if( g_iCurrentGame == LR_SPRAY )
{
new iOrigin[ 3 ];
iOrigin[ 0 ] = read_data( 3 );
iOrigin[ 1 ] = read_data( 4 );
iOrigin[ 2 ] = read_data( 5 );
new Float:vecSprayOrigin[ 3 ];
IVecFVec( iOrigin, vecSprayOrigin );
new iPlayerCT = read_data( 2 );
new iPlayerT = read_data( 2 );
new Float:vecPlayerOrigin[ 3 ];
get_user_origin( iPlayerT, iOrigin, 1 );
get_user_origin( iPlayerCT, iOrigin, 1 );
IVecFVec( iOrigin, vecPlayerOrigin );
new Float:vecDirection[ 3 ];
xs_vec_sub( vecSprayOrigin, vecPlayerOrigin, vecDirection );
xs_vec_mul_scalar( vecDirection, 10.0 / vector_length( vecDirection ), vecDirection );
new Float:vecStop[ 3 ];
xs_vec_add( vecSprayOrigin, vecDirection, vecStop );
xs_vec_mul_scalar( vecDirection, -1.0, vecDirection );
new Float:vecStart[ 3 ];
xs_vec_add( vecSprayOrigin, vecDirection, vecStart );
engfunc( EngFunc_TraceLine, vecStart, vecStop, IGNORE_MONSTERS, -1, 0 );
get_tr2( 0, TR_vecPlaneNormal, vecDirection );
vecDirection[ 2 ] = 0.0;
xs_vec_mul_scalar( vecDirection, 5.0 / vector_length( vecDirection ), vecDirection );
xs_vec_add( vecSprayOrigin, vecDirection, vecStart );
xs_vec_copy( vecStart, vecStop );
vecStop[ 2 ] -= 9999.0;
engfunc( EngFunc_TraceLine, vecStart, vecStop, IGNORE_MONSTERS, -1, 0 );
get_tr2( 0, TR_vecEndPos, vecStop );
new szNameT[ 32 ], Float:SprayDistance[33]
get_user_name( iPlayerT, szNameT, charsmax( szNameT ) );
new szNameCT[ 32 ]
get_user_name( iPlayerCT, szNameCT, charsmax( szNameCT ) );
SprayDistance[iPlayerT] = ( vecStart[ 2 ] - vecStop[ 2 ] );
SprayDistance[iPlayerCT] = ( vecStart[ 2 ] - vecStop[ 2 ] );
give_item( iPlayerT, "weapon_knife" )
give_item( iPlayerCT, "weapon_knife" )
if( iPlayerT == g_iLastRequest[ LR_PRISONER ] )
{
g_spray++
}
else if( iPlayerCT == g_iLastRequest[ LR_GUARD ] )
{
g_spray++
}
if(SprayDistance[ g_iLastRequest[ LR_PRISONER ] ] > SprayDistance[ g_iLastRequest[ LR_GUARD ] ])
{
if(g_spray == 2)
{
user_kill(g_iLastRequest[ LR_GUARD ], 1 );
}
}
else (SprayDistance[ g_iLastRequest[ LR_PRISONER ] ] < SprayDistance[ g_iLastRequest[ LR_GUARD ] ])
{
if(g_spray == 2)
{
user_kill(g_iLastRequest[ LR_PRISONER ], 1 );
}
}
}
return PLUGIN_CONTINUE;
}
I have tryed and i though this is fine , but it does not work , and i dont know why.
I want it to do: If last guard spray more high than prisoner , the prisoner die , and if prisoner spray more high than guard , the guard dies.
Thanks.