set this function to libcod: 
	PHP Code:
	
		
void gsc_utils_getweaponidbyname() {
    char* weapon;
    if(!stackGetParams("s", &weapon)) {
        printf("scriptengine> wrongs args for: gsc_utils_getweaponkeydatabyidandoffset(weapon)\n");
        stackPushUndefined();
        return;
    }
    stackPushInt(getWeapon(hook_findWeaponIndex(weapon)));    
}
void gsc_utils_getweaponkeydatabyidandoffset() {
    int id;
    int offset;
    int type;
    if(!stackGetParams("iii", &id, &offset, &type)) {
        printf("scriptengine> wrongs args for: gsc_utils_getweaponkeydatabyidandoffset(id,offset,type)\n");
        stackPushUndefined();
        return;
    }
    if(type == 0) 
        stackPushString(*(char**)(id + offset));        
    else if(type == 1)
        stackPushInt(*(int*)(id + offset));    
    else
        stackPushFloat(*(float*)(id + offset));    
}
void gsc_utils_setweaponkeydatabyidandoffset_int() {
    int id;
    int offset;
    int value;
    if(!stackGetParams("iii", &id, &offset, &value)) {
        printf("scriptengine> wrongs args for: gsc_utils_setweaponkeydatabyidandoffset(id,offset,value)\n");
        stackPushUndefined();
        return;
    } 
    *(int*)(id + offset) = value;
}
void gsc_utils_setweaponkeydatabyidandoffset_string() {
    int id;
    int offset;
    char* value;
    if(!stackGetParams("iis", &id, &offset, &value)) {
        printf("scriptengine> wrongs args for: gsc_utils_setweaponkeydatabyidandoffset(id,offset,value)\n");
        stackPushUndefined();
        return;
    } 
    *(char**)(id + offset) = value;
}
void gsc_utils_setweaponkeydatabyidandoffset_float() {
    int id;
    int offset;
    float value;
    if(!stackGetParams("iif", &id, &offset, &value)) {
        printf("scriptengine> wrongs args for: gsc_utils_setweaponkeydatabyidandoffset(id,offset,value)\n");
        stackPushUndefined();
        return;
    } 
    *(float*)(id + offset) = value;
} 
 and in gsc: 
	PHP Code:
	
		
