Go Back   vb.org Archive > vBulletin Modifications > vBulletin 4.x Modifications > vBulletin 4.x Add-ons

Reply
 
Thread Tools
v3 Arcade - Professional vBulletin Gaming (vB4) Details »»
v3 Arcade - Professional vBulletin Gaming (vB4)
Version: 2.0.3A, by KW802 KW802 is offline
Developer Last Online: Nov 2021 Show Printable Version Email this Page

Category: Add-On Releases - Version: 4.0.8 Rating:
Released: 11-04-2010 Last Update: 06-10-2011 Installs: 545
DB Changes Uses Plugins Auto-Templates
Additional Files  
No support by the author.

v3 Arcade is now a member of the vBadvanced family!

http://www.vbadvanced.com/forum/showthread.php?t=47571

The support forums & data from v3Arcade.com have been merged into the vBadvanced.com site.



=================================
v3 Arcade for vBulletin 4.x.x
For vBulletin 3.x.x, please see here.
=================================

Please note... until v3Arcade.com is upgraded to vBulletin 4, some demo sites can be found here. Also, because of styling changes introduced in vB 4.0.8 to allow customized user profile pages, this version requires 4.0.8+ to be installed.

"v3 Arcade" is the premiere arcade system written specifically for vBulletin. It's coded from scratch - not a port of an older version - and because it was coded specifically for vBulletin it uses the product system for code modifications & utilizes AJAX technology throughout. Here's a brief rundown of the features in this version of v3 Arcade.

Supports MochiAds, v3 Arcade and IBPArcade games!
  • Download THOUSANDS of *legal* free and premium games directly from Mochi Media to your v3 Arcade installation. Earn money from people playing games on your site! With just a few mouse clicks you download games directly from within your ACP or from the Mochi Media web site. You have to check it out it to see just how easy it is.
  • Tournaments! Challenge your friends to see who the champ is!
  • Integrated arcade statistics on your user's profile pages!
  • AJAX based instant ratings, for simple to use game ratings.
  • AJAX based inline score moderation.
  • AJAX based instant game searching.
  • Tabbed, customizable categories.
  • Challenge system for one-on-one contests.
  • User-permission based settings for email/PM notification, challenge settings.
  • Streamlined viewing modes for users with lower resolutions.
  • AJAX based quick stats, for viewing statistics by passing the cursor over a username.Mass import tools for importing games in bulk.
  • Reverse and decimal based scoring.
  • Arcade-only closure with customizable message.
  • Per game criteria, allows you to control access to games by reputation, posts, registration length.
  • Postbit based awards.
  • Personalized recommendations for other games users might like, based on what they?re playing.
  • Quick stats, letting a user know how many other scores are above and below theirs.
  • Score ranking.
  • Admin customizable ?score feedback?, displays a message based on how well as user has done.
  • Numerous Admin CP settings to control things like popup opacity, maximum comment length, hover delay length, and numerous other behaviors.
  • Full admin control over the types of content allowed in comments (BB code, HTML, smilies, etc.)
  • Usergroup based access permissions.
  • Fully phrased, for each translation into other languages.
  • An ever growing collection of third party add-ons
  • A slick, professional layout.
  • Edit-free template updates!
  • User ability to specify viewing resolution while playing games.
v3 Arcade for vBulletin 4 also has some feature differences versus v3 Arcade for vBulletin 3. Currently that list includes....
  • The separate Arcade navbar has been replaced with the options being moved up to the standard vB navbar. Be sure to turn on the navbar link! (ACP => v3 Arcade => v3 Arcade Settings => v3 Arcade General Settings => Navbar Link Position)
  • When viewing a game categories other than the 'All' category, the category name will now be included in the navbar breadcrumbs.
  • Added a new template "v3arcade_postbit_userid_trophy_wrapper" to allow adding some HTML around the arcade award images in the postbit.
  • The category tabs shown on the main page will use the vB styling instead of their own defined styles. As we go forward the vB4 version of v3A will lose more & more of it's custom styling and instead use more of the new vB4 styling features elements.
  • New option to display a "New" game category tab that will display all games in newest to oldest order. In addition to the new tab a "New Games" link will also be shown in the vB "What's New" navbar link. (ACP => v3 Arcade => v3 Arcade Settings => v3 Arcade Homepage Settings => Display "New" Category Tab)
=================================
Branding Free
=================================
All v3 Arcade installations carry and require a small "v3 Arcade" logo in the footer, as well as the text "Powered by v3 Arcade" which links to http:www.v3arcade.com. For information on legally removing the branding, please visit www.v3arcade.com.


