Author Topic: Steal Credits question  (Read 3714 times)

Offline Padre

Steal Credits question
« on: September 23, 2007, 08:34:40 pm »
Would it be possible to make a member group immune to having their credits stolen? I am working on a new forum the segregates Elementary, Middle and High School into member groups. I don't care if the high schoolers and the middle schoolers steal credits - they understand what is going on BUT I would like to make Elementary students immune. They are segregated by board but the older children can see the credits of the younger kids when they go to the shop. The younger kids won't always remember to bank their credits and would be very tempting for the older ones.


I would like to leave "steal credits" in place for the older kids as they have fun with it.

Offline Basil Beard

Re: Steal Credits question
« Reply #1 on: September 24, 2007, 07:32:09 am »
It would be very possible.  You just need to select the memberGroup (I think thats what its called) and return before steeling if the target is part of the elementary member group. =)

Code: [Select]
<?php

/**********************************************************************************

* SMFShop item                                                                    *

***********************************************************************************

* SMFShop: Shop MOD for Simple Machines Forum                                     *

* =============================================================================== *

* Software Version:           SMFShop 3.0 (Build 12)                              *

* $Date:: 2007-01-18 19:26:55 +1100 (Thu, 18 Jan 2007)                          $ *

* $Id:: Steal.php 79 2007-01-18 08:26:55Z daniel15                              $ *

* Software by:                DanSoft Australia (http://www.dansoftaustralia.net/)*

* Copyright 2005-2007 by:     DanSoft Australia (http://www.dansoftaustralia.net/)*

* Support, News, Updates at:  http://www.dansoftaustralia.net/                    *

*                                                                                 *

* Forum software by:          Simple Machines (http://www.simplemachines.org)     *

* Copyright 2006-2007 by:     Simple Machines LLC (http://www.simplemachines.org) *

*           2001-2006 by:     Lewis Media (http://www.lewismedia.com)             *

***********************************************************************************

* This program is free software; you may redistribute it and/or modify it under   *

* the terms of the provided license as published by Simple Machines LLC.          *

*                                                                                 *

* This program is distributed in the hope that it is and will be useful, but      *

* WITHOUT ANY WARRANTIES; without even any implied warranty of MERCHANTABILITY    *

* or FITNESS FOR A PARTICULAR PURPOSE.                                            *

*                                                                                 *

* See the "license.txt" file for details of the Simple Machines license.          *

* The latest version of the license can always be found at                        *

* http://www.simplemachines.org.                                                  *

**********************************************************************************/



if (!defined('SMF'))

die('Hacking attempt...');



class 
item_Steal extends itemTemplate

{

function getItemDetails()

{

$this->authorName 'Daniel15';

$this->authorWeb 'http://www.dansoftaustralia.net/';

$this->authorEmail 'dansoft@dansoftaustralia.net';



$this->name 'Steal Credits';

$this->desc 'Try to steal credits from another member!';

$this->price 50;



$this->require_input true;

$this->can_use_item true;

}



function getAddInput()

{

global $item_info;

if ($item_info[1] == 0$item_info[1] = 40;

return 'For steal, user <b>does NOT need to, and shouldn\'t</b> know the probability! It\'s more fun this way :-)<br />Probability of successful steal: <input type="text" name="info1" value="' $item_info[1]  . '" />%';

}



function getUseInput()

{

global $context$scripturl$settings$txt;

return 'Steal From: <input type="text" name="stealfrom" id="membername" size="50" />

<a href="' 
$scripturl '?action=findmember;input=membername;quote=0;sesc=' $context['session_id'] . '" onclick="return reqWin(this.href, 350, 400);"><img src="' $settings['images_url'] . '/icons/assist.gif" border="0" alt="' $txt['find_members'] . '" /> Find Member</a><br />';

}



function onUse()

{

global $db_prefix$ID_MEMBER$item_info;



// Check some inputs

if (!isset($_POST['stealfrom']) || $_POST['stealfrom'] == '') die('ERROR: Please enter a username to steal from!');



// This code from PersonalMessage.php. It trims the " characters off the membername posted, 

// and then puts all names into an array

$_POST['stealfrom'] = strtr($_POST['stealfrom'], array('\\"' => '"'));

preg_match_all('~"([^"]+)"~'$_POST['stealfrom'], $matches);

$userArray array_unique(array_merge($matches[1], explode(','preg_replace('~"([^"]+)"~'''$_POST['stealfrom']))));



// We only want the first memberName found

$user $userArray[0];



// Get a random number between 0 and 100

$try mt_rand(0100);



// If successful

if ($try $item_info[1])

{



// Get stealee's (person we're stealing from) money count

$result db_query("

SELECT money
, memberGroup //NOTE THE CHANGE
FROM 
{$db_prefix}members

WHERE memberName = '
{$user}'"__FILE____LINE__);



// If user doesn't exist

if (mysql_num_rows($result) == 0)

die('ERROR: The specified user doesn\'t exist!');



$row mysql_fetch_assoc($result);

                        
//NOTE THE CHANGE
                        
if ($row['memberGroup'] == XXNOSTEELGROUPXX) {
                               return 
"Don't steel from the little kids. It isn't nice";
                        }


// Get random amount between 0 and amount of money stealee has

$steal_amount mt_rand(0$row['money']);



// Take this money away from stealee...

$result db_query("

UPDATE 
{$db_prefix}members

SET money = money - 
{$steal_amount}

WHERE memberName = '
{$user}'

LIMIT 1"
__FILE____LINE__);

//...and give to stealer (robber)

$result db_query("

UPDATE 
{$db_prefix}members

SET money = money + 
{$steal_amount}

WHERE ID_MEMBER = 
{$ID_MEMBER}

LIMIT 1"
__FILE____LINE__);



if ($steal_amount 50)

return 'Steal successful, although you only stole ' $steal_amount '!';

else

return 'Successfully stole ' $steal_amount ' from ' $user '! It\'s their fault they don\'t have their money in the bank!';

}

else

{

// If reducing Karma doesn't work, replace

// 'karmaBad = karmaBad + 10' with 'karmaGood = karmaGood - 10'

$result db_query("

UPDATE 
{$db_prefix}members

SET karmaBad = karmaBad + 10

WHERE ID_MEMBER = 
{$ID_MEMBER}"__FILE____LINE__);

   return 'Steal <b>unsuccessful!</b> You Karma is now reduced by 10!';

}

}

}



?>


Arrrrr!

Offline Padre

Re: Steal Credits question
« Reply #2 on: September 25, 2007, 10:57:13 am »
Awesome! The little kids just don't understand getting ripped off like that. I appreciate the help

Offline Padre

Re: Steal Credits question
« Reply #3 on: September 25, 2007, 11:13:40 am »
Awesome! The little kids just don't understand getting ripped off like that. I appreciate the help

Ok, I changed
Code: [Select]
  if ($row['memberGroup'] == XXNOSTEELGROUPXX) {
To
Code: [Select]
  if ($row['memberGroup'] == ELEMENTARY) {
Is this correct?

I can still steal credits from the little kids LOL - At least they were MY kids (and I gave it back)  :D