--------------------------------------------------------------------------------
using System;
using System.Collections;
using System.IO;
using Server;
using Server.Items;
using Server.Mobiles;
//burası kısayolları yaptığımız bölüm. (aslında böyle değil, fakat şimdilik böyle bilmeniz yeterli.) Kod içinde herhangi bir yerde Server namespace inin içinde World classına ulaşmak ve AddItem metodunu (function ın kardeşi) çağırmak isterseniz Server.World.AddItem yerine World.AddItem yazmanız yetecektir. Hatta "using Server.World"ü de eklerseniz direkt AddItem diyerek istediğiniz metoda ulaşabilirsiniz.
namespace Server.Scripts.Commands
{
public class Drink //Drink diye bir class oluşturuyoruz.
{
public static void Initialize() //Initialize özel bir methoddur. Class yaratıldığında ne olacağını belirler.
{
Server.Commands.Register( "Drink", AccessLevel.Player, new CommandEventHandler( Drink_OnCommand ) ); //Bu daha önceden bizim için hazırlanmış bir metod. Üç parametre alıyor. Birincisi komutun adı (Drink), ikincisi kimin kullanabileceği (AccessLevel.Player), üçünücüsü komutun EventHandler ı. Yani komut tetiklenince ne olacağını belirleyen bellek işaretleyicisi (oha. saçma oldu.) (Drink_OnCommand). Drink komutu kullanıldığında Drink_OnCommand diye bir EventHandler arayacak.
}
[Usage( "Drink" )] //Dokümanlarda çıkacak açıklama.
public static void Drink_OnCommand( CommandEventArgs e ) //Burada EventHandler ımızı tanımlıyoruz. CommandEventArgs e bölümü bize e adında bir parametre sağlıyor. Bu e ile komut ile ilgili bazı şeylere ulaşabileceğiz.
{
Mobile from = e.Mobile; //from adında bir mobil tanımladık ve onu e nin mobiline yani komutu yollayan mobile eşitledik.
if (from==null) return; //eğer from un karşılığı yoksa, yani bir şekilde from oluşmazsa, komut yanlış bir şeye uygulanırsa vs.. koddan çıkılacak.
Container bp = from.Backpack; //bp adında bir container tanımladık ve bunu from un backpack ine eşitledik.
if (bp==null) return; //eğer bp diye bir container yoksa koddan çıkılacak.
Type type = null; //type isminde bir tip tanımladık ve "hiç"liğe eşitledik.
if (e.Arguments.Length != 0) //eğer komutla gelen argümanların (parametrelerin) uzunluğu sıfıra eşit değilse, yani komutla birlikte bir parametre yazıldıysa
{
switch (e.Arguments[0]) //switch bloğu. if bloğunun kardeşi. Komutla gelen argümanların birincisini (e.Arguments[0] bir dizeyi ifade ediyor. 0 ise ilk üyeyi verir.) sorgulayacağız.
{
default : //default boş bırakılmış.
case "heal" : type = typeof(BaseHealPotion);break; //eğer gelen argüman heal ise daha önceden yarattığımız type ı heal potion a eşitliyoruz. break ise switch bloğundan çıkıyor.
case "cure" : type = typeof(BaseCurePotion);break;
case "refresh" : type = typeof(BaseRefreshPotion);break;
case "night" : type = typeof(NightSightPotion);break;
}
}
else //if bloğunun geçersiz olduğu durumda..
{
from.SendMessage("Usage: Drink [heal/cure/refresh/night]"); //from a "Usage: ..." şeklinde bir mesaj dönecek.
return; //ve bloktan çıkılacak.
}
BasePotion potion = (BasePotion)bp.FindItemByType(type); //potion adından bir BasePotion tanımladık ve bp container ındaki (hatırlarsanız from’un backpack iydi bu) type isimli tipe eşitledik.
if (potion==null) //eğer potion adındaki BasePotion’ımız "hiç" ise. Bu demektir ki çantada potion yok..
{
from.SendMessage("You dont have any potions"); //from a yandaki mesaj dönecek.
return; //ve her zamanki gibi bloktan çıkılacak.
}
potion.Drink( from); //potion isimli BasePotion un drink metodu kullanılacak. İçecek kişi ise from
}
}
}
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
using System;
using System.Collections;
using Server;
using Server.Items;
using Server.Targeting;
using Server.Mobiles;
namespace Server.Scripts.Commands
{
public class Regs //regs diye bir class oluşturulmuş yine.
{
public static void Initialize() //class yaratılınca...
{
Server.Commands.Register("regs",AccessLevel.Player, new CommandEventHandler( Regs_OnCommand)); //regs komutunu yukarıdaki gibi kaydediyoruz.
}
/*Burası değişken tanımlama bölümünün başlangıcı
private static Type[] regs = { typeof(BlackPearl), typeof(Bloodmoss),
typeof(Garlic), typeof(Ginseng),
typeof(MandrakeRoot), typeof(Nightshade),
typeof(SulfurousAsh), typeof(SpidersSilk)}; //şimdi bu bölüm bayağı karışık. İsteyen arkadaşlar direkt es geçebilir. regs adında Type türünde bir dizi (array) tanımladık. Ve parantez içindekileri üyeleri olarak kaydettik. 8 üyeli (0-7) bir dizimiz oldu.
private static string[] regs_name = {"BP","BM","GA","GI","MR","NS","SA","SS"}; //reg adlarının kısaltılmışlarından oluşan, regs_name adında string bir dizimiz oldu.
/*Değişkenlerimizi tanımladık. Şimdi EventHandler a geçiyoruz.
public static void Regs_OnCommand( CommandEventArgs e) //Regs_OnCommand adındaki EventHandler ımız ve yine CommandEventArgs türündeki, e adındaki parametremiz, argümanımız..
{
Mobile mob = e.Mobile; //mob adında bir mobil tanımladık ve komutla birlikte gelen argümanın mobiline yani komutu çalıştıran mobile eşitledik.
Container bp = mob.Backpack; //yine bp adında bir container yarattık ve mob un backpack ine eşitledik.
if (bp == null) {return;} //bp diye birşey yoksa, yani bp==hiç ise..
string res=""; //res adında, boş bir metne eşit metinsel bir değişken tanımladık
string nf=""; //nf adında, boş bir metne eşit metinsel bir değişken tanımladık
int count=0; //count adında 0 a eşit sayısal bir değişken tanımladık.
for (int i=0;i<regs.Length;i++) //bir for-each döngüsüne giriyoruz. 0 a eşit, i adında sayısal bir değişkenimiz var, i regs in uzunluğundan küçük oldukça döngü devam edecek, döngü her başa döndüğünde i bir artacak.
{
try //try-catch bloğu hata kaldırma ihtimali yüksek bir kod çalıştırılmadan kullanılır. Amacı hata verdiği zaman crash yerine bizim istediğimizi yaptırmaktır. Try ın altındakileri dener, hata verirse Catch in altındakilere girişir.
{
count = bp.GetAmount(regs[ i],true); //count u bp deki "regs" in sayısına eşitledik. Hatırlarsanız regs bir diziydi ve içinde 8 üyesi vardı.
if (count > 10 ) 10 dan büyükse ve değilse diye ayırdık, ona göre renk değiştireceğiz..
{
if ((res.Length !=0) && (i<regs.Length)) res += ", "; //res in uzunluğu sıfırdan büyükse ve i regs dizisindeki üye sayısından küçükse res e ", " ekliyoruz.
res += regs_name[i ]+":"+count.ToString(); //res e regs_name i, ":" ve count un değerini yani sayısını ekliyoruz.
}
else //10 dan büyük değilse aynı işlemleri nf için yapıyoruz.
{
if ((nf.Length !=0) && (i<regs.Length)) nf +=", ";
nf += regs_name[i ]+":"+count.ToString();
}
}
catch //hata yakalarsa
{
break; //koddan çıkacak.
}
}
if (res.Length == 0 && nf.Length==0) //res de nf de 0 uzunluktaysa
{
mob.SendAsciiMessage(40,"No regs was found !"); //reginiz yok gibisinden bir mesaj dönecek. Mesaj rengi 40
}
else
{
if (res.Length != 0 ) mob.SendAsciiMessage(76, res); //eğer res 0 dan uzunsa (bu durumda nf sıfırdır) mob a 76 renginde bir mesaj göndereceğiz. Mesaj res i içerecek.
if (nf.Length != 0) mob.SendAsciiMessage( 40, nf); //eğer nf nin uzunluğu 0 değilse (bu durumda da res ==0 dır) 40 renginde mesaj göndereceğiz ve mesaj nf i içerecek.
}
}
}
}
--------------------------------------------------------------------------------
1 Kullanıcı
Ultima Online 10 saat önce
Ultima Online 2 gün önce
Duyurular 1 hafta önce
Sunucular 1 hafta önce
Ultima Online 2 hafta önce
Ultima Online 2 hafta önce
Ultima Online 3 hafta önce
Ultima Online 3 hafta önce
Sunucular 3 hafta önce
Sunucular 3 hafta önce
Sunucular 1 ay önce
Ultima Online 1 ay önce
2024-10-31 22:47
2024-10-14 17:45
2024-09-26 14:21
2024-07-08 22:50
2024-07-08 22:34
2024-06-19 22:05
2024-06-01 02:19
2024-05-31 21:17