vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.0 Full Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=33)
-   -   V3Arcade - Game Rating addon (https://vborg.vbsupport.ru/showthread.php?t=71460)

GenSec 11-06-2004 10:00 PM

V3Arcade - Game Rating addon
 
These hack adds rating system for your arcade games.

Files to edit: 1
Templates to edit: 2
Files to add: 1

Add 1 new db table + 2 changes for games table

Very easy to install...
################################################## ##############################################
Before the installation!
Please make a Backup of your database and the changed files!
################################################## ##############################################

1. ADD this to MySQL DB using phpmyadmin or admincp :
Code:

ALTER TABLE `games` ADD `votetotal` smallint(5)  UNSIGNED DEFAULT '0' NOT NULL ;

ALTER TABLE `games` ADD `votenum` smallint(5)  UNSIGNED DEFAULT '0' NOT NULL ;

CREATE TABLE `game_rate` (
  `gamerateid` int(11) NOT NULL auto_increment,
  `gameid` int(11) NOT NULL default '0',
  `userid` int(10) NOT NULL default '0',
  `vote` smallint(5) default NULL,
  `ipaddress` char(15) NOT NULL default '',
  PRIMARY KEY  (`gamerateid`)
) TYPE=MyISAM AUTO_INCREMENT=8 ;

2. Upload gamerate.php to your forumroot directory.
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
There are somу redirects phrases like "redirect_threadrate_add", "error_threadratevoted" etc.
You саn change them to similar with the word "game" instead of "thread".
I didn't. And it works fine on my board.

3. Edit arcade.php
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Find:
Code:

$phrasegroups = array();
Change to:
Code:

$phrasegroups = array('arcade','showthread');
* in case you decide to use the above "thread" phrases


Find:
Code:


        // While loop constructs the $gamebits variable, with games where scores have been recorded
        while ($game = $DB_site->fetch_array($result_topscore2)) {


Add right after:
Code:


      // display ratings if enabled
            if ($game['votenum'] > 0)
            {
                $game['voteavg'] = vb_number_format($game['votetotal'] / $game['votenum'], 2);
                $game['rating'] = round($game['voteavg']);
                } else {
        $game['rating']=0;
            }
        //

Find:
Code:


$thisGame = $DB_site->query_first("SELECT * FROM " . TABLE_PREFIX . "games WHERE gameid=$gameid");



Add right after:
Code:


// display ratings if enabled
$show['rating'] = false;

        if ($thisGame['votenum'] > 0)
        {
                $thisGame['voteavg'] = vb_number_format($thisGame['votetotal'] / $thisGame['votenum'], 2);
                $game['rating'] = round($thisGame['voteavg']);
                        $show['rating'] = true;
        }

        if ($rating = $DB_site->query_first("
                SELECT vote, gamerateid FROM " . TABLE_PREFIX . "game_rate
                WHERE userid = $bbuserinfo[userid] AND gameid = $gameid
        ")) {

                    if ($$rating['vote'])
                  {
                                $voteselected["$rating[vote]"] = HTML_SELECTED;
                                $votechecked["$rating[vote]"] = HTML_CHECKED;
                          }        else {
                                $voteselected[0] = HTML_SELECTED;
                                $votechecked[0] = HTML_CHECKED;
                          }
    }
//

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Save arcade.php

4. Edit arcade templates

to place the voting form in play control panel

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



In arcade_play template find:
Code:


<table cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%">
  <tr>
    <td class="thead" colspan="2"><span class="smallfont">$thisGame[title]</span></td>
  </tr>



Add right after:
Code:

<tr>
<td class="alt2" align="center" id="gamerating" nowrap="nowrap"><span class="smallfont">
<a href="#goto_gamerating">
<if condition="$show['rating']">$vbphrase[rating]</a>: <img class="inlineimg" src="$stylevar[imgdir_rating]/rating_$game[rating].gif" alt="<phrase 1="$thisGame[votenum]" 2="$thisGame[voteavg]">$vbphrase[thread_rating_x_votes_y_average]</phrase>" border="0" />
                  <else />$vbphrase[rate_thread]</a></if>
<if condition="$show['popups']"><script type="text/javascript"> vbmenu_register("gamerating"); </script></if>
</span></td></tr>


Find:
Code:


 <tr><td class="alt1" align="center"><img src="$stylevar[imgdir_arcade]/backtip.gif" border=0></td>
</table>
</td>
</tr></table>


Add right after:

Code:


<div class="vbmenu_popup" id="gamerating_menu" style="display:none">
<form action="gamerate.php" method="post">
        <table cellpadding="4" cellspacing="1" border="0">
        <tr>
                <td class="thead">Зацени игру<a name="goto_gamerating"></a></td>
        </tr>
        <tr>
                <td class="vbmenu_option" title="nohilite">
                <div><img class="inlineimg" src="$stylevar[imgdir_rating]/rating_5.gif" alt="$vbphrase[excellent]" /><label for="vote5"><input type="radio" name="vote" id="vote5" value="5" $votechecked[5] />$vbphrase[excellent]</label></div>
                <div><img class="inlineimg" src="$stylevar[imgdir_rating]/rating_4.gif" alt="$vbphrase[good]" /><label for="vote4"><input type="radio" name="vote" id="vote4" value="4" $votechecked[4] />$vbphrase[good]</label></div>
                <div><img class="inlineimg" src="$stylevar[imgdir_rating]/rating_3.gif" alt="$vbphrase[average]" /><label for="vote3"><input type="radio" name="vote" id="vote3" value="3" $votechecked[3] />$vbphrase[average]</label></div>
                <div><img class="inlineimg" src="$stylevar[imgdir_rating]/rating_2.gif" alt="$vbphrase[bad]" /><label for="vote2"><input type="radio" name="vote" id="vote2" value="2" $votechecked[2] />$vbphrase[bad]</label></div>
                <div><img class="inlineimg" src="$stylevar[imgdir_rating]/rating_1.gif" alt="$vbphrase[terrible]" /><label for="vote1"><input type="radio" name="vote" id="vote1" value="1" $votechecked[1] />$vbphrase[terrible]</label></div>
                </td>
        </tr>
        <tr>
                <td class="vbmenu_option" title="nohilite" align="center">
        <input type="hidden" name="s" value="$session[dbsessionhash]" />
        <input type="hidden" name="gameid" value="$gameid" />
        <input type="submit" class="button" value="$vbphrase[vote_now]" />
                </td>
        </tr>
        </table>
</form>
</div>

Save arcade_play


5. At last find the right place to show the game rating

I placed in arcade_main_games_bit temlate :
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Code:

<if condition="$game['rating'] > 0"><img class="inlineimg" src="$stylevar[imgdir_rating]/rating_$game[rating].gif" alt="<phrase 1="$game[votenum]" 2="$game[voteavg]">$vbphrase[thread_rating_x_votes_y_average]</phrase>" border="0" />
</if>

#############################
Thats all!

I hope it works :classic:

Oblivion Knight 11-07-2004 06:34 PM

Awesome! I'll certainly have a look at this one later tonight..

Thanks for sharing your work. :)

GenSec 11-07-2004 06:55 PM

Quote:

Originally Posted by Rick Sample
It looks much more organized! I'm curiouse though, I went to your site: http://www.2x2ru.net/forum/arcade.php in each one of those game boxes, what does it say?

As usuall :) :
game size, champion, record, played games, personal record...

Rick Sample 11-07-2004 06:55 PM

cool, when you say game rating, does this include your arcade home layout, too? That looks very organized!

let us know :)

