public void LeaveSeat(virtualUser usr) { if (seatOwner.UserID == usr.UserID) { seatOwner = null; } }
public static void ChangeName(virtualUser User, string oldName, string newName) { string[] GetCheck = DB.runReadRow("SELECT * FROM clans WHERE clanname='" + newName + "'"); if (GetCheck.Length == 0) // Prevent double clan name! { if (User.Cash - 5000 >= 0) { if (User.ClanRank == 5) // Check if user is master { User.send(new PACKET_CHAT("SYSTEM", PACKET_CHAT.ChatType.Whisper, "SYSTEM >> You've changed clan name for 5,000 cash!", User.SessionID, User.Nickname)); foreach (virtualUser ClanUser in getClanUsers(User.ClanID)) { ClanUser.ClanName = newName; ClanUser.send(new PACKET_CHAT("ClanSystem", PACKET_CHAT.ChatType.Clan, "ClanSystem >> Clan name was changed from: " + oldName + " to: " + newName, ClanUser.ClanID, ClanUser.Nickname)); } User.Cash -= 5000; DB.runQuery("UPDATE users SET cash=cash-2500 WHERE id='" + User.UserID + "'"); DB.runQuery("UPDATE clans SET clanname='" + newName + "' WHERE id='" + User.ClanID + "'"); } else { User.send(new PACKET_CHAT("SYSTEM", PACKET_CHAT.ChatType.Whisper, "SYSTEM >> You cannot change the clan name because you're not the master!", User.SessionID, User.Nickname)); } } else { User.send(new PACKET_CHAT("SYSTEM", PACKET_CHAT.ChatType.Whisper, "SYSTEM >> Not enough cash!", User.SessionID, User.Nickname)); } } else { User.send(new PACKET_CHAT("SYSTEM", PACKET_CHAT.ChatType.Whisper, "SYSTEM >> This clan name is already in use!", User.SessionID, User.Nickname)); } }
private static void connectionRequest(IAsyncResult iAr) { try { int connectionID = 0; for (int i = 1; i < _maxConnections; i++) { if (_activeConnections.Contains(i) == false) { connectionID = i; break; } } if (connectionID > 0) { Socket connectionSocket = ((Socket)iAr.AsyncState).EndAccept(iAr); Logging.WriteLine("[ConnMgr] Accepted connection [" + connectionID + " IP: " + connectionSocket.RemoteEndPoint.ToString().Split(':')[0] + "]"); _activeConnections.Add(connectionID); _acceptedConnections++; virtualUser newUser = new virtualUser(connectionID, connectionSocket); } } catch { } socketHandler.BeginAccept(new AsyncCallback(connectionRequest), socketHandler); }
public override void Handle(virtualUser User) { try { int Type = Convert.ToInt32(getNextBlock()); virtualRoom currentRoom = User.Room; if (currentRoom.getSide(User) == 1 && User.Weapon == 118) // NIU { if (currentRoom.bombPlanted == false) { User.disconnect(); } currentRoom.bombPlanted = false; currentRoom.bombDefused = true; currentRoom.prepareRound(1); currentRoom.cNIUExplosivePoints += 12; } else if (currentRoom.getSide(User) == 0 && User.Weapon == 91) // Derb { currentRoom.bombPlanted = true; currentRoom.cDerbExplosivePoints += 6; currentRoom.RoundTimeLeft = 44000; } currentRoom.send(new PACKET_BOMB(getAllBlocks())); } catch (Exception ex) { Log.AppendError("currentRoom Bomb error: " + ex.Message); } }
public override void Handle(virtualUser User) { try { if (User.Room != null) { if (User.Room.PlayerCount < User.Room.MaxPlayers) { string Username = getNextBlock(); string Message = getNextBlock(); if (Username == "NULL") // Send Random User { System.Collections.ArrayList _ValidPlayers = new System.Collections.ArrayList(); foreach (virtualUser _User in Managers.UserManager.getAllUsers()) { if (_User != null && _User.Room == null && _User.Channel == User.Channel) { _ValidPlayers.Add(_User); } } if (_ValidPlayers.Count > 0) { int rPlayer = new System.Random().Next(0, _ValidPlayers.Count - 1); virtualUser _Target = (virtualUser)_ValidPlayers[rPlayer]; if (_Target != null) { _Target.send(new Packets.PACKET_ROOM_INVITE(User, Message)); User.send(new Packets.PACKET_ROOM_INVITE(Packets.PACKET_ROOM_INVITE.ErrorCodes.Invited)); } } } else { // Match User foreach (virtualUser _User in Managers.UserManager.getAllUsers()) { if (_User.Nickname.ToLower() == Username.ToLower()) { if (_User.Room == null) { _User.send(new Packets.PACKET_ROOM_INVITE(User, Message)); User.send(new Packets.PACKET_ROOM_INVITE(User, Message)); return; } else { User.send(new Packets.PACKET_ROOM_INVITE(Packets.PACKET_ROOM_INVITE.ErrorCodes.IsPlaying)); return; } } } User.send(new Packets.PACKET_ROOM_INVITE(Packets.PACKET_ROOM_INVITE.ErrorCodes.GenericError)); } } } } catch { } }
public static void KickClan(virtualUser User, string Nickname) { // Kick a member from the clan bool UserFound = false; if (User.ClanID != 1 && User.ClanRank == 5 && Nickname.ToLower() != User.Nickname.ToLower()) { string[] selectedUser = DB.runReadRow("SELECT id, clanrank FROM users WHERE nickname='" + Nickname.ToLower() + "' AND clanid='" + User.ClanID + "'"); if (selectedUser.Length > 0) { if (selectedUser[1] == "5") { return; } DB.runQuery("UPDATE users SET clanid='-1', clanrank='1' WHERE id='" + selectedUser[0] + "'"); foreach (virtualUser Players in getClanUsers(User.ClanID)) { Players.send(new PACKET_CHAT("ClanSystem", PACKET_CHAT.ChatType.Clan, "ClanSystem >> " + Nickname + " got kicked from the clan by" + User.Nickname + " :/!", User.ClanID, "NULL")); } return; } else { UserFound = false; } if (UserFound == false) { User.send(new PACKET_CHAT("SYSTEM", PACKET_CHAT.ChatType.Whisper, "SYSTEM >> The user " + Nickname + " is not in your clan or doesn't exist!", User.SessionID, User.Nickname)); } } }
public PACKET_INIT_PLAYER(virtualUser User) { try { virtualRoom Room = User.Room; if (Room == null) { return; } this.newPacket(30017); this.addBlock(Room.Players.Count); foreach (virtualUser RoomUser in Room.Players) { this.addBlock(RoomUser.RoomSlot); this.addBlock(RoomUser.Health); this.addBlock(-1); this.addBlock(-1); this.addBlock(-1); } this.addBlock(Room.Vehicles.Count); foreach (Vehicle virtualVehicle in Room.Vehicles.Values) { this.addBlock(virtualVehicle.ID); this.addBlock(virtualVehicle.Health); this.addBlock(virtualVehicle.MaxHealth); this.addBlock("NULL"); } } catch (Exception ex) { Log.AppendError("Error at init player: " + ex.Message); } }
public static void RemoveClan(virtualUser User) { if (User.ClanID != -1) // If user has a clan { if (User.ClanRank == 2) // If user is the master { /* Execute query for the database */ DB.runQuery("DELETE FROM clans WHERE clanname='" + User.ClanName + "'"); DB.runQuery("DELETE FROM clans_clanwars WHERE clanname1='" + User.ClanName + "' OR clanname2='" + User.ClanName + "'"); DB.runQuery("UPDATE users SET clanid='-1', clanrank='-1' WHERE clanid='" + User.ClanID + "'"); foreach (virtualUser Players in UserManager.getAllUsers()) { if (Players.ClanID == User.ClanID) { // If user is in the same clan of master updates live! Players.send(new PACKET_CHAT("ClanSystem", PACKET_CHAT.ChatType.Clan, "ClanSystem >> " + User.Nickname + " disbanded the clan :(", Players.ClanID, "NULL")); Players.ClanID = -1; Players.ClanRank = -1; Players.ClanIconID = -1; } } // Remove the clan Clans.Remove(getClan(User.ClanID)); User.send(new PACKET_CLAN()); return; } else // If user has clan but isn't the master { User.send(new PACKET_CHAT("SYSTEM", PACKET_CHAT.ChatType.Whisper, "SYSTEM >> Cannot delete the clan because you're not the master!", User.SessionID, User.Nickname)); } } }
public static void UpgradeClan(virtualUser User) { if (User.ClanID == -1) { User.send(new PACKET_CHAT("SYSTEM", PACKET_CHAT.ChatType.Whisper, "SYSTEM >> You doesn't own a clan!", User.SessionID, User.Nickname)); } else if (User.ClanRank != 2) { User.send(new PACKET_CHAT("SYSTEM", PACKET_CHAT.ChatType.Whisper, "SYSTEM >> You're not the owner of the clan!", User.SessionID, User.Nickname)); } else if (User.Cash - 10000 < 0) { User.send(new PACKET_CHAT("SYSTEM", PACKET_CHAT.ChatType.Whisper, "SYSTEM >> Not enough money!", User.SessionID, User.Nickname)); } else if (getClan(User.ClanID).maxUsers >= 100) { User.send(new PACKET_CHAT("SYSTEM", PACKET_CHAT.ChatType.Whisper, "SYSTEM >> Your clan cannot be extended more!!", User.SessionID, User.Nickname)); } else { int MaxUsers = getClan(User.ClanID).maxUsers; getClan(User.ClanID).maxUsers += 20; int NewMaxUsers = getClan(User.ClanID).maxUsers; foreach (virtualUser ClanUser in getClanUsers(User.ClanID)) { ClanUser.send(new PACKET_CHAT("ClanSystem", PACKET_CHAT.ChatType.Clan, "ClanSystem >> " + User.Nickname + " has upgraded clan slots from: " + MaxUsers + " to: " + NewMaxUsers + ":)!", User.ClanID, "NULL")); } DB.runQuery("UPDATE clans SET maxusers=maxusers+20 WHERE id='" + User.ClanID + "'"); } }
/// <summary> /// Ran on a thread with an interval of 2 minutes. Drops 'dead' virtual events (events where the hoster has left the virtual room where the event was hosted) from the manager. /// </summary> private static void dropDeadEvents() { while (true) { for (int i = 0; i < categoryAmount; i++) { foreach (virtualEvent Event in ((Hashtable)Events[i].Clone()).Values) { if (userManager.containsUser(Event.userID) == false) { using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("DELETE FROM events WHERE roomid = '" + Event.roomID + "'"); } Events[i].Remove(Event.roomID); } else { virtualUser Hoster = userManager.getUser(Event.userID); if (Hoster._roomID != Event.roomID) { using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("DELETE FROM events WHERE roomid = '" + Event.roomID + "'"); } Events[i].Remove(Event.roomID); Hoster._hostsEvent = false; } } } } Thread.Sleep(deadEventDropInterval); // Sleep the configured amount of time before repeating Out.WriteTrace("Drop dead event loop"); } }
/// <summary> /// Adds a virtualUser class together with the userID to the userManager. Login ticket will be nulled and previous logged in instances of this user will be dropped. /// </summary> /// <param name="userID">The ID of the user to add.</param> /// <param name="User">The virtualUser class of this user.</param> public static void addUser(int userID, virtualUser User) { if (_Users.ContainsKey(userID)) { virtualUser oldUser = ((virtualUser)_Users[userID]); oldUser.Disconnect(); if (_Users.ContainsKey(userID)) { _Users.Remove(userID); } } if (User.connectionRemoteIP == DB.runRead("SELECT ipaddress_last FROM users WHERE name = '" + User._Username + "'")) { _Users.Add(userID, User); DB.runQuery("UPDATE users SET ticket_sso = NULL WHERE id = '" + userID + "' LIMIT 1"); Out.WriteLine("User " + userID + " logged in. [" + User._Username + "]", Out.logFlags.BelowStandardAction); } else { User.Disconnect(1000); User.sendData("BK" + "Invalid Session Ticket, please login again!"); } if (_Users.Count > _peakUserCount) { _peakUserCount = _Users.Count; } }
/// <summary> /// Ran on a thread with an interval of 2 minutes. Drops 'dead' virtual events (events where the hoster has left the virtual room where the event was hosted) from the manager. /// </summary> private static void dropDeadEvents() { while (true) { for (int i = 0; i < categoryAmount; i++) { foreach (virtualEvent Event in ((Hashtable)Events[i].Clone()).Values) { if (userManager.containsUser(Event.userID) == false) { Events[i].Remove(Event.roomID); } else { virtualUser Hoster = userManager.getUser(Event.userID); if (Hoster._roomID != Event.roomID) { Events[i].Remove(Event.roomID); Hoster._hostsEvent = false; } } } } Thread.Sleep(deadEventDropInterval); // Sleep the configured amount of time before repeating Out.WriteTrace("Drop dead event loop"); } }
public override void Handle(virtualUser User) { try { //if (User.Room.RoomType == 1 && User.Room.RoomStatus == 2) return; Virtual_Objects.Room.virtualRoom Room = User.Room; if (Room.Channel == 3 && Room.Mode == 12) { if (User.IsEscapeZombie) { Room.EscapeZombie--; } else { Room.EscapeHuman--; } } if (User.isSpectating) { User.Room.removeSpectator(User); return; } if (User.Room != null) { User.Room.RemoveUser(User.RoomSlot); } User.Alive = false; //FreeWar : Test Per Bug CQC User.BackedToRoom = false; User.send(new Packets.PACKET_ROOM_LIST(User, User.Page)); } catch (Exception ex) { Log.AppendError(ex.Message); } }
/// <summary> /// Adds a virtualUser class together with the userID to the userManager. Login ticket will be nulled and previous logged in instances of this user will be dropped. /// </summary> /// <param name="userID">The ID of the user to add.</param> /// <param name="User">The virtualUser class of this user.</param> public static void addUser(int userID, virtualUser User) { if (_Users.ContainsKey(userID)) { virtualUser oldUser = ((virtualUser)_Users[userID]); oldUser.Disconnect(); if (_Users.ContainsKey(userID)) { _Users.Remove(userID); } } using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("name", User._Username); if (User.connectionRemoteIP == dbClient.getString("SELECT ipaddress_last FROM users WHERE name = @name LIMIT 1")) { _Users.Add(userID, User); dbClient.runQuery("UPDATE users SET ticket_sso = NULL WHERE id = '" + userID + "' LIMIT 1"); Out.WriteLine("User " + userID + " logged in. [" + User._Username + "]", Out.logFlags.BelowStandardAction); } else { User.Disconnect(1000); User.sendData("BK" + "Invalid Session Ticket, please login again!"); } if (_Users.Count > dbClient.getInt("SELECT onlinecount_peak FROM system")) { _peakUserCount = _Users.Count; } } }
internal gamePlayer(virtualUser User, int roomUID, Game Game) { this.User = User; this.roomUID = roomUID; this.Game = Game; this.teamID = -1; }
/// <summary> /// Initializes a virtual room user. /// </summary> /// <param name="userID">The database ID of the virtual user of this room user object.</param> /// <param name="roomID">The database ID of the room where the room user is in.</param> /// <param name="roomUID">The ID that identifies the room user in the virtual room.</param> /// <param name="User">The parent vittual user of this room user.</param> /// <param name="statusManager">The status manager of this room user.</param> internal virtualRoomUser(int userID, int roomID, int roomUID, virtualUser User, virtualRoomUserStatusManager statusManager) { this.userID = userID; this.roomID = roomID; this.roomUID = roomUID; this.User = User; this.statusManager = statusManager; }
public PACKET_LOGIN_EVENT_MESSEGE(virtualUser User) { newPacket(21281); addBlock("0"); addBlock("CZ99"); addBlock((User.rebuildWeaponList())); addBlock(User.rebuildCostumeList()); }
public override void Handle(virtualUser User) { int ID = Convert.ToInt32(getBlock(0)); int Days = 0; int CouponToRemove = 0; string WeaponToBuy = null; #region Calculate switch (ID) { case 0: WeaponToBuy = "DS01"; Days = 3; CouponToRemove = 5; break; case 1: WeaponToBuy = "DS10"; Days = 3; CouponToRemove = 10; break; case 2: WeaponToBuy = "DS03"; Days = 3; CouponToRemove = 10; break; case 3: WeaponToBuy = "DF15"; Days = 3; CouponToRemove = 20; break; case 4: WeaponToBuy = "DG40"; Days = 3; CouponToRemove = 25; break; case 5: WeaponToBuy = "DJ35"; Days = 3; CouponToRemove = 30; break; case 6: WeaponToBuy = "CC41"; Days = 1; CouponToRemove = 30; break; case 7: WeaponToBuy = "DG22"; Days = 3; CouponToRemove = 35; break; case 8: WeaponToBuy = "DC77"; Days = 7; CouponToRemove = 45; break; default: User.disconnect(); break; } #endregion if (User.Coupons >= CouponToRemove) { int InventorySlot = User.InventorySlots; if (InventorySlot > 0) { User.Coupons -= CouponToRemove; DB.runQuery("UPDATE users SET coupons='" + User.Coupons + "' WHERE id='" + User.UserID + "'"); if (WeaponToBuy == null) { User.disconnect(); } User.AddItem(WeaponToBuy, Days, 1); User.send(new PACKET_COUPON_BUY(WeaponToBuy, User)); User.send(new PACKET_COUPON_EVENT(User)); User.reloadCash(); } else { User.send(new PACKET_ITEMSHOP(PACKET_ITEMSHOP.ErrorCodes.InventoryFull, "NULL")); } } else { User.send(new PACKET_COUPON_BUY(PACKET_COUPON_BUY.ErrorCode.NotEnoughCoupons)); } }
public void Leave(virtualUser usr) { if (usr.currentSeat != null) { usr.currentSeat.LeaveSeat(usr); usr.currentSeat = null; } usr.currentVehicle = null; }
public bool TakeSeat(virtualUser usr) { if (seatOwner == null) { seatOwner = usr; return(true); } return(false); }
public override void Handle(virtualUser User) { //N***a will invade the world. bool Equip = (getBlock(0) == "0") ? true : false; int Class = Convert.ToInt32(getBlock(1)); string Code = getBlock(4); int WhereToPlace = Convert.ToInt32(getBlock(5)); string Costume = getCostume(User, Class); Item Item = ItemManager.getItem(Code); { if (Equip == true) { string[] Placment = Costume.Split(new char[] { ',' }); if (Code.Contains("BA")) { for (int I = 0; I < Placment.Length; I++) { Placment[I] = "^"; } Placment[0] = Code; } else { Placment[WhereToPlace] = Code; } string newCostumeParts = string.Join(",", Placment); Code = newCostumeParts; updateCostume(User, Class, Code); DB.runQuery("UPDATE users_costumes SET class_" + Class + "='" + Code + "' WHERE ownerid='" + User.UserID + "'"); } else { string[] Placment = Costume.Split(new char[] { ',' }); if (Code.Contains("BA")) { for (int I = 0; I < Placment.Length; I++) { Placment[I] = "^"; } Placment[0] = getDefaultClass(Class); } else { Placment[WhereToPlace] = "^"; } string newCostumeParts = string.Join(",", Placment); Code = newCostumeParts; updateCostume(User, Class, Code); DB.runQuery("UPDATE users_costumes SET class_" + Class + "='" + Code + "' WHERE ownerid='" + User.UserID + "'"); } } User.send(new Packets.PACKET_COSTUME_EQUIPMENT(User, Class, Code)); User.reloadCash(); }
public bool TakeSeat(int ID, virtualUser usr) { Seats.Values.Where(r => r.seatOwner.UserID == usr.UserID).First().LeaveSeat(usr); foreach (VehicleSeat Seat in Seats.Values) { return(Seat.TakeSeat(usr)); } return(false); }
public int GetSeat(virtualUser usr) { try { return(Seats.Values.Where(r => r.seatOwner.UserID == usr.UserID).First().ID); } catch { } return(-1); }
public VehicleSeat GetSeatByUser(virtualUser usr) { try { return(Seats.Values.Where(r => r.seatOwner.UserID == usr.UserID).First()); } catch { } return(null); }
public int GetUserSeatID(virtualUser usr) { var v = Seats.Values.Where(r => r.seatOwner.UserID == usr.UserID).FirstOrDefault(); if (v != null) { return(v.ID); } return(-1); }
public PACKET_HAMRADIO(virtualUser User) { newPacket(30720); addBlock(1111); addBlock(1); addBlock("CZ73"); addBlock((User.rebuildWeaponList()).ToString().Remove((User.rebuildWeaponList()).ToString().Length - 1)); addBlock(User.getSlots()); addBlock(User.Dinar); }
public static void sendToClan(virtualUser User, Packet p) { foreach (virtualUser ServerUser in UserManager.getAllUsers()) { if (ServerUser.ClanID == User.ClanID && ServerUser.ClanRank != -1) // Check for clan id { ServerUser.send(p); } } }
public PACKET_GUN_SMITH(virtualUser User, string item, PACKET_GUN_SMITH.WonType type) { this.newPacket(30995); this.addBlock(1); this.addBlock(item); this.addBlock((byte)type); this.addBlock(User.Dinar); this.addBlock(User.Cash); this.addBlock(User.rebuildWeaponList()); this.addBlock(User.Equipment); }
public PACKET_SUPPLY_EVENT(virtualUser Client, virtualRoom Room, string ItemCode) { // // 6 1 0 0 DF13 1 newPacket(30053); addBlock(6); // FreeWar : Questo Dovrebbe la identificazione dello Stage! addBlock(1); addBlock(0); addBlock(Client.SupplyTemp); addBlock(ItemCode); // code arma addBlock("3"); // tempo }
public static bool addUser(virtualUser User) { if (UserManager._Users.Contains(User)) { return(false); } UserManager._Users.Add(User); DB.runQuery("UPDATE users SET online = '1' WHERE id=" + User.UserID); User.LoginCountry.getName(); Log.AppendText(User.Nickname + " logged in from " + User.Country.ToString() + " !"); return(true); }