Proper henna item destroy message.

Contributed by Olivka.
This commit is contained in:
MobiusDevelopment
2019-08-25 11:36:23 +00:00
parent 1eae4179ab
commit 4d39bea456

View File

@@ -33,9 +33,6 @@ public class RequestHennaEquip extends GameClientPacket
{ {
private int _symbolId; private int _symbolId;
/**
* packet type id 0xbb format: cd
*/
@Override @Override
protected void readImpl() protected void readImpl()
{ {
@@ -65,13 +62,13 @@ public class RequestHennaEquip extends GameClientPacket
} }
final HennaInstance temp = new HennaInstance(template); final HennaInstance temp = new HennaInstance(template);
int _count = 0;
/* // Prevents henna drawing exploit:
* Prevents henna drawing exploit: 1) talk to SymbolMakerInstance 2) RequestHennaList 3) Don't close the window and go to a GrandMaster and change your subclass 4) Get SymbolMaker range again and press draw You could draw any kind of henna just having the required subclass... // 1) talk to SymbolMakerInstance
*/ // 2) RequestHennaList
// 3) Don't close the window and go to a GrandMaster and change your subclass
// 4) Get SymbolMaker range again and press draw You could draw any kind of henna just having the required subclass...
boolean cheater = true; boolean cheater = true;
for (HennaInstance h : HennaTreeTable.getInstance().getAvailableHenna(player.getClassId())) for (HennaInstance h : HennaTreeTable.getInstance().getAvailableHenna(player.getClassId()))
{ {
if (h.getSymbolId() == temp.getSymbolId()) if (h.getSymbolId() == temp.getSymbolId())
@@ -81,21 +78,19 @@ public class RequestHennaEquip extends GameClientPacket
} }
} }
int count = 0;
if ((player.getInventory() != null) && (player.getInventory().getItemByItemId(temp.getItemIdDye()) != null)) if ((player.getInventory() != null) && (player.getInventory().getItemByItemId(temp.getItemIdDye()) != null))
{ {
_count = player.getInventory().getItemByItemId(temp.getItemIdDye()).getCount(); count = player.getInventory().getItemByItemId(temp.getItemIdDye()).getCount();
} }
if (!cheater && (_count >= temp.getAmountDyeRequire()) && (player.getAdena() >= temp.getPrice()) && player.addHenna(temp)) if (!cheater && (count >= temp.getAmountDyeRequire()) && (player.getAdena() >= temp.getPrice()) && player.addHenna(temp))
{ {
SystemMessage sm = new SystemMessage(SystemMessageId.S1_DISAPPEARED); SystemMessage sm = new SystemMessage(SystemMessageId.S1_DISAPPEARED);
sm.addNumber(temp.getItemIdDye()); sm.addItemName(temp.getItemIdDye());
player.sendPacket(sm); player.sendPacket(sm);
player.sendPacket(SystemMessageId.SYMBOL_ADDED); player.sendPacket(SystemMessageId.SYMBOL_ADDED);
// HennaInfo hi = new HennaInfo(temp,activeChar);
// player.sendPacket(hi);
player.getInventory().reduceAdena("Henna", temp.getPrice(), player, player.getLastFolkNPC()); player.getInventory().reduceAdena("Henna", temp.getPrice(), player, player.getLastFolkNPC());
final ItemInstance dyeToUpdate = player.getInventory().destroyItemByItemId("Henna", temp.getItemIdDye(), temp.getAmountDyeRequire(), player, player.getLastFolkNPC()); final ItemInstance dyeToUpdate = player.getInventory().destroyItemByItemId("Henna", temp.getItemIdDye(), temp.getAmountDyeRequire(), player, player.getLastFolkNPC());