F1 Mod: korrekte Gewinnberechnung?
Verfasst: 04.08.2010 19:37
Hi!
Seit einiger Zeit bin ich dabei den F1 Mod und den Cash Mod zusammenzubringen. Das klappt bisher auch ganz gut. Aktuell hänge ich jedoch bei dem Problem der korrekten Berechnung des Gewinns fest und bräuchte bitte mal einen größeren Denkanstoß.
Ich habe folgendes bisher umgesetzt:
Diese Berechnung funktioniert auch korrekt.
Das ganze habe ich dann in die Platzberechnung pro Rennen eingebunden:
Das funktioniert jedoch nur ansatzweise. Solange es nur einen Gewinner pro Platz gibt, ist die Berechnung korrekt. Gibt es jedoch 2 oder mehrere pro Platz, stimmt die Berechnung nicht mehr.
Korrekt wäre es so:
Der 1. Platz bekommt 50%, der 2. Platz 30% und der 3. Platz 20% des Gewinns. Gibt es zwei 1. Plätze, entfällt der 2. Platz, der Gewinn für den 1. und 2. Platz wird addiert und durch 2 geteilt. D. h. beide 1. Plätze bekommen je 40%. Gibt es drei oder mehr 1. Plätze werden die 100% des Gewinns entsprechend geteilt. Dito das ganze für den 2. Platz. Betrifft dies den 3. Platz teilen sich halt alle dessen 20%.
Soweit so gut, nun muss nur noch berechnet werden wie viele 1. 2. oder 3. Plätze es im Rennen gibt. Das müsste sich aus der Tabelle formel_tipps und den Feldern tipp_race (hier steht die ID für das jeweilige Rennen) und tipp_points (erreichte Punktzahl des Users für dieses Rennen) berechnen lassen. Daran scheitere ich jedoch seit Stunden.
Hat hier wer die rettende Idee und verrät sie mir?
Bye
Seit einiger Zeit bin ich dabei den F1 Mod und den Cash Mod zusammenzubringen. Das klappt bisher auch ganz gut. Aktuell hänge ich jedoch bei dem Problem der korrekten Berechnung des Gewinns fest und bräuchte bitte mal einen größeren Denkanstoß.
Ich habe folgendes bisher umgesetzt:
Code: Alles auswählen
//
// Race Bet
//
if ($formel_config['show_race_bet'] == '1')
{
$sql = "SELECT COUNT(*) AS count FROM " . FORMEL_RACES_TABLE;
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, "Could not query formel_races table", "Error", __LINE__, __FILE__, $sql);
}
$total_races = $db->sql_fetchfield("count", 0, $result); // Anzahl der Rennen pro Saison
$sql = "SELECT COUNT(*) AS count FROM " . USER_GROUP_TABLE . " WHERE group_id=106";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, "Could not query formel_races table", "Error", __LINE__, __FILE__, $sql);
}
$total_tippers = $db->sql_fetchfield("count", 0, $result); // Anzahl der Tipper
$race_place_1 = $formel_config['race_place_1']; // Gewinn vom gesamten Renneinsatz in Prozent für den 1. Platz
$race_place_2 = $formel_config['race_place_2']; // Gewinn vom gesamten Renneinsatz in Prozent für den 2. Platz
$race_place_3 = $formel_config['race_place_3']; // Gewinn vom gesamten Renneinsatz in Prozent für den 3. Platz
$bet_race_sum = ($formel_config['race_bet'] * $total_tippers); // Jackpot für das aktuelle Rennen
$bet_race_place_1 = (($bet_race_sum/'100') * $race_place_1); // Gewinn für den 1. Platz aktuelles Rennen
$bet_race_place_2 = (($bet_race_sum/'100') * $race_place_2); // Gewinn für den 2. Platz aktuelles Rennen
$bet_race_place_3 = (($bet_race_sum/'100') * $race_place_3); // Gewinn für den 3. Platz aktuelles Rennen
$bet_season_sum = ($formel_config['race_season'] * $total_races * $total_tippers); // Jackpot für die Saison
$bet_season_place_1 = (($bet_season_sum/'100') * $race_place_1); // Gewinn für den 3. Platz für die Saison
$bet_season_place_2 = (($bet_season_sum/'100') * $race_place_2); // Gewinn für den 2. Platz für die Saison
$bet_season_place_3 = (($bet_season_sum/'100') * $race_place_3); // Gewinn für den 3. Platz für die Saison
}
Das ganze habe ich dann in die Platzberechnung pro Rennen eingebunden:
Code: Alles auswählen
while ($row = $db->sql_fetchrow($result))
{
$real_rank++;
if($row['tipp_points'] != $previous_points)
{
$rank = $real_rank;
$previous_points = $row['tipp_points'];
}
if ($rank === 1)
{
$rank_img = '<img src="' . $first_rank . '" alt="1. Platz" title="1. Platz" />';
$tipper_won_race = $bet_race_place_1; // Gewinn für den 1. Platz
}
elseif ($rank === 2)
{
$rank_img = '<img src="' . $secound_rank . '" alt="2. Platz" title="2. Platz" />';
$tipper_won_race = $bet_race_place_2; // Gewinn für den 2. Platz
}
elseif ($rank === 3)
{
$rank_img = '<img src="' . $third_rank . '" alt="3. Platz" title="3. Platz" />';
$tipper_won_race = $bet_race_place_3; // Gewinn für den 3. Platz
}
else
{
$rank_img = $rank;
$tipper_won_race = '0';
}
$tipp_user_row = get_userdata($row['tipp_user']);
$tipp_username = $tipp_user_row['username'];
$tipp_userpoints_race = $row['tipp_points'];
$template->assign_block_vars('top_tippers_race', array(
'RANK_RACE' => $rank_img,
'TIPPER_NAME_RACE' => $tipp_username,
'TIPPER_POINTS_RACE' => $tipp_userpoints_race,
'TIPPER_WON_RACE' => $tipper_won_race // Höhe des jeweiligen Gewinns für das aktuelle Rennen
)
);
}
$db->sql_freeresult($result);
Korrekt wäre es so:
Der 1. Platz bekommt 50%, der 2. Platz 30% und der 3. Platz 20% des Gewinns. Gibt es zwei 1. Plätze, entfällt der 2. Platz, der Gewinn für den 1. und 2. Platz wird addiert und durch 2 geteilt. D. h. beide 1. Plätze bekommen je 40%. Gibt es drei oder mehr 1. Plätze werden die 100% des Gewinns entsprechend geteilt. Dito das ganze für den 2. Platz. Betrifft dies den 3. Platz teilen sich halt alle dessen 20%.
Soweit so gut, nun muss nur noch berechnet werden wie viele 1. 2. oder 3. Plätze es im Rennen gibt. Das müsste sich aus der Tabelle formel_tipps und den Feldern tipp_race (hier steht die ID für das jeweilige Rennen) und tipp_points (erreichte Punktzahl des Users für dieses Rennen) berechnen lassen. Daran scheitere ich jedoch seit Stunden.
Hat hier wer die rettende Idee und verrät sie mir?
Bye