You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
agng/cronjob/clan_fight_auswertung.php

103 lines
3.4 KiB

<?php
include('db.php');
include('path.inc.php');
include_once(ROOT_PATH.'/include/clan.inc.php');
include_once(ROOT_PATH.'/include/elo.inc.php');
include_once(ROOT_PATH.'/include/semaphore.inc.php');
function getClanRanking() {
$qry = mysql_query('SELECT id from clan ORDER by elo desc LIMIT 10');
$clan_ids = array();
while($res = mysql_fetch_row($qry))
$clan_ids[] = $res;
return $clan_ids;
}
function distributeClanPrices(array $prices, array $results) {
$n = min(count($prices), count($results));
for($i = 0; $i<$n; $i++) {
$points = $prices[$i];
foreach($results[$i] as $winner) {
$clan = getClan($winner); // buffered so will not cause in a sql statement all the time!
$sql = 'UPDATE clan SET elo = 1000, geld = geld + ' . $points . ' WHERE id = ' . $clan['id'];
echo $sql . ' <br>';
mysql_query($sql);
insertClanTickerMessage($clan['id'], 'Das Preisgeld von '.$points.' f&uuml;r den '.$i.' Platz in der Clanliga erhalten!');
}
}
}
$time = date("Hid");
if($time == 1) {
// okay it is 0:00 in the morning at the first day of the month!
$results = getClanRanking();
$sql2 = 'Select avg(level) as dlevel from chars order by level desc limit 100';
$row = mysql_fetch_assoc(mysql_query($sql2));
$dlevel = ceil($row['dlevel']);
$summe = 20000000/(1+exp(5-$dlevel/14));
for($i = 1; $i<=count($results) ; $i++) {
$cprices[] = ceil($summe/pow(2, $i));
}
distributeClanPrices($cprices, $results);
}
$ressource = 'CLAN_AUSWERTUNG';
if(!semaphoreUP($ressource)) {
echo 'konnte den cronjob nicht starten weil dieser schon in Gange ist!';
} else {
$ids = getAwatingChallengeIDs();
foreach($ids as $id) {
echo 'Werte Clanfight mit ID ' . $id . ' aus<br>';
$challenge = getChallenge($id);
$clan_ids = getParticipatingClanIDs($id);
$clan1 = getClan($clan_ids[0]);
$clan2 = getClan($clan_ids[1]);
$c_clan_data1 = getParticipatingClanData($id, $clan_ids[0]);
$c_clan_data2 = getParticipatingClanData($id, $clan_ids[1]);
if($c_clan_data1['points'] > $c_clan_data2['points']) {
$winner = $clan1['id'];
} else {
$winner = $clan2['id'];
}
$expClan1 = calculateClanExperience($clan1, $clan2, $winner);
$expClan2 = calculateClanExperience($clan2, $clan1, $winner);
$newEloClan1 = calculateElo($c_clan_data1['elo'], $c_clan_data2['elo'], $c_clan_data1['points'] - $c_clan_data2['points'], $challenge['anzahl_chars']);
$newEloClan2 = calculateElo($c_clan_data2['elo'], $c_clan_data1['elo'], $c_clan_data2['points'] - $c_clan_data1['points'], $challenge['anzahl_chars']);
$eloClan1 = ($newEloClan1 - $c_clan_data1['elo']);
$eloClan2 = ($newEloClan2 - $c_clan_data2['elo']);
if($_clan_data1['elo_change'] == null) {
$sql = 'UPDATE clan_challenge_clans SET elo_change = ' .$eloClan1 . ', exp_change = ' . $expClan1 . ' WHERE clan_challenge_id = ' . $id . ' AND clan_id = ' . $clan1['id'];
// echo $sql . '<br>';
mysql_query($sql);
addClanExp($clan1['id'], $expClan1);
mysql_query('UPDATE clan SET elo = elo + ' .$eloClan1 . ' WHERE id = ' . $clan1['id']);
}
if($_clan_data2['elo_change'] == null) {
$sql = 'UPDATE clan_challenge_clans SET elo_change = ' .$eloClan2 . ', exp_change = ' . $expClan2 . ' WHERE clan_challenge_id = ' . $id . ' AND clan_id = ' . $clan2['id'];
// echo $sql . '<br>';
mysql_query($sql);
addClanExp($clan2['id'], $expClan1);
mysql_query('UPDATE clan SET elo = elo + ' .$eloClan2 . ' WHERE id = ' . $clan2['id']);
}
}
semaphoreDown($ressource);
}
?>