F1 Mod: korrekte Gewinnberechnung?

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

F1 Mod: korrekte Gewinnberechnung?

Beitrag von Dungeonwatcher »

Hi! :cool:

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
}
Diese Berechnung funktioniert auch korrekt.

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);
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
Antworten

Zurück zu „phpBB 2.0: Mod Support“