=================================
www.v3arcade.com
=================================
If you're looking for more games, add-ons, support, tutorials, or anything Arcade related - www.v3arcade.com is the place to go.


=================================
Copyright
=================================
All code & images distributed in this zip is Copyright ?2010 CinVin, with the following exceptions:
  • class_tar.php - Credits within.
  • All games & associated images, unless otherwise noted.
=================================
Many thanks to...
=================================
  • All branding-free customers and donors, for supporting the project!
  • John, the original founder behind the v3 Arcade platform.
  • Tigga, the v3 Arcade lead developer (as well as all of the vBadvanced products! )
  • Everybody who has provided feedback & suggestions to help us make v3 Arcade to be the best arcade platform.
=================================
Change Log
=================================
For the complete change log, please click here. The change log is getting too big to include inline with this thread.

Download Now

File Type: zip v3_arcade_for_vbulletin_2_0_3A_(vb4).zip (254.0 KB, 2448 views)

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.
7 благодарности(ей) от:
chocolate angel, GamBun, K4GAP, KevinL, MichaelDance, rootsxrocks, Sunka

Comments
  #52  
Old 11-07-2010, 06:06 PM
K4GAP K4GAP is offline
 
Join Date: Mar 2008
Posts: 1,255
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I dumped all the old games I had that were in .rar format and now have 300 V3 games that are in the .zip format. I put them in the FORUMROOT/admincp/games folder but when I try to import them I get message saying "There are no more games to import".

So, can anyone help?
Reply With Quote
  #53  
Old 11-07-2010, 08:49 PM
KW802's Avatar
KW802 KW802 is offline
 
Join Date: Jul 2003
Location: A galaxy far, far away...
Posts: 1,450
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

@GaryT: Two major questions.... are you putting the zip files in that folder or the unzipped files? (See Gemma's post a few post back for game installation steps). The other thing is how old those files. The .php file should be a really small file with just a few variables in it; if it looks like the .php file that was posted earlier that was an actual install script then you'll have issues just like you would have with the .rar files.
Reply With Quote
  #54  
Old 11-07-2010, 09:44 PM
Robbed Robbed is offline
 
Join Date: Oct 2005
Posts: 329
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks, import went well.
Reply With Quote
  #55  
Old 11-07-2010, 09:57 PM
Doctor Death Doctor Death is offline
 
Join Date: Dec 2005
Posts: 449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Gemma View Post
Sorry I thought you meant on the highscores list

Open v3ARCADE_Main and find
Code:
<vb:if condition="$show['avatar']">
					<div>
						<vb:if condition="!$player['userid']">
							<img class="v3_gameicon" src="{vb:raw player.avatarurl}" alt="" border="0"/>
						<vb:else />
							<a href="{vb:link member, {vb:raw bbuserinfo}}<vb:if condition="$vboptions['friendlyurl'] < 3">&amp;<vb:else />?</vb:if>tab=v3arcade_stats"><img class="v3_gameicon" src="{vb:raw player.avatarurl}" alt="" border="0" /></a>
						</vb:if>
					</div>
				</vb:if>

Replace it with
Code:
<vb:if condition="$show['avatar']">
					<div>
						<vb:if condition="!$player['userid']">
							<img class="v3_gameicon" src="{vb:raw player.avatarurl}" height="xxx" alt="" border="0"/>
						<vb:else />
							<a href="{vb:link member, {vb:raw bbuserinfo}}<vb:if condition="$vboptions['friendlyurl'] < 3">&amp;<vb:else />?</vb:if>tab=v3arcade_stats"><img class="v3_gameicon" src="{vb:raw player.avatarurl}" height="xxx" alt="" border="0" /></a>
						</vb:if>
					</div>
				</vb:if>
Changing the xxx (2 instances) to whatever suits your forums
that worked great. 175 was the magic number.

Recommend putting that in configuration in next version
Reply With Quote
  #56  
Old 11-07-2010, 09:59 PM
Doctor Death Doctor Death is offline
 
Join Date: Dec 2005
Posts: 449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for such amazingly quick response....

One more issue on import of TAR games (from IPB).

I put all the TAR files in the right place and CHMOD'd folders to 777 as specificed.

Upon import, I get this error


Quote:
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 6268724 bytes) in /home/xxxhbabh/public_html/forums/includes/v3arcade_class_tar.php on line 150
It does this regardless of how many I try to import (1, 10 or 100).

Thoughts?
Reply With Quote
  #57  
Old 11-07-2010, 10:12 PM
Gemma's Avatar
Gemma Gemma is offline
 
Join Date: Apr 2004
Location: Scotland
Posts: 1,229
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Try editing your php.ini file settings to something like

