SMF Shop
SMFShop => Items => Topic started by: Padre 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.
-
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. =)
<?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(0, 100);
// 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!';
}
}
}
?>
-
Awesome! The little kids just don't understand getting ripped off like that. I appreciate the help
-
Awesome! The little kids just don't understand getting ripped off like that. I appreciate the help
Ok, I changed if ($row['memberGroup'] == XXNOSTEELGROUPXX) {
To
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