⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
⭐ Buraya kendi metin reklamınızı vererek binlerce kişiye ulaşın! ⭐
Sponsor Görsel 2
SponsorSponsor

Konu

#1
Arkadaşlar merhaba, elımde modeller mevcut fakat sunucuya ekleyebilecek eklentim yok. p w v seklinde yapabilecek varmı yaparkende model sayısı fazla oldugu ıcın bır satır ekleyip kendım kopyalayıp yapıstırma yapabilirsem cok iyi olur. komudu t harfine tamamlarsanız sevınırım. chatdan /ortakskin yazdıgında menuye ulasabilirse tadından yenmez.
#2
Konu taşındı.
Steam:Tıkla • Discord: lynchk
#3
(24-06-2026, 21:46)YUNUSBEYHATUN Adlı Kullanıcıdan Alıntı: Arkadaşlar merhaba, elımde modeller mevcut fakat sunucuya ekleyebilecek eklentim yok. p w v seklinde yapabilecek varmı yaparkende model sayısı fazla oldugu ıcın bır satır ekleyip kendım kopyalayıp yapıstırma yapabilirsem cok iyi olur. komudu t harfine tamamlarsanız sevınırım. chatdan /ortakskin yazdıgında menuye ulasabilirse tadından yenmez.

Yunus Abi, Eğer gün içerisinde bakan olmazsa akşama bakarım, detayları da PM üzerinden konuşuruz.

Eklenti isteğin şu mudur?:

- Silah modellerinin View, Player, World olarak 3 etaplı olarak görünmesini
- /ortakskin komutuyla T harfine sahip oyuncuların erişimi
- Kolay model ekleme/çıkarma
Advanced Plug-in & Animated Model Tasarımı
#4
(24-06-2026, 21:46)YUNUSBEYHATUN Adlı Kullanıcıdan Alıntı: Arkadaşlar merhaba, elımde modeller mevcut fakat sunucuya ekleyebilecek eklentim yok. p w v seklinde yapabilecek varmı yaparkende model sayısı fazla oldugu ıcın bır satır ekleyip kendım kopyalayıp yapıstırma yapabilirsem cok iyi olur. komudu t harfine tamamlarsanız sevınırım. chatdan /ortakskin yazdıgında menuye ulasabilirse tadından yenmez.
https://www.webailesi.com/konu-cs-1-6-tag-kontrollu-skin-menu-mdl-36039 şu açtığım konuya bakabilirsin buradaki sma dosyasını indirip sadece içerisinde bulunan silah skinlerini kendi elindeki ile değiştirebilirsin
#5
Kod:
#include <amxmodx>
#include <reapi>
#include <nvault>

#define PLUGIN "ReAPI Skin Precache"
#define VERSION "1.7"
#define AUTHOR "unjustFIVE GAMING"

// =========================================================================
// YETKI AYARI: ADMIN_KICK su anda 'c' harfine denk gelmektedir.
// Istediginiz harfe gore degistirebilirsiniz (Ornek: ADMIN_BAN 'd' harfidir)
// =========================================================================
#define ERISIM_YETKISI ADMIN_KICK

enum {
    TYPE_AK47 = 0,
    TYPE_AWP,
    TYPE_DEAGLE,
    TYPE_M4A1,
    MAX_TYPES
}

enum _:SkinData {
    SkinName[32],
    VModel[64],
    PModel[64],
    WModel[64]
}

// Global nVault degiskeni
new g_Vault;

// Oyuncularin secili skin idlerini tutan degisken
new g_SelectedSkin[33][MAX_TYPES];

// =========================================================================
// SKIN YAPILANDIRMASI (HER SILAH ICIN 10 ADET ÖRNEK EKLENMISTIR)
// NOT: Turkce karakter (ı, ş, ğ, ü, ö, ç) kesinlikle kullanmayiniz!
// 0. Indisler her zaman oyuncunun skini kapatip orijinal silaha donmesi icindir.
// =========================================================================

