Türkiye'nin en eski ve aktif online oyun platformu, Ultima Online, Counter-Strike ve diğer online oyunlar hakkında Türkçe haber, bilgi ve forum sunuyor. Türkiye'nin en eski ve aktif online oyun platformu, Ultima Online, Counter-Strike ve diğer online oyunlar hakkında Türkçe haber, bilgi ve forum sunuyor.
  • ANASAYFA
  • ULTIMA ONLINE
    • Ultima Online Oyuncu Rehberi

      Ultima Online Oyuncu Rehberi

      Oyunu hakkında tanıcı bilgiler ve ipuçları

    • Ultima Online Server List

      Ultima Online Server List

      Önemli özellikleri ve online oyuncu sayıları

    • Ultima Online Script

      Ultima Online Script

      Sphere, RunUO, Razor scriptleri

    • Ultima Online Forum

      Ultima Online Forum

      UO hakkında görüş alışverişi

  • FORUM
  • DOKÜMAN
  • İNDİR
  • DISCORD 25
   Üye ol    Giriş
190
  1. Doküman
  2. Ultima Online
  3. Sphere
  4. 56b - MySQL den Yararlanma
Trina-

56b - MySQL den Yararlanma

  • Trina-
  • Trina-
  • 2007-07-29 10:26
  • 3 Yorumlar
  • 9642 Görüntüleme
Öncelikle bu kodları kullanmak için sphere.ini de bazı ayarlar yapmanız gerekmekte. Sphere.ini yi açınca aşağıdaki yeri kolaylıkla görebilirsiniz.

//	MySql configuration.
MYSQL=1 // sphere'in mysql kullanımını aktif etmek için bu 1 olacak
MySqlHost=buraya mysqlin bulunduğu makinenin adresi
MySqlUser=kullanıcı adı
MySqlPassword=şifresi
MySqlDatabase=ve mysql de sphere için kullanacağınız database adı. Bu genelde size mysql'i sağlayan şirket tarafından verilir, yani bir uo serverı için aldığınız makinada mysql varsa hostu aldığınız şirket size veritabanı adınızı verir.

Bu ayarları yaptıktan sonra sphere'i açtıktan sonra konsolda db.connect yazmanız gerekecek. Bunu yazarak sphere'in mysql veritabanına bağlanmasını sağlıyoruz. 'db.connect' komutunu 56b'nin standart script paketinde bulunan sphere_serv_triggers.scp içindeki f_onserver_start fonksiyonu altına koyarsanız server açıldığında sphere otomatik olarak db ye bağlanacaktır.

Diğer dökümanlarda hep kolay demişimdir. Ancak bu döküman için benim düşüncem MySQL pc hakkında bilgisi olmayan kişiler için zor. Şimdi burada size gerekecek bi kaç komut yazacağım.

<br>
<h3>MySQL</h3><br>
MySQL de tabloları gerçekten de gözle görülür bir tablo gibi düşünürseniz daha kolay anlayabilirsiniz. Veri okuma kısmı diğer kısımlara göre biraz daha karışık olduğu için onu en son anlatacağım.

MySQL'de yapılacak işlemler db.execute ile başlar, " ve " işaretleri arasında bulunan ise yapılacak işlemin belirlendiği yerdir.

<h4>Create Table</h4>
Bu komut, adından da anlaşılacağı gibi bir veri tabanında tablo oluşturmaya yarar.

db.execute "create table test(isim text, killsayisi int, uid text)"

Burada,

"db.execute", mysql'de işlem yapacağımız belirtiyoruz,

"create table test", test adında bir tablo oluştur,

"(isim text,", bu tabloda isim adında bir bölüm (kolon) oluştur ve bu kolona girilecek değerler text, yani string, diğer bi deyişle "a,b,c,d,.." gibi harf değerleri olsun.

", killsayisi int", killsayisi adında bir kolon oluştur ve bu kolona girilecek değerler int (integer), yani "1,2,3,4,.." gibi tamsayılar olsun.

