public static void AddToInventory(User player, string itemId, int qty) { var item = Globals.Items.FirstOrDefault(it => it.Id == itemId); if (item == null) { return; } // Check if user already has it var slot = player.Inventory.FirstOrDefault(s => s.ItemId == itemId); if (slot != null) { if (item.Stack) { AddExisting(slot, player, itemId, qty); } else { AddNew(player, itemId, qty); } } else { AddNew(player, itemId, qty); } ServerTcp.SendInventory(Globals.PlayerIDs.First(p => p.Value == player.Id).Key); }
public static void SellItem(int connectionId, int slot, int qty) { var player = Program._userService.ActiveUsers.FirstOrDefault(p => p.Id == Globals.PlayerIDs[connectionId]); var inv = player?.Inventory.FirstOrDefault(i => i.Slot == slot); if (inv == null) { return; } var itm = Globals.Items.FirstOrDefault(i => i.Id == inv.ItemId); if (itm == null) { return; } if (inv.Quantity > qty) { player.Credits += itm.Cost * qty; inv.Quantity -= qty; } else if (inv.Quantity <= qty) { player.Credits += itm.Cost * inv.Quantity; player.Inventory.Remove(inv); } ServerTcp.SendInventory(Globals.PlayerIDs.First(p => p.Value == player.Id).Key); }
private static void PACKET_LOGIN(int connectionId, byte[] data) { var buffer = new ByteBuffer(); buffer.WriteBytes(data); buffer.ReadLong(); var user = buffer.ReadString(); var pass = buffer.ReadString(); var validate = Program._userService.PasswordOK(user, pass); if (!validate) { ServerTcp.SendSystemByte(connectionId, SystemBytes.SysInvPass); return; } buffer.Dispose(); var player = Program._userService.LoadPlayer(user); player.inGame = true; player.connectionID = connectionId; Globals.PlayerIDs.Add(connectionId, player.Id); Program._userService.ActiveUsers.Add(player); ServerTcp.SendGlobals(connectionId); System.Threading.Thread.Sleep(250); ServerTcp.SendItems(connectionId); System.Threading.Thread.Sleep(250); ServerTcp.SendToGalaxy(connectionId); System.Threading.Thread.Sleep(250); ServerTcp.SendIngame(connectionId); System.Threading.Thread.Sleep(250); ServerTcp.SendInventory(connectionId); //ServerTCP.SendNebulae(connectionID); ServerTcp.SendMessage(-1, player.Name + " has connected.", (int)ChatPackets.Notification); System.Threading.Thread.Sleep(250); ServerTcp.SendGalaxy(connectionId); System.Threading.Thread.Sleep(250); ServerTcp.SendRecipes(connectionId); Globals.FullData = true; Cnsl.Log(user + @" logged in successfully."); player.receiving = true; }
public static void Equip(int connectionId, int from, int to) { var player = Program._userService.ActiveUsers.FirstOrDefault(p => p.Id == Globals.PlayerIDs[connectionId]); if (player == null) { return; } var inv = player.Inventory.First(i => i.Slot == from); var newInv = player.Inventory.FirstOrDefault(i => i.Slot == to); if (to >= 100) { if (newInv == null) { inv.Slot = to; } else { if (inv.ItemId == newInv.ItemId) { AddExisting(newInv, player, inv.ItemId, inv.Quantity); } } } else { var item = Globals.Items.First(i => i.Id == inv.ItemId); if (item.Slot == to) { inv.Slot = to; } // Check special cases // Check for weapon if (to >= 4 && to <= 8 && item.Slot == 22) { inv.Slot = to; switch (to) { case 4: player.Weap1ChargeRate = item.Recharge; break; case 5: player.Weap2ChargeRate = item.Recharge; break; case 6: player.Weap3ChargeRate = item.Recharge; break; case 7: player.Weap4ChargeRate = item.Recharge; break; case 8: player.Weap5ChargeRate = item.Recharge; break; } } // Check for muns if (to >= 9 && to <= 11 && item.Slot == 23) { inv.Slot = to; } // Check for armor if (to >= 13 && to <= 20 && item.Slot == 21) { inv.Slot = to; } } ServerTcp.SendInventory(connectionId); }