@ -9,6 +9,8 @@
ignore_user_abort(true);
include "db.php";
include_once("path.inc.php");
include_once(ROOT_PATH. "/include/defines.inc.php");
// Da es wichtig ist, dass die Querys korrekt abgehandelt werden wurde folgender Code eingefuehrt
@ -99,8 +101,22 @@ function bearbeiteAlleAbgelaufenenAuktionen(){
function insertAuktionen(){
if(Date("D") == 'Sun'){
$anzahl_auktionen = mt_rand(1,2); // anzahl der auktionen die gleichzeitig starten (ein oder zwei)
$startgebot = 1000000;
defineIfNotDefined('GEHEIM_START_GEBOT', 1000000);
// Definiert wieviele Auktion insgesamt minimal geplant werden
defineIfNotDefined('GEHEIM_ANZAHL_AUKTIONEN_MIN', 1);
// Definiert wieviele Auktion insgesamt maximal geplant werden
defineIfNotDefined('GEHEIM_ANZAHL_AUKTIONEN_MAX', 2);
// Definiert wieviele Items gleichzeitig pro Auktion auslaufen
defineIfNotDefined('GEHEIM_ANZAHL_AUKTIONS_ITEMS', 4);
// Definiert wie hoch die Chance ist eine Niete zu bekommen. 0.5 = 50%
defineIfNotDefined('GEHEIM_CHANCE_NIETE', 0.5);
$anzahl_auktionen = mt_rand(GEHEIM_ANZAHL_AUKTIONEN_MIN,GEHEIM_ANZAHL_AUKTIONEN_MAX); // anzahl der auktionen die gleichzeitig starten (ein oder zwei)
$anzahl_auktions_items = GEHEIM_ANZAHL_AUKTIONS_ITEMS;
$chance_niete = GEHEIM_CHANCE_NIETE * 100;
$startgebot = GEHEIM_START_GEBOT;
// Jeden Sonntag wird dieser Skript ausgefuehrt!
// erstmal checken obs schon Auktionen für kommende Woche gibt
$number = mysql_num_rows(database_query('SELECT * FROM auktion WHERE anbieter = 1 and TIMESTAMPDIFF(Second,startdate,now()) < 0 ' ) ) ;
@ -115,31 +131,38 @@ function insertAuktionen(){
while($result = mysql_fetch_assoc($qry)){
$frucht[$fruchtcount++] = $result[id];
}
for($i = 0; $i< $anzahl_auktionen;$i++){
$id1[$i] = mt_rand(0,$fruchtcount-1);
$id2[$i] = mt_rand(0,$fruchtcount-1);
}
// Termine festlegen
// Start Sonntag->0,Montag->1,Dienstag->2, Mittwoch->3, Donnerstag->4
$off1 = mt_rand(0,4);
$off2 = mt_rand(0,4);
$start1 = 'TIMESTAMPADD(Day,'.$off1.',\''.$date[date].' 20:00:00\')';
$deadline1 = 'TIMESTAMPADD(Day,'.($off1+3).',\''.$date[date].' 20:00:00\')';
$start2 = 'TIMESTAMPADD(Day,'.$off2.',\''.$date[date].' 20:00:00\')';
$deadline2 = 'TIMESTAMPADD(Day,'.($off2+3).',\''.$date[date].' 20:00:00\')';
// Ermittle die "Niete" (das wertloseste Item auf der Schatzsuche)
$qry = database_query('Select id from `sp_item` where wert = (Select min(wert) from `sp_item`)');
$nieten_id = mysql_fetch_assoc($qry);
$nieten_id = $nieten_id['id'];
// Auktinoen der ersten Auktionswelle einfuegen
for($i=0;$i< $anzahl_auktionen;$i++){
$test1 = 'INSERT INTO auktion (itemid, itemname, tablename, anbieter, anzahl, deadline, startgebot, startdate) VALUES('.$frucht[$id1[$i]].',\'Geheim!\',\'wochen_ware\',1,1,'.$deadline1.','.$startgebot.','.$start1.')';
$test2 = 'INSERT INTO auktion (itemid, itemname, tablename, anbieter, anzahl, deadline, startgebot, startdate) VALUES('.$frucht[$id2[$i]].',\'Geheim!\',\'wochen_ware\',1,1,'.$deadline2.','.$startgebot.','.$start2.')';
database_query($test1);
database_query($test2);
// echo $test1.'< br > '.$test2.'< br > ';
for($i = 0; $i< $anzahl_auktionen; $i++) {
// Termin festlegen
// Start Sonntag->0,Montag->1,Dienstag->2, Mittwoch->3, Donnerstag->4
$off = mt_rand(0,4);
$start = 'TIMESTAMPADD(Day,'.$off.',\''.$date[date].' 20:00:00\')';
$deadline = 'TIMESTAMPADD(Day,'.($off+3).',\''.$date[date].' 20:00:00\')';
for($t = 0; $t< $anzahl_auktions_items; $t++) {
if(mt_rand(1,100) < = $chance_niete) {
$item_table = 'sp_item';
$item_id = $nieten_id;
} else {
$item_table = 'wochen_markt';
$item_id = $frucht[mt_rand(0,$fruchtcount-1)];
}
$test = 'INSERT INTO auktion (itemid, itemname, tablename, anbieter, anzahl, deadline, startgebot, startdate) VALUES('.$item_id.',\'Geheim!\',\''.$item_table.'\',1,1,'.$deadline.','.$startgebot.','.$start.')';
echo $test."< br > \n";
database_query($test);
}
}
} else if($number > 6){
database_query('DELETE FROM auktion WHERE anbieter = 1 LIMIT '.($number-6));
} else if($number > GEHEIM_ANZAHL_AUKTIONEN_MAX * GEHEIM_ANZAHL_AUKTIONS_ITEMS){
echo 'Es gab zuviele Geheimauktionen ('.$number.') entferne die überschüssigen!';
database_query('DELETE FROM auktion WHERE anbieter = 1 LIMIT '.($number-GEHEIM_ANZAHL_AUKTIONEN_MAX * GEHEIM_ANZAHL_AUKTIONS_ITEMS));
} else {
echo 'Else '.$number;
database_query('DELETE FROM auktion WHERE anbieter = 1');
}
}
}
@ -162,19 +185,24 @@ function getAveragePrice($itemid, $tablename, $anzahl){
return round($row['average']*$anzahl);
}
// check if this cronjob is already busy!!
$array = array();
exec('pgrep '.$argv[0], $array);
$arrayCpy = array();
foreach($array as $tmp) {
if(!isset($argv)) {
// invocation by server
$arrayCpy = array();
} else {
// invocation by cronjob
exec('pgrep '.$argv[0], $array);
$arrayCpy = array();
foreach($array as $tmp) {
if($tmp != getmypid()) {
$arrayCpy[] = $tmp;
}
}
}
// check if this cronjob is already busy!!
if(count($arrayCpy)< =1) {
// Starten der Auktionsverteilung
$i = bearbeiteAlleAbgelaufenenAuktionen();