", uid text)", uid adında bir kolon oluştur ve bu kolona girilecek değerler text olsun.

Bu kodu kullandığınızda veritabanı içerisinde, şekli aşağıdakine benzeyen test atında bir tablo oluşturulur.



Create Table altında kullanılacak çeşitli şeyler var. Mesela (isim text, killsayisi int) kısmının başına (numara int not null auto_increment ekleyebilirsiniz. Burada not null eklenecek numara adlı kolonun boş olamayacağını, auto_incerement ise, bu tabloya "insert" komutu ile yeni bir veri eklendiğinde burda bulunan sayının otomatik olarak bir artacağını belirtir. Bu ve benzeri kodlar için ayrıntılı bilgiyi araştırarak bulabilirsiniz.

Create Table komutunu genel olarak scriptlerde aktif olarak kullanmayacaksınız.

<h4>Insert</h4>
Bu komutla oluşturduğunuz tablolara veri yerleştirebilirsiniz. Aşağıda bu komutun kullanımına bir örnek var.

[function asdas]
db.execute "insert into test values ('Trina',55,'04ff')"

Burada,

"insert into", yazarak bir tabloya veri girişi yapacağımızı belirtiyoruz,

"test", yazarak bilgileri yerleştireceğimiz tablo adını belirtiyoruz, burda bir önceki komutla yarattığımız test tablosunu kullandım.

"values ('Trina',55,'04ff')", burada da yarattığımız tablodaki kolonlara sırasıyla bilgileri giriyoruz.

<b>Not:</b> Burada values den sonra gelen bilgilerin çift tırnak (") değil de tek tırnak (') içinde olduğuna dikkat edin. Çift tırnak koyarsanız hata alırsınız.

<b>Not 2:</b> Dikkatinizi çektiyse <name> ve <uid> girişlerine tek tırnak (') kullanırken, <kills> kısmında tek tırnak kullanmadık çünkü tamsayı girerken tek tırnak kullanmıyoruz.(tabloyu oluştururken "killsayisi int" yazarak killsayisi kolonuna girilecek değerlerin tamsayı olacağını belirtmiştik)

<b>Not 3:</b> Bu örnekte '"insert into test" yaztıktan sonra direk 'values ..."' diye devam ettik. Bunu yapmamızın nedeni tablodaki kolonların hepsine bilgileri yerleştirmiş olmamız. Eğer isim kolonuna bir değer girmeseydik, sadece killsayisi ve uid kolonlarına değer girseydik komut şu şekilde olacaktı,

db.execute "insert into test (killsayisi, uid) values (<kills>, '<uid>')"

Fark gayet açık, tablo adını yazdıktan sonra hangi kolonlara giriş yapacağımızı parantezler içinde belirttik, bütün değişiklik bu kadar.

Oyunda .asdas yazdığımızda test adlı tablonun görünümü aşağıdaki gibi değişecektir.



<h4>Update</h4>
Bu komut tabloya girilmiş bir veriyi değiştirmeye yarar. Kullanımı çok kolaydır aşağıdaki örnekle hemen anlayacaksınız.

Diyelim Trina dan sonra aşağıdaki kodu kullanarak test tablosuna yeni bir veri daha yerleştirdik,

db.execute "insert into test values ('Tolga',67,'05ad8')"

Bu kodu kullandıktan sonra tablonun görünümü aşağıdaki gibi olacaktır.



Şimdi diyelim killsayisi kolonunda yazan değerleri değiştirmek istiyoruz, onun için aşağıdaki gibi bir komut yazmamız gerekir.

db.execute "update test set killsayisi=25"

Üstteki kodu kullandığımızda tablo görüntüsü aşağıdaki gibi olcaktır.

==>

Bu, test adlı tabloda killsayisi kolonunda bulunan bütün değerleri 25 yapar. Ama siz sadece isim kolonunda Trina yazan kısmı değiştirmek istiyorsanız komuta aşağıdaki gibi bir ekleme yapmanız gerekir.

db.execute "update test set killsayisi=55 where isim='Trina'"

Bu komut sadece isim kolonunda Trina yazan satırdaki killsayisi kolonunun değerini 25 yapar. Yani bir önceki verdiğim kod yerine bu kodu kullanırsak tablonun şekli bi önceki verdiğim resimdeki gibi değil, aşağıdaki gibi olur.

==>

<h4>Delete</h4>
Bu kısımda veritabanından bilgi silmeyi yazıyorum. Aşağıda örnek bir kod var.

db.execute "delete from test"

Bu kod, yarattığımız test adlı tablodan bütün satırları siler. Biz iki satır yerleştirdiğimize göre, tablodan iki satır da silinir ve tablo boş kalır.

Belirli bir koşula göre silme yapacaksak, mantık <b>update</b>'te kullandığımız mantıkla aynıdır. Aşağıda gene örnek bir kod var.

db.execute "delete from test where isim='Tolga'"

Bu kod ile isim kolonunda Tolga yazan satır silinecek, diğer satırlar kalacaktır. Yani eğer bu kodu kullanırsak görünüm aşağıdaki gibi olur.

==>

<h4>Select</h4>
Şimdi sıra geldi veri girdiğimiz tablolardan veri okumaya. Bu biraz karışık ama dikkatli incelenirse kolayca anlaşılabilir.

db.execute "select * from test"

Bu kodu kullandığınızda, mysql tablodaki bütün verileri size sunacaktır. Sunulan bilgilere ulaşma şeklini aşağıda vereceğim. Mesela ulaşılan bilgiyi sysmessage yazdırmak istiyorsanuz. Üstteki koddan sonra aşağıdaki kodu kullanabilirsiniz.


[function test]
db.execute "select * from test"
for x 0 88
if !(<db.row.<dlocal.x>.isim>)
return 1
endif
sysmessage <db.row.<dlocal.x>.isim>
endfor

Burda;

db.execute "select * from test", ile test tablosundan veri alacağımızı belirtiyoruz,

for x 0 88, yazarak 0 ve 88 arası satır uzunlukta sonuç çıkabileceğini belirtiyoruz, sonuçta oluşabilecek satır sayısı ne kadar fazlaysa 2. sayıyı (88) o kadar çok tutmanızda yarar var, çok olmasının bi zararı yok zaten eğer satırda birşey yoksa bir sonraki if döngüyü otomatik durduruyor.

if !(<db.row.<dlocal.x>.isim>), eğer <dlocal.x>. satırdaki isim kolonu boşsa.

return 1, döngüyü durdur.

endif, if i kapat

sysmessage <db.row.<dlocal.x>.isim>, gelen sonuçlardan <dlocal.x>. satırdaki isim kolonundaki bilgiyi sysmessage olarak yaz.

endfor, for'u kapat.

Aynı 'where x=y' kısmı burda da geçerli. Yani sadece belirli koşulda sonuç çekmek istiyosanız,

db.execute "select * from test" where killsayisi=25"

kullanarak sadece killsayisi kolonu 25 olan satırı çekebilirsiniz.

<b>MySQL'de daha bir sürü komut var ancak sphere için size lazım olanları bu kadar, ondan diğer komutlara değinmeyeceğim.</b>

Copyright © Trina

<b>Not: Lütfen dökümana oy vermeyi ve iyi veya kötü olması konusunda yorum yapmayı unutmayın ki kafamda dökümanların anlatımının geliştirilip geliştirilmemesi gerektiği konusunda bir düşünce oluşabilsin.</b>

Değerlendirmeler

8 (8)

14 Kullanıcı

Üye Ol veya Giriş Yap

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

Discord ile Bağlan
Twitch ile Bağlan
Steam ile Bağlan
Google ile Bağlan
Yorumlar (3)
xwerswoodx Avatar
xwerswoodx 2012-08-11 20:25

İlk kez bir dökümanı 1 kerede anladım ellerine sağlık.

Trina-
Trina- 2009-01-22 00:19

Bi düzeltme yapıyım: select kısmında [code] [function test] db.execute "select * from test" for x 0 88 if !(.isim>) return 1 endif sysmessage .isim> endfor [/code] deki for yerine while kullanmak daha mantıklı, ayrıca execute değil query kullanılıyo selectte. Yani: [code] [function test] db.query "select * from test" while (!>>) sysmessage .isim> endwhile [/code]

XoXo
XoXo 2008-09-01 07:14

:yes yararli bir dokuman

Sadece kayıtlı kullanıcılar yeni yorum yapabilir.


Ultima-Strike Discord
Benzer Sayfalar
  • Mysql Stone + Php

    2009-05-24 14:06

  • MySQL Kurulumu

    2009-02-03 22:19

  • Küfür Sistemi -MySql-

    2008-10-13 18:14

  • Temel MySQL Komutları

    2009-02-03 22:26

  • MySQL Library (libMySQL.dll)

    2009-01-31 03:35



  • Son Forumlar
  • Sayfalar
  • Nefrelius
    Alcor UO Reborn

    Sunucular 3 gün önce

  • System_Error
    Client Patlaması

    Ultima Online 5 gün önce

  • georgm15
    CS2 turnuvaları tartışmalı başladı.

    Counter-Strike 2 1 hafta önce

  • georgm15
    Counter-Strike 1.6 İndir - Tek Link Hızlı-

    Counter-Strike 1 hafta önce

  • Robellious
    Üyeliği 15 yıl ve üzerinde olanlar.

    Ultima Online 1 hafta önce

  • Cihangir algın
    Razor Kullanımı

    RunUo Scripting 3 hafta önce

  • Lucretius
    Rampage Pvp

    Sunucular 3 hafta önce

  • Lucretius
    Nephilim Pvp

    Sunucular 3 hafta önce

  • redi4817
    NightUO

    Sunucular 3 hafta önce

  • Cengiz MERDİT
    Sphere 56T Nightly Sürümü

    Ultima Online 1 ay önce

  • aygun
    Esgaroth UO

    Sunucular 1 ay önce

  • deonist
    Alysa Pvp ( Aktif ! )

    Sunucular 1 ay önce

  • mthN
    Nebula Uo gerçekleri

    Ultima Online 2 ay önce

  • buffa
    Kullanılması Gereken Rate Ayarları

    Counter-Strike 2 ay önce

  • Lucretius
    Aktif Satılık Server !

    Sunucular 2 ay önce

  • Skill seçimlerinizi planlamak artık çok daha kolay

    Ultima Online Karakter Yapılandırma Aracı Bölümü Açıldı!

    2024-10-31 22:47

  • Ultima Online topluluğu, ClassicUO'nun sadece web client olarak kullanılabileceğinin açıklanmasının ardından tepkili.

    Resmi UO, Oyuncuları İkiye Böldü: Web Client Yeterli mi?

    2024-10-14 17:45

  • Ultima Online, ClassicUO ile resmi işbirliği yapıyor! Performans iyileştirmeleri, geniş oyun penceresi ve daha fazlası geliyor.

    Ultima Online, ClassicUO ile Resmi İşbirliğine Gidiyor

    2024-09-26 14:21

  • Centred#

    2024-07-08 22:50

  • CentrED+ 7.9

    2024-07-08 22:34

  • Distance(uzaklık) Sorgusu Hakkında

    2024-06-19 22:05

  • UoFiddler

    2024-06-01 02:19

  • UoFiddler ile Map Kopyalama

    2024-05-31 21:17

Menü
  • ANASAYFA
  • FORUM
  • DOKÜMAN
  • İNDİR
  • İLETİŞİM
  • Bağlantılar
  • CS 1.6 indir
  • CS 1.6 Türkçe
  • CS 1.6 Bot
  • CS 1.6 CFG
  • CS 1.6 Rate Ayarları
  • UO Server
  • Ghost Mouse indir
  • FPS Nedir?
  • Ultima Online PVP Server
  • Makroman
  • UO Karakter Yapılandırma
    © 2004 - 2025 Ultima-Strike. Her hakkı saklıdır.