Thread: bug/cheat?
View Single Post
  #6  
Old 07-22-2008, 07:58 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I just added this code to my server and am compiling it now. I will test it out and if it works well, I will post it in the code submissions section unless ndnet has any issues with that. Of course, all credit goes to ndnet.

I edited mine so that it just returns false and logs it:

Code:
  /*------------------------------
  Added to prevent MQ2 
  exploitation of equipping 
  normally-unequippable items 
  with effects and clicking them
  for benefits. - ndnet
  ---------------------------------*/
  if(item_slot && IsClient() && slot == USE_ITEM_SPELL_SLOT)
  {
    ItemInst *itm = CastToClient()->GetInv().GetItem(item_slot);
    int bitmask = 1;
    bitmask = bitmask << (CastToClient()->GetClass() - 1);
    if( itm && itm->GetItem()->Classes != 65535 && (itm->GetItem()->Click.Type == ET_EquipClick) && !( itm->GetItem()->Classes & bitmask ) ){
      // They are casting a spell on an item that requires equipping but shouldn't let them equip it
      LogFile->write(EQEMuLog::Error, "HACKER: %s (account: %s) attempted to click an equip-only effect on item %s (id: %d) which they shouldn't be able to equip!", CastToClient()->GetCleanName(), CastToClient()->AccountName(), itm->GetItem()->Name, itm->GetItem()->ID);

      //CastToClient()->DeleteItemInInventory(inventory_slot,0,false);
      database.SetHackerFlag(CastToClient()->AccountName(), CastToClient()->GetCleanName(), "Clicking equip-only item with an invalid class");
      return(false);
    }
  }
I didn't want it auto-banning people, just in case it might be a little buggy. But, I do want to prevent it and to log it. I think that should work.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote