PDA

View Full Version : Hands not magic with gloves


wtbmacestun
05-01-2013, 11:52 PM
Boots are making kick magic but gloves will not make hands magic. Anyone know how to fix this?

lerxst2112
05-02-2013, 12:01 AM
Change Client::Attack to pass what's in the gloves slot as the weapon when there is no primary or secondary weapon.

wtbmacestun
05-02-2013, 09:14 AM
the code for boots making kick magic is in Mob::getweapondamage. Should i still put it in client::attack?

wtbmacestun
05-02-2013, 10:22 AM
I tried adding this in at line 783 but wont compile. Ive tried multiple different things but I cant get it work right.

else if(InventorySlot(12)->(database.GetItem()->Magic))
{
dmg = 1;
}

Whenever I compile it I get.

2>..\..\zone\attack.cpp(783): error C2059: syntax error : '('
2>..\..\zone\attack.cpp(784): error C2143: syntax error : missing ';' before '{'
2>..\..\zone\attack.cpp(785): error C2227: left of '->dmg' must point to class/struct/union/generic type
2> type is 'InventorySlot'
2>..\..\zone\attack.cpp(787): error C2181: illegal else without matching if
2>..\..\zone\attack.cpp(797): error C2227: left of '->Damage' must point to class/struct/union/generic type
2> type is ''unknown-type''


I see that dmg should be pointing to something but I am not sure what it should be pointing to.

wtbmacestun
05-02-2013, 12:01 PM
Correct me if I am wrong, but because Client::Attack is a bool that only says when you can attack... aka true or false.

wtbmacestun
05-02-2013, 12:11 PM
I tried this at line 927 but i need some help with the code

else if(weapon_item == NULL && SLOT_HANDS() == ItemAttribMagic){
dmg = 1;

How do I say that my SLOT_HANDS = a magic item?

Edit:

I also tried

else if(weapon_item == NULL && SLOT_HANDS()->Magic){
dmg = 1;

and that didnt work.

lerxst2112
05-02-2013, 06:02 PM
the code for boots making kick magic is in Mob::getweapondamage. Should i still put it in client::attack?

The code for checking if a target requires magic to hit and if the weapon being used to try and hit it is magic is in Mob::GetWeaponDamage, but the code that passes that "weapon" into the function is elsewhere. In the case of kick and bash it is in Client::DoClassAttacks. I would look at that code, and the code for bash/slam, make sure you understand it, then try and add it for the hands slot if they have no weapon.

Here's an example of where it might work in Client::Attack. I didn't test it, and it might break other things. The new code is at the bottom, the rest is for context.

/// Now figure out damage
int damage = 0;
uint8 mylevel = GetLevel() ? GetLevel() : 1;
uint32 hate = 0;
if (weapon) hate = weapon->GetItem()->Damage + weapon->GetItem()->ElemDmgAmt;
int weapon_damage = GetWeaponDamage(other, weapon, &hate);

// If no weapon and no damage, maybe it's a magic immune mob. Check using the gloves to see if that helps.
if(!weapon && weapon_damage < 1)
{
weapon_damage = GetWeaponDamage(other, GetInv().GetItem(SLOT_HANDS));
}

wtbmacestun
05-02-2013, 06:10 PM
ok thanks for the reply ill test it out

wtbmacestun
05-02-2013, 06:25 PM
works with magic gloves and not non magic gloves.

Thank you very much sir!

Edit: I posted this fix on another website giving you the credit for fixing it lerxst2112