Türkiye'nin en yeni Ultima Online, Counter-Strike, LoL, Dota 2, E-spor oyunları ve daha birçok oyunla ilgili Türkçe oyun haber, bilgi, topluluk platformu. Türkiye'nin en yeni Ultima Online, Counter-Strike, LoL, Dota 2, E-spor oyunları ve daha birçok oyunla ilgili Türkçe oyun haber, bilgi, topluluk platformu.
  • ANASAYFA
  • FORUM
  • DOKÜMAN
  • DOWNLOAD
  • DISCORD
  • İLETİŞİM
   Üye ol    Giriş
    Doküman > Ultima Online > Sphere > Temel String Tanımlamaları

Temel String Tanımlamaları

  • Slothere
  • September 10, 2009
  • 3 Yorumlar
  • 5K Görüntüleme

- Bu döküman Ultima-Strike.com adresinde kullanılması amacı ile tarafımca (Slothere) hazırlanmıştır. Genel olarak SphereServer'ın orjinal kaynağından çeviri yapılmış olsa da kendi örnekleme ve anlatımlarım ile daha anlaşılabilir
olduğunu düşünüyorum. Eğer eksik bir kısım veya anlayamadığınız bir bölüm olursa bana özel mesaj atmanız yeterli.




Temel Kullanım



İlk olarak sphere üzerinde kelime ayırma yöntemleri ile başlayalım. Sphere'da kullanılan en temel kelime ayıracı olarak virgülü (,) gösterebiliriz. Bir çok fonksiyon üzerinde virgül kullanarak kelimelerinizi rahatça ayırabilir, virgül ile ayırdığınız bölümleri rahatça bütünden ayırabilirsiniz.

Örnek;


[FUNCTION f_karakter]
SYSMESSAGE Argumanlar: <ARGV>
SYSMESSAGE 1. Arguman: <ARGV[0]>
SYSMESSAGE 2. Arguman: <ARGV[1]>
SYSMESSAGE 3. Arguman: <ARGV[2]>


Şimdi bu komutu "f_karakter Merhaba Ultima-Strike Üyeleri" şeklinde kullanırsak eğer sol tarafta görünen yazımız şu
şekilde olucak,


Argumanlar: 1
1. Arguman: 
2. Arguman:
3. Arguman:


İstediğimiz gibi olmadı değil mi? Biz yazdığımız cümle içindeki belli bölümleri ayırıp 1. Arguman, 2. Arguman şeklinde ayırmak istiyoruz. Bu şekilde yazmasının yegâne nedeni olarak boşluk kullanmamızı söyleyebilirim. Eğer bu şekilde kullanımda boşluk kullanırsak kelimeler virgül ile ayrılmadığı için bir bütün olarak karşımıza çıkacaktır ve ARGV[x] şeklindeki ayırmalarımızda karşımıza ayrılmış bir bölüm çıkmayacaktır. Eğer biz bu cümle içindeki tüm karakterlerin şu şekilde ayrılmasını istiyorsak;

1. Arguman: Merhaba
2. Arguman: Ultima-Strike
3. Arguman: Üyeleri

bu defa ayırmak istediğimiz kelimenin arasına virgül (,) koymamız gerekli. Hatırlarsanız üstte fonksiyonu kullanırken "f_karakter Merhaba Ultima-Strike Üyeleri" şeklinde yazmıştık. Şimdi "f_karakter Merhaba, Ultima-Strike, Üyeleri" şeklinde kullanıp oluşan sonuca göz atalım. Bu şekilde kullanıldığında karşımıza gelicek sonuç şu şekilde olacaktır,


Argumanlar: 3
1. Arguman: Merhaba
2. Arguman: Ultima-Strike
3. Arguman: Üyeleri


Üstteki "Argumanlar" kısmındaki değer, yazdığımız yazıdaki ayrılmış bölümlerin sayısını bize verecektir. Üst kısımda 1 yazmasnının nedeni yazdığımız yazıyı tek bir bütün olarak görmesi idi. İkinci örnekte kelimeleri virgül ile ayırdığımız için bu sefer her bir bütün olarak ayırdığımız kelimelerin toplam sayısını görmüş olduk.




STRARG




"STRARG" komutu yazdığınız bir dizi içerisinde, ilk boşluktan önceki kelimeyi size geri döndürür.

Örnek;


[FUNCTION test]
SYSMESSAGE <STRARG Ultima Strike>
SYSMESSAGE <STRARG Merhaba arkadaşlar>


şeklindeki fonksiyonu kullandığımızda bize dönen değerler "Ultima" ve "Merhaba" olacaktır.




STREAT