new const AK47_Skins[][SkinData] = {
    { "Varsayilan Skin", "", "", "" },
    { "AK47 Blaze", "models/v_ak47_blaze.mdl", "models/p_ak47_blaze.mdl", "models/w_ak47_blaze.mdl" },
    { "AK47 Asiimov", "models/v_ak47_asiimov.mdl", "models/p_ak47_asiimov.mdl", "models/w_ak47_asiimov.mdl" },
    { "AK47 Neon Rider", "models/v_ak47_neon.mdl", "models/p_ak47_neon.mdl", "models/w_ak47_neon.mdl" },
    { "AK47 Vulcan", "models/v_ak47_vulcan.mdl", "models/p_ak47_vulcan.mdl", "models/w_ak47_vulcan.mdl" },
    { "AK47 Bloodsport", "models/v_ak47_bloodsport.mdl", "models/p_ak47_bloodsport.mdl", "models/w_ak47_bloodsport.mdl" },
    { "AK47 Frontside Misty", "models/v_ak47_frontside.mdl", "models/p_ak47_frontside.mdl", "models/w_ak47_frontside.mdl" },
    { "AK47 Redline", "models/v_ak47_redline.mdl", "models/p_ak47_redline.mdl", "models/w_ak47_redline.mdl" },
    { "AK47 Aquamarine", "models/v_ak47_aquamarine.mdl", "models/p_ak47_aquamarine.mdl", "models/w_ak47_aquamarine.mdl" },
    { "AK47 Hydroponic", "models/v_ak47_hydro.mdl", "models/p_ak47_hydro.mdl", "models/w_ak47_hydro.mdl" },
    { "AK47 Wasteland Rebel", "models/v_ak47_wasteland.mdl", "models/p_ak47_wasteland.mdl", "models/w_ak47_wasteland.mdl" }
};

new const AWP_Skins[][SkinData] = {
    { "Varsayilan Skin", "", "", "" },
    { "AWP Asiimov", "models/v_awp_asiimov.mdl", "models/p_awp_asiimov.mdl", "models/w_awp_asiimov.mdl" },
    { "AWP Dragon Lore", "models/v_awp_dlore.mdl", "models/p_awp_dlore.mdl", "models/w_awp_dlore.mdl" },
    { "AWP Medusa", "models/v_awp_medusa.mdl", "models/p_awp_medusa.mdl", "models/w_awp_medusa.mdl" },
    { "AWP Gungnir", "models/v_awp_gungnir.mdl", "models/p_awp_gungnir.mdl", "models/w_awp_gungnir.mdl" },
    { "AWP The Prince", "models/v_awp_prince.mdl", "models/p_awp_prince.mdl", "models/w_awp_prince.mdl" },
    { "AWP Fade", "models/v_awp_fade.mdl", "models/p_awp_fade.mdl", "models/w_awp_fade.mdl" },
    { "AWP Oni Taiji", "models/v_awp_onitaiji.mdl", "models/p_awp_onitaiji.mdl", "models/w_awp_onitaiji.mdl" },
    { "AWP Hyper Beast", "models/v_awp_hyper.mdl", "models/p_awp_hyper.mdl", "models/w_awp_hyper.mdl" },
    { "AWP Atheris", "models/v_awp_atheris.mdl", "models/p_awp_atheris.mdl", "models/w_awp_atheris.mdl" },
    { "AWP Neo Noir", "models/v_awp_neonoir.mdl", "models/p_awp_neonoir.mdl", "models/w_awp_neonoir.mdl" }
};

new const DEAGLE_Skins[][SkinData] = {
    { "Varsayilan Skin", "", "", "" },
    { "Deagle Blaze", "models/v_deagle_blaze.mdl", "models/p_deagle_blaze.mdl", "models/w_deagle_blaze.mdl" },
    { "Deagle Code Red", "models/v_deagle_red.mdl", "models/p_deagle_red.mdl", "models/w_deagle_red.mdl" },
    { "Deagle Printstream", "models/v_deagle_print.mdl", "models/p_deagle_print.mdl", "models/w_deagle_print.mdl" },
    { "Deagle Kumicho Dragon", "models/v_deagle_kumicho.mdl", "models/p_deagle_kumicho.mdl", "models/w_deagle_kumicho.mdl" },
    { "Deagle Oxide Blaze", "models/v_deagle_oxide.mdl", "models/p_deagle_oxide.mdl", "models/w_deagle_oxide.mdl" },
    { "Deagle Light Rail", "models/v_deagle_light.mdl", "models/p_deagle_light.mdl", "models/w_deagle_light.mdl" },
    { "Deagle Conspiracy", "models/v_deagle_conspiracy.mdl", "models/p_deagle_conspiracy.mdl", "models/w_deagle_conspiracy.mdl" },
    { "Deagle Cobalt Core", "models/v_deagle_cobalt.mdl", "models/p_deagle_cobalt.mdl", "models/w_deagle_cobalt.mdl" },
    { "Deagle Golden Koi", "models/v_deagle_koi.mdl", "models/p_deagle_koi.mdl", "models/w_deagle_koi.mdl" },
    { "Deagle Mecha Industries", "models/v_deagle_mecha.mdl", "models/p_deagle_mecha.mdl", "models/w_deagle_mecha.mdl" }
};

