rowbvp Posted April 26, 2010 Share Posted April 26, 2010 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(); ?> Quote Link to comment Share on other sites More sharing options...
gurpreet Posted April 27, 2010 Share Posted April 27, 2010 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.