"STREAT" komutu "STRARG" komutunun tam tersi şeklinde işler. "STRARG" komutunda ilk boşluktan önceki kelime size dönerken, "STREAT" komutunda ilk boşluktan sonraki kelimeler dönecektir. Üstteki örneğin aynısını kullanarak bu sefer "STREAT" komutu üzerindeki işleyişe bir göz atalım.


[FUNCTION test]
SYSMESSAGE <STREAT Ultima Strike>
SYSMESSAGE <STREAT Merhaba arkadaşlar>

Bu sefer bize dönen değerler "Strike" ve "arkadaşlar" olacaktır.




STRCMP



String karşılaştırılmalarında kullanılan bir fonksiyondur. String'ler sayısal değerler gibi (string1 = string2) şeklinde kontrol edilemezler. Diğer kontroller sadece sayısal değerlerin kontrol edilmesi için yaratılmışlardır. İki string karşılaştırılacağı zaman sadece belirli komutları kullanabilirsiniz. Bu komutlardan ilk olarak "STRCMP" komutunu ele alalım.

Mesela string1 ve string2 adında iki tane kelimemiz var ve bunların birbiri ile olan ilişkilerini kontrol etmek istiyoruz. Yapmamız gereken şey;


STRCMP(string1, string2)


şeklinde kullanmak. Burada size dönecek sonuç 3 ihtimallidir. Bu ihtimaller;

DeğerAnlamı
-1string1, string2'den küçüktür
0iki dizi birbirine eşittir
1string1, string2'den büyüktür

Burada dikkat edilmesi gereken en önemli husus dönüş değerleridir. Mesela dönen değer yanlış, yani "0" olduğunda iki değer birbirine eşit anlamındadır. Daha iyi anlaşılması açısından bir örnek verelim.


[FUNCTION test]
IF !STRCMP(<SRC.NAME>, Slothere)
  SRC.SAY Benim adım Slothere.
ENDIF

Burada eğer "STRCMP(<SRC.NAME>, Slothere)" şeklinde yapsaydık iki değer birbirine eşit olduğu için dönen değer "1" olacaktı. Ancak bu komutta dönecek olan 1 değeri ilk değerin, diğer değerden büyük olduğu anlamında kullanılıyor. Bizim eşit olduğunu kontrol edebilmemiz için "0" değerini döndürmemiz lazım. O yüzden "eşitse" demek yerine ters
mantık "eşit değilse" demeliyiz. Bu şekilde dönen değerimiz "1" yerine "0" olacaktır ve istediğimiz sonuca kolayca ulaşabileceğiz.

Son olarak bu komuttaki belki de en önemli kısmı açıklamak istiyorum. "STRCMP" komutunu kullandığınızda karşılaştırılan değerler büyük küçük harf duyarlı olarak kontrol edilirler. Mesela sizin isminiz Slothere ve siz kontrol ederken bunu slothere, SLothere, sLothere gibi büyük küçük harf eşit şekilde olmadan girdiniz. Fonksiyon her ne kadar değerler doğru dahi olsa büyük küçük harf hassasiyetinden dolayı sonucu yanlış olarak nitelendirecektir



STRCMPI



Aslında bu komutu detaylıca anlatmaya gerek yok. İşleyişi tamamen STRCMP ile aynıdır. Ancak STRCMP ile STRCMPI arasındaki tek fark, STRCMP kontrollerde büyük küçük harfe duyarlıdır. STRCMPI'de ise bu şekilde bir hassasiyet mevcut değildir.




STRLEN



STRLEN komutu, yazdığınız parçadaki karakter sayısını size geri döndürür. Örneklemek gerekirse;


[FUNCTION test]
SYSMESSAGE <EVAL STRLEN(<ARGS>)>

Mesela "Ultima-Strike Slothere" yazdığımızda bize dönecek değer 22 olacaktır. Boşluklar da karakter sayısına eklenir.



STRREVERSE



STRREVERSE komutu girdiğiniz kelimedeki harfleri tersine çevirir. Örnek olarak;


SYSMESSAGE <STRREVERSE Total Refresh Potion>

yapıldığında dönen değer "noitoP hserfeR latoT" olacaktır.




STRSUB



STRSUB girilen değerler içerisinde belli bir bölümü veya bir karakteri almaya yarar. Örnek olarak;


[FUNCTION test]
SYSMESSAGE <STRSUB 0 3 Merhaba Ultima-Strike>

komutunu kullandığımızda bize dönen değer "Mer" olacaktır. Bunu kendi kullanım alanınız ve hayal gücünüze göre çeşitli yerlerde kullanabilirsiniz. Daha basit bir anlatım olarak bunu; 0 3 değerlerini "0. karakterden itibaren 3 karakter al" şeklinde, 5 10 değerlerini "5. karakterden itibaren 10 karakter al" şeklinde anlatmakta mümkün.

