雪楓月舞

《Java技術》物品使用位址 記錄

發表於 2016-12-13 13:21:15
雪楓月舞 發表於 2016-12-13 13:21:15 | 顯示全部樓層 |閱讀模式
以下為 OD端中 UseItemHandler class
主要是 使用物品時的相關控制
目前還在研究中^^

net.sf.odinms.net.channel.handler

import net.sf.odinms.client.IItem;
import net.sf.odinms.client.MapleCharacter;
import net.sf.odinms.client.MapleClient;
import net.sf.odinms.client.MapleInventory;
import net.sf.odinms.client.MapleInventoryType;
import net.sf.odinms.net.AbstractMaplePacketHandler;
import net.sf.odinms.scripting.npc.NPCScriptManager;
import net.sf.odinms.server.MapleInventoryManipulator;
import net.sf.odinms.server.MapleItemInformationProvider;
import net.sf.odinms.server.MapleStatEffect;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
import org.apache.mina.common.IoSession;

public class UseItemHandler
  extends AbstractMaplePacketHandler
{
  public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c)
  {
    c.getPlayer().resetAfkTime();
    if (!c.getPlayer().isAlive())
    {
      c.getSession().write(MaplePacketCreator.enableActions());
      return;
    }
    MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
    slea.readInt();
    byte slot = (byte)slea.readShort();
    int itemId = slea.readInt();
    IItem toUse = c.getPlayer().getInventory(MapleInventoryType.USE).getItem(slot);
    if (itemId == 2022118)
    {
      c.getPlayer().dropMessage(1, "請保留該物品. 他將會讓妳衝捲100%過.");
      c.getSession().write(MaplePacketCreator.enableActions());
      return;
    }
    if (itemId == 2022065)
    {
      NPCScriptManager.getInstance().start(c, 9010000, "JobChanger", null);
    }
    else if ((toUse != null) && (toUse.getQuantity() > 0))
    {
      if (toUse.getItemId() != itemId) {
        return;
      }
      if (ii.isTownScroll(itemId))
      {
        if (ii.getItemEffect(toUse.getItemId()).applyTo(c.getPlayer())) {
          MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, (short)1, false);
        }
        c.getSession().write(MaplePacketCreator.enableActions());
        return;
      }
      MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, (short)1, false);
      ii.getItemEffect(toUse.getItemId()).applyTo(c.getPlayer());
    }
  }
}
複製代碼
瀏覽 3986 回復 3

您需要登錄後才可以回帖 登錄 | 註冊會員

:這是我在 OD 端裡面翻到的 2016-12-13 17:34回復
:哈哈,這東西我是希望能消失,根本破壞平衡。 2016-12-13 15:14回復
:這不是傳說中的生日祝福 2016-12-13 14:38回復
返回頂部