Alright. So as you may have noticed, with Mirage, when an item breaks, it takes it away. What did tutorial will do is, instead of making it so you lose them item, it'll just make it so that it has to be repaired before you can re-equip it!
Note : This does not cover shields as they cannot break! If you want to add this to shields, you have to add the durability code and all that by yourself
This is a real simple tutorial, but I just thought I'd share it with you guys
It's fully server side
So first, for the
weapon.
Find function
GetPlayerDamage and look for the line :
Code:
Call PlayerMsg(index, "Your " & Trim$(Item(GetPlayerInvItemNum(index, WeaponSlot)).name) & " has broken.", Yellow)
Call TakeItem(index, GetPlayerInvItemNum(index, WeaponSlot), 0)
And replace that TakeItem call with this :
Code:
Call SetPlayerWeaponSlot(index, 0)
Call SendWornEquipment(index)
Very good! Now I noticed that you can still equip the broken item, so in the handle if statement for the packet "useitem", look for the line
Code:
Call SetPlayerWeaponSlot(index, InvNum)
Which is in the Case ITEM_TYPE_WEAPON, and add the following before it :
Code:
If Int(GetPlayerInvItemDur(index, InvNum)) <= 0 Then
Call PlayerMsg(index, "This item is broken! Please get it fixed first!", BrightRed)
Exit Sub
End If
Pretty simple isn't it? :D
Now for the
armo :) Find the following lines in sub GetPlayerProtection :
Code:
Call PlayerMsg(index, "Your " & Trim$(Item(GetPlayerInvItemNum(index, ArmorSlot)).name) & " has broken.", Yellow)
Call TakeItem(index, GetPlayerInvItemNum(index, ArmorSlot), 0)
Replace the TakeItem call with :
Code:
Call SetPlayerArmorSlot(index, 0)
Call SendWornEquipment(index)
Now to make sure they can't equip it, once again to packet "useitem", look for the line :
Code:
Call SetPlayerArmorSlot(index, InvNum)
under the ITEM_TYPEP_ARMOR Case, and add this right above it :
Code:
If Int(GetPlayerInvItemDur(index, InvNum)) <= 0 Then
Call PlayerMsg(index, "This item is broken! Please get it fixed first!", BrightRed)
Exit Sub
End If
There you go :) Almost done, now just for the
helmet! Once again in function GetPlayerProtection, look for :
Code:
Call PlayerMsg(index, "Your " & Trim$(Item(GetPlayerInvItemNum(index, HelmSlot)).name) & " has broken.", Yellow)
Call TakeItem(index, GetPlayerInvItemNum(index, HelmSlot), 0)
And change that TakeItem call to :
Code:
Call SetPlayerHelmetSlot(index, 0)
Call SendWornEquipment(index)
Very good! Now in the packet "useitem" once again, look for the line :
Code:
Call SetPlayerHelmetSlot(index, InvNum)
under the ITEM_TYPE_HELMET case, and add this right above it :
Code:
If Int(GetPlayerInvItemDur(index, InvNum)) <= 0 Then
Call PlayerMsg(index, "This item is broken! Please get it fixed first!", BrightRed)
Exit Sub
End If
And there you go! Wasn't that simple? Enjoy
Any comments or questions or bug reports, feel free to say/ask