new g_iAccess, g_iMaxPlayers
new szConfigFile[MAX_PATH_LENGTH], szMsg[128]
get_localinfo("amxx_configsdir", szConfigFile, charsmax(szConfigFile))
add(szConfigFile, charsmax(szConfigFile), "/wpons_skins.ini")
if(!file_exists(szConfigFile))
formatex(szMsg, charsmax(szMsg), "[ERROR] Config file ^"%s^" not found!", szConfigFile)
new iFilePointer = fopen(szConfigFile, "rt")
new Trie:tRegisterWeaponDeploy = TrieCreate()
new szDatas[192], szSetting[12], szSymb[3], szFlags[32]
new szViewModel[MAX_MODEL_LENGTH], szWeaponModel[MAX_MODEL_LENGTH], szWorldModel[MAX_MODEL_LENGTH]
new szOldWorldModel[MAX_MODEL_LENGTH]
while(!feof(iFilePointer))
fgets(iFilePointer, szDatas, charsmax(szDatas))
if(!szDatas[0] || szDatas[0] == ';' || szDatas[0] == '#')
if(equal(szDatas, "AccessFlag", 10))
parse(szDatas, szSetting, charsmax(szSetting), szSymb, charsmax(szSymb), szFlags, charsmax(szFlags))
g_iAccess = read_flags(szFlags)
if(parse(szDatas, szWeaponClass, charsmax(szWeaponClass),
szViewModel, charsmax(szViewModel), szWeaponModel, charsmax(szWeaponModel),
szWorldModel, charsmax(szWorldModel)) == MAX_PARAMETERS)
if(!TrieKeyExists(tRegisterWeaponDeploy, szWeaponClass))
RegisterHam(Ham_Item_Deploy, szWeaponClass, "ItemDeploy_Post", true)
format(szViewModel, charsmax(szViewModel), "models/%s.mdl", szViewModel)
if(file_exists(szViewModel))
g_tViewModels = TrieCreate()
TrieSetCell(g_tViewModels, szWeaponClass, AllocString(szViewModel))
precache_model(szViewModel)
format(szWeaponModel, charsmax(szWeaponModel), "models/%s.mdl", szWeaponModel)
if(file_exists(szWeaponModel))
g_tWeaponModels = TrieCreate()
TrieSetCell(g_tWeaponModels, szWeaponClass, AllocString(szWeaponModel))
precache_model(szWeaponModel)
format(szWorldModel, charsmax(szWorldModel), "models/%s.mdl", szWorldModel)
if(file_exists(szWorldModel))
g_tWorldModels = TrieCreate()
if(szWeaponClass[10] == 'n') // weapon_mp5navy
// replace(szWeaponClass, charsmax(szWeaponClass), "navy", "")
formatex(szOldWorldModel, charsmax(szOldWorldModel), "models/w_%s.mdl", szWeaponClass[7])
if(!TrieKeyExists(g_tWorldModels, szOldWorldModel))
TrieSetString(g_tWorldModels, szOldWorldModel, szWorldModel)
precache_model(szWorldModel)
TrieDestroy(tRegisterWeaponDeploy)
register_plugin("Weapons Skins Manager", VERSION, "Vaqtincha")
register_forward(FM_SetModel, "SetModel_Pre", 0)
g_iMaxPlayers = get_maxplayers()
public ItemDeploy_Post(wEnt)
new id = get_pdata_cbase(wEnt, m_pPlayer, .linuxdiff = 4)
if(IsPlayer(id) && get_user_flags(id) & g_iAccess)
new iszNewModel, szWeaponClass[32]
pev(wEnt, pev_classname, szWeaponClass, charsmax(szWeaponClass))
if(TrieGetCell(g_tViewModels, szWeaponClass, iszNewModel))
set_pev(id, pev_viewmodel, iszNewModel)
if(TrieGetCell(g_tWeaponModels, szWeaponClass, iszNewModel))
set_pev(id, pev_weaponmodel, iszNewModel)
public SetModel_Pre(iEnt, const szModel[])
new id = pev(iEnt, pev_owner)
if(!IsPlayer(id) || ~get_user_flags(id) & g_iAccess)
new szNewModel[MAX_MODEL_LENGTH]
if(TrieGetString(g_tWorldModels, szModel, szNewModel, charsmax(szNewModel)))
SetModel(iEnt, szNewModel)
TrieDestroy(g_tViewModels)
TrieDestroy(g_tWeaponModels)
TrieDestroy(g_tWorldModels)