Daily Lucky Numbers:
3
5
8
30
31
34

High Scores/Stats Block (Vertical)

Started by Chen Zhen, July 06, 2013, 03:09:31 PM

Previous topic - Next topic

Chen Zhen

PHP Portal Block Code For SMF Arcade 2.5

Download the attached image
...and using your FTP platform - add the file to:
Themes / default / images / arc_icons


<<<<<<<<<<>>>>>>>>>>

High Scores/Stats PHP Block:

There is an adjustable setting near the start of the block to select if you want to display high scores only:
$mydisplays = true;
PHP Block Code:
global $settings, $scripturl, $sourcedir, $boardurl, $smcFunc, $modSettings, $boarddir;
require_once($boarddir . '/ArcadeSources/ArcadeStats.php');

$no = 10; //number of top players to show
$txtplay = "The Top Players"; // change "The Top Players" to your language
$txtwin = "Number Of Wins :";// change "Number Of Wins :" to your language
$txtlate = "Latest High Score by ";// change "Latest High Score set by" to your language
$txtwit = "with ";// change "with" to your language
$txton = "on ";// change "on" to your language
$arcade_icon = 'arcade.jpg';

$no_games = 8;
$icons_per_row = 4;
$mydisplays = true;
$check_game = !empty($_REQUEST['game']) ? (int) $_REQUEST['game'] : 0;
$no_games = !empty($check_game) ? 28 : 12;

$request = $smcFunc['db_query']('', '
    SELECT  game.id_game, game.game_name, game.thumbnail, game.game_directory,
    IFNULL(mem.id_member, 0) AS id_member, IFNULL(mem.real_name, {string:rname}) AS player_name, score.score
    FROM {db_prefix}arcade_scores AS score
    LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = score.id_member)
    RIGHT JOIN {db_prefix}arcade_games AS game ON (game.id_game = score.id_game)
    ORDER BY champion_from DESC
    LIMIT 0,1',
    array('rname' => '')
);
if(!$request)
  die("Could not get the newest champ");

$row = $smcFunc['db_fetch_assoc']($request);
$smcFunc['db_free_result']($request);

if(isset($row['game_directory']))
  $row['game_directory']=$row['game_directory']."/";

//newest champ details
$playerid = $row['id_member'];
$player = $row['player_name'];
$game_id = $row['id_game'];
$game_name = $row['game_name'];
$score = $row['score'];
$game_pic = $modSettings['gamesUrl'] . '/' . $row['game_directory'] . '/' . $row['thumbnail'];
$arcadePic = file_exists($settings['default_theme_dir'] . '/images/arc_icons/' . $arcade_icon) ? '<img style="border: 0px;height: 3em;width: 8em;" src="' . $settings['default_theme_url'] . '/images/arc_icons/' . $arcade_icon . '" alt="" />' : '<img style="border: 0px;height: 5em;width: 5em;" src="' . $settings['default_theme_url'] . '/images/arc_icons/thearcade.png" alt="" />';
$bp=ArcadeStats_BestPlayers($no);
for ($x=1;$x<11;$x++) {
    $imgFile = file_exists($settings['default_theme_dir'] . '/images/arc_icons/' . $x . '.gif') ? $settings['default_theme_url'] . '/images/arc_icons/' . $x . '.gif' : $settings['default_theme_url'] . '/images/arc_icons/trophy.png';
    $trophy[$x] = '<img src="' . $imgFile . '" border= "0" alt="#' . $x . ' Score" />';
}
$score_poss=0; //players position

