Note:This tutorial is based using IDA/hex-rays, i do not care if you can't find my way in OllyDbg

Credits:Crx, Tamimego, learn_more, G-D

Tools you need:IDA Pro with hex-rays use google dont ask me how to get it

now to my post.

a quick how to get current weapon names, spread, Angles ( and more )
one of the ways i found after a while reversing the engine.

first search for this string in IDA ( BlackOpsMp.exe )

[PHP]Weapon %s: Could not translate display name \"%s\[/PHP]step two decompile the function you found the string.

[PHP] sub_517980(6, "Weapon %s: Could not translate display name \"%s\"", *(_DWORD *)v3);[/PHP]dit you notice the "v3"? search the reference in the decompiled function

you will find

[PHP]
int v3;
v3 = sub_49F800(a2);
[/PHP]translated

Code:
weapon_t* weapon;
weapon = GetWeapon(CurrentWeapon);
now we only need to find CurrentWeapon to get it done.
clientInfo its the best way to do it.

Code:
struct ClientInfo{
        __int32 Weapon; //0x0538  
//...    
};//Size 0x5C8
now to the code, i done for you.

Code:
weapon_t*  (__cdecl *GetWeapon)(int num) = (weapon_t* (__cdecl *)(int))Remembered?;
Code:
struct weapon_t
{
    char *NonTranslateWeaponName;
    char z_crap[8];
    char *TranslateWeaponName;
    //...
};
Code:
    char info[128];
    char info2[128];

    weapon_t* weapon = (weapon_t*)GetWeapon( ClientInfo[PlayerSnap->clientNum].Weapon  );

    if( weapon )
    {
        sprintf(info,"^1NonTranslateWeaponName: ^7[^1%s^7]", weapon->NonTranslateWeaponName );
        sprintf(info2,"TranslateWeaponName: ^7[^1%s^7]", weapon->TranslateWeaponName );

        CEngineDrawing.CG_DrawEngineString( 1.2f, 200, 200, colorWhite, 1.0, info );
    
        CEngineDrawing.CG_DrawEngineString( 1.2f, 200, 220, colorWhite, 1.0, info2
    
    }
result.
http://img200.imageshack.us/img200/3622/shot0021i.jpg
http://img535.imageshack.us/img535/1421/shot00220.jpg
http://img408.imageshack.us/img408/3177/shot0024x.jpg