Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!
Exp genelde aynı seviyede olan oyuncular arasındaki sıralamayı belirler
Mesela 99 levelda 25 tane oyuncu var bu sefer tecrübe puanları devreye girer ve en yüksek 99 levelde exp kimdeyse o 99 lar arasında 1. olur çok komplike bir olay
Şöyle bir durum var , eskiden yani 2 yıl öncesinde 130 level olunca 1.67'ye kadar exp kasabiliyorduk ama şu son 1yılda kastıgımız çarlar 0.00 da kaldığı için sonradan kastığımız çarlar sıralamada doğal olarak aşağılarda kalıyor .
PHP:
<?php
/*
* @datetime : 11.Eki.2014 05:14:06
* @encoding : UTF-8
* @author : Shorty
*
*/
include dirname(__FILE__)."/../portal.php";
set_time_limit(0);
$db->query("DELETE FROM " . $config["database"]["name"] . ".rank_player_index WHERE past = '1'");
$db->query("UPDATE " . $config["database"]["name"] . ".rank_player_index SET past = '1' WHERE past = '0'");
foreach ($config["server"]["prefix"] as $key => $value) {
$data = $db->query("SELECT player.account_id,player.skill_group,player.id,player.name,player.job,player.level,player.playtime,player_index.empire,guild.name AS guildname FROM " . $value . "_player.player
LEFT JOIN elym2_arkadia_account.account ON player.account_id = account.id
LEFT JOIN " . $value . "_player.player_index ON player.account_id = player_index.id
LEFT JOIN " . $value . "_player.guild_member ON player.id = guild_member.pid
LEFT JOIN " . $value . "_player.guild ON guild.id = guild_member.guild_id
WHERE account.status = 'OK'
AND player.playtime >= 60
AND player.level >= 40
AND player.last_play >= (NOW() - INTERVAL 1 MONTH)
ORDER BY player.level DESC, player.exp DESC, player.playtime DESC");
if (count($data) > 0) {
$sirap = 1;
foreach ($data as $sira => $index) {
if (IsGamemaster($index["id"], $key) == false) {
$db->bind("sira", $sirap);
$db->bind("id", $index["id"]);
$db->bind("job", $index["job"]);
$db->bind("name", $index["name"]);
$db->bind("guildname", $index["guildname"]);
$db->bind("accountid", $index["account_id"]);
$db->bind("skillgroup", $index["skill_group"]);
$db->bind("empire", $index["empire"]);
$db->bind("level", $index["level"]);
$db->bind("playtime", $index["playtime"]);
$db->bind("server", $key);
$index = $db->query("INSERT INTO " . $config["database"]["name"] . ".rank_player_index (sira, id, name, job, server, level, playtime, empire, guildname, accountid, skillgroup) VALUES (:sira, :id, :name, :job, :server, :level, :playtime, :empire, :guildname, :accountid, :skillgroup)");
$sirap++;
}
}
}
}
Oyuncu sıralamasını belirleyen script budur
PHP:<?php /* * @datetime : 11.Eki.2014 05:14:06 * @encoding : UTF-8 * @author : Shorty * */ include dirname(__FILE__)."/../portal.php"; set_time_limit(0); $db->query("DELETE FROM " . $config["database"]["name"] . ".rank_player_index WHERE past = '1'"); $db->query("UPDATE " . $config["database"]["name"] . ".rank_player_index SET past = '1' WHERE past = '0'"); foreach ($config["server"]["prefix"] as $key => $value) { $data = $db->query("SELECT player.account_id,player.skill_group,player.id,player.name,player.job,player.level,player.playtime,player_index.empire,guild.name AS guildname FROM " . $value . "_player.player LEFT JOIN elym2_arkadia_account.account ON player.account_id = account.id LEFT JOIN " . $value . "_player.player_index ON player.account_id = player_index.id LEFT JOIN " . $value . "_player.guild_member ON player.id = guild_member.pid LEFT JOIN " . $value . "_player.guild ON guild.id = guild_member.guild_id WHERE account.status = 'OK' AND player.playtime >= 60 AND player.level >= 40 AND player.last_play >= (NOW() - INTERVAL 1 MONTH) ORDER BY player.level DESC, player.exp DESC, player.playtime DESC"); if (count($data) > 0) { $sirap = 1; foreach ($data as $sira => $index) { if (IsGamemaster($index["id"], $key) == false) { $db->bind("sira", $sirap); $db->bind("id", $index["id"]); $db->bind("job", $index["job"]); $db->bind("name", $index["name"]); $db->bind("guildname", $index["guildname"]); $db->bind("accountid", $index["account_id"]); $db->bind("skillgroup", $index["skill_group"]); $db->bind("empire", $index["empire"]); $db->bind("level", $index["level"]); $db->bind("playtime", $index["playtime"]); $db->bind("server", $key); $index = $db->query("INSERT INTO " . $config["database"]["name"] . ".rank_player_index (sira, id, name, job, server, level, playtime, empire, guildname, accountid, skillgroup) VALUES (:sira, :id, :name, :job, :server, :level, :playtime, :empire, :guildname, :accountid, :skillgroup)"); $sirap++; } } } }
Oyuncu sıralamasını belirleyen script budur
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Levela göre önce bütün 130 lvl Ely1 oyuncuları yazıyor , sonra Ely2nin oyuncuları başlıyor. Herkesin leveli zaten 130 bu bahsettiğimiz sıralamada , Facia07'ye kadar olanların expi mi var yani?
130 Level'de exp kasılıyorda biz mi kasmıyoruz ?SELECT player.account_id,player.skill_group,player.id,player.name,player.job,player.level,player.playtime,player_index.empire,guild.name AS guildname FROM player.player
LEFT JOIN account ON player.account_id = account.id
LEFT JOIN player.player_index ON player.account_id = player_index.id
LEFT JOIN player.guild_member ON player.id = guild_member.pid
LEFT JOIN player.guild ON guild.id = guild_member.guild_id
WHERE account.status = 'OK'
AND player.playtime >= 60
AND player.level >= 40
AND player.last_play >= (NOW() - INTERVAL 1 MONTH)
ORDER BY player.level DESC, player.exp DESC, player.playtime DESC
Sıralamayı bu query ile belirliyoruz.
Önce Oyuncu seviyesi, sonra oyuncunun tecrübe puanı sonra oyuncunun oyun süresi
Sıralamayı etkileyen 3 olay bu ORDER BY player.level DESC, player.exp DESC, player.playtime DESC
Bunun tabi matematiksel farklı ince detayı var bu yazdığım ile kısaca mantığı anlıyosun zaten
