Пример #1
0
 private void HandleMapItemClick(OldMapItem mi)
 {
     if ((_mainCharacter.ID != mi.OwningPlayerID && mi.OwningPlayerID != 0) &&
         (mi.IsNPCDrop && (DateTime.Now - mi.DropTime).TotalSeconds <= OldWorld.Instance.NPCDropProtectTime) ||
         (!mi.IsNPCDrop && (DateTime.Now - mi.DropTime).TotalSeconds <= OldWorld.Instance.PlayerDropProtectTime))
     {
         OldCharacter charRef = _parentMapRenderer.GetOtherPlayerByID((short)mi.OwningPlayerID);
         EOResourceID msg     = charRef == null ? EOResourceID.STATUS_LABEL_ITEM_PICKUP_PROTECTED : EOResourceID.STATUS_LABEL_ITEM_PICKUP_PROTECTED_BY;
         string       extra   = charRef == null ? "" : charRef.Name;
         EOGame.Instance.Hud.SetStatusLabel(EOResourceID.STATUS_LABEL_TYPE_INFORMATION, msg, extra);
     }
     else
     {
         var item = OldWorld.Instance.EIF[mi.ItemID];
         if (!EOGame.Instance.Hud.InventoryFits(mi.ItemID))
         {
             EOGame.Instance.Hud.SetStatusLabel(EOResourceID.STATUS_LABEL_TYPE_INFORMATION, EOResourceID.STATUS_LABEL_ITEM_PICKUP_NO_SPACE_LEFT);
         }
         else if (_mainCharacter.Weight + item.Weight * mi.Amount > _mainCharacter.MaxWeight)
         {
             EOGame.Instance.Hud.SetStatusLabel(EOResourceID.STATUS_LABEL_TYPE_WARNING, EOResourceID.DIALOG_ITS_TOO_HEAVY_WEIGHT);
         }
         else if (!_game.API.GetItem(mi.UniqueID)) //server validates drop protection anyway
         {
             EOGame.Instance.DoShowLostConnectionDialogAndReturnToMainMenu();
         }
     }
 }
Пример #2
0
        private void _handleItemDrop(OldPacket pkt)
        {
            if (OnDropItem == null)
            {
                return;
            }
            short      _id             = pkt.GetShort();
            int        _amount         = pkt.GetThree();
            int        characterAmount = pkt.GetInt(); //amount remaining for the character
            OldMapItem item            = new OldMapItem
            {
                ItemID   = _id,
                Amount   = _amount,
                UniqueID = pkt.GetShort(),
                X        = pkt.GetChar(),
                Y        = pkt.GetChar(),
                //turn off drop protection since main player dropped it
                DropTime       = DateTime.Now.AddSeconds(-5),
                IsNPCDrop      = false,
                OwningPlayerID = 0                                                    //id of 0 means the currently logged in player owns it
            };
            byte characterWeight = pkt.GetChar(), characterMaxWeight = pkt.GetChar(); //character adjusted weights

            OnDropItem(characterAmount, characterWeight, characterMaxWeight, item);
        }
        private void _dropItem(int characterAmount, byte weight, byte maxWeight, OldMapItem item)
        {
            OldWorld.Instance.ActiveMapRenderer.AddMapItem(item);
            if (characterAmount >= 0) //will be -1 when another player drops
            {
                OldWorld.Instance.MainPlayer.ActiveCharacter.UpdateInventoryItem(item.ItemID, characterAmount, weight, maxWeight);

                var rec = OldWorld.Instance.EIF[item.ItemID];
                m_game.Hud.AddChat(ChatTab.System, "",
                                   $"{OldWorld.GetString(EOResourceID.STATUS_LABEL_ITEM_DROP_YOU_DROPPED)} {item.Amount} {rec.Name}",
                                   ChatIcon.DownArrow);
                m_game.Hud.SetStatusLabel(EOResourceID.STATUS_LABEL_TYPE_INFORMATION, EOResourceID.STATUS_LABEL_ITEM_DROP_YOU_DROPPED,
                                          $" {item.Amount} {rec.Name}");
            }
        }
Пример #4
0
        private void _handleItemAdd(OldPacket pkt)
        {
            if (OnDropItem == null)
            {
                return;
            }
            OldMapItem item = new OldMapItem
            {
                ItemID         = pkt.GetShort(),
                UniqueID       = pkt.GetShort(),
                Amount         = pkt.GetThree(),
                X              = pkt.GetChar(),
                Y              = pkt.GetChar(),
                DropTime       = DateTime.Now,
                IsNPCDrop      = false,
                OwningPlayerID = -1 //another player dropped. drop protection says "Item protected" w/o player name
            };

            OnDropItem(-1, 0, 0, item);
        }