- Mesaj
- 11.944
- Çözümler
- 567
- Beğeni
- 13.699
- Puan
- 5.915
- Ticaret Puanı
- 2
Merhaba arkadaşlar,
Eskiden efsun sisteminin mantığını çözmek için php ile basit bi script yazmıştım.
Burada " Çözüldü - Olmayan efsunları geri getirme? " yorum yazarken aklıma gelmişti ve eski dosyaları silmediğimi fark ettim.
Bunu ne için kullanabiliriz?
Kodlar;
Sonuçlar şu şekildedir;
Sayfayı her yenilediğiniz zaman otomatik olarak efsunlar değişecek. Mevcut kodlarda silahlara gelebilen efsunlar tanımlı. Şu satırı düzenleyerek diğer item türleri içinde kullanabilirsiniz.
İtem bazlı yapmak için ise. Herhangi bir itemi veritabanından çektirip onun type değerini girebilirsiniz. Bu sadece taslak bi çalışma.
$efsunlar değişkenine atanmış olan diziyi kendi filesinize uygun olarak değiştirebilirsiniz.
Veritabanına bağlanmak için şu satırı düzenleyin;
Bu kodların çalışması için bilgisayarınızda apache ve mysql kurulu olması gerekiyor. wampserver veya xampp programları ile kurabilirsiniz.
Eskiden efsun sisteminin mantığını çözmek için php ile basit bi script yazmıştım.
Burada " Çözüldü - Olmayan efsunları geri getirme? " yorum yazarken aklıma gelmişti ve eski dosyaları silmediğimi fark ettim.
Bunu ne için kullanabiliriz?
- Mesela yönetim panelinden oyunculara rasgele efsunlu item göndermek için kullanabilirsiniz.
- Efsunların gelme oranlarını ayarlarken kullanabilirsiniz.
Kodlar;
PHP:
<?php
$efsunlar = array(
'0' =>'Yok',
'1' =>'Max HP +',
'2' =>'Max SP +',
'3' =>'Yaşam Enerjisi +',
'4' =>'Zeka +',
'5' =>'Güç +',
'6' =>'Çeviklik +',
'7' =>'Saldırı Hızı +',
'8' =>'Hareket Hızı +',
'9' =>'Büyü Hızı +',
'10' =>'HP Üretimi +',
'11' =>'SP Üretimi +',
'12' =>'Zehirleme Değişimi +',
'13' =>'Sersemletme Değişimi +',
'14' =>'Yavaşlık Değişimi +',
'15' =>'Kritik Vuruş Şansı +',
'16' =>'Delici Vuruş Şansı +',
'17' =>'Yarı İnsanlara Karşı Güçlü +',
'18' =>'Hayvanlara Karşı Güçlü +',
'19' =>'Orklara Karşı Güçlü +',
'20' =>'Mistiklere Karşı Güçlü +',
'21' =>'Ölümsüzlere Karşı Güçlü +',
'22' =>'Şeytanlara Karşı Güçlü +',
'23' =>'Hasar HP Tarafından Emilicek %',
'24' =>'Hasar SP Tarafından Emilicek %',
'25' =>'Düşmanın Spsini Çalma Sansi %',
'26' =>'Vuruş Yapıldığında Spyi geri Çalma %',
'27' =>'Beden Karşısındaki Atakların Bloklanması %',
'28' =>'Oklardan Korunma Şansı %',
'29' =>'Kılıç Savunması %',
'30' =>'Çift-El Savunması %',
'31' =>'Bıçak Savunması %',
'32' =>'Çan Savunması %',
'33' =>'Yelpaze Savunması %',
'34' =>'Oka Karşı Dayanıklılık %',
'35' =>'Ateşe Karşı Dayanıklılık %',
'36' =>'Simgeye Karşı Dayanıklılık %',
'37' =>'Büyüye Karşı Dayanıklılık %',
'38' =>'Rüzgar Dayanıklılığı %',
'39' =>'Vücut Darbesini Yansıtma Şansı %',
'40' =>'Lanet Yansıtılması %',
'41' =>'Zehre Karşı Koyma %',
'42' =>'Sp Yüklenmesi Değişti +',
'43' =>'Yang Düşme Şansı +',
'44' =>'Yang Düşme Şansı +',
'45' =>'Eşya Düşme Şansı +',
'46' =>'Trank effekt zuwachs +',
'47' =>'HP Yüklenmesi Değişti %',
'48' =>'Sersemletme Karşısında Bağışıklık +',
'49' =>'Yavaşlatma Karşısında Bağışıklık +',
'50' =>'Imun gegen Stürzen +',
'52' =>'Bogenreichweite +',
'53' =>'Saldırı Değeri +',
'54' =>'Savunma +',
'55' =>'Büyülü Saldırı Değeri +',
'56' =>'Büyülü Savunma +',
'57' => 'test',
'58' =>'Max Dayanıklılık +',
'59' =>'Savaşçılara Karşı Güçlü %',
'60' =>'Ninjalara Karşı Güçlü %',
'61' =>'Suralara Karşı Güçlü %',
'62' =>'Şamanlara Karşı Güçlü %',
'63' =>'Yaratıklara Karşı Güçlü %',
'64' =>'Saldırı Değeri +',
'65' =>'Savunma +',
'66' =>'EXP +?%',
'67' =>'Dropchance [Gegenstände] +',
'68' =>'Dropchance [Gold] +',
'71' =>'Beceri Hasarı %',
'72' =>'Ortalama Zarar %',
'73' =>'Widerstand gegen Fertigkeitsschaden +',
'74' =>'durchschn. Schadenswiderstand +',
'76' =>'iCafe exp-bonus +',
'77' =>'iCafe Chance auf erbeuten von gegenständen +',
'78' =>'Savaşçı Saldırılarına Karşı Savunma %',
'79' =>'Ninja Saldırılarına Karşı Savunma %',
'80' =>'Sura Saldırılarına Karşı Savunma %',
'81' =>'Şaman Saldırılarına Karşı Savunma %');
try {
$db = new PDO("mysql:host=localhost;dbname=player", "root", "");
} catch ( PDOException $e ){
print $e->getMessage();
}
$attrs = $db->query("SELECT * FROM item_attr", PDO::FETCH_OBJ)->fetchAll();
function efsunEkleWhistle($attrs)
{
$avail = [];
$total = 0;
foreach($attrs as $key => $attr)
{
if($attr->weapon)
{
//die(var_dump($attr));
array_push($avail, $key);
$total += $attr->prob;
}
}
$prob = rand(1, $total);
$attr_idx = 0;
for ($i = 0; $i < count($avail); ++$i)
{
$selectAttr = $attrs[$avail[$i]];
if ($prob <= $selectAttr->prob)
{
$attr_idx = $avail[$i];
break;
}
$prob -= $selectAttr->prob;
}
return $attr_idx;
}
for($i2 = 0; $i2 < 4; $i2++)
{
echo $i2." . efsun: ".$efsunlar[efsunEkleWhistle($attrs)]."<br />";
}
/*echo $attr_idx."<br>";
echo $prob;
die(var_dump($avail));*/
?>
Sonuçlar şu şekildedir;
Sayfayı her yenilediğiniz zaman otomatik olarak efsunlar değişecek. Mevcut kodlarda silahlara gelebilen efsunlar tanımlı. Şu satırı düzenleyerek diğer item türleri içinde kullanabilirsiniz.
PHP:
if($attr->weapon)
İtem bazlı yapmak için ise. Herhangi bir itemi veritabanından çektirip onun type değerini girebilirsiniz. Bu sadece taslak bi çalışma.
$efsunlar değişkenine atanmış olan diziyi kendi filesinize uygun olarak değiştirebilirsiniz.
Veritabanına bağlanmak için şu satırı düzenleyin;
PHP:
$db = new PDO("mysql:host=localhost;dbname=player", "root", "");
Bu kodların çalışması için bilgisayarınızda apache ve mysql kurulu olması gerekiyor. wampserver veya xampp programları ile kurabilirsiniz.