#include <amxmodx>
#include <colorchat>
#include <fakemeta>
new const PLUGIN[]= "USP SkinmenĂĽ";
new const AUTHOR[]= "Krisznitro";
new const VERSION[]= "2.1";
#pragma semicolon 1
new g_iPont[33], USP[33] = 0, filename[128];
enum _:KMP { Name[32], Modell[32], Pont[32] }
new const USPK[][KMP] =
{
{"USP 1","models/uspmenu/v_usp_1.mdl","0"},
{"USP 2","models/uspmenu/v_usp_2.mdl","25"},
{"USP 3","models/uspmenu/v_usp_3.mdl","50"},
{"USP 4","models/uspmenu/v_usp_4.mdl","75"},
{"USP 5","models/uspmenu/v_usp_5.mdl","100"},
{"USP 6","models/uspmenu/v_usp_6.mdl","150"},
{"USP 7","models/uspmenu/v_usp_7.mdl","200"},
{"USP 8","models/uspmenu/v_usp_8.mdl","300"}
};
new Prefix[] = "Szervernév";
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /usp", "Menu_USP");
register_clcmd("chooseteam", "Menu_USP");
register_clcmd("say /pont", "pontokchat");
register_event("DeathMsg","e_Death","a");
register_event("CurWeapon","e_Cweapon","be","1=1");
get_localinfo("amxx_configsdir", filename, charsmax(filename));
format(filename, charsmax(filename), "%s/usp_menu.ini", filename);
register_clcmd("say /addpont", "addpont");
}
public addpont(id)
{
g_iPont[id] += 50;
}
public pontokchat(id) client_print_color(id, GREEN, "%s^3 »^1 Neked ^3%i^1 pontod van.", Prefix, g_iPont[id]);
public e_Death(id)
{
if(read_data(1) != read_data(2))
{
g_iPont[read_data(1)]++;
}
}
public Menu_USP(id)
{
new sText[128];
formatex(sText, charsmax(sText), "\r%s \wUSP\d MenĂĽ^n\rPontok:\y%i", Prefix, g_iPont[id]);
new menu = menu_create(sText, "Menu_USP_handler");
for( new i = 0; i < sizeof(USPK) ; i++)
{
new Sor[sizeof(USPK)]; num_to_str(i, Sor, charsmax(Sor)-1);
if(g_iPont[id] >= str_to_num(USPK[i][Pont]))
{
formatex(sText, charsmax(sText), "\r%s \d[%i]\w | \r[\yMegszerezve]", USPK[i][Name], i+1);
menu_additem(menu, sText, Sor);
}
else
{
formatex(sText, charsmax(sText), "\d%s [%i] | [%i/%i pont]", USPK[i][Name], i+1, g_iPont[id], str_to_num(USPK[i][Pont]));
menu_additem(menu, sText, Sor);
}
}
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public Menu_USP_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[9], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
if(g_iPont[id] >= str_to_num(USPK[key][Pont]))
{
USP[id] = key;
client_print_color(id, GREEN, "%s^3 »^1 Kiválasztottad a(z)^3 %s^1 -t.", Prefix, USPK[key][Name]);
}
else
{
client_print_color(id, GREEN, "%s^3 »^1 A(z)^3 %s^1 usp-t ^3%i^1 pont után lesz elérhető.", Prefix, USPK[key][Name], str_to_num(USPK[key][Pont])-g_iPont[id]);
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public plugin_precache()
{
for(new i = 0; i < sizeof(USPK); i++)
{
precache_model(USPK[i][Modell]);
}
}
public e_Cweapon(id)
{
if(get_user_weapon(id) == CSW_USP)
{
for(new i = 0; i < sizeof(USPK) ; i++)
{
if(USP[id] == i)
{
set_pev(id, pev_viewmodel2, USPK[i][Modell]);
}
}
}
}
//mentés
stock get_data(const key[], data[], len) {
new vault = fopen(filename, "rt");
new _data[512], _key[64];
while( !feof(vault) ) {
fgets(vault, _data, charsmax(_data));
parse(_data, _key, charsmax(_key), data, len);
if( equal(_key, key) ) {
fclose(vault);
return 1;
}
}
fclose(vault);
copy(data, len, "");
return 0;
}
stock set_data(const key[], const data[]) {
static const temp_vault_name[] = "set_data.txt";
new file = fopen(temp_vault_name, "wt");
new vault = fopen(filename, "rt");
new _data[512], _key[64], _other[32];
new bool:replaced = false;
while( !feof(vault) ) {
fgets(vault, _data, charsmax(_data));
parse(_data, _key, charsmax(_key), _other, charsmax(_other));
if( equal(_key, key) && !replaced ) {
fprintf(file, "^"%s^" ^"%s^"^n", key, data);
replaced = true;
}
else {
fputs(file, _data);
}
}
if( !replaced ) {
fprintf(file, "^"%s^" ^"%s^"^n", key, data);
}
fclose(file);
fclose(vault);
delete_file(filename);
while( !rename_file(temp_vault_name, filename, 1) ) { }
//delete_file(temp_vault_name);
}
public client_disconnect(id) {
if(!is_user_bot(id) && !is_user_hltv(id)) {
save(id);
}
}
public save(id) {
new szData[128];
new steamid[32]; get_user_authid(id, steamid, charsmax(steamid));
if(contain(steamid, "_ID_LAN") != -1) get_user_ip(id, steamid, charsmax(steamid), 1);
formatex(szData, charsmax(szData), "%i", g_iPont[id]);
set_data(steamid, szData);
}
public client_authorized(id) {
if(!is_user_bot(id) && !is_user_hltv(id)) {
load(id);
}
}
public load(id) {
new szData[128];
new steamid[32]; get_user_authid(id, steamid, charsmax(steamid));
if(contain(steamid, "_ID_LAN") != -1) get_user_ip(id, steamid, charsmax(steamid), 1);
if(get_data(steamid, szData, charsmax(szData))) {
new pont[32];
parse(szData, pont, charsmax(pont));
g_iPont[id] = str_to_num(pont);
}
}