TinyPortal

Development => Block Codes => Topic started by: penny on June 19, 2006, 09:08:59 PM

Title: SMF Shoutbox help
Post by: penny on June 19, 2006, 09:08:59 PM
Hi all   :D

I'm looking for a code to make a new highscore shout in the SMF Shoutbox like the invision board's shoutbox also have. If a member scores a new highscore in the Arcade the shoutbox will give a message.

For example:

[ Sunday | 22:34 ] <Penny> I am the new Champ of 1i Champi with a score of 19000!

Can someone help me? I cannot make it happen  :( Would be great to have this in the Shoutbox! 

Hope someone can help me to make this!   ;) :D
Title: Re: SMF Shoutbox help
Post by: G6Cad on June 19, 2006, 09:57:13 PM
There is a champion Block code snippet that does show when a user scores a highscore in the arcade.
Look eather here in Block code snippets board, or on the smfarcade.net site in the hacks board.
Title: Re: SMF Shoutbox help
Post by: penny on June 19, 2006, 10:03:42 PM
Ok thanks for your help will look into it!  :up:
Title: Re: SMF Shoutbox help
Post by: penny on June 19, 2006, 10:30:06 PM
I put this in the Arcade.php:

{
// new higscore!!!
// add new highscore message in shoutbox!
$sql = "insert into ".$db_prefix."sbox_content (name,content,time) values ('".$user_info['username']."','".$content."I am the new Champ of game with a score of 00000!','$date')";
db_query($sql,__FILE__,__LINE__);

}


Under this code in the Arcade.php:

Function Arcade_submit_torney($warning,$hop)
{
        global $boardurl, $txt, $scripturl, $db_prefix, $boarddir;
        global $ID_MEMBER, $sourcedir,$language,$user_profile;
        global $context, $user_info, $db_prefix, $modSettings;

        $temp = $_SESSION['arcade']['game'];

        $time = time();
        $q = "SELECT * FROM {$db_prefix}games_tournament WHERE tid='{$temp['tourney']}'";
        $res = db_query($q,__FILE__,__LINE__);
        $x = mysql_fetch_array($res);
        $round = unserialize($x['rounddata']);
if(isset($round[$temp['round']]))
{
  $cr = $round[$temp['round']];
}
else $cr = $temp['round'];
        $q2 = "INSERT INTO {$db_prefix}games_tournament_results SET tid='{$x['tid']}', round='{$temp['round']}', member='{$ID_MEMBER}', score='{$_POST['score']}'";
        db_query($q2,__FILE__,__LINE__);

        redirectexit("action=arcade;sa=tournament;update;id={$x['tid']}");
}

Function Arcade_submit_normal($warning,$hop)
{
global $boardurl, $txt, $scripturl, $db_prefix, $boarddir;
global $ID_MEMBER, $sourcedir,$language,$user_profile;
global $context, $user_info, $db_prefix, $modSettings;

$days = array($txt['sbox_Sunday'],$txt['sbox_Monday'],$txt['sbox_Tuesday'],$txt['sbox_Wednesday'],$txt['sbox_Thursday'],$txt['sbox_Friday'],$txt['sbox_Saturday']);
$day=$days[date("w")]; // weekday
$date=$day." | ". date("G:i"); // time
$time = time();

$duration = $time - $_SESSION['arcade']['start_time'];

if(!isset($_SESSION['arcade']['submit']) || $_SESSION['arcade']['submit']['score'] != $_POST['score'])
{

$query = "INSERT INTO `{$db_prefix}games_high` (`game`, `member`, `score`, `stime`,`warning`,`duration`,`ip`) VALUES ('{$_REQUEST['game']}', '{$ID_MEMBER}', '{$_POST['score']}', '{$time}','{$warning}','{$duration}','-')";
$results = db_query($query, __FILE__, __LINE__);

$per_sivu = $modSettings['arcade_highscores_per_page'];

$game = Get_Game_Info($_POST['game']);

$b = (get_position($_REQUEST['game'],$_REQUEST['score'],$game['type'],0));

$_GET['start'] = $b;

$_SESSION['arcade']['submit'] = array
(
'game' => $_POST['game'],
'score' => $_POST['score'],
'time' => $time,
'duration' => $duration,
'start' => $b,
'warning' => $warning,
'comment' => 0,
);

update_champ($_POST['game']);


/*
* scores inserted
* now if this player subbmit a number one score
* give him credits for the shop :)
*/
$query = "SELECT `member`, `score`, `stime` FROM `{$db_prefix}games_high` WHERE `game` = '{$_REQUEST['game']}' ORDER BY `score` DESC";
$result = db_query($query, __FILE__, __LINE__);
$content = mysql_fetch_array($result);
if( $content['stime'] == $time &&
$content['member'] == $ID_MEMBER &&
$content['score'] == $_POST['score']
  ){
// first score!!!
// give player 10 points in his bank ;)
$query = "UPDATE `{$db_prefix}members` SET `moneyBank` = `moneyBank` + '10.00' WHERE `ID_MEMBER` ='{$ID_MEMBER}'";
$results = db_query($query, __FILE__, __LINE__);
}


I get this in the Shoutbox when i submit a score:

[ Monday | 23:25 ] <Penny> ArrayI am the new Champ of game with a score of 00000!

Now the problem is: it will shout with every score that is submitted, which should be only with new highscores and i cannot get the Array away from the Shout Message.

So i am almost there, hope someone can help me out!   ;)
Title: Re: SMF Shoutbox help
Post by: G6Cad on June 19, 2006, 10:32:32 PM
eeek ? Where are you when you are needed  :D

I'm sure that some one of the code masters here can give you a hand with this when they see this thread :)
Title: Re: SMF Shoutbox help
Post by: penny on June 19, 2006, 10:43:38 PM
Found it!!!!!  :D :D :D :D :D :D

Where i put the code:

/*
* scores inserted
* now if this player subbmit a number one score
* give him credits for the shop :)
*/
$query = "SELECT `member`, `score`, `stime` FROM `{$db_prefix}games_high` WHERE `game` = '{$_REQUEST['game']}' ORDER BY `score` DESC";
$result = db_query($query, __FILE__, __LINE__);
$content = mysql_fetch_array($result);
if( $content['stime'] == $time &&
$content['member'] == $ID_MEMBER &&
$content['score'] == $_POST['score']
  ){
// first score!!!
// give player 10 points in his bank ;)
$query = "UPDATE `{$db_prefix}members` SET `moneyBank` = `moneyBank` + '10.00' WHERE `ID_MEMBER` ='{$ID_MEMBER}'";
$results = db_query($query, __FILE__, __LINE__);



// new higscore!!!
// add new highscore message in shoutbox!
$sql = "insert into ".$db_prefix."sbox_content (name,content,time) values ('".$user_info['username']."','".$content."I am the new Champ of game with a score of 00000!','$date')";
db_query($sql,__FILE__,__LINE__);

}


I made from the last { } 1 box and it worked!  :D :D :D :D :D

Now only the game link/name and score to put in. Hope i can find it out!
Title: Re: SMF Shoutbox help
Post by: G6Cad on June 19, 2006, 10:51:07 PM
Great :) Very impressive work penny  :o
Title: Re: SMF Shoutbox help
Post by: penny on June 19, 2006, 11:41:23 PM
 :D Thanks!

I finished the code! My first own script! lol :D

Complete code for those who are interrested:

in Arcade.php find:


Function Arcade_submit_normal($warning,$hop)

and
Function Arcade_comment()



And copy & paste this between the 2 lines: ( Overwrite what is between it now  :) )


