#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fakemeta>
#include <hamsandwich>
#include <csstats>
#include <cstrike>
new skins_types[][] =
{
"AK47",
"AWP",
"M4A1"
}
new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
"weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
"weapon_ak47", "weapon_knife", "weapon_p90" }
new g_vault
new Array:Skin_Type, Array:Skin_Name, Array:Skin_Cost, Array:Skin_Model
new skin_chosen[sizeof skins_types][33], weap[33]
public plugin_init() {
register_plugin("Fegyver skin menü", "3.0", "LyleChriss")
register_clcmd("say /menu", "cmd_menu")
register_clcmd("say /skin", "cmd_menu")
for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
{
if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "OnItemDeployPost", 1);
}
g_vault = nvault_open("fegyverskin")
}
public plugin_precache()
{
Skin_Type=ArrayCreate(1,1)
Skin_Name=ArrayCreate(64)
Skin_Cost=ArrayCreate(1,1)
Skin_Model=ArrayCreate(64)
new skins_file[64], pFile, readdata[1024], data[4][64]
get_configsdir(skins_file,charsmax(skins_file))
format(skins_file,charsmax(skins_file),"%s/skins.ini",skins_file)
pFile = fopen(skins_file, "rt")
if(pFile)
{
while(!feof(pFile))
{
fgets(pFile, readdata, charsmax(readdata))
parse(readdata, data[0], 63, data[1], 63, data[2], 63, data[3], 63)
if(readdata[0]==';'||equal(readdata,"")||equal(data[1],""))
continue
ArrayPushCell(Skin_Type,str_to_num(data[0]))
ArrayPushString(Skin_Name,data[1])
ArrayPushCell(Skin_Cost,str_to_num(data[2]))
ArrayPushString(Skin_Model, data[3])
precache_model(data[3])
}
fclose(pFile)
}
else
set_fail_state("skins.ini nem talalhato")
}
public cmd_menu(id)
{
new title[256],item[128]
new szStats[8],szBHits[8];
get_user_stats(id,szStats,szBHits);
format(title,charsmax(title),"\Válaszd ki a fegyvered típusát!^n\wÖléseid: \r%s", szStats[0])
new menu=menu_create(title,"skin_type_handler")
for(new i=0;i<sizeof skins_types;i++)
{
new count
for(new j;j<ArraySize(Skin_Name);j++)
if(ArrayGetCell(Skin_Type,j)==i) count++
format(item,charsmax(item),"\w%s \y(%d db)",skins_types[i],count)
menu_additem(menu,item)
}
menu_display(id,menu)
}
public skin_type_handler(id,menu,key)
{
if(key==MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new item[128]
new menu2=menu_create("\yVálassz fegyver kinézetet!","skin_handler")
new name[64]
new szStats[8],szBHits[8];
new szKell[32]
get_user_stats(id,szStats,szBHits);
get_user_name(id,name,charsmax(name))
for(new i=0;i<ArraySize(Skin_Name);i++)
{
if(ArrayGetCell(Skin_Type,i)!=key)
continue
new name[64]
ArrayGetString(Skin_Name,i,name,charsmax(name))
new cost = ArrayGetCell(Skin_Cost,i)
formatex(szKell, charsmax(szKell), "[Még %d ölés]", cost-szStats[0])
formatex(item, charsmax(item), "%s %s", name, szStats[0] < cost ? szKell : "[Elérve]")
new num[64]
num_to_str(i,num,charsmax(num))
menu_additem(menu2,item,num)
}
menu_setprop(menu2,MPROP_PERPAGE,5)
menu_display(id,menu2)
return PLUGIN_CONTINUE
}
public skin_handler(id,menu,key)
{
if(key==MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new access,data[32],callback,name[64]
menu_item_getinfo(menu,key,access,data,charsmax(data),_,_,callback)
new skinid=str_to_num(data)
new cost=ArrayGetCell(Skin_Cost,skinid)
ArrayGetString(Skin_Name,skinid,name,charsmax(name))
new szStats[8],szBHits[8];
get_user_stats(id,szStats,szBHits);
if(szStats[0] >= cost)
{
for(new i=0;i<sizeof skins_types;i++)
{
if(ArrayGetCell(Skin_Type,skinid) == i) skin_chosen[i][id] = skinid
}
client_print(id, print_chat, "Sikeresen kiválasztottad a(z) %s skint!", name)
}
else
{
client_print(id, print_chat, "Nincs elég ölésed ezen skin használatához!")
}
return PLUGIN_CONTINUE
}
public OnItemDeployPost(ent)
{
static id; id = pev(ent, pev_owner)
if(!pev_valid(id)) return
weap[id] = cs_get_weapon_id(ent)
new num, model[64]
for(new i=0;i<sizeof skins_types;i++)
{
if(containi(weap, skins_types[i]))
{
num = skin_chosen[i][id]
ArrayGetString(Skin_Model, num, model, charsmax(model))
set_pev(id, pev_viewmodel2, model)
}
}
}
public client_disconnect(id)
{
if(!is_user_bot(id) && !is_user_hltv(id))
{
save(id)
}
for(new i=0; i< sizeof skins_types; i++)
{
skin_chosen[i][id] = 9999
}
}
public client_putinserver(id)
{
for(new i=0; i< sizeof skins_types; i++)
{
skin_chosen[i][id] = 9999
}
if(!is_user_bot(id) && !is_user_hltv(id))
{
load(id)
}
}
public save(id)
{
new vaultkey[64], vaultdata[2048], Len
get_user_authid(id, vaultkey, charsmax(vaultkey))
for(new i=0; i< sizeof skins_types; i++)
{
Len += format(vaultdata[Len], 2048-Len, "%i ", skin_chosen[i][id])
}
nvault_set(g_vault, vaultkey, vaultdata)
}
public load(id)
{
new vaultkey[64], vaultdata[2048], Len
get_user_authid(id, vaultkey, charsmax(vaultkey))
for(new i=0; i< sizeof skins_types; i++)
{
Len += format(vaultdata[Len], 2048-Len, "%i ", skin_chosen[i][id])
}
if(nvault_get(g_vault, vaultkey, vaultdata, charsmax(vaultdata)))
{
new skin[sizeof skins_types][32]
new iSpacePos = contain(vaultdata, " ")
if(iSpacePos > -1)
{
for(new j=0; j < sizeof skins_types; j++)
{
formatex(skin[j], charsmax(skin), "%s", vaultdata[iSpacePos+j])
skin_chosen[j][id] = str_to_num(skin[j])
}
}
}
}
public plugin_end()
{
nvault_close(g_vault)
ArrayDestroy(Skin_Type)
ArrayDestroy(Skin_Name)
ArrayDestroy(Skin_Cost)
ArrayDestroy(Skin_Model)
}