Dodam że miałem ten sam błąd + mały dodatek otóż perki miały 1/1 nie ważne jaki
Jedyny sposób który działał to podmiana kilku rzeczy
Ten kod działa w 100%
 
#include <amxmodx>
#include <codmod>
#define PLUGIN "Wymien Perk"
#define VERSION "1.0"
#define AUTHOR "QTM.Peyote & cypis"
new bool:dostal_przedmiot[33];
new oddaj_id[33];
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    register_clcmd("say /wymien", "ZamienPerk");
    register_clcmd("say /zamien", "ZamienPerk");
    register_event("ResetHUD", "cod_perk_changed", "abe");
}
public ZamienPerk(id)
{
    new menu = menu_create("Zamien sie perkiem", "ZamienPerk_Handle");
    new cb = menu_makecallback("OddajPerk_Callback");
    for(new i=0, n=0; i<=32; i++)
    {
        if(!is_user_connected(i))
            continue;
        oddaj_id[n++] = i;
        new nazwa_gracza[64];
        get_user_name(i, nazwa_gracza, 63)
        menu_additem(menu, nazwa_gracza, "0", 0, cb);
    }
    menu_display(id, menu);
}
public cod_perk_changed(id)
    dostal_przedmiot[id] = false;
public ZamienPerk_Handle(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_CONTINUE;
    }
    
    if(!is_user_connected(oddaj_id[item])){
        client_print(id, print_chat, "Nie odnaleziono zadanego gracza.");
        return PLUGIN_CONTINUE;
    }
    
    if(dostal_przedmiot[oddaj_id[item]]){
        client_print(id, print_chat, "Wybrany gracz musi poczekac 1 runde.");
        return PLUGIN_CONTINUE;
    }
    
    if(dostal_przedmiot[id]){
        client_print(id, print_chat, "Musisz poczekac 1 runde.");
        return PLUGIN_CONTINUE;
    }
    
    if(!cod_get_user_perk(oddaj_id[item])){
        client_print(id, print_chat, "Wybrany gracz nie mam zadnego perka.");
        return PLUGIN_CONTINUE;
    }
    
    if(!cod_get_user_perk(id)){
        client_print(id, print_chat, "Nie masz zadnego perka.");
        return PLUGIN_CONTINUE;
    }
    new nazwa_menu[128], nick[64], nazwaperka[33];
    cod_get_perk_name(cod_get_user_perk(id), nazwaperka, 32);
    get_user_name(id, nick, charsmax(nick))
    formatex(nazwa_menu, charsmax(nazwa_menu), "Wymien sie perkiem o nazwie %s z %s:", nazwaperka, nick)
    
    new menu2 = menu_create(nazwa_menu, "menu_wymien");
    menu_additem(menu2, "Tak", nick);
    menu_addblank(menu2, 0)
    menu_additem(menu2, "Nie", nick);
    
    menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz");
    menu_display(oddaj_id[item], menu2);
    return PLUGIN_CONTINUE;
}
public menu_wymien(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_CONTINUE;
    }
    new access, callback, data[64];
    menu_item_getinfo(menu, item, access, data, charsmax(data), _, _, callback);
    new id2 = get_user_index(data)
    
    switch(item)
    {
        case 0:
        {
            new perk_oddajacego = cod_get_user_perk(id2)
            new perk_dajacego = cod_get_user_perk(id)
            new trim_oddajacego = cod_get_perk_durability(id2)
            new trim_dajacego = cod_get_perk_durability(id)
            
            cod_set_user_perk(id2, perk_dajacego);
            cod_set_user_perk(id, perk_oddajacego);
            cod_set_perk_durability(id2, trim_dajacego)
            cod_set_perk_durability(id, trim_oddajacego)
        
            dostal_przedmiot[id2] = true;
            dostal_przedmiot[id] = true;
                    
            new nazwa_dajacego[64];
            
            get_user_name(id, nazwa_dajacego, charsmax(nazwa_dajacego))
                    
            client_print(id, print_chat, "Wymieniles sie perkiem z %s.", data);
            client_print(id2, print_chat, "Wymieniles sie perkiem z %s.", nazwa_dajacego)
        }
        case 1: client_print(id2, print_chat, "Wybrany gracz nie zgodzil sie na wymiane perka.")
    }
    return PLUGIN_CONTINUE;
}
public OddajPerk_Callback(id, menu, item)
{
    if(oddaj_id[item] == id || !cod_get_user_class(oddaj_id[item]) || !cod_get_user_perk(oddaj_id[item]))
        return ITEM_DISABLED;
    return ITEM_ENABLED;
}