public static void Notify(ReceivablePacket packet) { long objectId = packet.ReadLong(); CharacterDataHolder characterData = new CharacterDataHolder(); characterData.SetName(packet.ReadString()); characterData.SetRace((byte)packet.ReadByte()); characterData.SetHeight(packet.ReadFloat()); characterData.SetBelly(packet.ReadFloat()); characterData.SetHairType((byte)packet.ReadByte()); characterData.SetHairColor(packet.ReadInt()); characterData.SetSkinColor(packet.ReadInt()); characterData.SetEyeColor(packet.ReadInt()); characterData.SetHeadItem(packet.ReadInt()); characterData.SetChestItem(packet.ReadInt()); characterData.SetLegsItem(packet.ReadInt()); characterData.SetHandsItem(packet.ReadInt()); characterData.SetFeetItem(packet.ReadInt()); characterData.SetLeftHandItem(packet.ReadInt()); characterData.SetRightHandItem(packet.ReadInt()); characterData.SetX(packet.ReadFloat()); characterData.SetY(packet.ReadFloat()); characterData.SetZ(packet.ReadFloat()); characterData.SetHeading(packet.ReadFloat()); WorldManager.Instance.UpdateObject(objectId, characterData); }
public PlayerOptionsUpdate(GameClient client, ReceivablePacket packet) { try { MySqlConnection con = DatabaseManager.GetConnection(); MySqlCommand cmd = new MySqlCommand(UPDATE_CHARACTER_OPTIONS_QUERY, con); cmd.Parameters.AddWithValue("chat_color_normal", packet.ReadInt()); cmd.Parameters.AddWithValue("chat_color_message", packet.ReadInt()); cmd.Parameters.AddWithValue("chat_color_system", packet.ReadInt()); cmd.Parameters.AddWithValue("chat_use_timestamps", packet.ReadByte()); cmd.Parameters.AddWithValue("key_up_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_up_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_down_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_down_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_left_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_left_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_right_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_right_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_jump_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_jump_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_character_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_character_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_inventory_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_inventory_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_skills_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_skills_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_1_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_1_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_2_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_2_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_3_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_3_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_4_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_4_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_5_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_5_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_6_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_6_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_7_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_7_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_8_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_8_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_9_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_9_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_10_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_10_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_11_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_11_2", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_12_1", packet.ReadShort()); cmd.Parameters.AddWithValue("key_shortcut_12_2", packet.ReadShort()); cmd.Parameters.AddWithValue("name", client.GetActiveChar().GetName()); cmd.ExecuteNonQuery(); con.Close(); } catch (Exception e) { LogManager.Log(e.ToString()); } }
public static void notify(ReceivablePacket packet) { int objectId = packet.ReadInt(); string playerName = packet.ReadString(); float posX = packet.ReadFloat(); float posY = packet.ReadFloat(); float posZ = packet.ReadFloat(); int posHeading = packet.ReadInt(); //TODO: Manage PlayerInformation WorldManager.instance.AddObject(objectId, posX, posY, posZ, posHeading); }
public static void Notify(ReceivablePacket packet) { OptionsManager.chatColorNormalIntValue = packet.ReadInt(); OptionsManager.chatColorMessageIntValue = packet.ReadInt(); OptionsManager.chatColorSystemIntValue = packet.ReadInt(); OptionsManager.useChatTimestamps = packet.ReadByte() == 1; InputManager.SetKeybind(0, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(1, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(2, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(3, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(4, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(5, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(6, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(7, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(8, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(9, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(10, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(11, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(12, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(13, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(14, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(15, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(16, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(17, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(18, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(19, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(20, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(21, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(22, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(23, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(24, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(25, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(26, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(27, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(28, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(29, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(30, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(31, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(32, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(33, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(34, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(35, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(36, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(37, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(38, (KeyCode)packet.ReadShort()); InputManager.SetKeybind(39, (KeyCode)packet.ReadShort()); }
public static void Process(ReceivablePacket packet) { // Server information. long objectId = packet.ReadLong(); CharacterDataHolder npcTemplate = NpcData.GetNpc(packet.ReadInt()); CharacterDataHolder characterData = new CharacterDataHolder(); characterData.SetX(packet.ReadFloat()); characterData.SetY(packet.ReadFloat()); characterData.SetZ(packet.ReadFloat()); characterData.SetHeading(packet.ReadFloat()); characterData.SetCurrentHp(packet.ReadLong()); // Client information. characterData.SetName(npcTemplate.GetName()); characterData.SetRace(npcTemplate.GetRace()); characterData.SetHeight(npcTemplate.GetHeight()); characterData.SetBelly(npcTemplate.GetBelly());; characterData.SetHairType(npcTemplate.GetHairType()); characterData.SetHairColor(npcTemplate.GetHairColor()); characterData.SetSkinColor(npcTemplate.GetSkinColor()); characterData.SetEyeColor(npcTemplate.GetEyeColor()); characterData.SetHeadItem(npcTemplate.GetHeadItem()); characterData.SetChestItem(npcTemplate.GetChestItem()); characterData.SetLegsItem(npcTemplate.GetLegsItem()); characterData.SetHandsItem(npcTemplate.GetHandsItem()); characterData.SetFeetItem(npcTemplate.GetFeetItem()); characterData.SetLeftHandItem(npcTemplate.GetLeftHandItem()); characterData.SetRightHandItem(npcTemplate.GetRightHandItem()); characterData.SetMaxHp(npcTemplate.GetMaxHp()); characterData.SetTargetable(npcTemplate.IsTargetable()); WorldManager.Instance.UpdateObject(objectId, characterData); }
public static void Notify(ReceivablePacket packet) { // Get player list size. int listSize = packet.ReadByte(); // Read the data. List <CharacterDataHolder> characterList = new List <CharacterDataHolder>(listSize); for (int i = 0; i < listSize; i++) { CharacterDataHolder characterData = new CharacterDataHolder(); characterData.SetName(packet.ReadString()); characterData.SetSlot((byte)packet.ReadByte()); characterData.SetSelected(packet.ReadByte() == 1 ? true : false); characterData.SetRace((byte)packet.ReadByte()); characterData.SetHeight(packet.ReadFloat()); characterData.SetBelly(packet.ReadFloat()); characterData.SetHairType(packet.ReadByte()); characterData.SetHairColor(packet.ReadInt()); characterData.SetSkinColor(packet.ReadInt()); characterData.SetEyeColor(packet.ReadInt()); characterData.SetHeadItem(packet.ReadInt()); characterData.SetChestItem(packet.ReadInt()); characterData.SetLegsItem(packet.ReadInt()); characterData.SetHandsItem(packet.ReadInt()); characterData.SetFeetItem(packet.ReadInt()); characterData.SetLeftHandItem(packet.ReadInt()); characterData.SetRightHandItem(packet.ReadInt()); characterData.SetX(packet.ReadFloat()); characterData.SetY(packet.ReadFloat()); characterData.SetZ(packet.ReadFloat()); characterData.SetHeading(packet.ReadFloat()); characterData.SetExperience(packet.ReadLong()); characterData.SetCurrentHp(packet.ReadLong()); characterData.SetMaxHp(packet.ReadLong()); characterData.SetCurrentMp(packet.ReadLong()); characterData.SetMaxMp(packet.ReadLong()); characterData.SetAccessLevel((byte)packet.ReadByte()); characterList.Add(characterData); } // Send the data. MainManager.Instance.SetCharacterList(characterList); // Enable player selection. CharacterSelectionManager.Instance.SetWaitingServer(false); }
public static void Notify(ReceivablePacket packet) { int itemCount = packet.ReadInt(); List <ItemHolder> items = new List <ItemHolder>(itemCount); for (int i = 0; i < itemCount; i++) { ItemHolder itemHolder = new ItemHolder(ItemData.GetItemTemplate(packet.ReadInt())); itemHolder.SetSlot(packet.ReadInt()); // 1 Head, 2 Chest, 3 Legs, 4 Hands, 5 Feet, 6 Left hand, 7 Right hand, followed by inventory slots. itemHolder.SetQuantity(packet.ReadInt()); itemHolder.SetEnchant(packet.ReadInt()); items.Add(itemHolder); } // TODO: Use items to update inventory. }
public static void notify(ReceivablePacket packet) { int objectId = packet.ReadInt(); float posX = packet.ReadFloat(); float posY = packet.ReadFloat(); float posZ = packet.ReadFloat(); WorldManager.instance.MoveObject(objectId, posX, posY, posZ); }
public static void Notify(ReceivablePacket packet) { // Read Data int listSize = packet.ReadInt(); ArrayList itemList = new ArrayList(listSize); for (int i = 0; i < listSize; i++) { int itemID = packet.ReadInt(); int equiped = packet.ReadInt(); int amount = packet.ReadInt(); int enchant = packet.ReadInt(); InventoryHolder itemData = new InventoryHolder(itemID, equiped, amount, enchant); itemList.Add(itemData); } InventoryManager.Instance.ItemsList(itemList); }
public static void Notify(ReceivablePacket packet) { // Read Data int listSize = packet.ReadInt(); ArrayList itemList = new ArrayList(listSize); for (int i = 0; i < listSize; i++) { int itemId = packet.ReadInt(); bool equiped = packet.ReadInt() == 1 ? true : false; int amount = packet.ReadInt(); int enchant = packet.ReadInt(); ItemInfoHolder itemData = new ItemInfoHolder(itemId, equiped, amount, enchant); itemList.Add(itemData); } InventoryManager.Instance.CharacterItems(itemList); }
public static void notify(ReceivablePacket packet) { // Get player list size. int listSize = packet.ReadByte(); // Read the data. ArrayList characterList = new ArrayList(listSize); for (int i = 0; i < listSize; i++) { CharacterDataHolder characterData = new CharacterDataHolder(); characterData.SetName(packet.ReadString()); characterData.SetSlot((byte)packet.ReadByte()); characterData.SetSelected(packet.ReadByte() == 1 ? true : false); characterData.SetClassId((byte)packet.ReadByte()); characterData.SetLocationName(packet.ReadString()); characterData.SetX(packet.ReadFloat()); characterData.SetY(packet.ReadFloat()); characterData.SetZ(packet.ReadFloat()); characterData.SetHeading(packet.ReadInt()); characterData.SetExperience(packet.ReadLong()); characterData.SetHp(packet.ReadLong()); characterData.SetMp(packet.ReadLong()); characterData.SetAccessLevel((byte)packet.ReadByte()); characterData.SetItemHead(packet.ReadInt()); characterData.SetItemChest(packet.ReadInt()); characterData.SetItemGloves(packet.ReadInt()); characterData.SetItemLegs(packet.ReadInt()); characterData.SetItemBoots(packet.ReadInt()); characterData.SetItemRightHand(packet.ReadInt()); characterData.SetItemLeftHand(packet.ReadInt()); characterList.Add(characterData); } // Send the data. PlayerManager.instance.characterList = characterList; // Enable player selection. CharacterSelectionManager.instance.waitingServer = false; }
public CharacterCreationRequest(GameClient client, ReceivablePacket packet) { // Make sure player has authenticated. if ((client.GetAccountName() == null) || (client.GetAccountName().Length == 0)) { return; } // Read data. string characterName = packet.ReadString(); int race = packet.ReadByte(); float height = packet.ReadFloat(); float belly = packet.ReadFloat(); int hairType = packet.ReadByte(); int hairColor = packet.ReadInt(); int skinColor = packet.ReadInt(); int eyeColor = packet.ReadInt(); // Replace illegal characters. for (int i = 0; i < Util.ILLEGAL_CHARACTERS.Length; i++) { characterName = characterName.Replace(Util.ILLEGAL_CHARACTERS[i], '\''); } // Name character checks. if (characterName.Contains("'")) { client.ChannelSend(new CharacterCreationResult(INVALID_NAME)); return; } if ((characterName.Length < 2) || (characterName.Length > 12)) // 12 should not happen, checking it here in case of client cheat. { client.ChannelSend(new CharacterCreationResult(NAME_IS_TOO_SHORT)); return; } // Visual exploit checks. if ((race < 0 || race > 1) || (height < 0.39 || height > 0.61) || (hairType < 0 || hairType > 3) /*|| (!Config.VALID_SKIN_COLORS.Contains(skinColor))*/) // TODO: Check palette. { client.ChannelSend(new CharacterCreationResult(INVALID_PARAMETERS)); return; } // Account character count database check. int characterCount = 0; int lastCharacterSlot = 0; try { MySqlConnection con = DatabaseManager.GetConnection(); MySqlCommand cmd = new MySqlCommand(ACCOUNT_CHARACTER_QUERY, con); cmd.Parameters.AddWithValue("account", client.GetAccountName()); MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { characterCount++; int slot = reader.GetInt32("slot"); if (slot > lastCharacterSlot) { lastCharacterSlot = slot; } } con.Close(); } catch (Exception e) { LogManager.Log(e.ToString()); } if (characterCount >= Config.ACCOUNT_MAX_CHARACTERS) { client.ChannelSend(new CharacterCreationResult(CANNOT_CREATE_ADDITIONAL_CHARACTERS)); return; } // Check database if name exists. bool characterExists = false; try { MySqlConnection con = DatabaseManager.GetConnection(); MySqlCommand cmd = new MySqlCommand(NAME_EXISTS_QUERY, con); { cmd.Parameters.AddWithValue("name", characterName); MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { characterExists = true; } } con.Close(); } catch (Exception e) { LogManager.Log(e.ToString()); } if (characterExists) { client.ChannelSend(new CharacterCreationResult(NAME_ALREADY_EXISTS)); return; } // Make existing characters selected value false. try { MySqlConnection con = DatabaseManager.GetConnection(); MySqlCommand cmd = new MySqlCommand(CHARACTER_SELECTED_RESET_QUERY, con); cmd.Parameters.AddWithValue("account", client.GetAccountName()); cmd.ExecuteNonQuery(); con.Close(); } catch (Exception e) { LogManager.Log(e.ToString()); } // Create character. try { MySqlConnection con = DatabaseManager.GetConnection(); MySqlCommand cmd = new MySqlCommand(CHARACTER_CREATE_QUERY, con); cmd.Parameters.AddWithValue("account", client.GetAccountName()); cmd.Parameters.AddWithValue("name", characterName); cmd.Parameters.AddWithValue("slot", lastCharacterSlot + 1); cmd.Parameters.AddWithValue("selected", 1); // Selected character. cmd.Parameters.AddWithValue("race", race); cmd.Parameters.AddWithValue("height", height); cmd.Parameters.AddWithValue("belly", belly); cmd.Parameters.AddWithValue("hair_type", hairType); cmd.Parameters.AddWithValue("hair_color", hairColor); cmd.Parameters.AddWithValue("skin_color", skinColor); cmd.Parameters.AddWithValue("eye_color", eyeColor); cmd.Parameters.AddWithValue("x", Config.STARTING_LOCATION.GetX()); cmd.Parameters.AddWithValue("y", Config.STARTING_LOCATION.GetY()); cmd.Parameters.AddWithValue("z", Config.STARTING_LOCATION.GetZ()); cmd.Parameters.AddWithValue("heading", Config.STARTING_LOCATION.GetHeading()); cmd.Parameters.AddWithValue("experience", 0); // TODO: Implement Player level data. cmd.Parameters.AddWithValue("hp", 100); // TODO: Implement Player level data. cmd.Parameters.AddWithValue("mp", 100); // TODO: Implement Player level data. cmd.ExecuteNonQuery(); con.Close(); } catch (Exception e) { LogManager.Log(e.ToString()); } // Create a character_options entry for this character. try { MySqlConnection con = DatabaseManager.GetConnection(); MySqlCommand cmd = new MySqlCommand(CHARACTER_CREATE_OPTIONS_QUERY, con); cmd.Parameters.AddWithValue("name", characterName); cmd.ExecuteNonQuery(); con.Close(); } catch (Exception e) { LogManager.Log(e.ToString()); } // Add starting items. int itemCount = Config.STARTING_ITEMS.Count; if (itemCount > 0) { // Prepare query. StringBuilder query = new StringBuilder(CHARACTER_ITEM_START); List <ItemSlot> usedEquipableSlots = new List <ItemSlot>(); int inventorySlotCounter = 8; // First inventory item slot. foreach (int itemId in Config.STARTING_ITEMS) { query.Append("('"); query.Append(characterName); query.Append("',"); ItemTemplateHolder itemHolder = ItemData.GetItemTemplate(itemId); ItemSlot itemSlot = itemHolder.GetItemSlot(); if (itemHolder.GetItemType() == ItemType.EQUIP && !usedEquipableSlots.Contains(itemSlot)) { usedEquipableSlots.Add(itemSlot); query.Append((int)itemHolder.GetItemSlot()); } else { query.Append(inventorySlotCounter++); } query.Append(","); query.Append(itemId); query.Append(",1,0"); // quantity, enchant query.Append(")"); query.Append(itemCount-- == 1 ? ";" : ","); } // Store new item records. try { MySqlConnection con = DatabaseManager.GetConnection(); MySqlCommand cmd = new MySqlCommand(query.ToString(), con); cmd.ExecuteNonQuery(); con.Close(); } catch (Exception e) { LogManager.Log(e.ToString()); } } // Send success result. client.ChannelSend(new CharacterCreationResult(SUCCESS)); }
public static void notify(ReceivablePacket packet) { int objectId = packet.ReadInt(); // TODO: Delete object from world. }
public static void Handle(GameClient client, ReceivablePacket packet) { /* * switch (packet.ReadShort()) // Packet id. * { * case 1: * new AccountAuthenticationRequest(client, packet); * break; * * case 2: * new CharacterSelectionInfoRequest(client, packet); * break; * * case 3: * new CharacterCreationRequest(client, packet); * break; * * case 4: * new CharacterDeletionRequest(client, packet); * break; * * case 5: * new CharacterSlotUpdate(client, packet); * break; * * case 6: * new CharacterSelectUpdate(client, packet); * break; * * case 7: * new EnterWorldRequest(client, packet); * break; * * case 8: * new ExitWorldRequest(client, packet); * break; * * case 9: * new LocationUpdateRequest(client, packet); * break; * * case 10: * new AnimatorUpdateRequest(client, packet); * break; * * case 11: * new ObjectInfoRequest(client, packet); * break; * * case 12: * new PlayerOptionsUpdate(client, packet); * break; * * case 13: * new ChatRequest(client, packet); * break; * } */ // Test receive. LogManager.Log("" + packet.ReadByte()); LogManager.Log("" + packet.ReadShort()); LogManager.Log("" + packet.ReadInt()); LogManager.Log("" + packet.ReadLong()); LogManager.Log("" + packet.ReadFloat()); LogManager.Log("" + packet.ReadDouble()); LogManager.Log("" + packet.ReadString()); // Test send. SendablePacket send = new SendablePacket(); send.WriteShort(1); // id send.WriteString("All is good!"); client.ChannelSend(send); }