new const M4A1_Skins[][SkinData] = {
    { "Varsayilan Skin", "", "", "" },
    { "M4A1 Howl", "models/v_m4a1_howl.mdl", "models/p_m4a1_howl.mdl", "models/w_m4a1_howl.mdl" },
    { "M4A1 Hyper Beast", "models/v_m4a1_hyper.mdl", "models/p_m4a1_hyper.mdl", "models/w_m4a1_hyper.mdl" },
    { "M4A1 Chanticos Fire", "models/v_m4a1_chantico.mdl", "models/p_m4a1_chantico.mdl", "models/w_m4a1_chantico.mdl" },
    { "M4A1 Player Two", "models/v_m4a1_player2.mdl", "models/p_m4a1_player2.mdl", "models/w_m4a1_player2.mdl" },
    { "M4A1 Mecha Industries", "models/v_m4a1_mecha.mdl", "models/p_m4a1_mecha.mdl", "models/w_m4a1_mecha.mdl" },
    { "M4A1 Decimator", "models/v_m4a1_decimator.mdl", "models/p_m4a1_decimator.mdl", "models/w_m4a1_decimator.mdl" },
    { "M4A1 Flashback", "models/v_m4a1_flashback.mdl", "models/p_m4a1_flashback.mdl", "models/w_m4a1_flashback.mdl" },
    { "M4A1 Nightmare", "models/v_m4a1_nightmare.mdl", "models/p_m4a1_nightmare.mdl", "models/w_m4a1_nightmare.mdl" },
    { "M4A1 Leaded Glass", "models/v_m4a1_glass.mdl", "models/p_m4a1_glass.mdl", "models/w_m4a1_glass.mdl" },
    { "M4A1 Golden Coil", "models/v_m4a1_gold.mdl", "models/p_m4a1_gold.mdl", "models/w_m4a1_gold.mdl" }
};

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR);

    // Komut kayitlari
    register_clcmd("impulse 201", "CmdT_Tusu");
    register_clcmd("say /ortakskin", "CmdSkinMenu");
    register_clcmd("say_team /ortakskin", "CmdSkinMenu");

    // ReAPI Hook zincirleri
    RegisterHookChain(RG_CBasePlayerWeapon_DefaultDeploy, "Hook_DefaultDeploy_Post", .post = true);
    RegisterHookChain(RG_CWeaponBox_SetModel, "Hook_WeaponBox_SetModel_Pre", .post = false);

    // nVault Veritabanini acalim
    g_Vault = nvault_open("ortak_skinler");
    if(g_Vault == INVALID_HANDLE) {
        set_fail_state("nVault veritabani acilamadi!");
    }
}

public plugin_end() {
    if(g_Vault != INVALID_HANDLE) {
        nvault_close(g_Vault);
    }
}

public plugin_precache() {
    // AK47 Modellerini Yukle
    for(new i = 1; i < sizeof(AK47_Skins); i++) {
        if(AK47_Skins[i][VModel][0]) precache_model(AK47_Skins[i][VModel]);
        if(AK47_Skins[i][PModel][0]) precache_model(AK47_Skins[i][PModel]);
        if(AK47_Skins[i][WModel][0]) precache_model(AK47_Skins[i][WModel]);
    }
    // AWP Modellerini Yukle
    for(new i = 1; i < sizeof(AWP_Skins); i++) {
        if(AWP_Skins[i][VModel][0]) precache_model(AWP_Skins[i][VModel]);
        if(AWP_Skins[i][PModel][0]) precache_model(AWP_Skins[i][PModel]);
        if(AWP_Skins[i][WModel][0]) precache_model(AWP_Skins[i][WModel]);
    }
    // DEAGLE Modellerini Yukle
    for(new i = 1; i < sizeof(DEAGLE_Skins); i++) {
        if(DEAGLE_Skins[i][VModel][0]) precache_model(DEAGLE_Skins[i][VModel]);
        if(DEAGLE_Skins[i][PModel][0]) precache_model(DEAGLE_Skins[i][PModel]);
        if(DEAGLE_Skins[i][WModel][0]) precache_model(DEAGLE_Skins[i][WModel]);
    }
    // M4A1 Modellerini Yukle
    for(new i = 1; i < sizeof(M4A1_Skins); i++) {
        if(M4A1_Skins[i][VModel][0]) precache_model(M4A1_Skins[i][VModel]);
        if(M4A1_Skins[i][PModel][0]) precache_model(M4A1_Skins[i][PModel]);
        if(M4A1_Skins[i][WModel][0]) precache_model(M4A1_Skins[i][WModel]);
    }
}

public client_putinserver(id) {
    LoadPlayerSkins(id);
}

public client_disconnected(id) {
    SavePlayerSkins(id);
}

public CmdT_Tusu(id) {
    if(!is_user_connected(id)) return PLUGIN_CONTINUE;

    CmdSkinMenu(id);
    return PLUGIN_HANDLED;
}

public CmdSkinMenu(id) {
    if(!is_user_connected(id)) return PLUGIN_HANDLED;

    if(!(get_user_flags(id) & ERISIM_YETKISI)) {
        client_print_color(id, print_team_default, "^4[Sunucu] ^1Bu menuye erismek icin yetkiniz yetersiz.");
        return PLUGIN_HANDLED;
    }

    new menu = menu_create("\yOrtak Skin Ana Menu", "Menu_Ana_Handler");

    menu_additem(menu, "AK47 Skinleri", "1");
    menu_additem(menu, "AWP Skinleri", "2");
    menu_additem(menu, "DEAGLE Skinleri", "3");
    menu_additem(menu, "M4A1 Skinleri", "4");

    menu_setprop(menu, MPROP_EXITNAME, "Cikis");
    menu_display(id, menu, 0);

    return PLUGIN_HANDLED;
}

public Menu_Ana_Handler(id, menu, item) {
    if(item == MENU_EXIT || !is_user_connected(id)) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
    new key = str_to_num(data);

    menu_destroy(menu);

    switch(key) {
        case 1: Open_AK47_Menu(id);
        case 2: Open_AWP_Menu(id);
        case 3: Open_DEAGLE_Menu(id);
        case 4: Open_M4A1_Menu(id);
    }

    return PLUGIN_HANDLED;
}

// =========================================================================
// ALT MENULER VE ISLEYISLERI
// =========================================================================

public Open_AK47_Menu(id) {
    if(!is_user_connected(id)) return;

    new menu = menu_create("\yAK47 Skin Listesi", "Menu_AK47_Handler");
    new szItem[64], szNum[6];

    for(new i = 0; i < sizeof(AK47_Skins); i++) {
        formatex(szNum, charsmax(szNum), "%d", i);
        if(g_SelectedSkin[id][TYPE_AK47] == i) {
            formatex(szItem, charsmax(szItem), "\w%s \y[Secili]", AK47_Skins[i][SkinName]);
        } else {
            formatex(szItem, charsmax(szItem), "\w%s", AK47_Skins[i][SkinName]);
        }
        menu_additem(menu, szItem, szNum);
    }

    menu_setprop(menu, MPROP_BACKNAME, "Geri");
    menu_setprop(menu, MPROP_NEXTNAME, "Ileri");
    menu_setprop(menu, MPROP_EXITNAME, "Cikis");
    menu_display(id, menu, 0);
}

public Menu_AK47_Handler(id, menu, item) {
    if(item == MENU_EXIT || !is_user_connected(id)) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
    new idx = str_to_num(data);

    menu_destroy(menu);

    g_SelectedSkin[id][TYPE_AK47] = idx;
    client_print_color(id, print_team_default, "^4[Sunucu] ^1AK47 Skini Secildi: ^3%s", AK47_Skins[idx][SkinName]);

    SavePlayerSkins(id);
    RefreshWeaponModel(id, WEAPON_AK47);
    Open_AK47_Menu(id);
    return PLUGIN_HANDLED;
}

