⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
Server ip : 95.173.173.2 || Ts3 : LCAPRO www.lcapro.net
Sponsor Görsel 2
SponsorSponsor

Rank sistemindeki skinler çalışmıyor

Konu

#1
Skinler aktif edildikten sonra gözükmüyor. Level atlama seside ekleyebilir miyiz
Kod:
#pragma semicolon 1

#include <amxmodx>
#include <reapi>
#include <nvault>
#include <fakemeta>

new const ChatTag[] = "^1[^4LG^1]";

native csd_chat_rutbe(oyuncu, const rutbe[]);

new const sLevelSystem[][][] = {
    { "Yeni Oyuncu", 0 }, // 0
    { "Er", 50 }, // 1
    { "Onbasi", 100 }, // 2
    { "Cavus", 150 }, // 3
    { "Uzman Onbasi", 200 }, // 4
    { "Uzman Cavus", 300 }, // 5
    { "Astsubay", 450 }, // 6
    { "Astegmen", 600 }, // 7
    { "Tegmen", 800 }, // 8
    { "Ustegmen", 1000 }, // 9
    { "Yuzbasi", 1250 }, // 10
    { "Binbasi", 1500 }, // 11
    { "Yarbay", 1800 }, // 12
    { "Albay", 2100 }, // 13
    { "Tuggeneral", 2500 }, // 14
    { "Tumgeneral", 2900 }, // 15
    { "Korgeneral", 3500 }, // 16
    { "Orgeneral", 4000 }, // 17
    { "GenelKurmay Baskani", 4600 }, // 18
    { "Maresal", 5100 }, // 19
    { "İmparator", 6000 }, // 20
};

new const szSkins[][][] = {
    { "Default", "models/v_knife.mdl", 1, 0 }, // Skin adı, model dosyası, silah id, alabilecek rank.
    { "Classic - Amongus", "Legand_GaminG/v_Classic_Amongus", 5, 1 },
    { "Bayonet - Trojen", "Legand_GaminG/v_Bayonet_Trojen", 6, 3 },
    { "Butterfly - Lore", "Legand_GaminG/v_Butterfly_Lore", 7, 5 },    
    { "Karambit - Asimov", "Legand_GaminG/v_Karambit_Asimov", 8, 7 },    
    { "Stiletto - Polymer", "Legand_GaminG/v_Stiletto_Polymer", 9, 10 },    
    { "Shadow - Combine", "Legand_GaminG/v_Shadow_Combine", 10,  15 },    
    { "Hunstman - Acid", "Legand_GaminG/v_Hunstman_Acid", 8,  20 },    
    { "AK47 Test", "v_ak47", 10, 0 },
    { "M4A1 Test", "v_m4a1", 30, 0 },
    { "AWP Test", "Legand_GaminG/v_awpnew", 50, 0 },
};

enum _: Variables {
    Exp,
    Level
}

new Vars[MAX_PLAYERS + 1][Variables], iCvars[3], iVault, iForward, iReturn, iSyncHud, ActiveSkin[MAX_PLAYERS + 1][31];

public plugin_init() {
    register_plugin("RutbeSistemi", "1.0", "Pawnod, Lynch, Maravilha");

    register_clcmd("say /rutbe", "RutbeInformation");
    register_clcmd("say !rutbe", "RutbeInformation");
    register_clcmd("say .rutbe", "RutbeInformation");

    register_clcmd("say /skin", "ModelMenu");
    register_clcmd("say !skin", "ModelMenu");
    register_clcmd("say .skin", "ModelMenu");
    register_clcmd("say /bicak", "ModelMenu");
    register_clcmd("say !bicak", "ModelMenu");
    register_clcmd("say .bicak", "ModelMenu");

    RegisterHookChain(RG_CBasePlayer_Killed, "@IsKilled", .post = true);

    iForward = CreateMultiForward("pUserLevelUp", ET_IGNORE, FP_CELL);

    Cvars();

    iSyncHud = CreateHudSyncObj();

    register_event("CurWeapon", "CurWeapon", "be", "1=1");
}

