jusT
03ofkosucusu
Bu dökümanı, pek çok kişiye faydalı olabileceğini düşündüğüm için yazma gereği duydum. Devamı da gelecek.
- !DİKKAT! -
Aşağıdaki örneklerimde güvenlik açığı vardır. Kullanmanız durumunda oluşabilecek hasarlardan, zararlardan ve diğer bilumun şeylerden ben sorumlu tutulamam. Kullanmak ya da kullanmamak tamamiyle sizin elinizdedir.
Neden güvenli bir şekilde yazmadın diye soracak olursanız. Bunları herkesin kullanmasını istemedim diyebilirim. Kullanabilecekler kullansın. Ayak altı olmasın.
- !DİKKAT! -
Öncelikle yeteri derecede mysql bilginizin olması gerekli. (ve tabiki sphere diline de hakim olmanız)
Mysql konusunda yardımcı olabilecek bir link;
Google da iyi bir arkadaş olabiliyor.
Neyse sphere içinde nerede kullanabiliriz diye düşünüyorum şimdi mysql’i.
Cevap tabiki heryerde olacak.
Sphere.ini’deki mysql ayarlarınızı yaptığınızı ve sunucunuzdaki mysqlin sorunsuz olarak çalıştığını varsayarak, basit bir sistem ile başlayalım;
Sistemin amacı: Mysql kullanarak online player listesi yapmak. Devamında online playerları web sitesi üzerinde ve oyun içerisinde listeletmek.
adım 1 – mysql de tablo yok ise oluşturmak ve içine veri girmek, silmek.
playerlarınıza tanımladığınız eventin (ivent diye okunur) @login ve @logout triggerlarını kullanacağız.
Kod:- !DİKKAT! -
Aşağıdaki örneklerimde güvenlik açığı vardır. Kullanmanız durumunda oluşabilecek hasarlardan, zararlardan ve diğer bilumun şeylerden ben sorumlu tutulamam. Kullanmak ya da kullanmamak tamamiyle sizin elinizdedir.
Neden güvenli bir şekilde yazmadın diye soracak olursanız. Bunları herkesin kullanmasını istemedim diyebilirim. Kullanabilecekler kullansın. Ayak altı olmasın.
- !DİKKAT! -
Öncelikle yeteri derecede mysql bilginizin olması gerekli. (ve tabiki sphere diline de hakim olmanız)
Mysql konusunda yardımcı olabilecek bir link;
Ziyaretçiler için gizlenmiş link, görmek için Giriş yap veya üye ol.
Google da iyi bir arkadaş olabiliyor.
Neyse sphere içinde nerede kullanabiliriz diye düşünüyorum şimdi mysql’i.
Cevap tabiki heryerde olacak.
Sphere.ini’deki mysql ayarlarınızı yaptığınızı ve sunucunuzdaki mysqlin sorunsuz olarak çalıştığını varsayarak, basit bir sistem ile başlayalım;
Sistemin amacı: Mysql kullanarak online player listesi yapmak. Devamında online playerları web sitesi üzerinde ve oyun içerisinde listeletmek.
adım 1 – mysql de tablo yok ise oluşturmak ve içine veri girmek, silmek.
playerlarınıza tanımladığınız eventin (ivent diye okunur) @login ve @logout triggerlarını kullanacağız.
on @login
db.connect
db.execute "create table if not exists online_players (playerUid text,playerName text);"
db.execute "insert into online_players values ('<uid>', '<name>');"
on @logout
db.connect
db.execute "delete from online_players where playerUid='<uid>';"
Evet, bu kadarcık. Herhangi bir oyuncu login olduğunda sphere mysqle bağlanıp tablo yok ise tabloyu yaratıyor. Ardından oyuncuyu tabloya giriyor.
Çıktığında ise tablodan siliyoruz. Tabloya istediğiniz kadar alan ekleyebilirsiniz. Kills, Deaths vs.
adım 2 – ince bir ayar
Herhangi bir crash olur da sphere istemediğimiz bir şekilde kapanırsa, elbette playerlardaki @logout triggerları tetiklenemeyecek ve playerlar tabloda asılı kalacaklardır. Bunun için de sphere_serv_triggers.scp adlı dosyada bulunan f_onserver_start fonksiyonu şu şekilde değiştiriyoruz;
[function f_onserver_start]
db.connect
db.execute "drop table online_players;"
Böylelikle sunucu açıldığında online_players adındaki tabloyu silecek.
Tekrar playerlar login olmaya başladığında tablo sıfırlanmış olacak.
adım 3 – Peki php ile ben online playerlarımı nasıl sitede gösterebilirim?
O da şöyle oluyor;
<?php
$dbhost = 'localhost';
$dbuser = 'kullanici_adi';
$dbpass = 'sifre';
$dbname = 'database_adi';
$connect = mysql_connect($dbhost,$dbuser,$dbpass) or die("Veritabanına bağlanılamıyor<br/><b>Detay:</b>".mysql_error());
mysql_select_db($dbname,$connect) or die("Veritabanına bağlanılamıyor<br/><b>Detay:</b>".mysql_error());
$player_list = mysql_query("select * from online_players");
if(mysql_num_rows($player_list) >= 1){
while ($player_data = mysql_fetch_array($player_list)) {
$playerName = $player_data['playerName'];
echo $playername;
echo "<br />";
}
}
?>