#include <amxmodx>
#include <amxmisc>
 
new const PLUGIN[] = "Fegyver Ölés Rendszer";
new const VERSION[] = "1.0";
new const AUTHOR[] = "Fulco.";
 
new const PREFIX[] = "Információ";
 
new Oles[33], filename[128]
new M4A1Oles[33], AK47Oles[33], AWPOles[33], FAMASOles[33], MP5NAVYOles[33], M3SHOTGUNOles[33], SCOUTOles[33], DEAGLEOles[33], USPOles[33], KESOles[33]
 
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd("say /fegyveroles", "FegyverKills");
    register_event("DeathMsg", "FegyverOlesek", "a");
    set_task(120.0, "OlesVezet",_,_,_, "b");
    set_task(60.0, "Uzenet",_,_,_, "b");
    
    get_localinfo("amxx_configsdir", filename, charsmax(filename))
    format(filename, charsmax(filename), "%s/Mentes.ini", filename)
}
public FegyverKills(id) {
    new MenuString[512], Menu;
    
    formatex(MenuString, 127, "\wFegyver\y*\r Ölés\d Rendszer^n\rÖsszes\w Ölés:\y [\d%d\y]^n\dOldal:\r", Oles[id])
    Menu = menu_create(MenuString, "FegyverKillsh")
    
    if(M4A1Oles[id] >= 100000) {
        formatex(MenuString, 127, "\wMarverick\r M4A1\y [Teljesítve]")
        menu_additem(Menu, MenuString, "1")
    }
    else {
        format(MenuString, 127, "\wMarverick\r M4A1\y [\d%d\r/\d100.000\y]", M4A1Oles[id])
        menu_additem(Menu, MenuString, "1")
    }
    if(AK47Oles[id] >= 100000) {
        formatex(MenuString, 127, "\wAlexander Kalasnyikov\r AK47\y [Teljesítve]")
        menu_additem(Menu, MenuString, "2")
    }
    else {
        format(MenuString, 127, "\wAlexander Kalasnyikov\r AK47\y [\d%d\r/\d100.000\y]", AK47Oles[id])
        menu_additem(Menu, MenuString, "2")
    }
    if(AWPOles[id] >= 100000) {
        formatex(MenuString, 127, "\wAWP\r Magnum\y [Teljesítve]")
        menu_additem(Menu, MenuString, "3")
    }
    else {
        formatex(MenuString, 127, "\wAWP\r Magnum\y [\d%d\r/\d100.000\y]", AWPOles[id])
        menu_additem(Menu, MenuString, "3")
    }
    if(FAMASOles[id] >= 100000) {
        formatex(MenuString, 127, "\wSt. Étienne\r Famas\y [Teljesítve]")
        menu_additem(Menu, MenuString, "4")
    }
    else {
        formatex(MenuString, 127, "\wSt. Étienne\r Famas\y [\d%d\r/\d100.000\y]", FAMASOles[id])
        menu_additem(Menu, MenuString, "4")
    }
    if(MP5NAVYOles[id] >= 100000) {
        formatex(MenuString, 127, "\wSMG\r MP5NAVY\y [Teljesítve]")
        menu_additem(Menu, MenuString, "5")
    }
    else {
        formatex(MenuString, 127, "\wSMG\r MP5NAVY\y [\d%d\r/\d100.000\y]", MP5NAVYOles[id])
        menu_additem(Menu, MenuString, "5")
    }
    if(M3SHOTGUNOles[id] >= 100000) {
        formatex(MenuString, 127, "\wM3\r SHOTGUN\y [Teljesítve]")
        menu_additem(Menu, MenuString, "6")
    }
    else {
        formatex(MenuString, 127, "\wM3\r SHOTGUN\y [\d%d\r/\d100.000\y]", M3SHOTGUNOles[id])
        menu_additem(Menu, MenuString, "6")
    }
    if(SCOUTOles[id] >= 100000) {
        formatex(MenuString, 127, "\wTávcsöves puska\r SCOUT\y [Teljesítve]")
        menu_additem(Menu, MenuString, "7")
    }
    else {
        formatex(MenuString, 127, "\wTávcsöves puska\r SCOUT\y [\d%d\r/\d100.000\y]", SCOUTOles[id])
        menu_additem(Menu, MenuString, "7")
    }
    if(DEAGLEOles[id] >= 100000) {
        formatex(MenuString, 127, "\wDesert Eagle\r .50 AE\y [Teljesítve]")
        menu_additem(Menu, MenuString, "8")
    }
    else {
        formatex(MenuString, 127, "\wDesert Eagle\r .50 AE\y [\d%d\r/\d100.000\y]", DEAGLEOles[id])
        menu_additem(Menu, MenuString, "8")
    }
    if(USPOles[id] >= 100000) {
        formatex(MenuString, 127, "\wUSP\r .45 ACP Tactical\y [Teljesítve]")
        menu_additem(Menu, MenuString, "9")
    }
    else {
        formatex(MenuString, 127, "\wUSP\r .45 ACP Tactical\y [\d%d\r/\d100.000\y]", USPOles[id])
        menu_additem(Menu, MenuString, "9")
    }
    if(KESOles[id] >= 100000) {
        formatex(MenuString, 127, "\wKĂ©s\y [Teljesítve]")
        menu_additem(Menu, MenuString, "10")
    }
    else {
        formatex(MenuString, 127, "\wKĂ©s\y [\d%d\r/\d100.000\y]", KESOles[id])
        menu_additem(Menu, MenuString, "10")
    }
    menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL)
    menu_setprop(Menu, MPROP_NEXTNAME, "ElĹ‘re");
    menu_setprop(Menu, MPROP_BACKNAME, "Vissza");
    menu_setprop(Menu, MPROP_EXITNAME, "KilĂ©pĂ©s");
    
    menu_display(id, Menu, 0)
    return PLUGIN_HANDLED
}
public FegyverKillsh(id, Menu, item) {
    if(item == MENU_EXIT) {
        menu_destroy(Menu)
        return PLUGIN_HANDLED
    }
    new Data[9], access, callback, szName[64]
    menu_item_getinfo(Menu, item, access, Data,charsmax(Data), szName,charsmax(szName), callback)
    
    //new Key = str_to_num(Data)
    FegyverKills(id)
    
    menu_destroy(Menu)
    return PLUGIN_HANDLED
}   
public FegyverOlesek() {
    new Gyilkos = read_data(1)
    new Aldozat = read_data(2)
    new Jatekos[32]
    get_user_name(Gyilkos, Jatekos, 31)
    
    if(Gyilkos == Aldozat || Gyilkos == 0) {
        return PLUGIN_HANDLED
    }
    Oles[Gyilkos]++
    switch(get_user_weapon(Gyilkos)) {
        case CSW_M4A1: M4A1Oles[Gyilkos]++;
        case CSW_AK47: AK47Oles[Gyilkos]++;
        case CSW_AWP: AWPOles[Gyilkos]++;
        case CSW_FAMAS: FAMASOles[Gyilkos]++;
        case CSW_MP5NAVY: MP5NAVYOles[Gyilkos]++;
        case CSW_M3: M3SHOTGUNOles[Gyilkos]++;
        case CSW_SCOUT: SCOUTOles[Gyilkos]++;
        case CSW_DEAGLE: DEAGLEOles[Gyilkos]++;
        case CSW_USP: USPOles[Gyilkos]++;
        case CSW_KNIFE: KESOles[Gyilkos]++;
    }
    if(M4A1Oles[Gyilkos] == 100000) {
        print_color(0, "!g[%s]!y Játékos:!t %s!y Elérte a(z)!g M4A1Ölés-t", PREFIX, Jatekos);
        return PLUGIN_HANDLED
    }
    else if(M4A1Oles[Gyilkos] == 100000) {
        return PLUGIN_HANDLED
    }
    else if(AK47Oles[Gyilkos] == 100000) {
        print_color(0, "!g[%s]!y Játékos:!t %s!y Elérte a(z)!g AK47Ölés-t", PREFIX, Jatekos);
        return PLUGIN_HANDLED
    }
    else if(AWPOles[Gyilkos] == 100000) {
        print_color(0, "!g[%s]!y Játékos:!t %s!y Elérte a(z)!g AWPÖlés-t", PREFIX, Jatekos);
        return PLUGIN_HANDLED
    }
    else if(FAMASOles[Gyilkos] == 100000) {
        print_color(0, "!g[%s]!y Játékos:!t %s!y Elérte a(z)!g FAMASÖlés-t", PREFIX, Jatekos);
        return PLUGIN_HANDLED
    }
    else if(MP5NAVYOles[Gyilkos] == 100000) {
        print_color(0, "!g[%s]!y Játékos:!t %s!y Elérte a(z)!g MP5Ölés-t", PREFIX, Jatekos);
        return PLUGIN_HANDLED
    }
    else if(M3SHOTGUNOles[Gyilkos] == 100000) {
        print_color(0, "!g[%s]!y Játékos:!t %s!y Elérte a(z)!g M3Ölés-t", PREFIX, Jatekos);
        return PLUGIN_HANDLED
    }
    else if(SCOUTOles[Gyilkos] == 100000) {
        print_color(0, "!g[%s]!y Játékos:!t %s!y Elérte a(z)!g SCOUTÖlés-t", PREFIX, Jatekos);
        return PLUGIN_HANDLED
    }
    else if(DEAGLEOles[Gyilkos] == 100000) {
        print_color(0, "!g[%s]!y Játékos:!t %s!y Elérte a(z)!g DEAGLEÖlés-t", PREFIX, Jatekos);
        return PLUGIN_HANDLED
    }
    else if(USPOles[Gyilkos] == 100000) {
        print_color(0, "!g[%s]!y Játékos:!t %s!y Elérte a(z)!g USPÖlés-t", PREFIX, Jatekos);
        return PLUGIN_HANDLED
    }
    else if(KESOles[Gyilkos] == 100000) {
        print_color(0, "!g[%s]!y Játékos:!t %s!y Elérte a(z)!g KesÖlés-t", PREFIX, Jatekos);
        return PLUGIN_HANDLED
    }
    return PLUGIN_CONTINUE
}
public client_authorized(id) {
    if(!is_user_bot(id) && !is_user_hltv(id)) {
        Betoltes(id)
    }
}
public client_disconnect(id) {
    if(!is_user_bot(id) && !is_user_hltv(id)) {
        Mentes(id)
    }
}
public Mentes(id) {
    new szData[128], szName[32]
    get_user_name(id, szName, charsmax(szName))
    
    formatex(szData, charsmax(szData), "%i %i %i %i %i %i %i %i %i %i %i", Oles[id], M4A1Oles[id], AK47Oles[id], AWPOles[id], FAMASOles[id], MP5NAVYOles[id], M3SHOTGUNOles[id], SCOUTOles[id], DEAGLEOles[id], USPOles[id], KESOles[id])
    set_data(szName, szData)
}
public Betoltes(id) {
    new szData[128], szName[32]
    get_user_name(id, szName, charsmax(szName))
    
    if(get_data(szName, szData, charsmax(szData))) {
        new Oles1[32], M4A1Oles1[32], AK47Oles1[32], AWPOles1[32], FAMASOles1[32], MP5NAVYOles1[32], M3SHOTGUNOles1[32], SCOUTOles1[32], DEAGLEOles1[32], USPOles1[32], KESOles1[32]
        parse(szData, Oles1, charsmax(Oles1), M4A1Oles1, charsmax(M4A1Oles1), AK47Oles1, charsmax(AK47Oles1), AWPOles1, charsmax(AWPOles1), FAMASOles1, charsmax(FAMASOles1), MP5NAVYOles1, charsmax(MP5NAVYOles), M3SHOTGUNOles1, charsmax(M3SHOTGUNOles1), SCOUTOles1, charsmax(SCOUTOles1), DEAGLEOles1, charsmax(DEAGLEOles1), USPOles1, charsmax(USPOles1), KESOles1, charsmax(KESOles1))
        Oles[id] = str_to_num(Oles1)
        M4A1Oles[id] = str_to_num(M4A1Oles1)
        AK47Oles[id] = str_to_num(AK47Oles1)
        AWPOles[id] = str_to_num(AWPOles1)
        FAMASOles[id] = str_to_num(FAMASOles1)
        MP5NAVYOles[id] = str_to_num(MP5NAVYOles1)
        M3SHOTGUNOles[id] = str_to_num(M3SHOTGUNOles1)
        SCOUTOles[id] = str_to_num(SCOUTOles1)
        DEAGLEOles[id] = str_to_num(DEAGLEOles1)
        USPOles[id] = str_to_num(USPOles1)
        KESOles[id] = str_to_num(KESOles1)
    }
}   
public OlesVezet() {
    new Players[32], pnum, Max, id;
    
    get_players(Players, pnum)
    
    for(new i; i< pnum; i++) {
        if(Oles[Players[i]] > Max) {
            Max = Oles[Players[i]];
            id = Players[i];
        }
        new szName[32]
        get_user_name(id, szName, charsmax(szName))
        
        if(!is_user_connected(id) || !is_user_bot(id)) {
            print_color(0, "!g[%s]!y Játékos:!t %s!y Vezet:!g %d!y Ölésel.!", PREFIX, szName, Max)
            return PLUGIN_HANDLED
        }
    }
    return PLUGIN_CONTINUE
}
public Uzenet() {
    print_color(0, "!g[%s]!y A Szerveren!t Fegyver Ölés Rendszer!y futt, amit!g %s!y készített!", PREFIX, AUTHOR)
}
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);
}
stock print_color(const id, const input[], any:...) {
    new count = 1, players[32]
    static msg[191]
    vformat(msg, 190, input, 3)
    
    replace_all(msg, 190, "!g", "^4")
    replace_all(msg, 190, "!y", "^1")
    replace_all(msg, 190, "!t", "^3")
    
    replace_all(msg, 190, "á", "á")
    replace_all(msg, 190, "é", "Ă©")
    replace_all(msg, 190, "í", "Ă")
    replace_all(msg, 190, "ó", "Ăł")
    replace_all(msg, 190, "ö", "ö")
    replace_all(msg, 190, "ő", "Ĺ‘")
    replace_all(msg, 190, "ú", "Ăş")
    replace_all(msg, 190, "ü", "ĂĽ")
    replace_all(msg, 190, "ű", "ű")
    replace_all(msg, 255, "Á", "Ă-")
    replace_all(msg, 190, "É", "É")
    replace_all(msg, 190, "Í", "ĂŤ")
    replace_all(msg, 190, "Ó", "Ă“")
    replace_all(msg, 190, "Ö", "Ă–")
    replace_all(msg, 190, "Ő", "Ĺ")
    replace_all(msg, 190, "Ú", "Ăš")
    replace_all(msg, 190, "Ü", "Ăś")
    replace_all(msg, 190, "Ű", "Ű")
    
    if(id)players[0] = id; else get_players(players, count, "ch") 
    {
        for (new i = 0; i < count; i++) {
            if (is_user_connected(players[i])) {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                
                write_byte(players[i])
                write_string(msg)
                message_end()
            }
        }
    }
    return PLUGIN_HANDLED
}