Anasayfa
UO Sunucular
Forumlar
Profilim
UO-Developer.COM

Sphere MySQL — Sitede Ölüm İstatistiği

UO-Developer.com — olum tablosu, @Death kaydı ve PHP web listesi

Bu rehber, Sphere 0.56b sunucusunda ölen oyuncu, öldüren, yer ve saat bilgisini MySQL'e yazıp web sitenizde göstermenizi anlatır. Oyuncu öldüğünde veri tabloya eklenir; PHP sayfası bu kayıtları okuyup ziyaretçilere listeler.

Konu: MySQL ölüm logu + PHP istatistik sayfası | Seviye: Orta

İlgili: Online Ölüm Saatleri | Sitede İstatistik Gösterme | MySQL Komutları

Ön koşul: MySQL Kurulumu | projedeki Sphere MySQL Entegrasyonu rehberi

Bu döküman, Nemesi'nin hazırladığı Sphere MySQL Komutları dökümanından yararlanılarak yazılmıştır.


! DİKKAT !

Aşağıdaki PHP örneği eski mysql_* fonksiyonlarını kullanır — PHP 7+ sürümlerinde kaldırılmıştır. Modern hosting'de mysqli veya PDO tercih edin. Örnek eğitim amaçlıdır; canlı sitede SQL injection riskine karşı parametreli sorgu kullanın.

! DİKKAT !
İçindekiler
  • Gereksinimler
  • sphere.ini — MySQL ayarları
  • f_onserver_start — bağlantı
  • MySQL — olum tablosu
  • PHP — web listesi
  • @Death — Sphere kayıt
  • Kontrol listesi

1. Gereksinimler
  • SphereServer 0.56b — MySQL desteği yalnızca 56b'de vardır
  • MySQL kurulu ve çalışır durumda
  • libMySQL.dll 32-bit — SphereSvr.exe yanında
  • Web hosting veya yerel Apache/PHP — MySQL erişimi
  • Temel Sphere script bilgisi

Not: Sürümünüz 0.56b olmalıdır. sphere.ini üzerinden veritabanı ayarlarını mutlaka yapın.


2. sphere.ini — MySQL Ayarları

Öncelikle sphere.ini dosyasından veritabanı ayarlarınızı yapın:

MYSQL=1
MySqlHost=localhost
MySqlUser=kullanici
MySqlPassword=sifren
MySqlDatabase=sphere

Ayrıntılı açıklama: Türkçe Sphere.ini


3. f_onserver_start — MySQL Bağlantısı

scripts klasöründeki sphere_serv_triggers.scp dosyasını açın. f_onserver_start fonksiyonunun altına şunu ekleyin:

[FUNCTION f_onserver_start]
db.connect
if (<db.connected>)
    serv.log MySQL debug: MySQL baglantisi tamamlandi
else
    serv.log MySQL debug: MySQL baglantisi tamamlanamadi.
endif
return 1

Sunucu açıldığında konsolda bağlantı mesajını kontrol edin. Bağlantı yoksa sphere.ini bilgilerini ve libMySQL.dll dosyasını doğrulayın.


4. MySQL — olum Tablosu

Kullanacağınız veritabanında phpMyAdmin veya mysql komut satırı ile şu sorguyu çalıştırın:

CREATE TABLE `olum` (
  `olen` varchar(255) NOT NULL,
  `olduren` varchar(255) NOT NULL,
  `yer` varchar(255) NOT NULL,
  `saat` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Kolonlar:

  • olen — ölen karakter adı
  • olduren — öldüren karakter adı
  • yer — bölge adı
  • saat — sunucu zamanı

5. PHP — Web Listesi

Web sitenizin www köküne — örnek olum.php — aşağıdaki kodu ekleyin. Veritabanı adı, kullanıcı ve şifreyi kendi bilgilerinizle değiştirin:

<?
$tablo = "olum";
$veritabani_ismi = "sphere";
$dbbaglan = mysql_connect("localhost","kullanici","sifren")
or die ("Database servera baglanilamadi...");
$database = mysql_select_db("$veritabani_ismi", $dbbaglan) or die("Database secilemedi...");
$son = "select * from $tablo";
$bitti = mysql_query($son) or die("Sorgulama yapilamadi...");

while ($row = mysql_fetch_object($bitti))
{
$olen = $row->olen;
$olduren = $row->olduren;
$yer = $row->yer;
$saat = $row->saat;

echo "Olen = $olen";
echo "<br />";
echo "Olduren = $olduren";
echo "<br />";
echo "Yer = $yer";
echo "<br />";
echo "Saat = $saat";
echo "<br />";
echo "----------------------------------------";
echo "<br />";
}

mysql_free_result($bitti);
mysql_close($dbbaglan);
?>

Dosyayı kaydedip çıkın. Tarayıcıdan http://siteniz.com/olum.php adresini açarak tablonun okunduğunu test edin — henüz kayıt yoksa boş sayfa normaldir.

Değişken adlarında Türkçe karakter kullanmayın; örnekte $veritabani_ismi tercih edildi.


6. @Death — Sphere Kayıt

Karakter veya global trigger dosyanızda fix event bölümüne on=@Death ekleyin. Oyuncu öldüğünde MySQL tablosuna satır yazılır:

on=@Death
db.execute "INSERT INTO olum (olen, olduren, yer, saat) VALUES('<name>','<act.name>','<region.name>','<serv.rtime>')"

Alan eşlemesi:

  • olen — ölen — name
  • olduren — öldüren — act.name
  • yer — bölge — region.name
  • saat — zaman — serv.rtime

db.execute öncesi MySQL bağlantısının açık olduğundan emin olun — f_onserver_start içinde db.connect yeterlidir. Bağlantı koparsa konsolda db.connect ile tekrar deneyin.

Sistem bu adımdan sonra tamamdır: biri öldüğünde kayıt tabloya düşer, PHP sayfası listeler.


7. Test Adımları
  • sphere.ini MySQL ayarları kaydedildi
  • Sunucu açılış logunda MySQL baglantisi tamamlandi mesajı
  • olum tablosu phpMyAdmin'de görünüyor
  • Test karakter ile ölüm — tabloda yeni satır var mı?
  • olum.php sayfası kayıtları gösteriyor mu?

8. Sık Yapılan Hatalar
  • 56b değil — MySQL komutları 55x'te çalışmaz
  • libMySQL.dll eksik — db.connected 0 döner
  • Yanlış DB bilgisi — PHP ve Sphere aynı veritabanını göstermeli
  • @Death yanlış dosya — trigger aktif char template veya global trigger'da olmalı
  • mysql_* PHP 7+ — hosting mysqli/PDO isteyebilir

9. Kontrol Listesi
  • Sphere 0.56b
  • sphere.ini — MYSQL=1 ve DB bilgileri
  • sphere_serv_triggers.scp — f_onserver_start db.connect
  • CREATE TABLE olum çalıştırıldı
  • olum.php — DB ayarları düzenlendi
  • on=@Death db.execute eklendi
  • Ölüm testi + web sayfası doğrulandı

DB API referansı: projedeki Sphere MySQL Komutları rehberi | MySQL Komutları

UO-Dev SPONSOR

Paylaş

XFacebook

Faydalı mı?

Bu içerik size yardımcı oldu mu?

UO-Dev SPONSOR

Henüz yorum yapılmamış. Yorum yazabilmek için giriş yapmanız gerekir.

Üyelerin oylama ortalaması (10 dışında) :

Henüz Oylanmamış

Oylar: 0

Paylaş

XFacebook

Faydalı mı?

Bu içerik size yardımcı oldu mu?