Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

RunUO Guide #2


MumChamber

Öne çıkan mesajlar

Şimdi bu başlığımızda RunUO Scripting'e giriş yapacağız. Önce birkaç kod inceleyeceğiz. İlk kodumuzu ilerki konularda yazacağız (kesinlikle HelloWorld olmayacak..). Fakat ilk yapmanız gereken komut önekinizi (command prefix) "." olarak değiştirmek. [Değiştirmeyi %server&'ın yeri% ScriptsCommands içindeki Handler.cs dosyasından yapabilirsiniz.] Çünkü çoğumuz gibi ben de nokta kullanmaya alışığım ve bazı arkadaşlar "[" ile ilgili sorun yaşıyorlar. Daha da önemlisi ben yazıyı buna göre yazacağım :). Ayrıca yazıyı orta seviyede bilgisi olan arkadaşlar için hazırladım, bazı konular anlaşılması kolay olsun diye yarı-yanlış bilgiler içerebilirler. Anlayan arkadaşlar anlamazdan gelsinler...

Bu aşamada hemen C# ile ilgili genel bilgilere girmemiz gerekli. Sphere ve diğer birkaç emülatörden farklı olarak RunUO bir yazılım dili kullanır. Bu yazılım dili C#'tır. Burada dikkat edilmesi gereken nokta C ya da C++ değil, C#'tır. C/C++ ve C# arasında tabiri caizse dağ kadar fark vardır. Yani bu kısmen bir isim aldatmacasıdır. C ve C++ evrensel olmayan (yani birkaç farklı versiyonu bulunan) dillerdir ve Microsoft 2001 yılında (ya da 2002, tam bilemiyorum) hem bu dilleri kısmen evrenselleştirmek hem de daha sağlam bir yazılım dili çıkarmak amacıyla .Net teknolojileri ile birlikte C#'ı piyasaya sürmüştür. Yeri gelmişken C#'ın "sağlam"lığına da değinelim. Microsoft'un tanımıyla C# mid-level bir yazılım dilidir. Bu şu demek, yazılım dilleri en light olanından en katmerlisine doğru 5'e ayrılır. (böyle bir ayrım yapmak anlamsızdır ama Microsoft yapar..) C# bu noktada 3 numaralı basamaktadır. (aynı tabloda VB.NET 2 numaralı basamakta, assembly ise en tepede, 5 numaradadır. Diğerlerini hatırlamıyorum. Galiba C ailesi de 4. sıradaydı, ama emin değilim..) C# kısmen bellek yönetimine kadar izin verir. C# CaseSensitive yani büyük-küçük harf duyarlıdır. Ve bu konuda çok ısrarcıdır. Üstüne varmayın..
______________________

Yazılım dili denirse OOP'ye (Object Oriented Programming'e) de değinmek gerekir. C# pek tabii ki "Object Oriented" -nesne yönelimli-dir. ("Pek tabii ki"; diyorum çünkü -bence- artık nesne yönelimli olmayan dillere yer olmayacaktır. Hatta belki de, geleceğin veritabanları direkt nesne saklayacaklar.. (ikinci fikir benim değil)) Bu kavramı (OOP'yi) burada anlatmam mümkün değil. Sadece OOP üzerine yazılmış kitaplar bile mevcuttur. Genel olarak bahsetmek gerekirse OOP'ye giren dillerde bir nesne yaratabilir, bu nesneye onlarca property verebilir, subclasslar oluşturabilirsiniz. Pek tabii bu açıklama yeterli olmayacaktır, bir kitaptan araştırmanız sizin için çok daha sağlıklı olacaktır. Şimdilik OOP hakkında bilginiz olması gerekmese de bu işin bir ucu OOP'den geçmek zorundadır.

Artık ısınma turlarına başlayabilir, usul usul kodumuza sokulabiliriz.
[Yazımda dil olarak tarzanca seçmek zorunda kaldım çünkü namespace, class gibi kelimeleri türkçeye çevirerek yazmak altyapısı olan arkadaşları zorlayacak ve yeni başlayan arkadaşların ingilizce metin okuyabilitesini düşürecektir. Bu kadar gevezelik yeter hadi koda girelim.]

İlk örneğimizi RunUO Guide başlığından aldığımız "drink" komutu ile ilgili scriptten başlayacağız ve bu scripti örnek olsun diye satır satır inceleyeceğiz.. Komutun kullanımı ".drink heal", ".drink cure" vs.. şeklinde olacak.

Ön açıklama:
Mobile: mobil. RunUO'daki kullanımıyla NPCler yaratıklar oyuncular dahil hareketli herşey..

said:

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
Link to comment
Sosyal ağlarda paylaş

mum cidden süfer bi yazı olmush
ama bu c# bilenler için olmuş gibin biraz yine de saol
ben de bi c# tut. gibi bişi hazırliim[signature][hline]Forumlara bir şey yazmadan önce dur iki kere düşün sonra da tıkla
-----------
We are following the will of the one
Through the dark age
And in to the storm
Lord I'm mean
-----------

Ardenia FRP Sitesi|Sözlükçe
Link to comment
Sosyal ağlarda paylaş

said:
Bivrip, 12 February 2004 09:53 tarihinde demiş ki:
mum cidden süfer bi yazı olmush
ama bu c# bilenler için olmuş gibin biraz yine de saol
ben de bi c# tut. gibi bişi hazırliim


Süper olur ya.
C# öğrenmeye başlamayı düşünüyodum.
Yazarsan çok iyi olur..[signature][hline]..::::.(¯`·.¸(¯`·.¸KoRaX¸.·´¯)¸.·´¯).::::..

Delikanlı Adam Yuvarlak Kalkan Takmaz...
Link to comment
Sosyal ağlarda paylaş

okke ben başladım yazıya yakında koyarım
mum eer bööle bi c# projen warsa sen onu bırak ben yapam c# işini sen uo ya özel şeyleri annat bence..[signature][hline]Forumlara bir şey yazmadan önce dur iki kere düşün sonra da tıkla
-----------
We are following the will of the one
Through the dark age
And in to the storm
Lord I'm mean
-----------

Ardenia FRP Sitesi|Sözlükçe
Link to comment
Sosyal ağlarda paylaş

said:
Bivrip, 12 February 2004 10:54 tarihinde demiş ki:
okke ben başladım yazıya yakında koyarım
mum eer bööle bi c# projen warsa sen onu bırak ben yapam c# işini sen uo ya özel şeyleri annat bence..


C# öğrenmek çok zor diyolar doğrumu?[signature][hline]..::::.(¯`·.¸(¯`·.¸KoRaX¸.·´¯)¸.·´¯).::::..

Delikanlı Adam Yuvarlak Kalkan Takmaz...
Link to comment
Sosyal ağlarda paylaş

Aslında ilk başta C# tutorial düşünmüyordum fakat yazıyı yazarken gördüm ki C# tutorial olmazsa olmaz...

bivrip, kimin yazdığı benim için önemli değil.. eğer böyle bir döküman hazırlarsan, yollamadan önce benimle iletişim kurmaya çalış, ben de birşey hazırlamış olursam ikisini birleştirelim bir şekilde..

korax, bir yazılım dilini öğrenmek -bence- kolay olamaz. Fakat C#'ın zor olduğunu söylemek de zordur.. Öyle ki C#'ta orta seviye bilgiyle de güzel şeyler yapılabilir, fakat dilde uzmanlaşmak, harikalar yaratmak için 2-3 sene gerekecektir.[signature][hline]its supersonic
Link to comment
Sosyal ağlarda paylaş

Merhabalar kurduğum servere bağlanmaya çalışrığımda sürekli encrypted client detected hatası alıyorum uo gateway ile remove encrypted seçeneğiyle girdiğimde bile aynı şey oluyor sorun nerden olabilir acaba yardımcı olabilirmisiniz....[signature][hline]Hasta etmeyin adamı !!!
Link to comment
Sosyal ağlarda paylaş

c ailesi ööle bişi ki yani tamamen uzmanım demek gerçekten zor ama uzmanlaşmadan da gayet güzel şeyler yapılır mum un dediği gibi ayrıca zaten runuo da kullanılan dil sade bir dil
ama c olmadan bence programlama olmaz :)[signature][hline]Forumlara bir şey yazmadan önce dur iki kere düşün sonra da tıkla
-----------
We are following the will of the one
Through the dark age
And in to the storm
Lord I'm mean
-----------

Ardenia FRP Sitesi|Sözlükçe
Link to comment
Sosyal ağlarda paylaş

CEDAY: sphere konusunda bilgim yok, bu yüzden ukalalık yapmak istemem.. fakat tam olarak OOP değil galiba.. hatta functionlardan başka ooplik ile ilişkisi yok diye biliyorum..

TheCoder: pek tabi alabilirsin. fakat buraya da link verirsen sevinirim. sonuçta paticik...

genel: ayrıca "ben yaptım" şeklinde yayınlanmadıkça buraya yazdıklarımın/yazacaklarımın yayınlanmasında sakınca görmüyorum. adımın belirtilmesi de gerekli değil. birileri sahiplenmesin yeter :) bir de yayınladıktan sonra "şurda yayınladım" cinsinden birşeyler söylerseniz çok bile bana..[signature][hline]its supersonic
Link to comment
Sosyal ağlarda paylaş

Bab c# plsssss :D

Anladım demek istediğinizi.

Gerçekten Öğrenmek istiyorum,zaten cart diye değil ben uzun süreli öğrenmek,kendimi iyi geliştirmek istiyorum.

Kolay gelsin..[signature][hline]..::::.(¯`·.¸(¯`·.¸KoRaX¸.·´¯)¸.·´¯).::::..

Delikanlı Adam Yuvarlak Kalkan Takmaz...
Link to comment
Sosyal ağlarda paylaş

×
  • Yeni Oluştur...