GenSec 11-07-2004 07:06 PM

Rick Sample.
No. The rest was made before. And it's mush more hard for me to make clear instructions than to make the code :)
Generally it's templates modification.
Because my board in russian it needs to translate back :ermm:

moley 11-07-2004 09:03 PM

thanks for sharing looks like a very nice addon.

Lionel 11-07-2004 09:45 PM

you beat frankenberrie at that one!

Lionel 11-07-2004 10:03 PM

Where are the phrases?

Lionel 11-07-2004 11:24 PM

you've got one extra space in your alter table games query for votetotal and votenum on this page that gives a database column not found error. Removing the space fixes that.

glorify 11-08-2004 01:20 AM

where are the spaces to be removed?

Lionel 11-08-2004 01:40 AM

ALTER TABLE `games` ADD `votetotal ` smallint(5) UNSIGNED DEFAULT '0' NOT NULL ;

ALTER TABLE `games` ADD `votenum `

votetotal ' should be votetotal'

same for votenum

GenSec 11-08-2004 07:25 AM

Quote:

Originally Posted by Lionel
Where are the phrases?

Thanks for "spaces" :)

The phrases are using by standart redirects in gamerate.php ( it's based on threadrate.php ;) )
like
Code:

 
                eval(print_standard_redirect('redirect_threadrate_add'))

It uses
$vbphrase[threadrate_add] ="Your vote on this thread has been added."

You can change it to something like

eval(print_standard_redirect('redirect_game_add'))


and add the new phrase

$vbphrase[game_add] ="Your vote on this game has been added."

BUT you also can edit the original phrase to

$vbphrase[threadrate_add] ="Your vote has been added." :) :) :)

Up to you.

I desabled redirects at all.

Lionel 11-08-2004 07:33 AM

