⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
🌐 www.furiazm.com ⏰ 7/24 aktif Yönetim 💬 Discord.gg/furiaclancs 💰Ücretsiz Adminlik/Vip alımı 🌟 Türkiye’nin yeni en gelişmiş Zombie Plague sunucusu
Sponsor Görsel 2
SponsorSponsor

Reapide Silaha Nasıl Model Verilir?

Reapide Silaha Nasıl Model Verilir?
Eskilerden kalan şekilde silah model olayı dönüyor.
Bu olayda Reapi kütüphanesini kullanacağız.

PHP Kod:
#include <amxmodx>
#include <reapi>

//Silahımıza bir değer atıyoruz. Bu şekilde bu değeri kontrol edip silaha model yüklüyoruz.
//Herhangi bir değer atayabilirsiniz.
new const WeaponUid = 1337;

public 
plugin_init() {
    
//Silahı elimize aldığımızda modelini ayarlamak için DefaultDeploy komutunu kullanıyoruz. (post false olmalı)
    
RegisterHookChain(RG_CBasePlayerWeapon_DefaultDeploy, "CBasePlayerWeapon_DefaultDeploy_Pre", .post = false);

    
//Silahı yere attığımızda modelini ayarlamak için SetModel komutunu kullanıyoruz. (post false olmalı)
    
RegisterHookChain(RG_CWeaponBox_SetModel, "CWeaponBox_SetModel_Pre", .post = false);
}

public 
SkinliSilahVer(pPlayer) {
    
//Eğer sadece modelini değiştirecekseniz bir değere ihtiyaç yok.
    
rg_give_custom_item(pPlayer, "weapon_deagle", GT_REPLACE, WeaponUid);
    
// Birinci değer oyuncu indeksi
    // İkinci değer silahın ismi
    // Üçüncü değer silahı verdiğinde olacak olay [Aşağıda değerler bulunmakta]
    // Dördüncü değer silaha özgün bir değer

    // [-- Üçüncü değer örnekleri --];
    // GT_APPEND - Sadece itemi verir
    // GT_REPLACE - İtemi verir ve o slottaki bütün silahları siler.
    // GT_DROP_AND_REPLACE - İtemi verir ve o slottaki bütün silahları yere atar (drop)

    //Eğer silaha değer atayacaksanız bir değer oluşturmanız gerek (örneğin tek tek sıkan deagle gibi)
    
new iWeapon = rg_give_custom_item(pPlayer, "weapon_deagle", GT_REPLACE, WeaponUid);

    
//Her mermi sıktığında reload atma olayını burada ayarlıyoruz. Maksimum mermi sayısını 1 ayarladık.
    //Burada silaha istediğiniz ayarı yapabilirsiniz. Reapi bunun için bayağı gelişmiş bir kütüphane.
    
set_member(iWeapon, m_Weapon_iClip, 1);
    
rg_set_iteminfo(iWeapon, ItemInfo_iMaxClip, 1);
}

public 
CBasePlayerWeapon_DefaultDeploy_Pre(const iWeapon, szViewModel[], szWeaponModel[], iAnim, szAnimExt[], skiplocal) {
    
//Burada silahımızın özgün değerlerinin eşit olup olmadığını kontrol ediyoruz.
    
if(get_entvar(iWeapon, var_impulse) == WeaponUid) {
        
//v modelini değiştirir.
        
SetHookChainArg(2, ATYPE_STRING, "models/v_deagle.mdl");
        
//p modelini değiştirir
        
SetHookChainArg(3, ATYPE_STRING, "models/p_deagle.mdl");
    }

    
//Eğer birden fazla silahınız varsa silahın özgün değerini switch ile alabilirsiniz.
    
new iImpulse = get_entvar(iWeapon, var_impulse);
    switch(
iImpulse) {
        case 
WeaponUid: {
            
//
        
}
        case ... {
            
//diger özgün sayılar vs.
        
}
    }
}

public 
CWeaponBox_SetModel_Pre(const iWeaponBox, const szModelName[]) {
    
//Öncelikle silahın hangi silah olduğunu değere atıyoruz.
    
new iWeapon = GetWeaponBoxWeapon(iWeaponBox);

    
//Değer -1 olarak yani hiçbir silah olarak çıkabiliyor. Bu yüzden NULLENT yani (-1) kontrolü yapıyoruz.
    
if(iWeapon == NULLENT) {
        return;
    }

    
//Şimdi silahın ne olduğunu ve özgün değerini alabiliriz.
    //Tek bir silah yapıyorsanız direkt özgün değeri kontrol edin.
    
if(get_entvar(iWeapon, var_impulse) == WeaponUid) {
        
//Bu komut silahın yerdeki modelini ayarlar.
        
SetHookChainArg(2, ATYPE_STRING, "models/w_deagle.mdl");
    }

    
//Eğer birden fazla silahınız varsa silahın özgün değerini switch ile alabilirsiniz.
    
new iImpulse = get_entvar(iWeapon, var_impulse);
    switch(
iImpulse) {
        case 
WeaponUid: {
            
//
        
}
        case ... {
            
//diger özgün sayılar vs.
        
}
    }
}

//Yerdeki silahın kontrolünü yapmak için bunu kullanmalısınız.
//Burada değiştirmeniz gereken bir yer yok. Direkt kullanabilirsiniz.
//Direkt kopyalayabilmeniz için burada anlatacağım

//Döngüde maksimum slot sayısı kadar dönüyor. (slotlar sıfırdan başlıyor, 0-1-2-3-4-5)
//Ardından get_member ile var olduğu slottan silahın değerini çekiyor.
//Silahın varlığını kontrol ediyor. Eğer silahın değeri sıfırdan büyükse silahı çekiyor.
//Değilse NULLENT yani -1 olarak çekiyor.
GetWeaponBoxWeapon(const iWeaponBox) {
    for(new 
i = 0, iWeapon; i < MAX_ITEM_TYPES; i++) {
    
        
iWeapon = get_member(iWeaponBox, m_WeaponBox_rgpPlayerItems, i);

        if(!
is_nullent(iWeapon)) {
            return 
iWeapon;
        }
    }
    return 
NULLENT;
} 
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Konuyu Okuyanlar: 1 Ziyaretçi
Task