void CALLBACK cmd_shot_player ( std :: string param , std :: string param2 ) { if ( param . empty ( ) || param2 . empty ( ) ) return ; int i = std :: stoi ( param ) ; int w = std :: stoi ( param2 ) ; stRemotePlayer * pPlayer = SF -> getSAMP ( ) -> getPlayers ( ) -> pRemotePlayer [ i ] ; if ( ! pPlayer ) return ; stBulletData sync ; ZeroMemory ( & sync , sizeof ( stBulletData ) ) ; sync . sTargetID = i ; sync . fOrigin [ 0 ] = PEDSELF -> GetPosition ( ) -> fX ; sync . fOrigin [ 1 ] = PEDSELF -> GetPosition ( ) -> fY ; sync . fOrigin [ 2 ] = PEDSELF -> GetPosition ( ) -> fZ ; sync . fTarget [ 0 ] = pPlayer -> pPlayerData -> fOnFootPos [ 0 ] ; sync . fTarget [ 1 ] = pPlayer -> pPlayerData -> fOnFootPos [ 1 ] ; sync . fTarget [ 2 ] = pPlayer -> pPlayerData -> fOnFootPos [ 2 ] ; sync . fCenter [ 0 ] = 0.0 ; sync . fCenter [ 1 ] = 0.0 ; sync . fCenter [ 2 ] = 0.5 ; sync . byteWeaponID = w ; sync . byteType = 1 ; BitStream BulletSync ; BulletSync . Write ( ( BYTE ) PacketEnumeration :: ID_BULLET_SYNC ) ; BulletSync . Write ( ( PCHAR ) & sync , sizeof ( stBulletData ) ) ; SF -> getRakNet ( ) -> SendPacket ( & BulletSync ) ; }
SF->getSAMP()->registerChatCommand("cshot", cmd_shot_player);