{
global $boardurl, $txt, $scripturl, $db_prefix, $boarddir;
global $ID_MEMBER, $sourcedir,$language,$user_profile;
global $context, $user_info, $db_prefix, $modSettings;

$days = array($txt['sbox_Sunday'],$txt['sbox_Monday'],$txt['sbox_Tuesday'],$txt['sbox_Wednesday'],$txt['sbox_Thursday'],$txt['sbox_Friday'],$txt['sbox_Saturday']);
$day=$days[date("w")]; // weekday
$date=$day." | ". date("G:i"); // time
$time = time();

$duration = $time - $_SESSION['arcade']['start_time'];

if(!isset($_SESSION['arcade']['submit']) || $_SESSION['arcade']['submit']['score'] != $_POST['score'])
{

$query = "INSERT INTO `{$db_prefix}games_high` (`game`, `member`, `score`, `stime`,`warning`,`duration`,`ip`) VALUES ('{$_REQUEST['game']}', '{$ID_MEMBER}', '{$_POST['score']}', '{$time}','{$warning}','{$duration}','-')";
$results = db_query($query, __FILE__, __LINE__);

$per_sivu = $modSettings['arcade_highscores_per_page'];

$game = Get_Game_Info($_POST['game']);

$b = (get_position($_REQUEST['game'],$_REQUEST['score'],$game['type'],0));

$_GET['start'] = $b;

$_SESSION['arcade']['submit'] = array
(
'game' => $_POST['game'],
'score' => $_POST['score'],
'time' => $time,
'duration' => $duration,
'start' => $b,
'warning' => $warning,
'comment' => 0,
);

update_champ($_POST['game']);


/*
* scores inserted
* now if this player subbmit a number one score
* give him credits for the shop :)
*/
$query = "SELECT `member`, `score`, `stime` FROM `{$db_prefix}games_high` WHERE `game` = '{$_REQUEST['game']}' ORDER BY `score` DESC";
$result = db_query($query, __FILE__, __LINE__);
$content = mysql_fetch_array($result);
if( $content['stime'] == $time &&
$content['member'] == $ID_MEMBER &&
$content['score'] == $_POST['score']
  ){
// first score!!!
// give player 10 points in his bank ;)
$query = "UPDATE `{$db_prefix}members` SET `moneyBank` = `moneyBank` + '10.00' WHERE `ID_MEMBER` ='{$ID_MEMBER}'";
$results = db_query($query, __FILE__, __LINE__);
}

/*
* scores inserted
* now if this player subbmit a number one score
* give him credits for the shop :)
*/
$query = "SELECT `member`, `score`, `stime` FROM `{$db_prefix}games_high` WHERE `game` = '{$_REQUEST['game']}' ORDER BY `score` DESC";
$result = db_query($query, __FILE__, __LINE__);
$content = mysql_fetch_array($result);
if( $content['stime'] == $time &&
$content['member'] == $ID_MEMBER &&
$content['score'] == $_POST['score']
  ){
// first score!!!
// give player 10 points in his bank ;)
$query = "UPDATE `{$db_prefix}members` SET `moneyBank` = `moneyBank` + '10.00' WHERE `ID_MEMBER` ='{$ID_MEMBER}'";
$results = db_query($query, __FILE__, __LINE__);

// -- SETUP EDITS ---

$db_prefix = 'smf_'; //edit this to your your database prefix - usually smf_
$no = 10; //number of top players to show

// --LANGUAGE EDITS --
$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

require('./Settings.php');


$link = mysql_connect($db_server, $db_user, $db_passwd);
mysql_select_db($db_name, $link);

// --START BLOCK CODE --
$content = "";  //set blank for a start

//Get newest champ or die
$sql = "SELECT m.ID_MEMBER,m.realName,g.id, g.game, g.name,g.champion_score "
. "FROM {$db_prefix}members m , {$db_prefix}games g "
. "WHERE g.champion_score > 0 AND m.ID_MEMBER=g.champion_member "
. "ORDER BY g.champion_time DESC LIMIT 0,1";

if(!($result = mysql_query($sql,$link)))
{
die("Could not get the newest champ");
}
$row = mysql_fetch_assoc($result);
mysql_free_result($result);

//newest champ details
$playerid = $row['ID_MEMBER'];
$player = $row['realName'];
$game_id = $row['id'];
$game_name = $row['name'];
$score = $row['champion_score'];

//now get the pic for the game
$ext = array('gif','GIF','png','PNG','jpg','JPG',);
$game_pic = ""; // No thumbnail for default
foreach($ext as $ex)
{
if(file_exists($boarddir. "/Games/".$row['game'].".".$ex))
{
$game_pic = $boardurl."/Games/".$row['game'].".".$ex;
}
}


//Get the 10 best players or die
/*$sql = "SELECT m.ID_MEMBER, m.realName, count(g.id) As cnt"
. " FROM {$db_prefix}games g, {$db_prefix}members m"
. " WHERE m.ID_MEMBER=g.champion_member"
. " GROUP BY realName "
. " ORDER BY cnt DESC LIMIT 0,{$no}";
if(!($result = db_query($sql,__FILE__,__LINE__)))
{
die("Could not get the best players");
}

$row = mysql_fetch_assoc($result);*/

$score_poss=0; //players position


// new higscore!!!
// add new highscore message in shoutbox!
$sql = "insert into ".$db_prefix."sbox_content (name,content,time) values ('".$user_info['username']."','".$content."<b>I am the new Champ of <a href=\"{$scripturl}?action=arcade;sa=play;game={$game_id}\" target=\"_blank\">{$game_name}</a> {$txtwit} a score of {$score}!</b>','$date')";
db_query($sql,__FILE__,__LINE__);

}
}
}


That's the way i have it ;) :)


In this code is also a Shop code which gives every member which scores a new highscore in the Arcade shop points which goes into his/her's bank!

Title: Re: SMF Shoutbox help
Post by: anunlike on June 20, 2006, 04:50:20 AM
Would you like to submit that code to TP's Block code snippets (http://www.tinyportal.net/smf/index.php?board=46.0), if you haven't yet?

Title: Re: SMF Shoutbox help
Post by: akulion on June 20, 2006, 05:04:33 AM
wow extremely useful code! I have both the shop and arcade - so it will be awesome to have - thanks :D
Title: Re: SMF Shoutbox help
Post by: Max on June 20, 2006, 07:57:33 AM

Moved To Block code snippets  :)