public plugin_precache() {
    for (new i = 1; i < sizeof(szSkins); i++) {
        new ModelFile[96];
        formatex(ModelFile, charsmax(ModelFile), "models/%s.mdl", szSkins[i][1]);
        precache_model(ModelFile);
    }
}

Cvars() {
    bind_pcvar_num(create_cvar("ALS_Give_Exp", "1"), iCvars[0]); // Bu değeri 0 yaparsanız ALS_Give_Max_Exp ve ALS_Give_Min_Exp değerleri arasından rastgele exp verecektir.
    bind_pcvar_num(create_cvar("ALS_Give_Min_Exp", "20"), iCvars[1]);
    bind_pcvar_num(create_cvar("ALS_Give_Max_Exp", "70"), iCvars[2]);
}

@IsKilled(const iVictim, const iAttacker) {
    if (!is_user_connected(iAttacker) || iVictim == iAttacker) return;
    if (LevelChecker(iAttacker, false, (iCvars[0] == 0) ? random_num(iCvars[1], iCvars[2]) : iCvars[0])) {
        (iCvars[0] == 0) ? (Vars[iAttacker][Exp] += random_num(iCvars[1], iCvars[2])) : (Vars[iAttacker][Exp] += iCvars[0]);
        new sSteamID[64];
        get_user_authid(iAttacker, sSteamID, 63);
        sSetIntData("%s>Exp", Vars[iAttacker][Exp], sSteamID);
    }
    if (LevelChecker(iAttacker, true, 0))
        @LevelUp(iAttacker);
}
@LevelUp(const iPlayer) {
    Vars[iPlayer][Level]++;
    ExecuteForward(iForward, iReturn, iPlayer);
    client_print_color(iPlayer, iPlayer, "%s ^1Basarili bir sekilde ^4Level Atladiniz^1...!", ChatTag);
    new sSteamID[64];
    get_user_authid(iPlayer, sSteamID, 63);
    sSetIntData("%s>Level", Vars[iPlayer][Level], sSteamID);
    sSetIntData("%s>Exp", Vars[iPlayer][Exp], sSteamID);
}
public client_putinserver(iPlayer) {
    new sSteamID[64];
    get_user_authid(iPlayer, sSteamID, 63);
    Vars[iPlayer][Exp] = sGetIntData("%s>Exp", sSteamID);
    Vars[iPlayer][Level] = sGetIntData("%s>Level", sSteamID);

    set_task(3.0, "ChatReklami", iPlayer);
    set_task(5.0, "ShowHudMessage", iPlayer + 125721, .flags = "b");

    if (!(get_user_flags(iPlayer) & ADMIN_RESERVATION)) {
        new mesaj[128];
        format(mesaj, sizeof(mesaj), "^4[%s] ", sLevelSystem[Vars[iPlayer][Level]][0][0]);
        csd_chat_rutbe(iPlayer, mesaj);
    }
}
public ShowHudMessage(Taskid) {
    new id = Taskid - 125721;

    if (is_user_connected(id)) {
        set_hudmessage(0, 255, 0, 1.0, 0.50, 0, 0.0, 5.0);

        if (Vars[id][Level] < (sizeof(sLevelSystem) - 1)) ShowSyncHudMsg(id, iSyncHud, "[Rutben: %s]^n[Frag: %i / %i]^n[Siradaki Rutbe: %s]^n[LvL: %d/%d]", sLevelSystem[Vars[id][Level]][0][0], Vars[id][Exp], sLevelSystem[Vars[id][Level] + 1][1][0], sLevelSystem[Vars[id][Level] + 1][0][0], Vars[id][Level], (sizeof(sLevelSystem) - 1));
        else ShowSyncHudMsg(id, iSyncHud, "[Rutben: %s]^n[Frag: %i / Max]", sLevelSystem[Vars[id][Level]][0][0], Vars[id][Exp]);
    }
}
public ChatReklami(id) {
    if (is_user_connected(id)) {
        client_print_color(id, id, "%s ^1Sunucumuza hosgeldiniz.^3Level Sistemine ^1giriş yapildi.!", ChatTag);

        if (Vars[id][Level] < (sizeof(sLevelSystem) - 1)) {
            client_print_color(id, id, "%s ^1Sonraki Rutbe icin ^3%i ^4kill ^1daha alman gerekiyor.!", ChatTag, sLevelSystem[Vars[id][Level] + 1][1][0] - Vars[id][Exp]);
        }
    }
}

public plugin_natives() {
    register_native("ALS_GetUserExp", "@ALS_GUEX");
    register_native("ALS_SetUserExp", "@ALS_SUEX");
    register_native("ALS_GetUserLevel", "@ALS_GULV");
    register_native("ALS_SetUserLevel", "@ALS_SULV");
    register_native("ALS_GetLevelName", "@ALS_GETNAME");
    register_native("ALS_GetMaxLevel", "@ALS_GMLV");
}
@ALS_GETNAME() {
    new levelid = get_param(1);
    new len = get_param(2);
    set_string(2, fmt("%s", sLevelSystem[levelid][0][0]), len);
}
@ALS_GUEX() {
    new nPlayerID = get_param(1);
    return Vars[nPlayerID][Exp];
}
@ALS_SUEX() {
    new nPlayerID = get_param(1), nAmount = get_param(2);
    if (nAmount >= sLevelSystem[(sizeof(sLevelSystem) - 1)][1][0]) {
        Vars[nPlayerID][Level] = (sizeof(sLevelSystem) - 1);
        Vars[nPlayerID][Exp] = sLevelSystem[(sizeof(sLevelSystem) - 1)][1][0];
    } else {
        Vars[nPlayerID][Exp] = nAmount;
        for (new i = 0; i < sizeof(sLevelSystem); i++) {
            if (nAmount >= sLevelSystem[i][1][0]) {
                Vars[nPlayerID][Exp] = i;
                break;
            }
        }
    }
    return PLUGIN_CONTINUE;
}
@ALS_GULV() {
    new nPlayerID = get_param(1);
    return Vars[nPlayerID][Level];
}
@ALS_SULV() {
    new nPlayerID = get_param(1), nAmount = get_param(2);
    if (nAmount >= (sizeof(sLevelSystem) - 1)) {
        Vars[nPlayerID][Level] = (sizeof(sLevelSystem) - 1);
        Vars[nPlayerID][Exp] = sLevelSystem[(sizeof(sLevelSystem) - 1)][1][0];
    } else {
        Vars[nPlayerID][Exp] = sLevelSystem[nAmount][1][0];
        Vars[nPlayerID][Level] = nAmount;
    }
    return PLUGIN_CONTINUE;
}
@ALS_GMLV() {
    return (sizeof(sLevelSystem) - 1);
}
public plugin_cfg()
iVault = nvault_open("ALS_V1");
public plugin_end()
nvault_close(iVault);

bool:LevelChecker(const iPlayer, const bool:IsExp, const iExpAmout) {
    new iMaxExp, iMaxLevel;
    iMaxLevel = (sizeof(sLevelSystem) - 1);
    iMaxExp = sLevelSystem[iMaxLevel][1][0];
    if (IsExp) {
        if (Vars[iPlayer][Exp] >= iMaxExp) {
            Vars[iPlayer][Level] = iMaxLevel;
            return false;
        }
        if (Vars[iPlayer][Exp] < sLevelSystem[Vars[iPlayer][Level] + 1][1][0])
            return false;
        if (Vars[iPlayer][Level] >= iMaxLevel) {
            Vars[iPlayer][Level] = iMaxLevel;
            return false;
        }
    } else {
        if (Vars[iPlayer][Exp] + iExpAmout >= iMaxExp) {
            Vars[iPlayer][Exp] = iMaxExp;
            return false;
        }
    }
    return true;
}
stock sGetIntData(const sKey[], any:...) {
    new sFixedData[128];
    vformat(sFixedData, 127, sKey, 2);
    return nvault_get(iVault, sFixedData);
}
stock sSetIntData(const sKey[], const iData, any:...) {
    new sFixedData[128], sNTS[48];
    vformat(sFixedData, 127, sKey, 3);
    num_to_str(iData, sNTS, 47);
    nvault_set(iVault, sFixedData, sNTS);
}

public RutbeInformation(Player) {
    new Arg[2126], Num;

    Num += formatex(Arg[Num], 2126 - Num, "<meta charset=UTF-8><style>body{background:#000;font-family:Arial}th{border-left:1px solid #FF0000;border-top:1px solid #FF0000}table{background:#000;font-size:11px;color:#FFF;border-right:1px solid #FF0000;border-bottom:1px solid #FF0000;padding:3px}h2,h3{color:#FFF}#c{background:#FF9B00;color:#000}img{height:10px;background:#00E930;margin:0 3px}#r{height:10px;background:#B6423C}#clr{background:none;color:#FFF;font-size:20px;border:0} .powered{color:#FF0000}</style>");
    Num += formatex(Arg[Num], 2126 - Num, "<body><table width=100%% border=0 align=center cellpadding=0 cellspacing=1>");
    Num += formatex(Arg[Num], 2126 - Num, "<tr><th>#<th>Rütbe Adı<th>Gereken Kill</tr>");

    for (new i = 1; i < sizeof(sLevelSystem); i++) {
        Num += formatex(Arg[Num], 2126 - Num, "<tr><th>%i<th>%s<th>%d</tr>", i, sLevelSystem[i][0][0], sLevelSystem[i][1][0]);
    }

    Num += formatex(Arg[Num], 2126 - Num, "</table><br><center class='powered'>Powered by Maravilha</center>");

    show_motd(Player, Arg, "Rütbe Bilgilendirmesi");
}

public ModelMenu(const id) {
    new menu = menu_create(fmt("\dLG \w| \yRütbe Skinleri"), "ModelHandler");

    for (new i = 1; i < sizeof(szSkins); i++) {
        menu_additem(menu, fmt("\y%s \d(%s)", szSkins[i][0], sLevelSystem[szSkins[i][3][0]][0]), fmt("%d", i));
    }

    menu_display(id, menu);
}