max_execution_time = 30 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 128M ; Maximum amount of memory a script may consume (8MB)

Or, if you don't have access to your php.ini file, temporarily up your limits by editing your includes/config.php file and add this lines right under the <?php line:

ini_set('memory_limit', 128 * 1024 * 1024);

You may need to change the 128 to 256 or 512

See if that helps
Reply With Quote
  #58  
Old 11-07-2010, 10:42 PM
Doctor Death Doctor Death is offline
 
Join Date: Dec 2005
Posts: 449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Gemma View Post
Try editing your php.ini file settings to something like

max_execution_time = 30 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 128M ; Maximum amount of memory a script may consume (8MB)

Or, if you don't have access to your php.ini file, temporarily up your limits by editing your includes/config.php file and add this lines right under the <?php line:

ini_set('memory_limit', 128 * 1024 * 1024);

You may need to change the 128 to 256 or 512

See if that helps
That worked perfectly with the number 512.

I have to say how great it is to get advice from someone who has a clue.

Thanks, great work.
Reply With Quote
  #59  
Old 11-07-2010, 11:41 PM
Doctor Death Doctor Death is offline
 
Join Date: Dec 2005
Posts: 449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by cory_booth View Post
And to contribute to everyone here with CMS.
If you would like to add a Widget to your CMS.

Download the CMPS module here:
http://www.v3arcade.com/forums/showthread.php?t=3502

Open the .xml file and manually add the templates to your skin.
Just look for the template name and copy everything between the [CDATA] tags.

Then create a new PHP widget and paste this:

PHP Code:
global $vbulletin$bbcode$parser$path$db;
$g_limit 5;
$g_champs_limit 5;
$g_news_limit 5;
$g_scores_limit 5;

function 
get_games ($as_handle$as_title$limit) {
    global 
$vbulletin;

    switch (
$as_handle) {
        case 
'recent':
            
$orderby "dateadded DESC";
            break;
        case 
'played':
            
$orderby "sessioncount DESC";
            break;
        case 
'popular':
            
$orderby "votepoints DESC";
            break;
        default:
            
$orderby "gameid ASC";
            break;
    }


    
$getgames $vbulletin->db->query("
            SELECT games.* FROM " 
TABLE_PREFIX "v3arcade_games AS games
            ORDER BY " 
$orderby "
            LIMIT 
$limit
    "
);

    while (
$game $vbulletin->db->fetch_array($getgames))
    {
            
$game['gamename'] = fetch_trimmed_title(stripslashes($game['title']),$maxtitlechars);
            
$game['gamedate'] = vbdate($vbulletin->options['dateformat'], $game['dateadded']);
            
$getbgrow exec_switch_bg();

        switch (
$as_handle) {
            case 
'recent':
                
$as_game_data $game['gamedate'];
                break;
            case 
'played':
                
$as_game_data "Played " $game['sessioncount'] . " times";
                break;
            case 
'popular':
                
$as_game_data $game['votepoints'] . " votes";
                break;
            default:
                
$as_game_data "";
                break;
        }

            
//eval('$as_gamebits .= "' . fetch_template('adv_portal_as_gamebits') . '";');
            
$templater vB_Template::create('adv_portal_as_gamebits');
        
$templater->register('as_game_data',$as_game_data);
          
$templater->register('game',$game);
          
$as_gamebits .= $templater->render();

    }
    
$vbulletin->db->free_result($getgames);

     
// eval('$gametable = "' . fetch_template("adv_portal_as_{$as_handle}_gametable") . '";');
    
$templater vB_Template::create('adv_portal_as_' $as_handle '_gametable');
     
$templater->register('as_title',$as_title);
     
$templater->register('as_gamebits',$as_gamebits);
    
$gametable $templater->render();
    return 
$gametable;
}

function 
get_champs ($limit) {
    global 
$vbulletin;

    
$champs $vbulletin->db->query_read("
            SELECT COUNT(games.highscorerid) AS count, user.username, user.userid
        FROM " 
TABLE_PREFIX "v3arcade_games AS games
            LEFT JOIN " 
TABLE_PREFIX "user AS user ON user.userid = games.highscorerid
            WHERE user.userid IS NOT NULL
            GROUP BY user.username, user.userid
        ORDER BY count DESC, user.userid ASC
        LIMIT " 
$limit
    
);

    
$row '0';
    
$awards '0';
    
$leaders '0';
    while (
$champ $vbulletin->db->fetch_array($champs)) {
         
$leaders++;
        if (
$awards != $champ['count']) {
            
$row $leaders;
        }
        
$awards $champ['count'];
        
$getbgrow exec_switch_bg();
        
//eval('$as_champbits .= "' . fetch_template('adv_portal_as_champbits') . '";');
        
$templater vB_Template::create('adv_portal_as_champbits');
        
$templater->register('getbrow',$getbrow);
          
$templater->register('champ',$champ);
          
$as_champbits .= $templater->render();
    }
    
$vbulletin->db->free_result($champs);

    
//eval('$champstable = "' . fetch_template("adv_portal_as_champstable") . '";');
    
$templater vB_Template::create('adv_portal_as_champstable');
     
$templater->register('as_champbits',$as_champbits);
    
$champstable $templater->render();
    return 
$champstable;
}