Ayriyetten şu şekilde güzel bir kullanış şekli daha bulunmakta,


[FUNCTION test]
SYSMESSAGE <STRSUB -3 0 Merhaba Ultima-Strike>

Bunu kullandığınızda size dönen değer Strike içindeki "ike" olacaktır. -3 değerinden aldırdığınızda sondan itibaren belirlediğiniz sayı içindeki karakteri verecektir.




STRTOLOWER



STRTOLOWER fonksiyonu girdiğiniz değerlerdeki karakterleri küçültmeye yarar. Örnek ile anlatırsak daha iyi anlayacağınızı sanıyorum.


[FUNCTION test]
SYSMESSAGE <STRTOLOWER meRHaBa uLTiMa STriKe>


Bu fonksiyonu kullandığımızda, girdiğimiz mesaj bize "merhaba ultima strike" şeklinde dönecektir. Bu şekilde kullanabileceğiniz gibi STRSUB yardımı ile belirlediğiniz aralıktaki karakterleri küçültmekte mümkün. Buna verilebilecek en büyük örnek olarak isim düzenleme sistemini göstermek mümkün.


[FUNCTION duzenle]
SRC.NAME = <STRTOUPPER <STRSUB 0 1 <SRC.NAME>>><STRTOLOWER <STRSUB 1 16 <SRC.NAME>>>

Burada yaptığımız şey 0'dan itibaren 1 karakter alıp (1. karakteri alıp) karakteri büyüttük. Daha sonra 1. karakterden itibaren 16 karakter alarak ismimizin kalanındaki tüm karakterleri ufalttık.



STRTOUPPER



Bunu da pek izah etmeye gerek yok sanırım. STRTOLOWER'ın tam tersi şeklinde işler. STRTOUPPER belirlenen kısımdaki karakterleri büyütmeye yarar. Üstte de verdiğimiz düzenleme fonksiyonunda göründüğü gibi ..


[FUNCTION test]
SYSMESSAGE <STRTOLOWER meRHaBa uLTiMa STriKe>

Bu fonksiyonu kullandığımızda bize dönen değer "MERHABA ULTIMA STRIKE" olacaktır.



STRTRIM



Bu komut üzerinden girdğimiz değerlerin başındaki ve sonundaki boşlukları siler. Örnek vermek gerekirse;


[FUNCTION test]
LOCAL.Text = "     TEST 11 22 33      "
SYSMESSAGE <LOCAL.Text>
SYSMESSAGE <STRTRIM <LOCAL.TEXT>>


Bunu kullanınca dönen değer;


"    TEST 11 22 33      "
"TEST 11 22 33"


Burada ilk dönen değer LOCAL.Text'te belirlediğimiz gibi baş ve sonundaki boşlukların olduğu şekildeki gibi yazacaktır. Ancak ikinci mesajda bize yazının başında ve sonundaki boşluklar göstermeyecektir.




STRMATCH



STRMATCH'de STRCMP, STRCMPI gibi string kontrol etmize yarayan bir fonksiyondur. Ancak şunu söylemek gerekir ki STRMATCH diğerlerinden daha kapsamlı ve daha detaylı bir kontrol sağlar.


[FUNCTION test]
IF STRMATCH(*lot*, <ARGS>)
  SYSMESSAGE Yazınızın içerisinde lot geçiyor.
ELSE
  SYSMESSAGE Yazınızın içerisinde lot geçmiyor.
ENDIF


Mesela bu komut içerisinde "Slothere" yazdık. Slothere içerisinde lot geçtiği için sorguyu doğru olarak döndürecektir. Ancak lot geçmeyen bir şey yazdığımızda dönen değer yanlış olacaktır. Bu komutta (*) karakteri dışında pek çok özel kontrol karakteri bulunmaktadır.

KomutAnlamı
*Herhangi bir sayı veya harf eşleşmesinde
?Eşleşen herhangi bir karakter ile
[\*]* yerine belirtilen karakter ile eşleşmede
[abcdef]Belirtilen karakterler ile eşleşmede
[!abc][br][^abc]Belirtilen herhangi bir karakter ile eşleşmediğinde
[A-Z][br][0-9]A-Z veya 0-9 arası karakterler ile eşleştiğinde


STRMATCH, STRCMP gibi büyük-küçük harf duyarlı değildir. STRMATCH kullanırken dikkat etmeniz gereken en önemli
özellik şudur. Mesela iki tane string var elimizde (string1 ve string2) bunları birbirleri ile karşılaştıracağız. Bu karşılaştırmada STRMATCH yerine STRCMP veya STRCMPI kullanmak daha performanslıdır. Çünkü STRMATCH genel olarak
belirtilen yazı içinde arama yaparken, STRCMP ve STRCMPI bütünü kontrol ettiğinden daha hızlı şekilde çalışacaktır.

(!) STRCMPI ve STRCMP içerisinde yukarıdaki tablodaki özel karakterler kullanılamaz, sadece bütünü kontol eder.




EXPLODE


EXPLODE komutu belirttiğiniz metinleri, belirttiğiniz ayraç(lar)dan itibaren virgülle ayırmanıza olanak sağlar.

kullanımı:
EXPLODE <ayraç(lar)>,<ayrılacakMetin>

örnek kullanım:
[function ayir]
goster <explode *,<args>>

[function goster]
serv.b toplam parca: <dargv>
for <dargv>
serv.b <local._for>. parca: <argv[<dlocal._for>]>
endfor

* ayraç bölümünde birden fazla belirtebilirsiniz. örnek olarak ben yukarıda * (yıldız) simgesinden itibaren ayırmasını belirttim. ancak siz bunu dilediğiniz gibi düzenleyebilirsiniz.

örnek:
<explode -+*!,<metin>

bu şekilde kullanıldığında - + ! * simgelerinden herhangi biri ile karşılaştığı an metni parçalayacaktır.

Üye Ol veya Giriş Yap

Bu içeriğe yorum atmak istiyorsanız hemen üye olun veya giriş yapın.

Facebook ile Bağlan Twitch ile Bağlan

Yorumlar (3)

Slothere 2010-07-24 17:38

döküman güncellendi.

No Avatar
Aldarson 2009-09-28 17:57

eline sağlık güzel döküman

Lucretius 2009-09-10 16:06

Eline sağlık.

Sadece kayıtlı kullanıcılar yeni yorum yapabilir.
Beğeni Takipçi Üye Takipçi
Benzer Sayfalar
  • Vb Temel Komutlar.

    June 03, 2006

  • Vb Temel Bilgiler

    June 03, 2006

  • İlk Yardım Temel Bilgiler

    July 15, 2006

  • Temel MySQL Komutları

    February 03, 2009

  • İlkokuldan Üniversiteye Temel Öğretim Aracı

    January 01, 1970



  • Son Forumlar
  • Sayfalar
  • Legend
    Üyeliği 15 yıl ve üzerinde olanlar.

    Ultima Online 1 weeks önce

  • Lydia
    King of Pvp Yetkili Arıyorum

    Ultima Online 1 months önce

  • Lydia
    Callisto UO - KAPALI

    Sunucular 1 months önce

  • Lydia
    Ultima ya geri dönün

    Ultima Online 1 months önce

  • Montana LoveLACe
    Şuan oynanacak uzun soluklu server

    Sunucular 2 months önce

  • Sirlather
    Uo Trance - Pvp Server

    Sunucular 3 months önce

  • Sirlather
    Versus PvP[PvpKings] Kapılarını Tekrar Açtı

    Sunucular 3 months önce

  • Sirlather
    Eldoris Uo World Builder İhtiyacı

    Ultima Online 3 months önce

  • Bütün bir yıl çok çalıştılar, çok fazla mücadele ettiler ve artık sona geldiler.

    ESL One Cologne 2017

    June 30, 2017

  • Activision yetkililerinin yaptığı açıklamaya göre Cod:MW Remastered, Infinite Warfare’den ayrı bir oyun olarak satılmaya başlanacak.

    Call of Duty Modern Warfare Remastered açıklandı!

    June 24, 2017

  • Artık gelenekselleşen Steam mevsim indirimlerinin en sevileninin zamanı geldi kapımıza dayandı.

    Steam Yaz İndirimi 2017 Rehberi

    June 22, 2017

  • Ultima Online için unoffical DLC

    Ultima LandFall

    June 18, 2017

  • Simple Radar - Kullanışlı ve Basit Radar

    June 03, 2017

  • CS:GO FPS Arttırma ile ilgili detaylı bilgilendirici faydalı döküman

    CS:GO FPS Arttırma ile İlgili Herşey

    May 28, 2017

  • Easy Vibrance enhancer v1.3.0.1

    May 09, 2017

  • Vibrance GUI

    March 31, 2017

Menü

ANASAYFA
FORUM
DOKÜMAN
DOWNLOAD
İLETİŞİM
Ideamedia
© 2004 - 2022 Ultima-Strike. Her hakkı saklıdır.