public ModelHandler(const id, const menu, const item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    new data[6];
    menu_item_getinfo(menu, item, _, data, charsmax(data));
    new key = str_to_num(data);

    if (Vars[id][Level] < szSkins[key][3][0] && !(get_user_flags(id) & ADMIN_RESERVATION)) {
        client_print_color(id, id, "%s ^4Bu modeli almak için rütbeniz yeterli değil^1!", ChatTag);
        return PLUGIN_HANDLED;
    }

    client_print_color(id, id, "%s ^4Skin aktif edildi!", ChatTag);

    new WeaponID = szSkins[key][2][0];
    ActiveSkin[id][WeaponID] = key;
    CurWeapon(id);
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

public CurWeapon(iPlayer) {
    if (!is_user_alive(iPlayer) || !is_user_connected(iPlayer))
        return PLUGIN_HANDLED;

    new WeaponID = get_user_weapon(iPlayer);

    if (ActiveSkin[iPlayer][WeaponID] > 0) {
        new ModelFile[96];
        formatex(ModelFile, charsmax(ModelFile), "models/%s.mdl", szSkins[ActiveSkin[iPlayer][WeaponID]][1]);
        set_pev(iPlayer, pev_viewmodel2, ModelFile);
    }
    return PLUGIN_HANDLED;
}

Son Düzenleme: 25-07-2025, 16:27, Düzenleyen: naJaaq.
#3
Hocam skin aktifleştirildi diyor ama skin gözükmüyor devam ediyor sorun
#4
https://www.webailesi.com/ds-knifemenu-16337.sma
model yolundaki modellerin sonunda .mdl eklememişsiniz dener misiniz? (level atlama sesi eklemedim)
#5
(25-07-2025, 21:24)ahbet Adlı Kullanıcıdan Alıntı: https://www.webailesi.com/ds-knifemenu-16337.sma
model yolundaki modellerin sonunda .mdl eklememişsiniz dener misiniz? (level atlama sesi eklemedim)

Bildiğim kadarı ile .mdl eklemesine gerek yok. Onu eklerse plugin hiç çalışmayacaktır. 
Çünkü plugin içerisinde zaten .mdl var. 

formatex(ModelFile, charsmax(ModelFile), "models/%s.mdl", szSkins[i][1]);
Stand Back Warrior's   | ip: cs.sbwpro.com | ts3: ts3.sbwpro.com
#6
(25-07-2025, 21:41)Mr.Commander Adlı Kullanıcıdan Alıntı:
(25-07-2025, 21:24)ahbet Adlı Kullanıcıdan Alıntı: https://www.webailesi.com/ds-knifemenu-16337.sma
model yolundaki modellerin sonunda .mdl eklememişsiniz dener misiniz? (level atlama sesi eklemedim)

Bildiğim kadarı ile .mdl eklemesine gerek yok. Onu eklerse plugin hiç çalışmayacaktır. 
Çünkü plugin içerisinde zaten .mdl var. 

formatex(ModelFile, charsmax(ModelFile), "models/%s.mdl", szSkins[i][1]);
gözümden kaçmış ilk dosya uzantılarına bakınca bi denesin olmazsa ona görede bir çözüm buluruz, teşekkür ederim
#7
Kardeşim bu arada sorunu şimdi gördüm. Pluginde bir sorun yok, silah id numaralarını yanlış yazdığında dolayı skinler gelmemektedir.

Şöyle ki her silahın bir id numarası vardır. Bak burada pluginde sana onu yazmış zaten. Oradaki ilk rakam id demek Knife ID kodu 29'dur. Yani aşağıdaki gibi yapacaksın. Bıçaklarda ilk numaraların hepsi 29 olacak, sonra hangi rank sıralaması istiyorsan sonraki sayıyı ona göre yapacaksın.

{ "Default", "models/v_knife.mdl", 1, 0 }, // Skin adı, model dosyası, silah id, alabilecek rank.
{ "Classic - Amongus", "Legand_GaminG/v_Classic_Amongus", 29, 1 },

Diğer silahların kod numaralarına da aşağıdaki konudan bakabilirsin.

https://www.webailesi.com/konu-silah-csw-kodlari-ve-id-degerleri-27

Kolay gelsin,
Stand Back Warrior's   | ip: cs.sbwpro.com | ts3: ts3.sbwpro.com
#8
@naJaaq Konunuz Çözüldüyse Bildirmeyi Unutmayiniz.
MODEL TASARIMI SİLAH TASARIMI SPREY TASARIMI EKLENTİ İŞLERİ MOD KURULUMU İÇİN DİSCORD:okan5705 veya Ts3 Domainler:flexekip,flexekib,okan,okans
#9
Herkese çok teşekkür ederim oldu.
#10
İstek konusu, @Mr.Commander adlı kullanıcı tarafından 1 gün içinde çözülmüştür.
İsteği çözdüğü için Mr.Commander Adlı kullanıcıya 1 rep puanı ve 1 yardım etme puanı otomatik olarak verilmiştir.
Mr.Commander Adlı kullanıcı sizin dışınızda toplam 89 kişiye yardım etmiştir.

Herhangi bir konuda hata olduğunu düşünüyorsanız destek sistemi üzerinden iletişim kurabilirsiniz.

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da