[webinv] - Web Sayfası Üzerinden Oyuncunun İtemlerine Bakmak

hacii_

Zombi Katili
En iyi cevaplar
0
Merhaba arkadaşlar, Sizlere webinv adlı projemi tanıtacağım!
Projemizin ne işe yaradığından bahsetmek gerekirse, web sayfası üzerinden oyuncuların itemlerine bakmak için tasarladığım bir projedir.
Oyuncular birbirlerinin itemlerini görebilir yada admin paneli yaparak sadece adminlerin görmesinide sağlayabilirsiniz.
Proje gelişim aşamasında olduğu için eksiklikleri var paylaşım yapmadım ama bitirdiğimde tam sürüm olarak paylaşacağım.
Kaynak kodlarınıda vereceğim ve sizde projeyi geliştirebilir veya kendinize göre düzenleyebilirsiniz.

Veri Tabanı kullanılmamıştır.
Http Request kullanılmıştır.

PROJENIN MANTIĞI
Bukkit Eventleri, php sayfasına 'http request' yolluyor ve php sayfası gelen verileri işleyip xml verisine çeviriyor sonra javascript ile xml verilerini çekip ayıklıyorum ondan sonra ayıkladığım verileri sayfaya veriyorum.

Videoyu HD İzleyin
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.
KAYNAK KODLARI
(İlerleyen Zamanlarda Kodlarda Değişiklik Olabilir)

JavaScript
PHP:
window.onload = function(){
  var d = document, db = d.body;
  var post = d.getElementById("post");
  var name = d.getElementById("name");
  var search = d.getElementById("search");
  var img = d.getElementsByTagName("img");
 
  function xhrSend(n){
    var n2 = "users/" + n + ".xml";
    var xhr = new XMLHttpRequest();
    xhr.open("POST", n2, true);
    xhr.setRequestHeader("Content-Type", "text/xml");
    xhr.onreadystatechange = function(){
      if(xhr.readyState == 4 && xhr.status == 200){
        var data = xhr.responseXML;
        var xmlSrc = [];
        for(var i = 0; i < data.getElementsByTagName("slot").length; i++){
          xmlSrc[i] = data.getElementsByTagName("slot")[i].childNodes[0].nodeValue;
        }
        for(var i = 0; i < img.length; i++){
          img[i].src = "images/" + xmlSrc[i] + ".png";
        }
        post.innerHTML = "<font color='blue'>" + n + "</font>";
      }
      else{
        for(var i = 0; i < img.length; i++){
          img[i].src = "images/null.png";
        }
        post.innerHTML = "<font color='red'>Oyuncu Bulunamadı</font>";
      }
    }
    xhr.send();
  }
 
  search.onclick = function(){
    xhrSend(name.value);
    post.style.transform = "scale(2)";
    setTimeout(function(){
      post.style.transform = "scale(1)";
    }, 300);
  }
 
  name.onkeypress = function(event){
    if(event.keyCode == 13){
      search.click();
    }
  }
}
PHP
PHP:
<?php
    /*
      author  : hacii_
      version : 0.1
      date    : 05.08.2015
    */
    $name = @$_POST["name"];
    if($name){
      $slot = array();
      $slotVal = "";
      for($i = 0; $i < 36; $i++){
        $vuln = "slot" . $i;
        $slot[$i] = @$_POST[$vuln];
      }
      if(!is_dir("users")){
        mkdir("users");
      }
      $n = "users/". $name . ".xml";
      for($i = 0; $i < 36; $i++){
          if($i == 0){
            $slotVal .= "<?xml version=\"1.0\"?><data>";
          }
          $slotVal .= "<slot>". $slot[$i] . "</slot>";
          if($i == 35){
            $slotVal .= "</data>";
          }
      }
      if(!is_file($n)){
        touch($n);
        $x = fopen($n, "w");
        fwrite($x, $slotVal);
        fclose($x);
      }
      else{
        $x = fopen($n, "w");
        fwrite($x, $slotVal);
        fclose($x);
      }
    }
  ?>
 
R

Reloven

Ziyaretçi
Nice :) Moderator Paneli Yapılabilinir.(Gelişmiş Sunucular Only :p)
 

Acarz

Lapis Toplayıcısı
En iyi cevaplar
0
oyundan çıkıp girmek lazımsa bi kaka olmaz
şarkı da ayriyetten kaka .__.
 

hacii_

Zombi Katili
En iyi cevaplar
0
oyundan çıkıp girmek lazımsa bi kaka olmaz
şarkı da ayriyetten kaka .__.
Gelişim aşamasında çekilmiş bir video oyuna girip çıkma on player join eventindeydi şimdi inventory update eventinde o sıkıntı gidecektir şarkıya gelince youtube rastgele açmış hiç dikkat etmedim ama güzel çalıyordu bence :)
 

Centeglassered

Kızıltaş Madencisi
En iyi cevaplar
0
Onun için bir config olsa iyi olur. Yani onJoin'de veya inventoryUpdate'e diye. Çünkü inventoryUpdate'de çok daha fazla lag ihtimali var. İyi sunucusu olan inventoryUpdate'di kullanır. Kötü sunucusu olan onJoin'i kullanır. Benim fikrim tabii.
 

bgencacat

Lapis Toplayıcısı
En iyi cevaplar
0
Düşünce güzel olabilirdi rakip yazılımlardan daha önce davranılsaydı.
 

hacii_

Zombi Katili
En iyi cevaplar
0
[DOUBLEPOST=1438890926][/DOUBLEPOST]
Düşünce güzel olabilirdi rakip yazılımlardan daha önce davranılsaydı.
Yapanlar vardır doğrudur... Ama MySQL kullanmadan bir veri tabanı kullanmadan yaptım ben yapabilen varsa buyursun ama şunuda söyliyeyim yaptıgım bu daha test aşamasıydı bitince itemlerin üzerine gelince enchantlarını falan da görebileceksiniz o zaman işte fark yaratıcam[DOUBLEPOST=1438891741,1438890926][/DOUBLEPOST]
İnsanlar sürekli envanterlerini kullanıyorlar. 1000 kişilik bir sunucuda düşünsenize?
3000 kişilik sunucu düşün.
Oyuncuların yürümesi ve birbirlerini görmesi ? [Sunucu Trafiği]
3000 oyuncu düşün paraları durmadan bir yükseliyor bir düşüyor çünkü alış veriş yapıyorlar sunucuda.
O Eventleri düşün.
Oyunda Tahmin Edemeyeceğin Kadar Arkaplanda Event Dönüyor Sen Görmüyorsun Bilmiyorsun.
 
Üst