Also habe nun die Möglichkeit hinzugefügt, dass Nieten ausgeschüttet werden. Dabei handelt es sich um das Item was am häufigsten in der Schatzsuche dropped. Also die Bohne.

Habe auch ein paar defines erstellt mit denen die GMs nun arbeiten können. Unter anderem können sie einstellen wieviele Geheimauktionen es gibt und wieviel Items sie umfassen.
main
hecht 10 years ago
parent 4fd6301886
commit bced25a860

@ -9,6 +9,8 @@
ignore_user_abort(true); ignore_user_abort(true);
include "db.php"; 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 // Da es wichtig ist, dass die Querys korrekt abgehandelt werden wurde folgender Code eingefuehrt
@ -99,8 +101,22 @@ function bearbeiteAlleAbgelaufenenAuktionen(){
function insertAuktionen(){ function insertAuktionen(){
if(Date("D") == 'Sun'){ if(Date("D") == 'Sun'){
$anzahl_auktionen = mt_rand(1,2); // anzahl der auktionen die gleichzeitig starten (ein oder zwei) defineIfNotDefined('GEHEIM_START_GEBOT', 1000000);
$startgebot = 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! // Jeden Sonntag wird dieser Skript ausgefuehrt!
// erstmal checken obs schon Auktionen für kommende Woche gibt // 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')); $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)){ while($result = mysql_fetch_assoc($qry)){
$frucht[$fruchtcount++] = $result[id]; $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++) {
for($i=0;$i<$anzahl_auktionen;$i++){ // Termin festlegen
$test1 = 'INSERT INTO auktion (itemid, itemname, tablename, anbieter, anzahl, deadline, startgebot, startdate) VALUES('.$frucht[$id1[$i]].',\'Geheim!\',\'wochen_ware\',1,1,'.$deadline1.','.$startgebot.','.$start1.')'; // Start Sonntag->0,Montag->1,Dienstag->2, Mittwoch->3, Donnerstag->4
$test2 = 'INSERT INTO auktion (itemid, itemname, tablename, anbieter, anzahl, deadline, startgebot, startdate) VALUES('.$frucht[$id2[$i]].',\'Geheim!\',\'wochen_ware\',1,1,'.$deadline2.','.$startgebot.','.$start2.')'; $off = mt_rand(0,4);
database_query($test1); $start = 'TIMESTAMPADD(Day,'.$off.',\''.$date[date].' 20:00:00\')';
database_query($test2); $deadline = 'TIMESTAMPADD(Day,'.($off+3).',\''.$date[date].' 20:00:00\')';
// echo $test1.'<br>'.$test2.'<br>';
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){ } else if($number > GEHEIM_ANZAHL_AUKTIONEN_MAX * GEHEIM_ANZAHL_AUKTIONS_ITEMS){
database_query('DELETE FROM auktion WHERE anbieter = 1 LIMIT '.($number-6)); 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); return round($row['average']*$anzahl);
} }
// check if this cronjob is already busy!!
$array = array(); $array = array();
exec('pgrep '.$argv[0], $array);
$arrayCpy = array(); if(!isset($argv)) {
foreach($array as $tmp) { // invocation by server
$arrayCpy = array();
} else {
// invocation by cronjob
exec('pgrep '.$argv[0], $array);
$arrayCpy = array();
foreach($array as $tmp) {
if($tmp != getmypid()) { if($tmp != getmypid()) {
$arrayCpy[] = $tmp; $arrayCpy[] = $tmp;
} }
}
} }
// check if this cronjob is already busy!!
if(count($arrayCpy)<=1) { if(count($arrayCpy)<=1) {
// Starten der Auktionsverteilung // Starten der Auktionsverteilung
$i = bearbeiteAlleAbgelaufenenAuktionen(); $i = bearbeiteAlleAbgelaufenenAuktionen();

Loading…
Cancel
Save