getOffset(key)
{
    switch(key)
    {
        case "displayName": return 4;
        case "modeName": return 112;
        case "playerAnimType ": return 116;
        case "AIOverlayDescription": return 8;
        case "gunModel": return 12;
        case "handModel": return 16;
        case "worldModel": return 436;
        case "idleAnim": return 24;
        case "emptyIdleAnim": return 28;
        case "fireAnim": return 32;
        case "lastShotAnim": return 40;
        case "rechamberAnim": return 44;
        case "meleeAnim": return 48;
        case "reloadAnim": return 52;
        case "reloadEmptyAnim": return 56;
        case "reloadStartAnim": return 60;
        case "reloadEndAnim": return 64;
        case "raiseAnim": return 68;
        case "dropAnim": return 72;
        case "altRaiseAnim": return 76;
        case "altDropAnim": return 80;
        case "quickRaiseAnim": return 84;
        case "quickDropAnim": return 88;
        case "adsFireAnim": return 92;
        case "adsLastShotAnim": return 96;
        case "adsRechamberAnim": return 100;
        case "adsUpAnim": return 104;
        case "adsDownAnim": return 108;
        case "viewFlashEffect": return 144;
        case "worldFlashEffect": return 148;
        case "pickupSound": return 152;
        case "ammoPickupSound": return 156;
        case "fireSound": return 168;
        case "fireSoundPlayer": return 172;
        case "lastShotSound": return 192;
        case "lastShotSoundPlayer": return 196;
        case "meleeSwipeSound": return 200;
        case "rechamberSound": return 204;
        case "rechamberSoundPlayer": return 208;
        case "reloadSound": return 212;
        case "reloadSoundPlayer": return 216;
        case "reloadEmptySound": return 220;
        case "reloadEmptySoundPlayer": return 224;
        case "reloadStartSound": return 228;
        case "reloadStartSoundPlayer": return 232;
        case "reloadEndSound": return 236;
        case "reloadEndSoundPlayer": return 240;
        case "raiseSound": return 244;
        case "altSwitchSound": return 248;
        case "putawaySound": return 252;
        case "noteTrackSoundA": return 256;
        case "noteTrackSoundB": return 260;
        case "noteTrackSoundC": return 264;
        case "noteTrackSoundD": return 268;
        case "shellEjectEffect": return 272;
        case "lastShotEjectEffect": return 276;
        case "reticleCenter": return 280;
        case "reticleSide": return 284;
        case "reticleCenterSize": return 288;
        case "reticleSideSize": return 292;
        case "reticleMinOfs": return 296;
        case "hudIcon": return 440;
        case "modeIcon": return 444;
        case "killIcon": return 844;
        case "ammoName": return 452;
        case "startAmmo": return 448;
        case "clipName": return 460;
        case "maxAmmo": return 468;
        case "clipSize": return 472;
        case "shotCount": return 476;
        case "damage": return 492;
        case "minDamage": return 1424;
        case "meleeDamage": return 500;
        case "minDamageRange": return 1432;
        case "maxDamageRange": return 1436;
        case "fireDelay": return 508;
        case "meleeDelay": return 512;
        case "fireTime": return 516;
        case "rechamberTime": return 520;
        case "rechamberBoltTime": return 524;
        case "meleeTime": return 532;
        case "reloadTime": return 536;
        case "reloadEmptyTime": return 540;
        case "reloadAddTime": return 544;
        case "reloadStartTime": return 548;
        case "reloadStartAddTime": return 552;
        case "reloadEndTime": return 556;
        case "dropTime": return 560;
        case "raiseTime": return 564;
        case "altDropTime": return 568;
        case "altRaiseTime": return 572;
        case "quickDropTime": return 576;
        case "quickRaiseTime": return 580;
        case "adsTransInTime": return 704;
        case "adsTransOutTime": return 708;
        case "aiVsAiAccuracyGraph": return 1292;
        case "aiVsPlayerAccuracyGraph": return 1296;
        case "fireRumble": return 1532;
        case "meleeImpactRumble": return 1536;
        case "adsOverlayShader": return 628;
        case "adsOverlayWidth": return 636;
        case "adsOverlayHeight": return 640;
        case "altWeapon": return 872;
        case "moveSpeedScale": return 612;
        case "weaponType": return 120;
        case "weaponClass": return 124;
        case "weaponSlot": return 128;
        case "rifleBullet": return 796;
        case "armorPiercing": return 800;
        case "semiAuto": return 804;
        case "boltAction": return 808;
        case "aimDownSight": return 812;
        case "rechamberWhileAds": return 816;
        case "noPartialReload": return 856;
        case "segmentedReload": return 860;
        case "wideListIcon": return 836;
        case "wideKillIcon": return 848;
        case "flipKillIcon": return 848;
        case "dropAmmoMin": return 880;
        case "dropAmmoMax": return 884;
        case "reloadAmmoAdd": return 864;
        case "reloadStartAdd": return 868;
        case "locNone": return 1456;
        case "locHelmet": return 1460;
        case "locHead": return 1464;
        case "locNeck": return 1468;
        case "locTorsoUpper": return 1472;
        case "locTorsoLower": return 1476;
        case "locRightArmUpper": return 1480;
        case "locRightArmLower": return 1484;
        case "locRightHand": return 1488;
        case "locLeftArmUpper": return 1492;
        case "locLeftArmLower": return 1496;
        case "locLeftHand": return 1500;
        case "locRightLegUpper": return 1504;
        case "locRightLegLower": return 1508;
        case "locRightFoot": return 1512;
        case "locLeftLegUpper": return 1516;
        case "locLeftLegLower": return 1520;
        case "locLeftFoot": return 1524;
        case "locGun": return 1528;
        default: return 0;
    }
}
getType(key)
{
    switch(key)
    {
        case "displayName":
        case "modeName":
        case "AIOverlayDescription":
        case "gunModel":
        case "handModel":
        case "worldModel":
        case "idleAnim":
        case "emptyIdleAnim":
        case "fireAnim":
        case "lastShotAnim":
        case "rechamberAnim":
        case "meleeAnim":
        case "reloadAnim":
        case "reloadEmptyAnim":
        case "reloadStartAnim":
        case "reloadEndAnim":
        case "raiseAnim":
        case "dropAnim":
        case "altRaiseAnim":
        case "altDropAnim":
        case "quickRaiseAnim":
        case "quickDropAnim":
        case "adsFireAnim":
        case "adsLastShotAnim":
        case "adsRechamberAnim":
        case "adsUpAnim":
        case "adsDownAnim":
        case "viewFlashEffect":
        case "worldFlashEffect":
        case "pickupSound":
        case "ammoPickupSound":
        case "fireSound":
        case "fireSoundPlayer":
        case "lastShotSound":
        case "lastShotSoundPlayer":
        case "meleeSwipeSound":
        case "rechamberSound":
        case "rechamberSoundPlayer":
        case "reloadSound":
        case "reloadSoundPlayer":
        case "reloadEmptySound":
        case "reloadEmptySoundPlayer":
        case "reloadStartSound":
        case "reloadStartSoundPlayer":
        case "reloadEndSound":
        case "reloadEndSoundPlayer":
        case "raiseSound":
        case "altSwitchSound":
        case "putawaySound":
        case "noteTrackSoundA":
        case "noteTrackSoundB":
        case "noteTrackSoundC":
        case "noteTrackSoundD":
        case "shellEjectEffect":
        case "lastShotEjectEffect":
        case "reticleCenter":
        case "reticleSide":
        case "hudIcon":
        case "modeIcon":
        case "killIcon":
        case "ammoName":
        case "clipName":
        case "aiVsAiAccuracyGraph":
        case "aiVsPlayerAccuracyGraph":
        case "fireRumble":
        case "meleeImpactRumble":
        case "adsOverlayShader":
        case "altWeapon":        
            return "string"; 
            
        case "playerAnimType":
        case "startAmmo":
        case "maxAmmo":
        case "reticleCenterSize":
        case "reticleSideSize":
        case "reticleMinOfs":
        case "clipSize":
        case "shotCount":
        case "damage":
        case "minDamage":
        case "meleeDamage":
        case "weaponType":
        case "weaponClass":
        case "weaponSlot":
        case "rifleBullet":
        case "armorPiercing":
        case "semiAuto":
        case "boltAction":
        case "aimDownSight":
        case "rechamberWhileAds":
        case "noPartialReload":
        case "segmentedReload":
        case "wideListIcon":
        case "wideKillIcon":
        case "flipKillIcon":
        case "dropAmmoMin":
        case "dropAmmoMax":
        case "reloadAmmoAdd":
        case "reloadStartAdd":
            return "int";
            
        case "fireDelay":
        case "meleeDelay":
        case "fireTime":
        case "rechamberTime":
        case "rechamberBoltTime":
        case "meleeTime":
        case "reloadTime":
        case "reloadEmptyTime":
        case "reloadAddTime":
        case "reloadStartTime":
        case "reloadStartAddTime":
        case "reloadEndTime":
        case "dropTime":
        case "raiseTime":
        case "altDropTime":
        case "altRaiseTime":
        case "quickDropTime":
        case "quickRaiseTime":
        case "adsTransInTime":
        case "adsTransOutTime":
            return "int_multiplied";
            
        case "moveSpeedScale":
        case "minDamageRange":
        case "maxDamageRange":
        case "adsOverlayWidth":
        case "adsOverlayHeight":
        case "locNone":
        case "locHelmet":
        case "locHead":
        case "locNeck":
        case "locTorsoUpper":
        case "locTorsoLower":
        case "locRightArmUpper":
        case "locRightArmLower":
        case "locRightHand":
        case "locLeftArmUpper":
        case "locLeftArmLower":
        case "locLeftHand":
        case "locRightLegUpper":
        case "locRightLegLower":
        case "locRightFoot":
        case "locLeftLegUpper":
        case "locLeftLegLower":
        case "locLeftFoot":
        case "locGun":
            return "float";
    }
}
readWeaponKeyData(name, key)
{
    id = getweaponidbyname(name);
    offset = getOffset(key);
    
    if(offset == 0)
        return "unknown key or offset (" + key + ")";
        
    type = getType(key); 
    data = "";
    switch(type)
    {
        case "string":
            data = getweaponkeydatabyidandoffset(id, offset, 0);
            break;
        case "int":
            data = getweaponkeydatabyidandoffset(id, offset, 1);
            break;
        case "int_multiplied":
            data = getweaponkeydatabyidandoffset(id, offset, 1) / 1000;
            break;
        case "float":
            data = getweaponkeydatabyidandoffset(id, offset, 2);
            break;
    }    
    
    switch(key)
    {
        case "playerAnimType":
            switch(data)
            {
                case 0: data = "none"; break;
                case 1: data = "other"; break;
                case 2: data = "panzerfaust"; break;
                case 3: data = "stickgrenade"; break;
                case 4: data = "springfield"; break;
                case 5: data = "bar"; break;
                case 6: data = "mp40"; break;
                case 7: data = "thompson"; break;
                case 8: data = "sten"; break;
                case 9: data = "bren"; break;
                case 10: data = "kar98k"; break;
                case 11: data = "m1carbine"; break;
                case 12: data = "enfield"; break;
            }
            break;
        case "weaponType":
            switch(data)
            {
                case 0: data = "bullet"; break;
                case 1: data = "grenade"; break;
                case 2: data = "projectile"; break;
                case 3: data = "binoculars"; break;
            }
            break;
        case "weaponClass":
            switch(data)
            {
                case 0: data = "rifle"; break;
                case 1: data = "mg"; break;
                case 2: data = "smg"; break;
                case 3: data = "spread"; break;
                case 4: data = "pistol"; break;
                case 5: data = "grenade"; break;
                case 6: data = "rocketlauncher"; break;
                case 7: data = "turret"; break;
                case 8: data = "non-player"; break;
                case 9: data = "item"; break;
            }
            break;
        case "weaponSlot":
            switch(data)
            {
                case 0: data = "none"; break;
                case 1: data = "primary"; break;
            }
            break;        
    }
    
    return data;
}
setWeaponKeyData(name, key, value)
{
    id = getweaponidbyname(name);
    offset = getOffset(key);
    
    if(offset == 0)
        return false;
        
    type = getType(key);
    switch(key)
    {
        case "playerAnimType":
            switch(value)
            {
                case "none": value = 0; break;
                case "other": value = 1; break;
                case "panzerfaust": value = 2; break;
                case "stickgrenade": value = 3; break;
                case "springfield": value = 4; break;
                case "bar": value = 5; break;
                case "mp40": value = 6; break;
                case "thompson": value = 7; break;
                case "sten": value = 8; break;
                case "bren": value = 9; break;
                case "kar98k": value = 10; break;
                case "m1carbine": value = 11; break;
                case "enfield": value = 12; break;
                default: value = 0; break;
            }
            break;
        case "weaponType":
            switch(value)
            {
                case "bullet": value = 0; break;
                case "grenade": value = 1; break;
                case "projectile": value = 2; break;
                case "binoculars": value = 3; break;
                default: value = 0; break;
            }
            break;
        case "weaponClass":
            switch(value)
            {
                case "rifle": value = 0; break;
                case "mg": value = 1; break;
                case "smg": value = 2; break;
                case "spread": value = 3; break;
                case "pistol": value = 4; break;
                case "grenade": value = 5; break;
                case "rocketlauncher": value = 6; break;
                case "turret": value = 7; break;
                case "non-player": value = 8; break;
                case "item": value = 9; break;
                default: value = 0; break;
            }
            break;
        case "weaponSlot":
            switch(value)
            {
                case "none": value = 0; break;
                case "primary": value = 1; break;
                default: value = 1; break;
            }
            break;        
    }
    switch(type)
    {
        case "string":
            setweaponkeydatabyidandoffset_string(id, offset, value);
            break;
        case "int":
            setweaponkeydatabyidandoffset_int(id, offset, value);
            break;
        case "int_multiplied":
            setweaponkeydatabyidandoffset_int(id, offset, int(value * 1000));
            break;
        case "float":
            setweaponkeydatabyidandoffset_float(id, offset, value);
            break;
    }
    
    return true;
} 
 use it like:
	PHP Code:
	
		
//get weapon information (the small and capital letters are important. see getOffset or getType function how to write it)
name = readWeaponKeyData("thompson_mp", "displayName");
iprintln(name);
setWeaponKeyData("thompson_mp", "displayName", "some variable");
setWeaponKeyData("thompson_mp", "fireTime", 0.05);
setWeaponKeyData("thompson_mp", "maxAmmo", 400); 
 Every weapon's variable is tested and working. 
However, if you change something it will not affect client side. (E.g models or sounds)