function 
get_random_game () {
    global 
$vbulletin;

    
$random_game $vbulletin->db->query_first("
        SELECT gameid,title,description,stdimage,highscore,user.userid,user.username
        FROM " 
TABLE_PREFIX "v3arcade_games AS games
            LEFT JOIN " 
TABLE_PREFIX "user AS user ON user.userid = games.highscorerid
        ORDER BY RAND()
        LIMIT 1
    "
);

    
$as_random_gameid $random_game[gameid];
        
$as_random_gametitle $random_game[title];
        
$as_random_stdimage $random_game[stdimage];
        
$as_random_description $random_game[description];
    if(
$random_game[highscore] == 0)
    {
        
$as_random_highscore     "No Score";
        
$as_random_highscorer    "";
        
$as_random_userid    "";
    }
    else
    {
        
$as_random_highscore     intval($random_game[highscore]);
        
$as_random_highscorer    "(" $random_game[username] . ")";
        
$as_random_userid    $random_game[userid];
    }
    
$vbulletin->db->free_result($random_game);
    
//eval('$random_table = "' . fetch_template('adv_portal_as_random') . '";');
    
$templater vB_Template::create('adv_portal_as_random');
     
$templater->register('as_random_gameid',$as_random_gameid);
     
$templater->register('as_random_gametitle',$as_random_gametitle);
     
$templater->register('as_random_highscore',$as_random_highscore);
     
$templater->register('as_random_userid',$as_random_userid);
     
$templater->register('as_random_highscorer',$as_random_highscorer);
     
$templater->register('as_random_stdimage',$as_random_stdimage);
     
$templater->register('as_random_description',$as_random_description);
    
$random_table $templater->render();
    return 
$random_table;
}

function 
get_latest_champs ($limit)
{
    global 
$vbulletin$bbcode_parser;

    
//var_dump($vbulletin);
    //highlight_file('./modules/arcadestats.php');
    //exit;
    
$news_items $vbulletin->db->query_read("
        SELECT *
        FROM " 
TABLE_PREFIX "v3arcade_news
        WHERE newstext LIKE '%is the new%'
        ORDER BY datestamp DESC
        LIMIT 
$limit
    "
);

    while (
$news_item $vbulletin->db->fetch_array($news_items)) {
           
//$as_news_text =  $bbcode_parser->do_parse($news_item['newstext'], 1, 1, 1, 0);
        
$as_news_text $news_item['newstext'];
        
$as_news_text str_replace("arcade.php"$vbulletin->options['bburl'] . "/arcade.php"$as_news_text);

        
$as_news_date vbdate($vbulletin->options['dateformat'],$news_item['datestamp']);
        
$as_news_time vbdate($vbulletin->options['timeformat'],$news_item['datestamp']);
        
$getbgrow exec_switch_bg();
        
//eval('$as_newsbits .= "' . fetch_template('adv_portal_as_newsbits') . '";');
        
$templater vB_Template::create('adv_portal_as_newsbits');
          
$templater->register('getbrow',$getbrow);
          
$templater->register('as_news_text',$as_news_text);
          
$templater->register('as_news_date',$as_news_date);
          
$templater->register('as_news_time',$as_news_time);
          
$as_newsbits .= $templater->render();

    }
    
$vbulletin->db->free_result($news_items);

    
//eval('$news_table = "' . fetch_template('adv_portal_as_newstable') . '";');
    
$templater vB_Template::create('adv_portal_as_newstable');
     
$templater->register('as_newsbits',$as_newsbits);
     
$news_table $templater->render();
    return 
$news_table;
}

function 
get_latest_scores ($limit)
{
    global 
$vbulletin;

    
$latest_scores $vbulletin->db->query_read("
        SELECT sessions.userid, sessions.gamename, sessions.gameid, sessions.score, sessions.start, sessions.finish,
            user.username,
            games.title
        FROM " 
TABLE_PREFIX "v3arcade_sessions as sessions
        LEFT JOIN " 
TABLE_PREFIX "user AS user
            ON (sessions.userid = user.userid)
        LEFT JOIN " 
TABLE_PREFIX "v3arcade_games as games
            on (sessions.gameid = games.gameid)
        WHERE sessions.finish <> 0
        ORDER BY  sessions.sessionid DESC
        LIMIT 
$limit
    "
);

    while (
$latest_score $vbulletin->db->fetch_array($latest_scores)) {
        
$as_score_userid $latest_score['userid'];
        
$as_score_gameid $latest_score['gameid'];
        
$as_score_name $latest_score['username'];
        
$as_score_score intval($latest_score['score']);
        
$as_score_gametitle $latest_score['title'];
        
$as_score_date vbdate($vbulletin->options['dateformat'],$latest_score['finish']);
        
$as_score_time vbdate($vbulletin->options['timeformat'],$latest_score['finish']);
        
//echo "foo: $as_score_gametitle<br>\n";
        
$getbgrow exec_switch_bg();
        
//eval('$as_scorebits .= "' . fetch_template('adv_portal_as_scorebits') . '";');
        
$templater vB_Template::create('adv_portal_as_scorebits');
          
$templater->register('getbrow',$getbrow);
          
$templater->register('as_score_userid',$as_score_userid);
          
$templater->register('as_score_name',$as_score_name);
          
$templater->register('as_score_score',$as_score_score);
          
$templater->register('as_score_gameid',$as_score_gameid);
          
$templater->register('as_score_gametitle',$as_score_gametitle);
          
$templater->register('as_score_date',$as_score_date);
          
$templater->register('as_score_time',$as_score_time);
          
$as_scorebits .= $templater->render();
    }
    
$vbulletin->db->free_result($latest_scores);

    
//eval('$score_table = "' . fetch_template('adv_portal_as_scoretable') . '";');
    
$templater vB_Template::create('adv_portal_as_scoretable');
     
$templater->register('as_scorebits',$as_scorebits);
     
$score_table $templater->render();
    return 
$score_table;
}

$as_score_table get_latest_scores($g_scores_limit);
$as_news_table get_latest_champs($g_news_limit);
$as_random_table get_random_game();
$as_champs_table get_champs($g_champs_limit);
$as_recent_table get_games("recent","Most Recent"$g_limit);
$as_played_table get_games("played","Most Played"$g_limit);
$as_popular_table get_games("popular","Most Popular"$g_limit);

$collapseobj_arcadestats $vbcollapse['collapseobj_arcadestats'];
$collapseimg_arcadestats $vbcollapse['collapseimg_arcadestats'];

//eval('$home[$mods[\'modid\']][\'content\'] .= "' . fetch_template('adv_portal_arcadestats') . '";');
$templater vB_Template::create('adv_portal_arcadestats');
$templater->register('as_score_table',$as_score_table);
$templater->register('as_news_table',$as_news_table);
//$templater->register('as_random_table',$as_random_table);
//$templater->register('as_champs_table',$as_champs_table);
//$templater->register('as_recent_table',$as_recent_table);
$templater->register('as_played_table',$as_played_table);
$templater->register('as_popular_table',$as_popular_table);
$output $templater->render(); 
Couple of notes:
1st... This isn't my code...
2nd... I commented out the BB_Code parse for the "news" since I don't know the global call for the do_parse command.
3rd... I did some edits to the templates to make mine fit nicely on the side.
I would like to get this widget working, but the instructions arent that clear.

Can you elaborate about the XML file what to do with it?

Thanks
Reply With Quote
  #60  
Old 11-08-2010, 12:28 AM
K4GAP K4GAP is offline
 
Join Date: Mar 2008
Posts: 1,255
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by KW802 View Post
@GaryT: Two major questions.... are you putting the zip files in that folder or the unzipped files? (See Gemma's post a few post back for game installation steps). The other thing is how old those files. The .php file should be a really small file with just a few variables in it; if it looks like the .php file that was posted earlier that was an actual install script then you'll have issues just like you would have with the .rar files.
Yep that's it. The ,PHP file has basically the same content as the other .PHP file I posted.

Thanks
Reply With Quote
  #61  
Old 11-08-2010, 12:38 AM
Gemma's Avatar
Gemma Gemma is offline
 
Join Date: Apr 2004
Location: Scotland
Posts: 1,229
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Doctor Death you need to go through the xml file you downloaded from v3arcade and extract all the templates below

adv_portal_as_recent_gametable
adv_portal_as_played_gametable
adv_portal_as_popular_gametable
adv_portal_as_champbits
adv_portal_as_champstable
adv_portal_as_random
adv_portal_as_newsbits
adv_portal_as_newstable
adv_portal_as_scorebits
adv_portal_as_scoretable
adv_portal_arcadestats

The information you want for each template is between the [CDATA[ brackets

For example the adv_portal_arcadestats template would be extracted from the xml file by searching for the template

Code:
<adv_portal_arcadestats><![CDATA[<div>

<table align="center" width="100%">
  <tr><td colspan="3">{vb:raw as_score_table}</td></tr>
  <tr><td colspan="3">{vb:raw as_news_table}</td></tr>
  <tr>
    <td colspan="3">
      <table width = "100%">
        <tr>
          <td valign="top" width="60%">{vb:raw as_random_table}</td>
          <td>&nbsp;</td>
          <td valign="top">{vb:raw as_champs_table}</td>
        </tr>
      </table>
    </td>
  </tr>
  <tr>
    <td colspan="3">
      <table width = "100%">
        <tr>
          <td valign="top">{vb:raw as_recent_table}</td>
          <td>&nbsp;</td>
          <td valign="top">{vb:raw as_played_table}</td>
          <td>&nbsp;</td>
          <td valign="top">{vb:raw as_popular_table}</td>
        </tr>
      </table>
    </td>
  </tr>
</table>

</div>]]></adv_portal_arcadestats>
Taking away the <template name> and CDATA opening and closing brackets it would look like this


Code:
<div>

<table align="center" width="100%">
  <tr><td colspan="3">{vb:raw as_score_table}</td></tr>
  <tr><td colspan="3">{vb:raw as_news_table}</td></tr>
  <tr>
    <td colspan="3">
      <table width = "100%">
        <tr>
          <td valign="top" width="60%">{vb:raw as_random_table}</td>
          <td>&nbsp;</td>
          <td valign="top">{vb:raw as_champs_table}</td>
        </tr>
      </table>
    </td>
  </tr>
  <tr>
    <td colspan="3">
      <table width = "100%">
        <tr>
          <td valign="top">{vb:raw as_recent_table}</td>
          <td>&nbsp;</td>
          <td valign="top">{vb:raw as_played_table}</td>
          <td>&nbsp;</td>
          <td valign="top">{vb:raw as_popular_table}</td>
        </tr>
      </table>
    </td>
  </tr>
</table>

</div>
You would do that for all the templates I listed at the beginning, you would then go to you AdminCP>Style Manager and add each of the new templates, keeping the same template names as before

Then go to you AdminCP>vBulletinCMS>Widget Manager and make a new widget ie 'Arcade Stats' and copy the following code

Code:
global $vbulletin, $bbcode, $parser, $path, $db;
$g_limit = 5;
$g_champs_limit = 5;
$g_news_limit = 5;
$g_scores_limit = 5;

function get_games ($as_handle, $as_title, $limit) {
    global $vbulletin;

    switch ($as_handle) {
        case 'recent':
            $orderby = "dateadded DESC";
            break;
        case 'played':
            $orderby = "sessioncount DESC";
            break;
        case 'popular':
            $orderby = "votepoints DESC";
            break;
        default:
            $orderby = "gameid ASC";
            break;
    }


    $getgames = $vbulletin->db->query("
            SELECT games.* FROM " . TABLE_PREFIX . "v3arcade_games AS games
            ORDER BY " . $orderby . "
            LIMIT $limit
    ");

    while ($game = $vbulletin->db->fetch_array($getgames))
    {
            $game['gamename'] = fetch_trimmed_title(stripslashes($game['title']),$maxtitlechars);
            $game['gamedate'] = vbdate($vbulletin->options['dateformat'], $game['dateadded']);
            $getbgrow = exec_switch_bg();

        switch ($as_handle) {
            case 'recent':
                $as_game_data = $game['gamedate'];
                break;
            case 'played':
                $as_game_data = "Played " . $game['sessioncount'] . " times";
                break;
            case 'popular':
                $as_game_data = $game['votepoints'] . " votes";
                break;
            default:
                $as_game_data = "";
                break;
        }

            //eval('$as_gamebits .= "' . fetch_template('adv_portal_as_gamebits') . '";');
            $templater = vB_Template::create('adv_portal_as_gamebits');
        $templater->register('as_game_data',$as_game_data);
          $templater->register('game',$game);
          $as_gamebits .= $templater->render();

    }
    $vbulletin->db->free_result($getgames);

     // eval('$gametable = "' . fetch_template("adv_portal_as_{$as_handle}_gametable") . '";');
    $templater = vB_Template::create('adv_portal_as_' . $as_handle . '_gametable');
     $templater->register('as_title',$as_title);
     $templater->register('as_gamebits',$as_gamebits);
    $gametable = $templater->render();
    return $gametable;
}

function get_champs ($limit) {
    global $vbulletin;

    $champs = $vbulletin->db->query_read("
            SELECT COUNT(games.highscorerid) AS count, user.username, user.userid
        FROM " . TABLE_PREFIX . "v3arcade_games AS games
            LEFT JOIN " . TABLE_PREFIX . "user AS user ON user.userid = games.highscorerid
            WHERE user.userid IS NOT NULL
            GROUP BY user.username, user.userid
        ORDER BY count DESC, user.userid ASC
        LIMIT " . $limit
    );

    $row = '0';
    $awards = '0';
    $leaders = '0';
    while ($champ = $vbulletin->db->fetch_array($champs)) {
         $leaders++;
        if ($awards != $champ['count']) {
            $row = $leaders;
        }
        $awards = $champ['count'];
        $getbgrow = exec_switch_bg();
        //eval('$as_champbits .= "' . fetch_template('adv_portal_as_champbits') . '";');
        $templater = vB_Template::create('adv_portal_as_champbits');
        $templater->register('getbrow',$getbrow);
          $templater->register('champ',$champ);
          $as_champbits .= $templater->render();
    }
    $vbulletin->db->free_result($champs);

    //eval('$champstable = "' . fetch_template("adv_portal_as_champstable") . '";');
    $templater = vB_Template::create('adv_portal_as_champstable');
     $templater->register('as_champbits',$as_champbits);
    $champstable = $templater->render();
    return $champstable;
}

function get_random_game () {
    global $vbulletin;

    $random_game = $vbulletin->db->query_first("
        SELECT gameid,title,description,stdimage,highscore,user.userid,user.username
        FROM " . TABLE_PREFIX . "v3arcade_games AS games
            LEFT JOIN " . TABLE_PREFIX . "user AS user ON user.userid = games.highscorerid
        ORDER BY RAND()
        LIMIT 1
    ");

    $as_random_gameid = $random_game[gameid];
        $as_random_gametitle = $random_game[title];
        $as_random_stdimage = $random_game[stdimage];
        $as_random_description = $random_game[description];
    if($random_game[highscore] == 0)
    {
        $as_random_highscore     = "No Score";
        $as_random_highscorer    = "";
        $as_random_userid    = "";
    }
    else
    {
        $as_random_highscore     = intval($random_game[highscore]);
        $as_random_highscorer    = "(" . $random_game[username] . ")";
        $as_random_userid    = $random_game[userid];
    }
    $vbulletin->db->free_result($random_game);
    //eval('$random_table = "' . fetch_template('adv_portal_as_random') . '";');
    $templater = vB_Template::create('adv_portal_as_random');
     $templater->register('as_random_gameid',$as_random_gameid);
     $templater->register('as_random_gametitle',$as_random_gametitle);
     $templater->register('as_random_highscore',$as_random_highscore);
     $templater->register('as_random_userid',$as_random_userid);
     $templater->register('as_random_highscorer',$as_random_highscorer);
     $templater->register('as_random_stdimage',$as_random_stdimage);
     $templater->register('as_random_description',$as_random_description);
    $random_table = $templater->render();
    return $random_table;
}

function get_latest_champs ($limit)
{
    global $vbulletin, $bbcode_parser;

    //var_dump($vbulletin);
    //highlight_file('./modules/arcadestats.php');
    //exit;
    $news_items = $vbulletin->db->query_read("
        SELECT *
        FROM " . TABLE_PREFIX . "v3arcade_news
        WHERE newstext LIKE '%is the new%'
        ORDER BY datestamp DESC
        LIMIT $limit
    ");

    while ($news_item = $vbulletin->db->fetch_array($news_items)) {
           //$as_news_text =  $bbcode_parser->do_parse($news_item['newstext'], 1, 1, 1, 0);
        $as_news_text = $news_item['newstext'];
        $as_news_text = str_replace("arcade.php", $vbulletin->options['bburl'] . "/arcade.php", $as_news_text);

        $as_news_date = vbdate($vbulletin->options['dateformat'],$news_item['datestamp']);
        $as_news_time = vbdate($vbulletin->options['timeformat'],$news_item['datestamp']);
        $getbgrow = exec_switch_bg();
        //eval('$as_newsbits .= "' . fetch_template('adv_portal_as_newsbits') . '";');
        $templater = vB_Template::create('adv_portal_as_newsbits');
          $templater->register('getbrow',$getbrow);
          $templater->register('as_news_text',$as_news_text);
          $templater->register('as_news_date',$as_news_date);
          $templater->register('as_news_time',$as_news_time);
          $as_newsbits .= $templater->render();

    }
    $vbulletin->db->free_result($news_items);

    //eval('$news_table = "' . fetch_template('adv_portal_as_newstable') . '";');
    $templater = vB_Template::create('adv_portal_as_newstable');
     $templater->register('as_newsbits',$as_newsbits);
     $news_table = $templater->render();
    return $news_table;
}

function get_latest_scores ($limit)
{
    global $vbulletin;

    $latest_scores = $vbulletin->db->query_read("
        SELECT sessions.userid, sessions.gamename, sessions.gameid, sessions.score, sessions.start, sessions.finish,
            user.username,
            games.title
        FROM " . TABLE_PREFIX . "v3arcade_sessions as sessions
        LEFT JOIN " . TABLE_PREFIX . "user AS user
            ON (sessions.userid = user.userid)
        LEFT JOIN " . TABLE_PREFIX . "v3arcade_games as games
            on (sessions.gameid = games.gameid)
        WHERE sessions.finish <> 0
        ORDER BY  sessions.sessionid DESC
        LIMIT $limit
    ");

    while ($latest_score = $vbulletin->db->fetch_array($latest_scores)) {
        $as_score_userid = $latest_score['userid'];
        $as_score_gameid = $latest_score['gameid'];
        $as_score_name = $latest_score['username'];
        $as_score_score = intval($latest_score['score']);
        $as_score_gametitle = $latest_score['title'];
        $as_score_date = vbdate($vbulletin->options['dateformat'],$latest_score['finish']);
        $as_score_time = vbdate($vbulletin->options['timeformat'],$latest_score['finish']);
        //echo "foo: $as_score_gametitle<br>\n";
        $getbgrow = exec_switch_bg();
        //eval('$as_scorebits .= "' . fetch_template('adv_portal_as_scorebits') . '";');
        $templater = vB_Template::create('adv_portal_as_scorebits');
          $templater->register('getbrow',$getbrow);
          $templater->register('as_score_userid',$as_score_userid);
          $templater->register('as_score_name',$as_score_name);
          $templater->register('as_score_score',$as_score_score);
          $templater->register('as_score_gameid',$as_score_gameid);
          $templater->register('as_score_gametitle',$as_score_gametitle);
          $templater->register('as_score_date',$as_score_date);
          $templater->register('as_score_time',$as_score_time);
          $as_scorebits .= $templater->render();
    }
    $vbulletin->db->free_result($latest_scores);

    //eval('$score_table = "' . fetch_template('adv_portal_as_scoretable') . '";');
    $templater = vB_Template::create('adv_portal_as_scoretable');
     $templater->register('as_scorebits',$as_scorebits);
     $score_table = $templater->render();
    return $score_table;
}

$as_score_table = get_latest_scores($g_scores_limit);
$as_news_table = get_latest_champs($g_news_limit);
$as_random_table = get_random_game();
$as_champs_table = get_champs($g_champs_limit);
$as_recent_table = get_games("recent","Most Recent", $g_limit);
$as_played_table = get_games("played","Most Played", $g_limit);
$as_popular_table = get_games("popular","Most Popular", $g_limit);

$collapseobj_arcadestats = $vbcollapse['collapseobj_arcadestats'];
$collapseimg_arcadestats = $vbcollapse['collapseimg_arcadestats'];

//eval('$home[$mods[\'modid\']][\'content\'] .= "' . fetch_template('adv_portal_arcadestats') . '";');
$templater = vB_Template::create('adv_portal_arcadestats');
$templater->register('as_score_table',$as_score_table);
$templater->register('as_news_table',$as_news_table);
$templater->register('as_random_table',$as_random_table);
$templater->register('as_champs_table',$as_champs_table);
$templater->register('as_recent_table',$as_recent_table);
$templater->register('as_played_table',$as_played_table);
$templater->register('as_popular_table',$as_popular_table);
$output = $templater->render();
Save it, then go to AdminCP>vBulletinCMS>Layout Manager and add your new widget.

You can see the result on my site http://www.forumbanter.com

It took about 10 minutes. I still need to go back and edit the templates to make them fall in line with the changes introduced in vb4.0.8

If you have any problems let me know and I'll post up each individual template over on v3arcade.com but I'm off to bed now.
Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 08:37 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.14792 seconds
  • Memory Usage 2,508KB
  • Queries Executed 26 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (5)bbcode_code
  • (1)bbcode_php
  • (5)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (3)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (7)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (1)postbit_attachment
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete