So ich habe die Fehler die hier aufgeführt wurden behoben und die neue Datei hochgeladen.
http://ul.to/sioxab
Danke jpwfour für die Verbesserungen.
(Wo meine Gedanken bei den beiden Fehlern waren will ich lieber nicht wissen :frusty:)
mfg
Aradiv
Druckbare Version
So ich habe die Fehler die hier aufgeführt wurden behoben und die neue Datei hochgeladen.
http://ul.to/sioxab
Danke jpwfour für die Verbesserungen.
(Wo meine Gedanken bei den beiden Fehlern waren will ich lieber nicht wissen :frusty:)
mfg
Aradiv
Also die Rally hat einige große Fehler welche ich Schlachtherr nun schon behoben habe.
Die Berechnung bei einer dynamischen Rally funktioniert überhaupt nicht, hier werden die $punkte die an die Funktion übergeben werden gar nicht beachtet, sondern es wird eine sehr sinnlose Formel genommen:
Oder so ähnlich :rolleyes:PHP-Code:
$config['rp']/$config['pro']*$config['rp']
Bei einer dynamischen Rally wird bei Endzeit statt dem Datum der Unix-Timestamp angezeigt, das ganze dann noch formatiert und mit der Info "bis zum erreichen von $unix_timestamp Punkten" :rolleyes:
Das war das, was mir bislang so aufgefallen ist, könnte natürlich noch einiges mehr drin sein
content/ralleys/leadrally.php
Und die FunktionPHP-Code:
<?
// Variabeln
$filename = 'lib/texte/leadralley.txt';
$rp = 1;
// Ralleydaten auslesen
$ralleydaten = mysql_fetch_array (db_query ('SELECT * FROM '.$db_prefix.'_ralleydaten WHERE ralley = "leadralley" LIMIT 1'));
// Datei auslesen
if (is_readable ($filename)) $inhalt = implode ('', file ($filename));
else echo 'Datei '.$filename.' kann nicht gelesen werden!';
if ($inhalt != ''){
head ('Unsere Leadralley');
echo nl2br ($inhalt);
foot ();
}
head ('Platzierungen und Preise');
if ($ralleydaten['art'] == 'statisch_fest') {
echo'
<div align="left">
Dieses Leadralley läuft von <b>'.date("d.m.Y - H:i:s",$ralleydaten['start']).'</b> bis <b>'.date("d.m.Y - H:i:s",$ralleydaten['ende']).'</b>.<br>
Für diese Leadralley sind <b>'.number_format($ralleydaten['p1']+$ralleydaten['p2']+$ralleydaten['p3']+$ralleydaten['p4']+$ralleydaten['p5']+$ralleydaten['p6']+$ralleydaten['p7']+$ralleydaten['p8']+$ralleydaten['p9']+$ralleydaten['p10'],2,",",".").' '.$waehrung.'</b> ausgelobt und werden wie unten angezeigt auf die
Plätze <b>1</b> bis <b>'.$ralleydaten['plaetze'].'</b> verteilt.<br />
Pro Lead gibt es 1 Punkt
</div><br />
';
} elseif ($ralleydaten['art'] == 'statisch_provi') {
echo'
<div align="left">
Dieses Leadralley läuft von <b>'.date("d.m.Y - H:i:s",$ralleydaten['start']).'</b> bis <b>'.date("d.m.Y - H:i:s",$ralleydaten['ende']).'</b>.<br>
Für diese Leadralley sind <b>'.number_format($ralleydaten['p1']+$ralleydaten['p2']+$ralleydaten['p3']+$ralleydaten['p4']+$ralleydaten['p5']+$ralleydaten['p6']+$ralleydaten['p7']+$ralleydaten['p8']+$ralleydaten['p9']+$ralleydaten['p10'],2,",",".").' '.$waehrung.'</b> ausgelobt und werden wie unten angezeigt auf die
Plätze <b>1</b> bis <b>'.$ralleydaten['plaetze'].'</b> verteilt.<br />
Für je '.number_format($ralleydaten['rp'], 2, ',', '.').' '.$waehrung.' Verdienst gibt es 1 Punkt
</div><br />
';
}elseif ($ralleydaten['art'] == 'ap_fest') {
echo'
<div align="left">
Dieses Leadralley läuft von <b>'.date("d.m.Y - H:i:s",$ralleydaten['start']).'</b> bis zum erreichen von <b>'.number_format($ralleydaten['ende'], 0, ',', '.').' Punkten</b>.<br>
Für diese Leadralley sind <b>'.number_format($ralleydaten['p1']+$ralleydaten['p2']+$ralleydaten['p3']+$ralleydaten['p4']+$ralleydaten['p5']+$ralleydaten['p6']+$ralleydaten['p7']+$ralleydaten['p8']+$ralleydaten['p9']+$ralleydaten['p10'],2,",",".").' '.$waehrung.'</b> ausgelobt und werden wie unten angezeigt auf die
Plätze <b>1</b> bis <b>'.$ralleydaten['plaetze'].'</b> verteilt.<br />
Pro Lead gibt es 1 Punkt
</div><br />
';
}elseif ($ralleydaten['art'] == 'ap_provi') {
echo'
<div align="left">
Dieses Leadralley läuft von <b>'.date("d.m.Y - H:i:s",$ralleydaten['start']).'</b> bis zum erreichen von <b>'.number_format($ralleydaten['ende'], 0, ',', '.').' Punkten</b>.<br>
Für diese Leadralley sind <b>'.number_format($ralleydaten['p1']+$ralleydaten['p2']+$ralleydaten['p3']+$ralleydaten['p4']+$ralleydaten['p5']+$ralleydaten['p6']+$ralleydaten['p7']+$ralleydaten['p8']+$ralleydaten['p9']+$ralleydaten['p10'],2,",",".").' '.$waehrung.'</b> ausgelobt und werden wie unten angezeigt auf die
Plätze <b>1</b> bis <b>'.$ralleydaten['plaetze'].'</b> verteilt.<br />
Für je '.number_format($ralleydaten['rp'], 2, ',', '.').' '.$waehrung.' Verdienst gibt es 1 Punkt
</div><br />
';
}elseif ($ralleydaten['art'] == 'dynamisch_fest') {
echo'
<div align="left">
Dieses Leadralley läuft von <b>'.date("d.m.Y - H:i:s",$ralleydaten['start']).'</b> bis zum erreichen von <b>'.number_format($ralleydaten['ende'], 0, ',', '.').' Punkten</b>.<br>
Dabei handelt es sich um eine dynamische Leadralley wo pro Punkt <b>'.number_format($ralleydaten['pro'],2,",",".").' '.$waehrung.'</b> in den Jackpot fliesen.
Im Jackpot befinden sicher gerade <b>'.number_format($ralleydaten['jackpot'],2,",",".").' '.$waehrung.'</b> die wie unten aufgeführt auf die Plätze <b>1
bis '.$ralleydaten['plaetze'].'</b> verteilt werden.
Pro Lead gibt es 1 Punkt
</div><br />
';
}elseif ($ralleydaten['art'] == 'dynamisch_provi') {
echo'
<div align="left">
Dieses Leadralley läuft von <b>'.date("d.m.Y - H:i:s",$ralleydaten['start']).'</b> bis zum <b>'.date('d.m.Y - H:i:s',$ralleydaten['ende']).'</b>.<br>
Dabei handelt es sich um eine dynamische Leadralley wo pro Punkt <b>'.number_format($ralleydaten['pro'],2,",",".").' '.$waehrung.'</b> in den Jackpot fliesen.
Im Jackpot befinden sicher gerade <b>'.number_format($ralleydaten['jackpot'],2,",",".").' '.$waehrung.'</b> die wie unten aufgeführt auf die Plätze <b>1
bis '.$ralleydaten['plaetze'].'</b> verteilt werden.
Für je '.number_format($ralleydaten['rp'], 2, ',', '.').' '.$waehrung.' Verdienst gibt es 1 Punkt
</div><br />
';
}
?>
<table width="100%" cellpadding="1" cellspacing="1" border="0">
<tr class="tr_head">
<td width="50"><b>Rang</b></td>
<td><b>User</b></td>
<td width="100"><b>Punkte</b></td>
<td width="150"><b>möglicher Gewinn</b></td>
</tr>
<?
$platz = db_query ('SELECT k.punkte,u.nickname FROM '.$db_prefix.'_leadralley k LEFT JOIN '.$db_prefix.'_userdaten u ON u.uid = k.uid ORDER BY punkte DESC LIMIT 10');
echo mysql_error();
while ($pa = mysql_fetch_array($platz)) {
$row = ($rp % 2 == 0) ? 0 : 1;
$mg = ($ralleydaten['art'] == 'statisch_fest' || $ralleydaten['art'] == 'statisch_provi' || $ralleydaten['art'] == 'ap_fest' || $ralleydaten['art'] == 'ap_provi') ? number_format($ralleydaten['p'.$rp], 2, ',', '.').' '.$waehrung : number_format(($ralleydaten['jackpot'] / 100 * $ralleydaten['p'.$rp]), 2, ',', '.').' '.$waehrung;
if ($rp > $ralleydaten['plaetze']) $mg = '---'; ?>
<tr class="tr_row<?=$row;?>">
<td align="right"><?=$rp++;?>. </td>
<td> <?=$pa['nickname'];?></td>
<td align="right"><?=number_format($pa['punkte'], 0);?> </td>
<td align="right"><?=$mg;?> </td>
</tr>
<?
}
for($x=$rp;$x<11;$x++){
$mg = ($ralleydaten['art'] == 'statisch_fest' || $ralleydaten['art'] == 'statisch_provi' || $ralleydaten['art'] == 'ap_fest' || $ralleydaten['art'] == 'ap_provi') ? number_format($ralleydaten['p'.$rp], 2, ',', '.').' '.$waehrung : number_format(($ralleydaten['jackpot'] / 100 * $ralleydaten['p'.$rp]), 2, ',', '.').' '.$waehrung;
$row = ($rp % 2 == 0) ? 0 : 1;
if ($x > $ralleydaten['plaetze']) $mg = '---'; ?>
<tr class="tr_row<?=$row;?>">
<td align="right"><?=$rp++;?>. </td>
<td> n/a</td>
<td align="right">0 </td>
<td align="right"><?=$mg;?> </td>
</tr>
<?
} ?>
</table>
<?
foot(); ?>
Wie gesagt, keine Garantie das alles behoben ist ;-) wir haben nur dsa bei dynamisch_provi getestetPHP-Code:
function leadralley($user,$provi){
global $db_prefix;
$conf=mysql_fetch_assoc(db_query("SELECT art, start, ende, pro, rp FROM vms_ralleydaten WHERE ralley='leadralley'"));
if($conf['start']<time()){
if($conf['art']=="statisch_fest"){
if($conf['ende']>time()){
db_query("UPDATE ".$db_prefix."_leadralley SET punkte=punkte + 1 WHERE uid=".$user." LIMIT 1;");
if(mysql_affected_rows()<1)db_query("INSERT INTO ".$db_prefix."_leadralley(uid, punkte) VALUES(".$user.",1)");
}
}elseif($conf['art']=="statisch_provi"){
if($conf['ende']>time()){
db_query("UPDATE ".$db_prefix."_leadralley SET punkte=punkte + ".$provi/$conf['rp']." WHERE uid=".$user." LIMIT 1;");
if(mysql_affected_rows()<1)db_query("INSERT INTO ".$db_prefix."_leadralley(uid, punkte) VALUES(".$user.",".$provi/$conf['rp'].")");
}
}elseif($conf['art']=="dynamisch_fest"){
if($conf['ende']>time()){
db_query("UPDATE ".$db_prefix."_ralleydaten SET jackpot = jackpot + ".$conf['pro']." WHERE ralley='leadralley'");
db_query("UPDATE ".$db_prefix."_leadralley SET punkte=punkte + 1 WHERE uid=".$user." LIMIT 1;");
if(mysql_affected_rows()<1)db_query("INSERT INTO ".$db_prefix."_leadralley(uid, punkte) VALUES(".$user.",1)");
}
}elseif($conf['art']=="dynamisch_provi"){
if($conf['ende']>time()){
db_query("UPDATE ".$db_prefix."_ralleydaten SET jackpot = jackpot + ".$provi*$conf['pro']." WHERE ralley='leadralley'");
db_query("UPDATE ".$db_prefix."_leadralley SET punkte=punkte + ".$provi/$conf['rp']." WHERE uid=".$user." LIMIT 1;");
if(mysql_affected_rows()<1)db_query("INSERT INTO ".$db_prefix."_leadralley(uid, punkte) VALUES(".$user.",".$provi/$conf['rp'].")");
}
}elseif($conf['art']=="ap_fest"){
$punkte=mysql_fetch_assoc(db_query("SELECT SUM(punkte) as now FROM vms_leadralley"));
if($punkte['now']<$conf['ende']){
db_query("UPDATE ".$db_prefix."_leadralley SET punkte=punkte + 1 WHERE uid=".$user." LIMIT 1;");
if(mysql_affected_rows()<1)db_query("INSERT INTO ".$db_prefix."_leadralley(uid, punkte) VALUES(".$user.",1)");
}
}elseif($conf['art']=="ap_provi"){
$punkte=mysql_fetch_assoc(db_query("SELECT SUM(punkte) as now FROM vms_leadralley"));
if($punkte['now']<$conf['ende']){
db_query("UPDATE ".$db_prefix."_leadralley SET punkte=punkte + ".$provi/$conf['rp']." WHERE uid=".$user." LIMIT 1;");
if(mysql_affected_rows()<1)db_query("INSERT INTO ".$db_prefix."_leadralley(uid, punkte) VALUES(".$user.",".$provi/$conf['rp'].")");
}
}
}
}
Du machst mir ja Hoffnung^^...Abwarten und Tee trinken...
Habs dennoch mal umgebaut...Wenns nicht passt,fliegts wieder raus...
Praktisch wärs, wenn man genau wüsste, welche Funktion welche Spalte der Tabelle denn nun hat, dann wäre so eine Rallye viel einfacher und DB schonender, da jede erfolgreiche Teilnahme ja eh gespeichert wird, und man die Daten daraus nehmen könnte.
Da gibt es ja nicht so viel. Die Tabellen die es gibt die KB
betreffen sind:
vms_kingbonus_aktionen
vms_kingbonus_config
vms_kingbonus_track
Ich denke die namen der Tabellen sprechen für sich. Probehalber wurde mal an Aktionen teilgenommen und wurden in vms_kingbonus_track eingetragen.
Müßt man dann nur noch iwie gebacken bekommen, dass nach Tracking, die Gutschrift erfolgt.
Da es ja bei Dynamischen schon zu Problemen kam und "wahrscheinlich" an die Statische nicht zu denken ist, muss wohl der "Grundgedanke" überarbeitet werden...
Aber ich nix Experte...
Wichtig für die Teilnahmen ist die vms_kingbonus_track hier gibt es folgende Felder:
id - eindeutige ID, wird hier von KingBonus übernommen, damit es gleichzeitigzum Abgleich gneutzt wird
aktion - Name der Aktion
user - userid vom teilnehmer
time - wann tauchte die aktion erstmalig im System auf / wann wurde teilgenommen
edit_time - wann wurde die Teilnahme vergütet/storniert
status - Status der Aktion (0=offen, 1=vergütet, 2=storniert)
provi - Wieviel der User bekommen hat