I removed the arcade phrases and used the showthread. Arcade was giving a myaql error since they were non existant.

HarryBO 11-10-2004 12:35 PM

Hi!

Thats a very nice Hack, but it seems I have a problem!

See my Screenshot!

How can I format the stars correctly?

Lionel 11-10-2004 01:14 PM

align="left"

dina 11-10-2004 01:19 PM

Great mod, however I had a problem with the phrases.

It gave this error;
mysql error: Unknown column 'language.phrasegroup_arcade' in 'field list'

So I changed the arcade.php to this $phrasegroups = array('showthread');
Removed the arcade bit

HarryBO 11-10-2004 04:22 PM

Where must I put this Code?

Lionel 11-10-2004 04:33 PM

Quote:

Originally Posted by HarryBO
Where must I put this Code?

In the <td where you have the stars :squareeyed:

HarryBO 11-10-2004 05:36 PM

Sorry can you post the complete piece of Code? I´am an absolutely php-Noob!

Lionel 11-10-2004 05:56 PM

This is basic html in your template

HarryBO 11-10-2004 07:28 PM

Nice that works!

Big THX!

Lionel 11-10-2004 08:33 PM

never mind :o

Lionel 11-12-2004 01:00 PM

Now that we have the games rated, what would be nice is a top rated list and a most popular (most played)

Wachtmeister 11-12-2004 10:05 PM

Will this sql query work if i use table prefix for my forum? My forum uses vb3_ as prefix and i think, that this will not work for me. ??

Intex 11-13-2004 05:27 PM

Thx. GenSec.

[high]* Intex clicks INSTALL.[/high]

GenSec 11-13-2004 07:00 PM

Quote:

Originally Posted by Wachtmeister
Will this sql query work if i use table prefix for my forum? My forum uses vb3_ as prefix and i think, that this will not work for me. ??

It will :)
It creates only one new table without prefix: "game_rate".
If you want to add prefix to "game_rate" it's very simple. Just rename this table ;)

GenSec 11-13-2004 07:11 PM

Quote:

Originally Posted by Lionel
Now that we have the games rated, what would be nice is a top rated list and a most popular (most played)

No problem:)

Find in arcade.php
Code:

        // Selects all games from the database
Add below:
Code:

if ($_GET['show'] == "best")
{
                define('BESTRATED', 'true');
 // Selects rating
$result_allgames = $DB_site->query("
SELECT * FROM " . TABLE_PREFIX . "games  AS g
WHERE g.votetotal>3 ORDER BY votetotal DESC
");
} else {

Find:
Code:

                $gamecount = $DB_site->num_rows($result_allgames);
Add before:
Code:

}
Now link to the page http://www.yourdomain/forum/arcade.php?show=best and you have list of games wiht rating >3

GenSec 11-13-2004 07:12 PM

Most popular is another hack :)

Lionel 11-13-2004 08:11 PM

Thanks... but that returned no items (perhaps because of the category hack?). I have two instances of // select all games
the first one returns a parse error and the second no results...

NightWalk8r 11-14-2004 02:23 AM

I keep getting this error when i try to run the query in Admincp =(

Query
ALTER TABLE `vb3_games` ADD `votetotal` smallint(5) UNSIGNED DEFAULT '0' NOT NULL ;

ALTER TABLE `vb3_games` ADD `votenum` smallint(5) UNSIGNED DEFAULT '0' NOT NULL ;

CREATE TABLE `vb3_game_rate` (
`gamerateid` int(11) NOT NULL auto_increment,
`gameid` int(11) NOT NULL default '0',
`userid` int(10) NOT NULL default '0',
`vote` smallint(5) default NULL,
`ipaddress` char(15) NOT NULL default '',
PRIMARY KEY (`gamerateid`)
) TYPE=MyISAM AUTO_INCREMENT=8

vBulletin Message
An error occurred while attempting to execute your query. The following information was returned.
error number: 1064
error desc: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ';

ALTER TABLE `vb3_games` ADD `votenum` smallint(5) UNSIGNED

Lionel 11-14-2004 04:23 AM

Quote:

Originally Posted by GenSec
No problem:)
Now link to the page http://www.yourdomain/forum/arcade.php?show=best and you have list of games wiht rating >3

OK, cool. I got it by using that link because of the category mode.

PHP Code:

arcade.php?do=category&categoryid=1&show=best 

Thank you!

and I changed pagenav to

PHP Code:

if ($_GET['show'] == "best")
    {
        
define('BESTRATED''true');
    
$pagenav construct_page_nav($g,"arcade.php?$session[sessionurl]do=category&categoryid=$categoryid&show=best$searchstring");
    } else {
    
$pagenav construct_page_nav($g"arcade.php?$session[sessionurl]do=category&categoryid=$categoryid$searchstring");
    } 

