⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
⭐Kurumsal web sitesi barındırma, VDS ve sanal sunucu çözümleri. Name SSD altyapısı, yüksek performans, kesintisiz erişim ve profesyonel teknik destekle hizmetinizde.⭐
Sponsor Görsel 2
SponsorSponsor

Reapide Silaha Nasıl Model Verilir?

Konu

#1
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_REPLACEWeaponUid);
    
// 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_REPLACEWeaponUid);

    
//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(iWeaponm_Weapon_iClip1);
    
rg_set_iteminfo(iWeaponItemInfo_iMaxClip1);
}

public 
CBasePlayerWeapon_DefaultDeploy_Pre(const iWeaponszViewModel[], szWeaponModel[], iAnimszAnimExt[], skiplocal) {
    
//Burada silahımızın özgün değerlerinin eşit olup olmadığını kontrol ediyoruz.
    
if(get_entvar(iWeaponvar_impulse) == WeaponUid) {
        
//v modelini değiştirir.
        
SetHookChainArg(2ATYPE_STRING"models/v_deagle.mdl");
        
//p modelini değiştirir
        
SetHookChainArg(3ATYPE_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(iWeaponvar_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(iWeaponvar_impulse) == WeaponUid) {
        
//Bu komut silahın yerdeki modelini ayarlar.
        
SetHookChainArg(2ATYPE_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(iWeaponvar_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 
0iWeaponMAX_ITEM_TYPESi++) {
    
        
iWeapon get_member(iWeaponBoxm_WeaponBox_rgpPlayerItemsi);

        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
Task