Jump to content
MakeWebGames

item Error effect itemuse.php


rowbvp

Recommended Posts

Are there any errors in this itemuse.php ,for some reason the item effects are not working.The item Sql are updating in db,so i think the problem maybe in this code.aslo im using the inventory.php and staff_items php which contain rings,legs...What i'm trying to do is add a item that has 30% exp gain

 

<?php
include "globals.php";
$_GET['ID'] = abs((int) $_GET['ID']);
//Food
if(!$_GET['ID'])
{
print "Invalid use of file";
}
else
{
$i=$db->query("SELECT iv.*,i.*,it.* FROM inventory iv LEFT JOIN items i ON iv.inv_itemid=i.itmid LEFT JOIN itemtypes it ON i.itmtype=it.itmtypeid WHERE iv.inv_id={$_GET['ID']} AND iv.inv_userid=$userid");
if(mysql_num_rows($i) == 0)
{
print "Invalid item ID";
}
else
{
$r=$db->fetch_row($i);
if($r['itmtypeid'] == 3)
{
if ($ir['hunger'] <= 80) {
$db->query("UPDATE `users` SET `hunger` = `hunger` + 20 WHERE `userid` = $userid");
}
else {
echo 'You cannot use this item at this time.';
$h->endpage();
exit;
}
}
if(!$r['effect1_on'] && !$r['effect2_on'] && !$r['effect3_on'])
{
 die("Sorry, this item cannot be used as it has no effect.");
}
if($r['effect1_on'])
{
if($r['itmid']==60)
{
mysql_query(sprintf("UPDATE `users` SET `bgtime` = 15 WHERE `userid` = ('%u')", abs(@intval($userid)))) or die(mysql_error());
}
elseif($r['itmid']==610)
{
mysql_query(sprintf("UPDATE `users` SET `bgtime` = 30 WHERE `userid` = ('%u')", abs(@intval($userid)))) or die(mysql_error());
}
elseif($r['itmid']==620)
{
mysql_query(sprintf("UPDATE `users` SET `bgtime` = 60 WHERE `userid` = ('%u')", abs(@intval($userid)))) or die(mysql_error());
}
 $einfo=unserialize($r['effect1']);
 if($einfo['inc_type']=="percent")
 {
if(in_array($einfo['stat'],array('energy','will','brave','hp')))
{

 	$inc=round($ir['max'.$einfo['stat']]/100*$einfo['inc_amount']);
}
else
{
 	$inc=round($ir[$einfo['stat']]/100*$einfo['inc_amount']);
}
 }
 else
 {
$inc=$einfo['inc_amount'];
 }
 if($einfo['dir']=="pos")
 {
if(in_array($einfo['stat'],array('energy','will','brave','hp')))
{
 	$ir[$einfo['stat']]=min($ir[$einfo['stat']]+$inc, $ir['max'.$einfo['stat']]);
}
else
{
 	$ir[$einfo['stat']]+=$inc;
}
 }
 else
 {

 	$ir[$einfo['stat']]=max($ir[$einfo['stat']]-$inc, 0);

 }
 $upd=$ir[$einfo['stat']];
 if(in_array($einfo['stat'], array('strength', 'agility', 'guard', 'labour', 'IQ')))
 {
$db->query("UPDATE `userstats` SET {$einfo['stat']} = '{$upd}' WHERE userid={$userid}");
 }
 else
 {
$db->query("UPDATE `users` SET {$einfo['stat']} = '{$upd}' WHERE userid={$userid}");
 }
}
if($r['effect2_on'])
{
 $einfo=unserialize($r['effect2']);
 if($einfo['inc_type']=="percent")
 {
if(in_array($einfo['stat'],array('energy','will','brave','hp')))
{

 	$inc=round($ir['max'.$einfo['stat']]/100*$einfo['inc_amount']);
}
else
{
 	$inc=round($ir[$einfo['stat']]/100*$einfo['inc_amount']);
}
 }
 else
 {
$inc=$einfo['inc_amount'];
 }
 if($einfo['dir']=="pos")
 {
if(in_array($einfo['stat'],array('energy','will','brave','hp')))
{
 	$ir[$einfo['stat']]=min($ir[$einfo['stat']]+$inc, $ir['max'.$einfo['stat']]);
}
else
{
 	$ir[$einfo['stat']]+=$inc;
}
 }
 else
 {

 	$ir[$einfo['stat']]=max($ir[$einfo['stat']]-$inc, 0);

 }
 $upd=$ir[$einfo['stat']];
 if(in_array($einfo['stat'], array('strength', 'agility', 'guard', 'labour', 'IQ')))
 {
$db->query("UPDATE `userstats` SET {$einfo['stat']} = '{$upd}' WHERE userid={$userid}");
 }
 else
 {
$db->query("UPDATE `users` SET {$einfo['stat']} = '{$upd}' WHERE userid={$userid}");
 }
}
if($r['effect3_on'])
{
 $einfo=unserialize($r['effect3']);
 if($einfo['inc_type']=="percent")
 {
if(in_array($einfo['stat'],array('energy','will','brave','hp')))
{

 	$inc=round($ir['max'.$einfo['stat']]/100*$einfo['inc_amount']);
}
else
{
 	$inc=round($ir[$einfo['stat']]/100*$einfo['inc_amount']);
}
 }
 else
 {
$inc=$einfo['inc_amount'];
 }
 if($einfo['dir']=="pos")
 {
if(in_array($einfo['stat'],array('energy','will','brave','hp')))
{
 	$ir[$einfo['stat']]=min($ir[$einfo['stat']]+$inc, $ir['max'.$einfo['stat']]);
}
else
{
 	$ir[$einfo['stat']]+=$inc;
}
 }
 else
 {

 	$ir[$einfo['stat']]=max($ir[$einfo['stat']]-$inc, 0);

 }
 $upd=$ir[$einfo['stat']];
 if(in_array($einfo['stat'], array('strength', 'agility', 'guard', 'labour', 'IQ')))
 {
$db->query("UPDATE `userstats` SET {$einfo['stat']} = '{$upd}' WHERE userid={$userid}");
 }
 else
 {
$db->query("UPDATE `users` SET {$einfo['stat']} = '{$upd}' WHERE userid={$userid}");
 }
}
print "{$r['itmname']} used successfully!";
item_remove($userid, $r['inv_itemid'], 1);
}
}
$h->endpage();
?>
Link to comment
Share on other sites

Well for starters make the item type a set value - Lets say 999

 

if($r['itmtypeid'] == 999)
{
$expgain = ($ir['exp']/$ir['exp_needed']*30);; // May not work, sorry if it doesn't I can't remember how to do exp gains nowadays :P
$db->query("UPDATE users SET exp=exp+$expgain WHERE userid=$userid");
echo 'You have just used your {$r['itmname']}. You have just gained 30% EXP.';
item_remove($userid, $r['inv_itemid'], 1);
}

 

Just make sure the itmtypeid is 999, or whatever you set it to. I doubt the exp formula is right, but it should put you on the right track.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...