Bu olayda Reapi kütüphanesini kullanacağız.
PHP Kod:
#include <amxmodx>
#include <reapi>
//Burada modelimizin ismini ayarlıyoruz. models/player/isim/isim.mdl şeklinde yükleyeceksiniz.
// Örnekte leet yazdım. --> models/player/leet/leet.mdl
// Örnekte gsg9 yazdım. --> models/player/gsg9/gsg9.mdl
new const g_szTModelIsmi[] = "leet";
new const g_szCTModelIsmi[] = "gsg9";
public plugin_init() {
//Oyuncunun modelini bu komutla ayarlıyoruz. (post false olmalı)
RegisterHookChain(RG_CBasePlayer_SetClientUserInfoModel, "CBasePlayer_SetClientUserInfoModel_Pre", .post = false);
}
public plugin_precache() {
//Modelleri sunucunun tanımasını sağlıyoruz.
precache_model(fmt("models/player/%s/%s.mdl", g_szTModelIsmi, g_szTModelIsmi));
precache_model(fmt("models/player/%s/%s.mdl", g_szCTModelIsmi, g_szCTModelIsmi));
}
public CBasePlayer_SetClientUserInfoModel_Pre(const pPlayer, infobuffer[], szNewModel[]) {
//Burada ayarlamak istediğimize göre devam ettireceğiz.
//Admine özel yapacağınız zaman burada yetki kontrolü yapacaksınız.
//Ben CT ve T için yapmak istediğim için böyle devam ettireceğim.
new TeamName:iTeam = get_member(pPlayer, m_iTeam);
switch(iTeam) {
case TEAM_TERRORIST: {
SetHookChainArg(3, ATYPE_STRING, g_szTModelIsmi);
}
case TEAM_CT: {
SetHookChainArg(3, ATYPE_STRING, g_szCTModelIsmi);
}
}
}
Bu olayı aynı şekilde enum ile de yapabiliriz ve çok daha güzel görünecek.
Hem enum kullanımını da biraz kavramış olursunuz.
Yukarıdaki komutlar yerine ne yazdığımı anlamanız için eski komutların başına ///** koyacağım.
PHP Kod:
#include <amxmodx>
#include <reapi>
//Buraya modelin genel ismini yazabilirsiniz.
enum _:szModelIsimleri {
TERR_MODELI,
CT_MODELI
};
//Bu modelleri değere atıyoruz.
//Enumda ayarladığımız sırada olmak zorunda!!
new const g_szModelIsimleri[szModelIsimleri][] = {
"leet",
"gsg9"
};
///**new const g_szTModelIsmi[] = "leet";
///**new const g_szCTModelIsmi[] = "gsg9";
public plugin_init() {
//Oyuncunun modelini bu komutla ayarlıyoruz. (post false olmalı)
RegisterHookChain(RG_CBasePlayer_SetClientUserInfoModel, "CBasePlayer_SetClientUserInfoModel_Pre", .post = false);
}
public plugin_precache() {
///**precache_model(fmt("models/player/%s/%s.mdl", g_szTModelIsmi, g_szTModelIsmi));
///**precache_model(fmt("models/player/%s/%s.mdl", g_szCTModelIsmi, g_szCTModelIsmi));
//Burayı döngü ile ayarlayacağız. Değer sıfırdan başlar ve sayısı model sayısından bir küçük olur. (model sayısı - 1 = değer sayısı)
//enum ismi model sayısına eşit olur ve değeri sıfırdan başlattığımız için küçüktür yapıyoruz.
for(new i = 0; i < szModelIsimleri; i++) {
//Modelleri sunucunun tanımasını sağlıyoruz.
//Değerin i. değerindeki yazıyı çeker. Örneğin g_szModelIsimleri[0] = "leet"
precache_model(fmt("models/player/%s/%s.mdl", g_szModelIsimleri[i], g_szModelIsimleri[i]));
}
}
public CBasePlayer_SetClientUserInfoModel_Pre(const pPlayer, infobuffer[], szNewModel[]) {
//Burada ayarlamak istediğimize göre devam ettireceğiz.
//Admine özel yapacağınız zaman burada yetki kontrolü yapacaksınız.
//Ben CT ve T için yapmak istediğim için böyle devam ettireceğim.
new TeamName:iTeam = get_member(pPlayer, m_iTeam);
switch(iTeam) {
case TEAM_TERRORIST: {
///**SetHookChainArg(3, ATYPE_STRING, g_szTModelIsmi);
//Burayı direkt enum da belirlediğimiz isimle çekiyoruz.
SetHookChainArg(3, ATYPE_STRING, g_szModelIsimleri[TERR_MODELI]);
}
case TEAM_CT: {
///**SetHookChainArg(3, ATYPE_STRING, g_szCTModelIsmi);
SetHookChainArg(3, ATYPE_STRING, g_szModelIsimleri[CT_MODELI]);
}
}
}
)