echo '
    <script type="text/javascript">
        var delayb4scrollx = 2000;
        var marqueespeedx = 1;
        var pauseitx = 1;
        var copyspeedx = marqueespeedx;
        var pausespeedx = pauseitx == 0 ? copyspeedx : 0;
        var actualheightx = "";

        function scrollmarqueex(){
            if (parseInt(cross_marqueex.style.top)>(actualheightx*(-1)+8))
                cross_marqueex.style.top=parseInt(cross_marqueex.style.top)-copyspeedx+"px"
            else
                cross_marqueex.style.top=parseInt(marqueeheightx)+8+"px"
        }

        function initializemarqueex(){
            cross_marqueex = document.getElementById("vmarqueex");
            cross_marqueex.style.top = 0;
            marqueeheightx = document.getElementById("marqueecontainerx").offsetHeight;
            actualheightx = cross_marqueex.offsetHeight;
            if (window.opera || navigator.userAgent.indexOf("Netscape/7")!=-1){
                cross_marqueex.style.height = marqueeheightx+"px";
                cross_marqueex.style.overflow = "scroll";
                return;
            }
            setTimeout(\'lefttime=setInterval("scrollmarqueex()",30)\', delayb4scrollx);
        }

        if (window.addEventListener)
            window.addEventListener("load", initializemarqueex, false);
        else if (window.attachEvent)
            window.attachEvent("onload", initializemarqueex);
        else
            window.onload = initializemarqueex();
    </script>
<div style="overflow: hidden;">
    <div style="display:table;width: 100%;text-align: center;overflow: hidden;">
        <div style="display: table-row;">
            <div style="display: table-cell;text-align: center;">
                <span style="display: block;line-height: 1em;"></span>
                <a href="', $scripturl, '?action=arcade">
                    ', $arcadePic, '
                </a>
                <span style="display: block;line-height: 2em;"></span>
            </div>
        </div>
    </div>
</div>';
if ($mydisplays == true || $check_game == true) {
    /* Start 1 of 4 random stats display above top 10 marquee  */
    $random_games_choice = random_int(1,4);
    $games_choice = 'games'.$random_games_choice;
    $curr_position = 0;
    $games_choice($no_games,$curr_position,$icons_per_row, $modSettings['gamesUrl'], $no);
    /* END random stats display */
}
if ($check_game == false)
{
    echo '
<div class="centertext" style="padding-left: 0.25rem;overflow: hidden;">
    <div id="marqueecontainerx" style="position: relative; width: 99%; height:200px; overflow: hidden; border: 0px;" onmouseover="copyspeedx=pausespeedx" onmouseout="copyspeedx=marqueespeedx">
        <div id="vmarqueex" style="position: absolute; width: 98%;">
            <div class="centertext">
                <a href="', $scripturl, '?action=arcade;sa=play;game=', $game_id, '">
                    <img src="' . $game_pic . '" border="0" alt="' . $game_name . '" style="width: 4em;height: 4em;"/>
                </a>
                <span style="display: block;line-height: 1em;"></span>', $txtlate, '<span style="display: block;line-height: 1em;"></span>
                <a href="', $scripturl, '?action=profile;u=', $playerid, '">', $player, '</a>
                <span style="display: block;line-height: 1em;"></span>
                ', $txtwit, ' ', $score, ' ', $txton, '
                <span style="display: block;line-height: 1em;"></span>', $game_name, '
                <span style="display: block;line-height: 1em;"></span>
                <div style="width: 20%;margin: 0 auto;line-height: 0.2em;"><hr style="border-top: 1px dashed;" /></div>
                <span style="display: block;line-height: 1em;"></span>
                <span style="font: italic small-caps bold 12px/30px Georgia, serif;padding: 1em;">', $txtplay, '</span>
                <span style="display: block;line-height: 2em;"></span>';
    foreach ($bp as $out) {
        $score_poss++;
        if ($score_poss > 10)
            $trophy[$score_poss] = '[' . $score_poss . ']';

        echo $trophy[$score_poss], '
                <span style="display: block;line-height: 1em;"></span>
                ' . $out['link'] . '
                <span style="display: block;line-height: 1em;"></span>
                ' . $txtwin . ' ' . $out['champions'] . '
                <span style="display: block;line-height: 1em;"></span>
                <div style="width: 30%;margin: 0 auto;line-height: 0.2em;"><hr style="border-top: 1px dashed;" /></div>
                <span style="display: block;line-height: 1em;"></span>';
    }
}

echo '
            </div>
        </div>
    </div>
</div>';

/* START - Display Functions */
function games3($no_games,$curr_position,$icons_per_row, $gamesUrl,$no)
{
    //show the latest games
    global $smcFunc, $scripturl;

    echo '
    <div style="width: 100%;margin: 0 auto;text-align: center;overflow: hidden;">Latest Games
        <span style="display: block;line-height: 1em;"></span>
        <div style="display: table;border-spacing: 5px;margin: 0 auto;">
            <div style="display: table-row;">';

    $result = $smcFunc['db_query']('', '
        SELECT id_game, game_name, thumbnail, game_directory
        FROM {db_prefix}arcade_games
        ORDER BY id_game DESC, game_name DESC
        LIMIT 0,{int:no}',
        array(
            'no' => $no_games,
        )
    );

    while ($game = $smcFunc['db_fetch_assoc']($result))
    {
        $game_thumb = $gamesUrl . '/' . $game['game_directory'] . '/' . $game['thumbnail'];
        if($curr_position == $icons_per_row)
        {
            echo '
                </div>
                <div style="display: table-row;">';
            $curr_position=0;
        }
        echo'
                <div style="display: table-cell;padding: 2px;">
                    <a href="'.$scripturl.'?action=arcade;sa=play;game='.$game['id_game'].'">
                    <img src="'.$game_thumb.'" alt="'.$game['game_name'].'" style="border: 0px;width: 30px;height: 30px;" title="Play '.$game['game_name'].'" /></a>
                </div>';
      $curr_position++;
  }
  $smcFunc['db_free_result']($result);

  echo '
            </div>
        </div>
    </div>';
}

function games1($no_games,$curr_position,$icons_per_row, $gamesUrl,$no)
{
    //show most played games (one score version only)
    global $smcFunc, $scripturl;

    echo '
    <div style="width: 100%;margin: 0 auto;text-align: center;overflow: hidden;">Most Played
        <span style="display: block;line-height: 1em;"></span>
        <div style="display: table;border-spacing: 5px;margin: 0 auto;">
            <div style="display: table-row;">';

    $result = $smcFunc['db_query']('', '
        SELECT id_game, game_name, thumbnail, game_directory, num_plays
        FROM {db_prefix}arcade_games
        ORDER BY num_plays DESC , game_name ASC
        LIMIT 0,{int:no}',
        array(
            'no' => $no_games,
        )
    );

    while ($game = $smcFunc['db_fetch_assoc']($result))
    {
        $game_thumb = $gamesUrl . '/' . $game['game_directory'] . '/' . $game['thumbnail'];
        if($curr_position == $icons_per_row)
        {
            echo '
                </div>
                <div style="display: table-row;">';
            $curr_position=0;
        }
        echo'
                <div style="display: table-cell;padding: 2px;">
                    <a href="'.$scripturl.'?action=arcade;sa=play;game='.$game['id_game'].'">
                    <img src="'.$game_thumb.'" alt="'.$game['game_name'].'" style="border: 0px;width: 30px;height: 30px;" title="Play '.$game['game_name'].'" /></a>
                </div>';
        $curr_position++;
    }

    $smcFunc['db_free_result']($result);

  echo '
            </div>
        </div>
    </div>';
}

function games4($no_games,$curr_position,$icons_per_row, $gamesUrl,$no)
{
  //show least played games (one score version only)
  global $smcFunc, $scripturl;

  echo '
    <div style="width: 100%;margin: 0 auto;text-align: center;overflow: hidden;">Least Played
        <span style="display: block;line-height: 1em;"></span>
        <div style="display: table;border-spacing: 5px;margin: 0 auto;">
            <div style="display: table-row;">';

    $result = $smcFunc['db_query']('', '
        SELECT id_game, game_name, thumbnail, game_directory, num_plays
        FROM {db_prefix}arcade_games
        ORDER BY num_plays ASC , game_name ASC
        LIMIT 0,{int:no}',
        array(
            'no' => $no_games,
        )
    );

    while ($game = $smcFunc['db_fetch_assoc']($result))
    {
        $game_thumb = $gamesUrl . '/' . $game['game_directory'] . '/' . $game['thumbnail'];
        if($curr_position == $icons_per_row)
        {
            echo '
                </div>
                <div style="display: table-row;">';
            $curr_position=0;
        }
        echo '
                <div style="display: table-cell;padding: 2px;">
                    <a href="'.$scripturl.'?action=arcade;sa=play;game='.$game['id_game'].'">
                    <img src="'.$game_thumb.'" alt="'.$game['game_name'].'" style="border: 0px;width: 30px;height: 30px;" title="Play '.$game['game_name'].'" /></a>
                </div>';
        $curr_position++;
    }
    $smcFunc['db_free_result']($result);

  echo '
            </div>
        </div>
    </div>';
}

function games2($no_games,$curr_position,$icons_per_row, $gamesUrl,$no)
{
    //show best rated games
    global $smcFunc, $scripturl;

    echo '
    <div style="width: 100%;margin: 0 auto;text-align: center;overflow: hidden;">Top Rated
    <span style="display: block;line-height: 1em;"></span>
        <div style="display: table;border-spacing: 5px;margin: 0 auto;">
            <div style="display: table-row;">';

    $result = $smcFunc['db_query']('', '
        SELECT id_game, game_name, thumbnail, game_directory, game_rating
        FROM {db_prefix}arcade_games
        ORDER BY game_rating DESC , game_name ASC
        LIMIT 0,{int:no}',
        array(
            'no' => $no_games,
        )
    );

    while ($game = $smcFunc['db_fetch_assoc']($result))
    {
        $game_thumb = $gamesUrl . '/' . $game['game_directory'] . '/' . $game['thumbnail'];
        if($curr_position == $icons_per_row)
        {
            echo '</div><div style="display: table-row;">';
            $curr_position=0;
        }
        echo'
                <div style="display: table-cell;padding: 2px;">
                    <a href="'.$scripturl.'?action=arcade;sa=play;game='.$game['id_game'].'">
                    <img src="'.$game_thumb.'" alt="'.$game['game_name'].'" style="border: 0px;width: 30px;height: 30px;" title="Play '.$game['game_name'].'" /></a>
                </div>';
        $curr_position++;
    }

    $smcFunc['db_free_result']($result);

  echo '
            </div>
        </div>
    </div>';
}

I included an extra icon for this block for SMF Arcade 2.65 or prior that can be put into ../Themes/default/images/arc_icons.
This image will already be included in SMF Arcade 2.66 +.

showzamani

I've just started using the arcade plugin but I'm going to solve it

vince

and will this block work with the new arcade thats coming out ??

Chen Zhen


I finally got around to updating this block code which will work with the latest version of the Arcade.