public Open_AWP_Menu(id) {
    if(!is_user_connected(id)) return;

    new menu = menu_create("\yAWP Skin Listesi", "Menu_AWP_Handler");
    new szItem[64], szNum[6];

    for(new i = 0; i < sizeof(AWP_Skins); i++) {
        formatex(szNum, charsmax(szNum), "%d", i);
        if(g_SelectedSkin[id][TYPE_AWP] == i) {
            formatex(szItem, charsmax(szItem), "\w%s \y[Secili]", AWP_Skins[i][SkinName]);
        } else {
            formatex(szItem, charsmax(szItem), "\w%s", AWP_Skins[i][SkinName]);
        }
        menu_additem(menu, szItem, szNum);
    }

    menu_setprop(menu, MPROP_BACKNAME, "Geri");
    menu_setprop(menu, MPROP_NEXTNAME, "Ileri");
    menu_setprop(menu, MPROP_EXITNAME, "Cikis");
    menu_display(id, menu, 0);
}

public Menu_AWP_Handler(id, menu, item) {
    if(item == MENU_EXIT || !is_user_connected(id)) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
    new idx = str_to_num(data);

    menu_destroy(menu);

    g_SelectedSkin[id][TYPE_AWP] = idx;
    client_print_color(id, print_team_default, "^4[Sunucu] ^1AWP Skini Secildi: ^3%s", AWP_Skins[idx][SkinName]);

    SavePlayerSkins(id);
    RefreshWeaponModel(id, WEAPON_AWP);
    Open_AWP_Menu(id);
    return PLUGIN_HANDLED;
}

public Open_DEAGLE_Menu(id) {
    if(!is_user_connected(id)) return;

    new menu = menu_create("\yDEAGLE Skin Listesi", "Menu_DEAGLE_Handler");
    new szItem[64], szNum[6];

    for(new i = 0; i < sizeof(DEAGLE_Skins); i++) {
        formatex(szNum, charsmax(szNum), "%d", i);
        if(g_SelectedSkin[id][TYPE_DEAGLE] == i) {
            formatex(szItem, charsmax(szItem), "\w%s \y[Secili]", DEAGLE_Skins[i][SkinName]);
        } else {
            formatex(szItem, charsmax(szItem), "\w%s", DEAGLE_Skins[i][SkinName]);
        }
        menu_additem(menu, szItem, szNum);
    }

    menu_setprop(menu, MPROP_BACKNAME, "Geri");
    menu_setprop(menu, MPROP_NEXTNAME, "Ileri");
    menu_setprop(menu, MPROP_EXITNAME, "Cikis");
    menu_display(id, menu, 0);
}

public Menu_DEAGLE_Handler(id, menu, item) {
    if(item == MENU_EXIT || !is_user_connected(id)) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
    new idx = str_to_num(data);

    menu_destroy(menu);

    g_SelectedSkin[id][TYPE_DEAGLE] = idx;
    client_print_color(id, print_team_default, "^4[Sunucu] ^1DEAGLE Skini Secildi: ^3%s", DEAGLE_Skins[idx][SkinName]);

    SavePlayerSkins(id);
    RefreshWeaponModel(id, WEAPON_DEAGLE);
    Open_DEAGLE_Menu(id);
    return PLUGIN_HANDLED;
}

public Open_M4A1_Menu(id) {
    if(!is_user_connected(id)) return;

    new menu = menu_create("\yM4A1 Skin Listesi", "Menu_M4A1_Handler");
    new szItem[64], szNum[6];

    for(new i = 0; i < sizeof(M4A1_Skins); i++) {
        formatex(szNum, charsmax(szNum), "%d", i);
        if(g_SelectedSkin[id][TYPE_M4A1] == i) {
            formatex(szItem, charsmax(szItem), "\w%s \y[Secili]", M4A1_Skins[i][SkinName]);
        } else {
            formatex(szItem, charsmax(szItem), "\w%s", M4A1_Skins[i][SkinName]);
        }
        menu_additem(menu, szItem, szNum);
    }

    menu_setprop(menu, MPROP_BACKNAME, "Geri");
    menu_setprop(menu, MPROP_NEXTNAME, "Ileri");
    menu_setprop(menu, MPROP_EXITNAME, "Cikis");
    menu_display(id, menu, 0);
}

public Menu_M4A1_Handler(id, menu, item) {
    if(item == MENU_EXIT || !is_user_connected(id)) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
    new idx = str_to_num(data);

    menu_destroy(menu);

    g_SelectedSkin[id][TYPE_M4A1] = idx;
    client_print_color(id, print_team_default, "^4[Sunucu] ^1M4A1 Skini Secildi: ^3%s", M4A1_Skins[idx][SkinName]);

    SavePlayerSkins(id);
    RefreshWeaponModel(id, WEAPON_M4A1);
    Open_M4A1_Menu(id);
    return PLUGIN_HANDLED;
}

// =========================================================================
// REAPI MODEL DEGISTIRME, HAFIZA VE YENILEME ISLEMLERI
// =========================================================================

public Hook_DefaultDeploy_Post(const iItem, const szViewModel[], const szWeaponModel[], const iAnim, const szAnimExt[], const bSkipLocal) {
    new id = get_member(iItem, m_pPlayer);
    if(!is_user_connected(id)) return;

    // get_member(iItem, m_iId) ile silah idsini dogru aliyoruz.
    new WeaponIdType:wId = WeaponIdType:get_member(iItem, m_iId);
   
    // Silahin hafizasinda kayitli bir skin var mi?
    new entSkin = get_entvar(iItem, var_iuser4);

    // Eger silahin ustunde bir skin yoksa (yeni satin alinmissa veya doguldugunda verilmisse)
    // ve oyuncunun skin secmeye yetkisi varsa, oyuncunun kendi sectigi skini silaha isleriz.
    if(entSkin == 0 && (get_user_flags(id) & ERISIM_YETKISI)) {
        switch(wId) {
            case WEAPON_AK47: entSkin = g_SelectedSkin[id][TYPE_AK47];
            case WEAPON_AWP: entSkin = g_SelectedSkin[id][TYPE_AWP];
            case WEAPON_DEAGLE: entSkin = g_SelectedSkin[id][TYPE_DEAGLE];
            case WEAPON_M4A1: entSkin = g_SelectedSkin[id][TYPE_M4A1];
        }
       
        if(entSkin > 0) {
            set_entvar(iItem, var_iuser4, entSkin); // Skini silah entitysine kaydet
        }
    }

    // Eger bu silahin bir skini varsa (kendi skini veya yerden aldiktan sonra okudugu skin)
    // Yetkisi olsun veya olmasin bu skini oyuncuya yansitiriz.
    if(entSkin > 0) {
        switch(wId) {
            case WEAPON_AK47: {
                if(entSkin < sizeof(AK47_Skins)) {
                    set_entvar(id, var_viewmodel, AK47_Skins[entSkin][VModel]);
                    set_entvar(id, var_weaponmodel, AK47_Skins[entSkin][PModel]);
                }
            }
            case WEAPON_AWP: {
                if(entSkin < sizeof(AWP_Skins)) {
                    set_entvar(id, var_viewmodel, AWP_Skins[entSkin][VModel]);
                    set_entvar(id, var_weaponmodel, AWP_Skins[entSkin][PModel]);
                }
            }
            case WEAPON_DEAGLE: {
                if(entSkin < sizeof(DEAGLE_Skins)) {
                    set_entvar(id, var_viewmodel, DEAGLE_Skins[entSkin][VModel]);
                    set_entvar(id, var_weaponmodel, DEAGLE_Skins[entSkin][PModel]);
                }
            }
            case WEAPON_M4A1: {
                if(entSkin < sizeof(M4A1_Skins)) {
                    set_entvar(id, var_viewmodel, M4A1_Skins[entSkin][VModel]);
                    set_entvar(id, var_weaponmodel, M4A1_Skins[entSkin][PModel]);
                }
            }
        }
    }
}

public RefreshWeaponModel(id, WeaponIdType:wId) {
    if(!is_user_alive(id)) return;

    new iActiveItem = get_member(id, m_pActiveItem);
    if(is_nullent(iActiveItem)) return;

    if(WeaponIdType:get_member(iActiveItem, m_iId) == wId) {
        new szVModel[64], szPModel[64];
        new idx;

        switch(wId) {
            case WEAPON_AK47: {
                idx = g_SelectedSkin[id][TYPE_AK47];
                if(idx > 0) {
                    copy(szVModel, charsmax(szVModel), AK47_Skins[idx][VModel]);
                    copy(szPModel, charsmax(szPModel), AK47_Skins[idx][PModel]);
                } else {
                    copy(szVModel, charsmax(szVModel), "models/v_ak47.mdl");
                    copy(szPModel, charsmax(szPModel), "models/p_ak47.mdl");
                }
            }
            case WEAPON_AWP: {
                idx = g_SelectedSkin[id][TYPE_AWP];
                if(idx > 0) {
                    copy(szVModel, charsmax(szVModel), AWP_Skins[idx][VModel]);
                    copy(szPModel, charsmax(szPModel), AWP_Skins[idx][PModel]);
                } else {
                    copy(szVModel, charsmax(szVModel), "models/v_awp.mdl");
                    copy(szPModel, charsmax(szPModel), "models/p_awp.mdl");
                }
            }
            case WEAPON_DEAGLE: {
                idx = g_SelectedSkin[id][TYPE_DEAGLE];
                if(idx > 0) {
                    copy(szVModel, charsmax(szVModel), DEAGLE_Skins[idx][VModel]);
                    copy(szPModel, charsmax(szPModel), DEAGLE_Skins[idx][PModel]);
                } else {
                    copy(szVModel, charsmax(szVModel), "models/v_deagle.mdl");
                    copy(szPModel, charsmax(szPModel), "models/p_deagle.mdl");
                }
            }
            case WEAPON_M4A1: {
                idx = g_SelectedSkin[id][TYPE_M4A1];
                if(idx > 0) {
                    copy(szVModel, charsmax(szVModel), M4A1_Skins[idx][VModel]);
                    copy(szPModel, charsmax(szPModel), M4A1_Skins[idx][PModel]);
                } else {
                    copy(szVModel, charsmax(szVModel), "models/v_m4a1.mdl");
                    copy(szPModel, charsmax(szPModel), "models/p_m4a1.mdl");
                }
            }
        }
       
        // Yeniledigimiz anki skini de silahin hafizasina yaziyoruz (dusururse guncel skin dussun)
        set_entvar(iActiveItem, var_iuser4, idx);

        set_entvar(id, var_viewmodel, szVModel);
        set_entvar(id, var_weaponmodel, szPModel);
    }
}

public Hook_WeaponBox_SetModel_Pre(const iWeaponBox, const szModel[]) {
    // Kutunun icindeki silahi buluyoruz (Primary ve Pistol slotlarini tarayarak)
    new iWeapon = NULLENT;
    for(new i = 1; i <= 2; i++) {
        iWeapon = get_member(iWeaponBox, m_WeaponBox_rgpPlayerItems, i);
        if(!is_nullent(iWeapon)) {
            break;
        }
    }
   
    if(is_nullent(iWeapon)) return HC_CONTINUE;

    new WeaponIdType:wId = WeaponIdType:get_member(iWeapon, m_iId);
    new entSkin = get_entvar(iWeapon, var_iuser4); // Silahin hafizasindaki skini cek

    // Eger silahin bir skini varsa ve WModel bos degilse, w_ modelini degistir
    if(entSkin > 0) {
        switch(wId) {
            case WEAPON_AK47: if(entSkin < sizeof(AK47_Skins) && AK47_Skins[entSkin][WModel][0]) SetHookChainArg(2, ATYPE_STRING, AK47_Skins[entSkin][WModel]);
            case WEAPON_AWP: if(entSkin < sizeof(AWP_Skins) && AWP_Skins[entSkin][WModel][0]) SetHookChainArg(2, ATYPE_STRING, AWP_Skins[entSkin][WModel]);
            case WEAPON_DEAGLE: if(entSkin < sizeof(DEAGLE_Skins) && DEAGLE_Skins[entSkin][WModel][0]) SetHookChainArg(2, ATYPE_STRING, DEAGLE_Skins[entSkin][WModel]);
            case WEAPON_M4A1: if(entSkin < sizeof(M4A1_Skins) && M4A1_Skins[entSkin][WModel][0]) SetHookChainArg(2, ATYPE_STRING, M4A1_Skins[entSkin][WModel]);
        }
    }
    return HC_CONTINUE;
}

// =========================================================================
// NVAULT KAYIT VE YUKLEME FONKSIYONLARI
// =========================================================================

GetPlayerKey(id, szKey[], iLen) {
    get_user_authid(id, szKey, iLen);
   
    if(equal(szKey, "STEAM_ID_LAN") || equal(szKey, "VALVE_ID_LAN") || containi(szKey, "PENDING") != -1 || szKey[0] == EOS) {
        get_user_name(id, szKey, iLen);
    }
}

public SavePlayerSkins(id) {
    if(!is_user_connected(id)) return;

    new szKey[64], szData[32];
    GetPlayerKey(id, szKey, charsmax(szKey));

    formatex(szData, charsmax(szData), "%d %d %d %d",
        g_SelectedSkin[id][TYPE_AK47],
        g_SelectedSkin[id][TYPE_AWP],
        g_SelectedSkin[id][TYPE_DEAGLE],
        g_SelectedSkin[id][TYPE_M4A1]
    );

    nvault_set(g_Vault, szKey, szData);
}

public LoadPlayerSkins(id) {
    new szKey[64], szData[32];
    GetPlayerKey(id, szKey, charsmax(szKey));
   
    if(nvault_get(g_Vault, szKey, szData, charsmax(szData))) {
        new szAk[4], szAwp[4], szDg[4], szM4[4];
        parse(szData, szAk, charsmax(szAk), szAwp, charsmax(szAwp), szDg, charsmax(szDg), szM4, charsmax(szM4));
       
        g_SelectedSkin[id][TYPE_AK47] = str_to_num(szAk);
        g_SelectedSkin[id][TYPE_AWP] = str_to_num(szAwp);
        g_SelectedSkin[id][TYPE_DEAGLE] = str_to_num(szDg);
        g_SelectedSkin[id][TYPE_M4A1] = str_to_num(szM4);
       
        if(g_SelectedSkin[id][TYPE_AK47] >= sizeof(AK47_Skins)) g_SelectedSkin[id][TYPE_AK47] = 0;
        if(g_SelectedSkin[id][TYPE_AWP] >= sizeof(AWP_Skins)) g_SelectedSkin[id][TYPE_AWP] = 0;
        if(g_SelectedSkin[id][TYPE_DEAGLE] >= sizeof(DEAGLE_Skins)) g_SelectedSkin[id][TYPE_DEAGLE] = 0;
        if(g_SelectedSkin[id][TYPE_M4A1] >= sizeof(M4A1_Skins)) g_SelectedSkin[id][TYPE_M4A1] = 0;
    } else {
        for(new i = 0; i < MAX_TYPES; i++) {
            g_SelectedSkin[id][i] = 0;
        }
    }
}


Sunucu ortakları için özel skin menüsü istiyorsanız eğer, ADMIN_KICK yetkisini ADMIN_RCON olarak değiştirin tüm dokunulmazlık ve rcon yetkisi sahip sunucu sahipleri eklediğiniz skinlere sorunsuz şekilde erişebilir. Skin isimlerini ve yollarını kendinize göre düzenlemelisiniz. 

Yere düşen Skinli silah normal oyuncu tarafından alındığı zaman skin korunuyor ve skinli silaha sahip oluyor.
#6
Konu çözülmezse isteklerinize uygun yerden arkadaşının silah modelini almalı bi mantıkta silah menü manıtıgı yapabilirim
| Return All Starz | Valorant Mod | 95.173.173.31 |
#7
Öneri olarak yapacak arkadaşlar .ini sistemli bir plugin yaparsa daha mantıklı olacaktır. Silah skinleri düzeltme, değiştirme vs. daha kolay olacaktır.
Stand Back Warrior's   | ip: cs.sbwpro.com | ts3: ts3.sbwpro.com
#8
(25-06-2026, 18:53)Mr.Commander Adlı Kullanıcıdan Alıntı: Öneri olarak yapacak arkadaşlar .ini sistemli bir plugin yaparsa daha mantıklı olacaktır. Silah skinleri düzeltme, değiştirme vs. daha kolay olacaktır.

Gerçekten yerinde bir düşünce abi. Ben de onu düşünerek yazdım aslında. Çünkü OYT; Mart-Nisan döneminde sunucuya yüklenmiş olan tüm açık kaynaklı eklentileri kaybetti ve her ayın başında Nisan ayından itibaren bu eklentilerin tekrardan sileceğini tüm ticket sahiplerine duyurdu. Şu zamana kadar tekrardan bir silinme olmadı ancak bu olmayacağı anlamına gelmez. .ini dosyası ile düzenlenebilir olarak yapılırsa eklentinin kaynak kodu gitse bile eklentinin modellerinde değişiklik yapılabilir. Hatta yetki tanımlaması, menünün reklamları ve menünün komutunu bile .ini dosya ile belirlemek OYT bazında oldukça esneklik sağlayacaktır.
Advanced Plug-in & Animated Model Tasarımı
#9
(24-06-2026, 21:58)Lynchk Adlı Kullanıcıdan Alıntı: Konu taşındı.
aynen abim
#10
Konunuz çözüldüyse bildirin
亗 TEŞKİLAT-I MAHSUSA 亗

DNS :  pro.timailesi.com / ts1.timailesi.com

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

Yorum yapmak için üye olmanız gerekiyor

ya da