Eklenti Yapımcısı: MawiLarq
Eklenti Açıklaması;
Özel eşya sistemi sayesinde metin2 yohara güncellemesi ile gelen yılan silahları, zırhları mantığında eşya oluşturmanıza ve bunu diğer yan eklentilerinize entegre etmenize yarayan bir eklenti geliştirdik. Ücretsiz olarak sizlerin kullanımına sunmaktan mutluluk duyarım. Eğlence amaçlı geliştirdiğim bir eklentidir ve bu yapıyı oluştururken oldukça heves aldım.
Eşya sistemi üzerinden oluşturulan eşyalar rasgele 4 bonus sahibi olabilir şansa bağlı olarak 1 bonus sahibi veyatta 2, 3 bonus sahibide olabilir. Aynı zamanda bonus değerleride sizin belirleyeceğiniz düzeyde rasgele olarak her efsun için karmaşık verilmektedir(Her bonusun max ve min değerlerini belirleyebilirsiniz). Eşya sistemi içersinde opsiyon olarak bulunan eşya leveller sistemide bulunmaktadır. Oluşturulan eşyaların efsunları düşük bir şansla +2 seviyesine geçerken %10 artış sergileyecekken sadece +2 ye geçerken %20 artış ile artmaktadır bu sayede eşya nadirliğinde büyük bir zorluk oluşuyor. Tabiiki daha bitmedi kendi içersinde bir envanter sisteminede sahip durumdadır. Eğer eşya oluşturursanız opsiyonel olarak uid değerinide gönderirseniz(aşağıda anlatacağım) sizin yerinize o uid için bir envanter kaydıda tutmaktadır. Eşya silme ve bir çok işlemide native destekleri sayesinde sorunsuz şekilde yapabilirsiniz.
Native destekleri ve açıklamaları,
PHP Kod:
/*Zorunlu Nativler
*/
native nAnaDuzenlemeler(iL_BirinciEfsnMax,iL_IkinciEfsnMax,iL_UcuncuEfsnMax,iL_DrdncuEfsnMax);// Efsunlara maksimum kaç oran gelebileceğini belirler
native nTolereDegerler(iL_BirinciEfsnTolere,iL_IknciEfsnTolere,iL_UcncuEfsnTolere,iL_DrdncuEfsnTolere);// Puanlama icin ekstra puan hesaplamasi icin 'nAnaDuzenlemeler' nativesinin üzerinden belirlediğin tepe değerlerinden çıkartılacak rakam
/*Opsiyonel nativeler
*/
native nToplamEsyalarim(iL_UID); // Bu UID kayıtlı olan toplam eşya sayısını çeker
native nBanaAitOlanEsyalar(iL_UID,iL_SahsiEnvanterEsyaID); // Bu UID üzerine kayıtlı eşya id lerini sıralar for(new i=1;i<= nToplamEsyalarim(iL_UID);i++ )
native nToplamEsyaSayisi(); // sunucudaki toplam esya sayisini dondurur
native nEsyaOlustur(iL_Index,sL_EsyaIsmi[],iL_CSW,iL_UID); // Eşya ekler eşya ismine max 34 karakter girin
native nEfsunBasarkenPatliyormu(iL_EsyaID,iL_EfsunID); // Girdiğiniz eşya id nin native üzerinden yolladığınız efsun degeri +2 ye basarken daha fazla oran verip vermeyeceğini döndürür 1/0
native nEfsunArtiSeviyesi(iL_EsyaID); // Eşyanın numarasını döndürür
native nNadirlikPuani(iL_EsyaID); // Eşyanın nadirlik puanını döndürür
native nEsyaIsmi(iL_EsyaID,sL_Data[],iL_Uzunluk); // Girdiğiniz eşya id değerinin ismini döndürür (str)
native nCSWID(iL_EsyaID); // Girdğiniz eşya id değerinin csw id sini döndürür
native nEfsunSayisi(iL_EsyaID); // Girdiğiniz eşya ıd değerinin kaç adet efsunu olduğunu gösterir
native nEsyaSilme(iL_EsyaID,iL_OpsiyonelUID,iL_SilinenEsyaID); // Girilen ID degerinin esya verilerini imha eder
native nLevelDuzenle(iL_EsyaID,iL_YeniLevel)//Level Guncellemesi yapar
native nEfsunTipVeOran(iL_EsyaID,iL_EfsunID,iL_Type);/*
iL_EsyaID == Eşya numarasıdır
iL_EfsunID == Birinci efsun için 1, ikinci efsun 2 için vs.
iL_Type == Efsunun hangi efsun olduğunu tutan id değerinimi yoksa o efsun id degerinin bonus değerinimi çekmek istiyorsun? 1 yazarsan efsunun hangi efsun olduğunu belirleyen id değerini çeker
*/
native nEfsunDuzenle(iL_EsyaID,iL_EfsunID,iL_Type,iL_YeniEfsunDegeri);/*
iL_EsyaID == Eşya numarasıdır
iL_EfsunID == Birinci efsun için 1, ikinci efsun 2 için vs.
iL_Type == Efsunun hangi efsun olduğunu tutan id değerinimi yoksa o efsun id degerinin bonus değerinimi düzenlemek istiyorsun? 1 yazarsan efsunun hangi efsun olduğunu belirleyen id değerini düzenler
iL_YeniEfsunDegeri == Efsunun yeni bonus miktarını belirler.
*/
Zorunlu nativeler ile yazılmış olan örnek bir eklenti,
PHP Kod:
#include <amxmodx>
native nAnaDuzenlemeler(iL_BirinciEfsnMax,iL_IkinciEfsnMax,iL_UcuncuEfsnMax,iL_DrdncuEfsnMax);// Efsunlara maksimum kaç oran gelebileceğini belirler
native nTolereDegerler(iL_BirinciEfsnTolere,iL_IknciEfsnTolere,iL_UcncuEfsnTolere,iL_DrdncuEfsnTolere);// Puanlama icin ekstra puan hesaplamasi icin 'nAnaDuzenlemeler' nativesinin üzerinden belirlediğin tepe değerlerinden çıkartılacak rakam
public plugin_cfg(){
nAnaDuzenlemeler(11,2,4,10);
nTolereDegerler(3,1,1,2);
}
PHP Kod:
#include <amxmodx>
native nAnaDuzenlemeler(iL_BirinciEfsnMax,iL_IkinciEfsnMax,iL_UcuncuEfsnMax,iL_DrdncuEfsnMax);// Efsunlara maksimum kaç oran gelebileceğini belirler
native nTolereDegerler(iL_BirinciEfsnTolere,iL_IknciEfsnTolere,iL_UcncuEfsnTolere,iL_DrdncuEfsnTolere);// Puanlama icin ekstra puan hesaplamasi icin 'nAnaDuzenlemeler' nativesinin üzerinden belirlediğin tepe değerlerinden çıkartılacak rakam
/*Opsiyonel nativeler
*/
native nToplamEsyalarim(iL_UID); // Bu UID kayıtlı olan toplam eşya sayısını çeker
native nBanaAitOlanEsyalar(iL_UID,iL_SahsiEnvanterEsyaID); // Bu UID üzerine kayıtlı eşya id lerini sıralar for(new i=1;i<= nToplamEsyalarim(iL_UID);i++ )
native nToplamEsyaSayisi(); // sunucudaki toplam esya sayisini dondurur
native nEsyaOlustur(iL_Index,sL_EsyaIsmi[],iL_CSW,iL_UID); // Eşya ekler eşya ismine max 34 karakter girin
native nEfsunBasarkenPatliyormu(iL_EsyaID,iL_EfsunID); // Girdiğiniz eşya id nin native üzerinden yolladığınız efsun degeri +2 ye basarken daha fazla oran verip vermeyeceğini döndürür 1/0
native nEfsunArtiSeviyesi(iL_EsyaID); // Eşyanın numarasını döndürür
native nNadirlikPuani(iL_EsyaID); // Eşyanın nadirlik puanını döndürür
native nEsyaIsmi(iL_EsyaID,sL_Data[],iL_Uzunluk); // Girdiğiniz eşya id değerinin ismini döndürür (str)
native nCSWID(iL_EsyaID); // Girdğiniz eşya id değerinin csw id sini döndürür
native nEfsunSayisi(iL_EsyaID); // Girdiğiniz eşya ıd değerinin kaç adet efsunu olduğunu gösterir
native nEsyaSilme(iL_EsyaID,iL_OpsiyonelUID,iL_SilinenEsyaID); // Girilen ID degerinin esya verilerini imha eder
native nLevelDuzenle(iL_EsyaID,iL_YeniLevel)//Level Guncellemesi yapar
native nEfsunTipVeOran(iL_EsyaID,iL_EfsunID,iL_Type);/*
iL_EsyaID == Eşya numarasıdır
iL_EfsunID == Birinci efsun için 1, ikinci efsun 2 için vs.
iL_Type == Efsunun hangi efsun olduğunu tutan id değerinimi yoksa o efsun id degerinin bonus değerinimi çekmek istiyorsun? 1 yazarsan efsunun hangi efsun olduğunu belirleyen id değerini çeker
*/
native nEfsunDuzenle(iL_EsyaID,iL_EfsunID,iL_Type,iL_YeniEfsunDegeri);/*
iL_EsyaID == Eşya numarasıdır
iL_EfsunID == Birinci efsun için 1, ikinci efsun 2 için vs.
iL_Type == Efsunun hangi efsun olduğunu tutan id değerinimi yoksa o efsun id degerinin bonus değerinimi düzenlemek istiyorsun? 1 yazarsan efsunun hangi efsun olduğunu belirleyen id değerini düzenler
iL_YeniEfsunDegeri == Efsunun yeni bonus miktarını belirler.
*/
native nGetUidByID(iN_ID); //Hesap sistemi UID için
public plugin_cfg(){
nAnaDuzenlemeler(11,2,4,10);
nTolereDegerler(3,1,1,2);
}
public plugin_init(){
register_clcmd("say /olustur","pP_EsyaOlusturma");
}
public pP_EsyaOlusturma(iP_ID){
new iL_ID = nEsyaOlustur(iP_ID,"Esya Ismi",29,nGetUidByID(iP_ID));
/*
IP_ID = index(id)
Eşya Ismi = anlatmaya gerek varmı :)
29 = Silah CSW Id kafanıza göre verebilirsiniz.
nGetUidByID(iP_ID) = Eşya sisteminin kendi envanter sistemini aktif etmek istemiyorsanız 0 yollayın yoksa uid yollayın.
*/
client_print_color(iP_ID,iP_ID,"!nEsya olusturuldu!g.!n Olusturulan esya nadirlik puani !g%i!n seklindedir !g!",nNadirlikPuani(iL_ID));
}
public pM_Esyalarim(iP_ID){
if(!nGetUidByID(iP_ID)){
client_print_color(iP_ID,iP_ID,"!nBir UID sahibi degilsin bir hesaba gir !g!");
return PLUGIN_HANDLED;
}
new iL_Menu = sCreateMenu("Bana ait olan esyalar","pM_EsyalarimX");
new iL_UID = nGetUidByID(iP_ID);
new sL_ToStr[6],sL_EsyaIsmi[35],iL_EsyaSayim = nToplamEsyalarim(iL_UID),iL_BireyselEsyaID,iL_NadirlikP,iL_Envanter;
for(new i = 1; i < iL_EsyaSayim; i++){
iL_BireyselEsyaID = nBanaAitOlanEsyalar(iL_UID,i);
nEsyaIsmi(iL_BireyselEsyaID,sL_EsyaIsmi,34);
num_to_str(i,sL_ToStr,5);
iL_NadirlikP = nNadirlikPuani(iL_BireyselEsyaID);
if(strlen(sL_EsyaIsmi) > 2){
sMenuAddItem(iL_Menu,"%s\d(\rNP: %i\d)",sL_ToStr,0,sL_EsyaIsmi,iL_NadirlikP);
iL_Envanter++;
}
}
if(!iL_Envanter){
client_print_color(iP_ID,iP_ID,"!nEsyan yok bir esya olustur bro !g!");
}
sMenuEnd(iP_ID,iL_Menu);
return PLUGIN_CONTINUE;
}
public pM_EsyalarimX(iP_ID,iM_ID,iM_Item){
if(iM_Item == MENU_EXIT){
menu_destroy(iM_ID);
return PLUGIN_HANDLED;
}
new sL_Data[6],iL_Free;
menu_item_getinfo(iM_ID,iM_Item,iL_Free,sL_Data,5,_,_,iL_Free);
new iL_Item = str_to_num(sL_Data);
new iL_EsyaID = nBanaAitOlanEsyalar(nGetUidByID(iP_ID),iL_Item);
client_print_color(iP_ID,iP_ID,"!nEsya secildi secilen esya id: %i -- esya csw id : %i",iL_Item,nCSWID(iL_EsyaID));
menu_destroy(iM_ID);
return PLUGIN_HANDLED;
}
stock sCreateMenu(const sS_Title[],const sS_Handle[],any:...){
new sL_NewTitle[256],sL_FixedTitle[256];
vformat(sL_FixedTitle,255,sS_Title,3);
formatex(sL_NewTitle,255,"\r[\wWebailesi\r] \y~\r> \y%s",sL_FixedTitle);
new iL_Menu = menu_create(sL_NewTitle,sS_Handle);
return iL_Menu;
}
stock sMenuAddItem(iS_MenuID,const sS_ItemName[],const sS_ItemInfo[],iS_UseTag = 1,any:...){
new sL_NewTitle[256],sL_FixedTitle[256];
vformat(sL_FixedTitle,255,sS_ItemName,5);
if(iS_UseTag == 1){
formatex(sL_NewTitle,255,"\d[\yWebailesi\d] \w~\r> \w%s",sL_FixedTitle);
}
else{
formatex(sL_NewTitle,255,"%s",sL_FixedTitle);
}
menu_additem(iS_MenuID,sL_NewTitle,sS_ItemInfo);
}
stock sMenuEnd(iS_ID,iS_MenuID,iS_IsSmall = 1,iS_CanExit = 1,iS_Page = 0){
menu_setprop(iS_MenuID,MPROP_EXITNAME,"Cikis");
menu_setprop(iS_MenuID,MPROP_PERPAGE, iS_IsSmall ? 7:0 );
menu_setprop(iS_MenuID,MPROP_EXIT,iS_CanExit ? MEXIT_ALL:MEXIT_NEVER);
menu_display(iS_ID,iS_MenuID,iS_Page);
}
Kendim için tasarladığım bir eklentideki eşya görüntüleme ekranı(efsun sistemini az çok görmeniz için)(Efsunları kendi yaptığınız eklentiden özelleştirmeniz gerekir),
PHP Kod:
}
public pP_DetayGoster(iP_ID,iL_EsyaID){
new sL_Showen[2001],iL_Len;
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"<center><b>Webailesi Esya Sistemi</b></center><br>");
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"<hr><br>");
new sL_EsyaIsmi[35];
nEsyaIsmi(iL_EsyaID,sL_EsyaIsmi,34);
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"Esya Ismi: %s<br>",sL_EsyaIsmi);
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"Nadirlik Puani: %i<br>",nNadirlikPuani(iL_EsyaID));
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"Esya Seviyesi: %i <br>",nEfsunArtiSeviyesi(iL_EsyaID));
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"Esya CSW ID: %i <br>",nCSWID(iL_EsyaID));
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"Esya Numarasi: #%i <br>",iL_EsyaID);
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"<hr><br><center>Efsun Bilgileri</center><br>");
new iL_Efsun,iL_EfsunTIP;
for(new i=1; i < 5; i++){
iL_Efsun = nEfsunTipVeOran(iL_EsyaID,i,0);
iL_EfsunTIP = nEfsunTipVeOran(iL_EsyaID,i,1);
if(iL_Efsun){
switch(i){
case 1 : {
if(iL_EfsunTIP == 1){
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"1) Saldiri Gucu: %i %s<br>",iL_Efsun,nEfsunBasarkenPatliyormu(iL_EsyaID,i) ? "(OZEL Oran)":"");
}
else {
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"1) Savunma: %i %s<br>",iL_Efsun,nEfsunBasarkenPatliyormu(iL_EsyaID,i) ? "(OZEL Oran)":"");
}
}
case 2 : {
if(iL_EfsunTIP == 1){
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"2) Hasar verdigim zombiyi %i saniye yavaslat %s<br>",iL_Efsun,nEfsunBasarkenPatliyormu(iL_EsyaID,i) ? "(OZEL Oran)":"");
}
if(iL_EfsunTIP == 2){
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"2) Hasar verdigim zombiye %i saniye kanama baslat %s<br>",iL_Efsun,nEfsunBasarkenPatliyormu(iL_EsyaID,i) ? "(OZEL Oran)":"");
}
if(iL_EfsunTIP == 3){
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"2) Zombiyi %i saniye kafasini sersemlet %s<br>",iL_Efsun,nEfsunBasarkenPatliyormu(iL_EsyaID,i) ? "(OZEL Oran)":"");
}
}
case 3 : {
if(iL_EfsunTIP == 1){
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"3) Birilerini oldurunce extra +%i TL %s<br>",iL_Efsun,nEfsunBasarkenPatliyormu(iL_EsyaID,i) ? "(OZEL Oran)":"");
}
if(iL_EfsunTIP == 2){
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"3) Birilerini oldurunce extra +%i XP %s<br>",iL_Efsun,nEfsunBasarkenPatliyormu(iL_EsyaID,i) ? "(OZEL Oran)":"");
}
}
case 4 : {
if(iL_EfsunTIP == 1){
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"4) |ZM|Hasar Alinca %i karsi hasar ver %s<br>",iL_Efsun,nEfsunBasarkenPatliyormu(iL_EsyaID,i) ? "(OZEL Oran)":"");
}
if(iL_EfsunTIP == 2){
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"4) |ZM|Hasar Alinca karsi tarafin %i armorunu em %s<br>",iL_Efsun,nEfsunBasarkenPatliyormu(iL_EsyaID,i) ? "(OZEL Oran)":"");
}
}
}
}
}
iL_Len += formatex(sL_Showen[iL_Len],2000-iL_Len,"<br><br>Tum efsunlar, oranlar, artis oranlari ve baslangic degerleri her esyada farkli sansa gore belirlenmektedir.");
show_motd(iP_ID,sL_Showen,"MawiLarq");
}
PHP Kod:
new iL_Fiyat = (get_pcvar_num(iG_Cvar[2])*iL_Level)+30;
if(iL_Level >= get_pcvar_num(iG_Cvar[3])){
sColoredChat(iP_ID,"!nEsyaniz zaten en yuksek levelde daha fazla gelistiremessin!g!");
pM_LevelYukselt(iP_ID);
return PLUGIN_HANDLED;
}
if(iG_Money[iP_ID] < iL_Fiyat){
sColoredChat(iP_ID,"!nUzerinde yeterli miktarda tl bulunmadigi icin level gelistirilemiyor!g!");
pM_LevelYukselt(iP_ID);
return PLUGIN_HANDLED;
}
new iL_Deger = pP_OranCek(iL_Level,1);
if(!iL_Deger){
sColoredChat(iP_ID,"!nBu sefer sansin yaver gitmedi !g+ !ngelistirmesi basarili olmadi!g!");
pM_LevelYukselt(iP_ID);
return PLUGIN_HANDLED;
}
new iL_Efsun,iL_SuankiDegeri;
pP_Para(iP_ID, iL_UID, -iL_Fiyat,1);
nLevelDuzenle(iL_EsyaID,iL_Level+1);
for(new i=1; i < 5; i++){
iL_Efsun = nEfsunTipVeOran(iL_EsyaID,i,0);
if(iL_Efsun){
iL_SuankiDegeri = iL_Efsun;
if(nEfsunBasarkenPatliyormu(iL_EsyaID,i) && iL_Level == 1){
iL_SuankiDegeri = (iL_SuankiDegeri * 12 / 10);
iL_SuankiDegeri += floatround(iL_SuankiDegeri*1,2);
if(iL_SuankiDegeri <= iL_Efsun){
iL_SuankiDegeri = iL_Efsun+2;
}
sColoredChat(iP_ID,"!n%i!g.!nEfsunda patlama ozelligine sahip oldugu icin extra bonus!g(%i)!n eklenmistir!g!",iL_SuankiDegeri);
}
else {
iL_SuankiDegeri = (iL_SuankiDegeri * 12 / 10);
iL_SuankiDegeri += floatround(iL_SuankiDegeri*1,1);
if(iL_SuankiDegeri <= iL_Efsun){
iL_SuankiDegeri = iL_Efsun+1;
}
}
nEfsunDuzenle(iL_EsyaID,i,0,iL_SuankiDegeri);
sColoredChat(iP_ID,"!nEsyanin !g%i!t.!n Efsunu !g%i!n oranindan !g%i !noranina yukseltildi!g!",i,iL_Efsun,iL_SuankiDegeri);
}
}
pP_DetayGoster(iP_ID,iL_EsyaID);
sColoredChat(iP_ID,"!nBasarili sekilde secili olan esya !g%i!n levele yukseltildi!g!",iL_Level+1);
pM_LevelYukselt(iP_ID);
İndirme;
SMA İndirmek için: https://www.webailesi.com/ds-esya-sistemi-12102.sma
(CS 1.6 Eski ve kitlesi azalan bir oyun heleki geliştirici neredeyse hiç kalmadı. Soru veyatta istek geleceğini sanmıyorum ama eğer sorunuz varsa çekinmeden yazabilirsiniz ve beni mutlu edebilirsiniz)
)




+ basma sistemi felan xd