and made the ORDER BY ASC so higher rated display first

GenSec 11-14-2004 07:38 AM

Quote:

Originally Posted by NightWalk8r
I keep getting this error

The best way to open phpmyadmin and check the current state of games and game_rate tables. Then to edit them corr.

Lionel 11-14-2004 11:00 AM

I also added:

PHP Code:

    $navbits = array("arcade.php?$session[sessionurl]=> "Arcade");
    
$navbits[""] = "Top Rated Games"

before the } else {

:)

Lionel 11-14-2004 11:24 AM

Based on your code, here is my "Newest Additions" :)

PHP Code:

if ($_GET['latest'] == "true")
{
                
define('LATEST''true');
 
// Selects latest
$result_allgames $DB_site->query("
SELECT * FROM " 
TABLE_PREFIX "games  AS l 
ORDER BY gameid DESC LIMIT 5
"
);
    
$navbits = array("arcade.php?$session[sessionurl]=> "Arcade");
    
$navbits[""] = "Last 5 Games Added";

} else {

// and of course the closing



// before

$gamecount $DB_site->num_rows($result_allgames); 


Intex 11-14-2004 01:18 PM

Quote:

Originally Posted by GenSec
Most popular is another hack :)

GenSec - I've installed this most popular hack and it seems to work, but it doesn't seem to show the rating in the correct numerical order if there is a decimal point in the equation. For example if one user rates a game '1' and another rates it '4', the average is '2.5'.

Any games that have a decimal place appear at the top of the list. Do you know a workaround? Also, would it be difficult to have the titles of the games appear alphabetically from A>Z. Currently they appear as highest ranked in DESC order which shows the game titles from Z>A.

NightWalk8r 11-14-2004 01:50 PM

Quote:

Originally Posted by GenSec
The best way to open phpmyadmin and check the current state of games and game_rest tables. Then to edit them corr.

What do i need to check for in games and game_rest??

GenSec 11-14-2004 10:36 PM

Quote:

Originally Posted by NightWalk8r
What do i need to check for in games and game_rest??

Sorry I mean vb3_game_rate table. Did you create it?

Also you should have fields votetotal and votenum at the end of "vb3_games"
table.

GenSec 11-14-2004 10:50 PM

Quote:

Originally Posted by Intex
GenSec - I've installed this most popular hack and it seems to work, but it doesn't seem to show the rating in the correct numerical order if there is a decimal point in the equation. For example if one user rates a game '1' and another rates it '4', the average is '2.5'.

Any games that have a decimal place appear at the top of the list. Do you know a workaround? Also, would it be difficult to have the titles of the games appear alphabetically from A>Z. Currently they appear as highest ranked in DESC order which shows the game titles from Z>A.

Code is "WHERE g.votetotal>3 ORDER BY votetotal DESC" thus show games with sum of votes >3 in sum of votes order from highest.

Your ex. has votetotal=5. You саn change it to alphabetically from A>Z
just using instead of above "ORDER BY title".

GenSec 11-14-2004 11:17 PM

Quote:

Originally Posted by Lionel
Based on your code, here is my "Newest Additions" :)

[high]* GenSec clicks install :)[/high]

Lionel 11-15-2004 07:52 AM

I found some code by Natch over there and adjusted a bit. ;)

PHP Code:

if ($_GET['popular'] == "true")
{
                
define('POPULAR''true');
// Select most played
    
$result_allgames $DB_site->query(
                    SELECT  *, " 
TABLE_PREFIX "games.gameid AS gameid, " TABLE_PREFIX "games.title AS title, " 

TABLE_PREFIX "games.gamesettings as gamesettings, COUNT(" TABLE_PREFIX "gamesessions.gamename) AS popularity 
                    FROM " 
TABLE_PREFIX "games 
                    INNER JOIN " 
TABLE_PREFIX "gamesessions 
                    ON " 
TABLE_PREFIX "games.shortname = " TABLE_PREFIX "gamesessions.gamename 
                    WHERE gamesessions.valid = 1
                    GROUP BY title 
                    ORDER BY popularity DESC 
                    LIMIT 10
                    "
); 
    
$navbits = array("arcade.php?$session[sessionurl]=> "Arcade");
    
$navbits[""] = "Most Popular Games";


} else {

//and of course not to for get the closing
}
//before 
$gamecount $DB_site->num_rows($result_allgames); 



All times are GMT. The time now is 04:45 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.01532 seconds
  • Memory Usage 1,884KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (17)bbcode_code_printable
  • (5)bbcode_php_printable
  • (12)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (40)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete