Mr.DeMo |
12-11-2015 01:03 AM |
حـل مشـكلة الاسـتف بيختـفي او بيتلغبط علي بعضـو
المشـكلة دي ظهرت اليومـين دول كتير عـند بعـض النـاس !
مـش هـرغي كتيـر
افتـح كلآس
وبدلو بالاكواد دي
كود PHP:
using System; using System.Linq; using Conquer_Online_Server.Network.GamePackets; using System.Collections.Generic;
namespace Conquer_Online_Server.Database { public class ConquerItemTable { #region Blob #region Main
public Network.GamePackets.ConquerItem ReadItem(System.IO.BinaryReader reader) { Network.GamePackets.ConquerItem item = new ConquerItem(true); item.ID = reader.ReadUInt32();//4 item.UID = reader.ReadUInt32();//8 item.Durability = reader.ReadUInt16();//10 item.MaximDurability = reader.ReadUInt16();//12 item.Position = reader.ReadUInt16();//14 item.SocketProgress = reader.ReadUInt32();//18 item.PlusProgress = reader.ReadUInt32();//22 item.SocketOne = (Game.Enums.Gem)reader.ReadUInt16();//24 item.SocketTwo = (Game.Enums.Gem)reader.ReadUInt16();//26 item.Effect = (Game.Enums.ItemEffect)reader.ReadUInt16();//28 item.Mode = Game.Enums.ItemMode.Default; item.Plus = reader.ReadByte();//29 item.Bless = reader.ReadByte();//30 item.Bound = reader.ReadBoolean();//31 item.Enchant = reader.ReadByte();//32 item.Lock = reader.ReadByte();//33
item.UnlockEnd = DateTime.FromBinary(reader.ReadInt64());//41 item.Suspicious = reader.ReadBoolean();//42 item.SuspiciousStart = DateTime.FromBinary(reader.ReadInt64());//50
item.Color = (Game.Enums.Color)reader.ReadUInt32();//54 if ((byte)item.Color > 9 || (byte)item.Color < 2) item.Color = (Game.Enums.Color)Kernel.Random.Next(2, 8); item.Warehouse = reader.ReadUInt16();//56 item.StackSize = reader.ReadUInt16();//58
if (item.Lock == 2) if (DateTime.Now >= item.UnlockEnd) item.Lock = 0;
return item; }
#endregion
#region other
public void WriteItem(System.IO.BinaryWriter writer, Network.GamePackets.ConquerItem item) { writer.Write(item.ID); //= reader.ReadUInt32(); writer.Write(item.UID); writer.Write(item.Durability); writer.Write(item.MaximDurability); writer.Write(item.Position); writer.Write(item.SocketProgress); writer.Write(item.PlusProgress); writer.Write((ushort)item.SocketOne); writer.Write((ushort)item.SocketTwo); writer.Write((ushort)item.Effect); writer.Write(item.Plus); writer.Write(item.Bless); writer.Write(item.Bound); writer.Write(item.Enchant); writer.Write(item.Lock); writer.Write(item.UnlockEnd.Ticks); writer.Write(item.Suspicious); writer.Write(item.SuspiciousStart.Ticks); writer.Write((uint)item.Color); writer.Write(item.Warehouse); writer.Write(item.StackSize); // writer.Write((uint)(item.NextGreen | (item.NextBlue << 8) | (item.NextRed << 16))); } public static byte[] GetItemsAraay(Client.GameData client) { uint count = (uint)(client.Inventory.Count + client.Equipment.Count); System.IO.MemoryStream stream = new System.IO.MemoryStream(); System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream); writer.Write(count); foreach (var item in client.Inventory.Objects) new ConquerItemTable().WriteItem(writer, item); foreach (var item in client.Equipment.GetCollection()) new ConquerItemTable().WriteItem(writer, item); return stream.ToArray(); } #endregion
#endregion public static void LoadItems(Client.GameData client) { using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("items").Where("EntityID", client.Entity.UID)) using (var reader = new MySqlReader(cmd)) { while (reader.Read()) { var item = deserialzeItem(reader); if (!ConquerItemInformation.BaseInformations.ContainsKey(item.ID)) continue; HandleInscribing(item, client); ItemAddingTable.GetAddingsForItem(item); #region WareHouse if (item.Warehouse == 0) { switch (item.Position) { case 0: client.Inventory.Add(item, Game.Enums.ItemUse.None); break; default: if (item.Position > 29) continue; if (client.Equipment.Free((byte)item.Position)) client.Equipment.Add(item, Game.Enums.ItemUse.None); else { if (client.Inventory.Count < 40) { item.Position = 0; client.Inventory.Add(item, Game.Enums.ItemUse.None); if (client.Warehouses[Conquer_Online_Server.Game.ConquerStructures.Warehouse.WarehouseID.Market].Count < 20) client.Warehouses[Conquer_Online_Server.Game.ConquerStructures.Warehouse.WarehouseID.Market].Add(item); UpdatePosition(item); } } break; } } else { if (item != null) { Conquer_Online_Server.Game.ConquerStructures.Warehouse.WarehouseID whID = (Game.ConquerStructures.Warehouse.WarehouseID)item.Warehouse; if (client.Warehouses.ContainsKey(whID)) { client.Warehouses[whID].Add(item); } else { using (var cmdx = new MySqlCommand(MySqlCommandType.SELECT).Select("items").Where("Uid", (uint)item.Warehouse)) using (var readerx = new MySqlReader(cmdx)) if (readerx.Read()) { client.Warehouses.Add((Conquer_Online_Server.Game.ConquerStructures.Warehouse.WarehouseID)(uint)item.Warehouse, new Conquer_Online_Server.Game.ConquerStructures.Warehouse(client, (Conquer_Online_Server.Game.ConquerStructures.Warehouse.WarehouseID)(uint)item.Warehouse)); client.Warehouses[(Conquer_Online_Server.Game.ConquerStructures.Warehouse.WarehouseID)(uint)whID].Add(item); } } } } #endregion WareHouse if (item.ID == 720828) { string str = reader.ReadString("agate"); uint key = 0; string[] strArray = str.Split(new char[] { '#' }); foreach (string str2 in strArray) { if (str2.Length > 6) { item.Agate_map.Add(key, str2); key++; } } } } } }
public static ConquerItem deserialzeItem(MySqlReader reader) { ConquerItem item = new Network.GamePackets.ConquerItem(true); item.ID = reader.ReadUInt32("Id"); item.UID = reader.ReadUInt32("Uid"); item.Durability = reader.ReadUInt16("Durability"); item.MaximDurability = reader.ReadUInt16("MaximDurability"); item.Position = reader.ReadUInt16("Position"); item.Agate = reader.ReadString("Agate"); item.SocketProgress = reader.ReadUInt32("SocketProgress"); item.PlusProgress = reader.ReadUInt32("PlusProgress"); item.SocketOne = (Game.Enums.Gem)reader.ReadUInt16("SocketOne"); item.SocketTwo = (Game.Enums.Gem)reader.ReadUInt16("SocketTwo"); item.Effect = (Game.Enums.ItemEffect)reader.ReadUInt16("Effect"); item.Mode = Game.Enums.ItemMode.Default; item.Plus = reader.ReadByte("Plus"); item.Bless = reader.ReadByte("Bless"); item.Bound = reader.ReadBoolean("Bound"); item.Enchant = reader.ReadByte("Enchant"); item.Lock = reader.ReadByte("Locked"); item.UnlockEnd = DateTime.FromBinary(reader.ReadInt64("UnlockEnd")); item.Suspicious = reader.ReadBoolean("Suspicious"); item.SuspiciousStart = DateTime.FromBinary(reader.ReadInt64("SuspiciousStart")); item.Color = (Game.Enums.Color)reader.ReadUInt32("Color"); item.Warehouse = reader.ReadUInt32("Warehouse"); item.StackSize = reader.ReadUInt16("StackSize"); item.RefineItem = reader.ReadUInt32("RefineryItem"); Int64 rTime = reader.ReadInt64("RefineryTime");
if (item.ID == 300000) { uint NextSteedColor = reader.ReadUInt32("NextSteedColor"); item.NextGreen = (byte)(NextSteedColor & 0xFF); item.NextBlue = (byte)((NextSteedColor >> 8) & 0xFF); item.NextRed = (byte)((NextSteedColor >> 16) & 0xFF); } if (item.RefineItem > 0 && rTime != 0) { item.RefineryTime = DateTime.FromBinary(rTime); if (DateTime.Now > item.RefineryTime) { item.RefineryTime = new DateTime(0); item.RefineItem = 0; } } if (item.Lock == 2) if (DateTime.Now >= item.UnlockEnd) item.Lock = 0;
item.DayStamp = DateTime.FromBinary(reader.ReadInt64("DayStamp")); item.Days = reader.ReadByte("Days"); return item; }
public static void UpdateDurabilityItem2(ConquerItem Item, uint ItemID) { if (Item != null) { using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE)) cmd.Update("items").Set("Durability", (long)Item.Durability).Where("UID", (long)Item.UID).And("ID", (long)ItemID).Execute(); } }
public static void SetDurabilityItem0(ConquerItem Item) { using (MySql.Data.MySqlClient.MySqlConnection connection = DataHolder.MySqlConnection) { connection.Open(); using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE)) cmd.Update("items").Set("Durability", (long)0L).Where("UID", (long)Item.UID).Execute(connection); connection.Close(); } }
public static void HandleInscribing(ConquerItem item, Client.GameData client, bool detained = false) { if (client.Entity.GuildID != 0) { if (client.Guild != null) { int itemPosition = Network.PacketHandler.ArsenalPosition(item.ID); if (itemPosition != -1) { var arsenal = client.Guild.Arsenals[itemPosition]; if (arsenal.Unlocked) { if (arsenal.ItemDictionary.ContainsKey(item.UID)) { var arsenalItem = arsenal.ItemDictionary[item.UID]; arsenalItem.Update(item, client); item.Inscribed = true; client.ArsenalDonations[itemPosition] += arsenalItem.DonationWorth; } } } } } } public static ConquerItem LoadItem(uint UID) { using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("items").Where("UID", UID)) using (var reader = new MySqlReader(cmd)) if (reader.Read()) return deserialzeItem(reader); return new ConquerItem(true); }
public static void AddItem(ref ConquerItem Item, Client.GameData client) { try { using (var cmd = new MySqlCommand(MySqlCommandType.INSERT).Insert("items")) cmd.Insert("ID", Item.ID).Insert("UID", Item.UID) .Insert("Plus", Item.Plus).Insert("Bless", Item.Bless) .Insert("Enchant", Item.Enchant).Insert("SocketOne", (byte)Item.SocketOne) .Insert("SocketTwo", (byte)Item.SocketTwo).Insert("Durability", Item.Durability) .Insert("MaximDurability", Item.MaximDurability).Insert("SocketProgress", Item.SocketProgress) .Insert("PlusProgress", Item.PlusProgress).Insert("Effect", (ushort)Item.Effect) .Insert("Bound", Item.Bound).Insert("DayStamp", Item.DayStamp.ToString()).Insert("Days", Item.Days).Insert("Locked", Item.Lock).Insert("UnlockEnd", Item.UnlockEnd.Ticks) .Insert("Suspicious", Item.Suspicious).Insert("SuspiciousStart", Item.SuspiciousStart.Ticks) .Insert("Color", (ushort)Item.Color).Insert("Position", Item.Position).Insert("StackSize", Item.StackSize) .Insert("RefineryItem", Item.RefineItem).Insert("RefineryTime", Item.RefineryTime.Ticks).Insert("EntityID", client.Entity.UID) .Execute(); } catch (Exception e) { Console.WriteLine(e); DeleteItem(Item.UID); AddItem(ref Item, client); } } private static void UpdateData(ConquerItem Item, string column, object value) { UpdateData(Item.UID, column, value); } private static void UpdateData(uint UID, string column, object value) { using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE)) cmd.Update("items").Set(column, value.ToString()) .Where("UID", UID).Execute(); } public static void UpdateBless(ConquerItem Item) { UpdateData(Item, "Bless", Item.Bless); } public static void UpdateRefineryItem(ConquerItem Item) { UpdateData(Item, "RefineryItem", Item.RefineItem); } public static void UpdateRefineryTime(ConquerItem Item) { UpdateData(Item, "RefineryTime", Item.RefineryTime.Ticks); } public static void UpdateItemAgate(ConquerItem Item) { string agate = ""; if (Item.ID == 720828) { foreach (string coord in Item.Agate_map.Values) { agate += coord + "#"; UpdateData(Item, "agate", agate); } } } public static void UpdateColor(ConquerItem Item) { UpdateData(Item, "Color", (uint)Item.Color); } public static void UpdateStack(ConquerItem Item) { UpdateData(Item, "StackSize", Item.StackSize); } public static void UpdateEnchant(ConquerItem Item) { UpdateData(Item, "Enchant", Item.Enchant); } public static void UpdateLock(ConquerItem Item) { UpdateData(Item, "Locked", Item.Lock); UpdateData(Item, "UnlockEnd", Item.UnlockEnd.ToBinary()); } public static void UpdateSockets(ConquerItem Item) { UpdateData(Item, "SocketOne", (byte)Item.SocketOne); UpdateData(Item, "SocketTwo", (byte)Item.SocketTwo); } public static void UpdateSocketProgress(ConquerItem Item) { UpdateData(Item, "SocketProgress", Item.SocketProgress); } public static void UpdateNextSteedColor(ConquerItem Item) { UpdateData(Item, "NextSteedColor", Item.NextGreen | (Item.NextBlue << 8) | (Item.NextRed << 16)); } public static void UpdateDurabilityItem(ConquerItem Item) { } public static void UpdateLocation(ConquerItem Item, Client.GameData client) { if (IsThere(Item.UID)) { using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE)) cmd.Update("items").Set("EntityID", client.Entity.UID) .Set("Position", Item.Position).Set("Warehouse", (uint)Item.Warehouse) .Where("UID", Item.UID).Execute(); } else { using (var cmd = new MySqlCommand(MySqlCommandType.INSERT).Insert("items")) cmd.Insert("ID", Item.ID).Insert("UID", Item.UID) .Insert("Plus", Item.Plus).Insert("Bless", Item.Bless) .Insert("Enchant", Item.Enchant).Insert("SocketOne", (byte)Item.SocketOne) .Insert("SocketTwo", (byte)Item.SocketTwo).Insert("Durability", Item.Durability) .Insert("MaximDurability", Item.MaximDurability).Insert("SocketProgress", Item.SocketProgress) .Insert("PlusProgress", Item.PlusProgress).Insert("Effect", (ushort)Item.Effect) .Insert("Bound", Item.Bound).Insert("DayStamp", Item.DayStamp.ToString()).Insert("Days", Item.Days).Insert("Locked", Item.Lock).Insert("UnlockEnd", Item.UnlockEnd.Ticks) .Insert("Suspicious", Item.Suspicious).Insert("SuspiciousStart", Item.SuspiciousStart.Ticks) .Insert("Color", (ushort)Item.Color).Insert("Position", Item.Position).Insert("StackSize", Item.StackSize) .Insert("RefineryItem", Item.RefineItem).Insert("RefineryTime", Item.RefineryTime.Ticks).Insert("EntityID", client.Entity.UID) .Execute(); } } public static void UpdatePosition(ConquerItem Item) { using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE)) cmd.Update("items").Set("Position", Item.Position).Set("Warehouse", Item.Warehouse) .Where("UID", Item.UID).Execute();
} public static void UpdatePlus(ConquerItem Item) { UpdateData(Item, "Plus", Item.Plus); } public static void UpdateBound(ConquerItem Item) { UpdateData(Item, "Bound", 0); } public static void UpdatePlusProgress(ConquerItem Item) { UpdateData(Item, "PlusProgress", Item.PlusProgress); } public static void UpdateItemID(ConquerItem Item, Client.GameData client) { UpdateData(Item, "ID", Item.ID); } public static void RemoveItem(uint UID) { using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE)) cmd.Update("items").Set("EntityID", 0) .Set("Position", 0).Where("UID", UID).Execute(); } public static void DeleteItem(uint UID) { using (var cmd = new MySqlCommand(MySqlCommandType.DELETE)) cmd.Delete("items", "UID", UID).Execute(); } public static void ClearPosition(uint EntityID, byte position) { using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE)) cmd.Update("items").Set("EntityID", 0).Set("Position", 0) .Where("EntityID", EntityID).And("Position", position).Execute(); } public static void RefineryUpdate(ConquerItem Item, Client.GameData client) { }
public static void ClearNulledItems() { Dictionary<uint, int> dict = new Dictionary<uint, int>(); using (var c = new MySqlCommand(MySqlCommandType.SELECT).Select("detaineditems")) using (var r = c.CreateReader()) while (r.Read()) dict[r.ReadUInt32("ItemUID")] = 0; //cmd.Where("UID", r.ReadUInt32("ItemUID"));
using (var c = new MySqlCommand(MySqlCommandType.SELECT).Select("claimitems")) using (var r = c.CreateReader()) while (r.Read()) dict[r.ReadUInt32("ItemUID")] = 0; //cmd.Where("UID", r.ReadUInt32("ItemUID")); var array = dict.Keys.ToArray(); foreach (var item in array) using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("items") .Set("entityid", 1).Where("entityid", 0).And("uid", item)) cmd.Execute();
using (var cmd = new MySqlCommand(MySqlCommandType.DELETE).Delete("items", "entityid", 0)) cmd.Execute(); Console.WriteLine("Cleared items with EntityID = 0"); }
public static bool IsThere(uint uid) { MySqlCommand command = new MySqlCommand(MySqlCommandType.SELECT); command.Select("items").Where("UID", (long)uid); MySqlReader reader = new MySqlReader(command); if (reader.Read()) { // Reader.Close(); //// Reader.Dispose(); return true; } // Reader.Close(); //// Reader.Dispose(); return false; }
public static void Update_Free(ConquerItem Item, Client.GameData client) { MySqlCommand command = new MySqlCommand(MySqlCommandType.UPDATE); command.Update("items").Set("EntityID", client.Entity.UID).Set("DayStamp", Item.DayStamp.Ticks).Set("Days", Item.Days).Where("UID", Item.UID).Execute(); } } }
وفتـح كلآس
بدلو بالاكواد دي
كود PHP:
using System; using System.Drawing; using Conquer_Online_Server.Game; using System.Collections.Generic; using System.IO; namespace Conquer_Online_Server.Network.GamePackets { public class ConquerItem : Writer, Interfaces.IPacket { public const ushort Inventory = 0, Head = 1, Necklace = 2, Armor = 3, RightWeapon = 4, LeftWeapon = 5, Ring = 6, Bottle = 7, Boots = 8, Garment = 9, Fan = 10, Tower = 11, Steed = 12, SteedCrop = 18, RightWeaponAccessory = 15, LeftWeaponAccessory = 16, SteedArmor = 17, Remove = 255, Wing = 19, AlternateHead = 21, AlternateNecklace = 22, AlternateArmor = 23, AlternateRightWeapon = 24, AlternateLeftWeapon = 25, AlternateRing = 26, AlternateBottle = 27, AlternateBoots = 28, AlternateGarment = 29;
public const uint GoldPrize = 2100075; public bool IsWorn = false; public byte[] Buffer;
public static Counter ItemUID = new Counter(0);
private UInt32 mRefineItem = 0; private DateTime mRefineryTime; private ulong suspiciousStart = 0, unlockEnd = 0; private bool unlocking = false; private uint warehouse = 0; public Dictionary<uint, string> Agate_map { get; set; } public DateTime RefineryStarted { get; set; } public ConquerItem(bool Create) { if (Create) { Buffer = new byte[92]; WriteUInt16(84, 0, Buffer); WriteUInt16(1008, 2, Buffer); Mode = Conquer_Online_Server.Game.Enums.ItemMode.Default; this.Agate_map = new Dictionary<uint, string>(10); StatsLoaded = false; } } public byte Days { get; set; } public DateTime DayStamp { get; set; }
public uint UID { get { return BitConverter.ToUInt32(Buffer, 4); } set { WriteUInt32(value, 4, Buffer); } } public uint ID { get { return BitConverter.ToUInt32(Buffer, 8); } set { if (value == 0 && ID != 0) throw new Exception("Invalid ID for an Item. Please check the stack trace to find the cause."); WriteUInt32(value, 8, Buffer); } } public void SetID(uint ID) { WriteUInt32(ID, 8, Buffer); } public ushort Durability { get { return BitConverter.ToUInt16(Buffer, 12); } set { WriteUInt16(value, 12, Buffer); } } public ushort MaximDurability { get { return BitConverter.ToUInt16(Buffer, 14); } set { WriteUInt16(value, 14, Buffer); } } public Enums.ItemMode Mode { get { return (Enums.ItemMode)BitConverter.ToUInt16(Buffer, 16); } set { WriteUInt16((ushort)value, 16, Buffer); } } public ushort Position { get { return BitConverter.ToUInt16(Buffer, 18); } set { WriteUInt16(value, 18, Buffer); } } public uint Warehouse { get { return warehouse; } set { warehouse = value; } } public uint SocketProgress { get { return BitConverter.ToUInt32(Buffer, 20); } set { WriteUInt32(value, 20, Buffer); } } public Enums.Gem SocketOne { get { return (Enums.Gem)Buffer[24]; } set { Buffer[24] = (byte)value; } } public Enums.Gem SocketTwo { get { return (Enums.Gem)Buffer[25]; } set { Buffer[25] = (byte)value; } } public Enums.ItemEffect Effect { get { return (Enums.ItemEffect)BitConverter.ToUInt16(Buffer, 28); } set { WriteUInt16((ushort)value, 28, Buffer); } } public byte Plus {
get { return Buffer[33]; } set { if (value > 12) value = 12; Buffer[33] = value; } } public byte Bless { get { return Buffer[34]; } set { Buffer[34] = value; } } public bool Bound { get { return Buffer[35] == 0 ? false : true; } set { Buffer[35] = (byte)(value ? 1 : 0); } } public byte Enchant { get { return Buffer[36]; } set { Buffer[36] = value; } }
public byte NextRed { get { return Buffer[34]; } set { Buffer[34] = value; } } public byte NextBlue { get { return Buffer[36]; } set { Buffer[36] = value; } } public byte NextGreen { get { return Buffer[40]; } set { Buffer[40] = value; } }
public bool Suspicious { get { return Buffer[44] == 0 ? false : true; } set { Buffer[44] = (byte)(value ? 1 : 0); } }
public byte Lock { get { return Buffer[46]; } set { Buffer[46] = value; } }
public Enums.Color Color { get { return (Enums.Color)BitConverter.ToUInt32(Buffer, 48); } set { WriteUInt32((uint)value, 48, Buffer); } } public uint PlusProgress { get { return BitConverter.ToUInt32(Buffer, 52); } set { WriteUInt32(value, 52, Buffer); } } public bool Inscribed { get { return (BitConverter.ToUInt16(this.Buffer, 56) == 1); } set { Writer.WriteUInt16(value ? ((byte)1) : ((byte)0), 56, this.Buffer); } } public uint TimeLeftInMinutes { get { return BitConverter.ToUInt32(Buffer, 60); } set { WriteUInt32(value, 60, Buffer); } } public ushort StackSize { get { return BitConverter.ToUInt16(Buffer, 68); } set { WriteUInt16(value, 68, Buffer); } } public ushort MaxStackSize { get; set; } public DateTime SuspiciousStart { get { return DateTime.FromBinary((long)suspiciousStart); } set { suspiciousStart = (ulong)value.Ticks; } } public DateTime UnlockEnd { get { return DateTime.FromBinary((long)unlockEnd); } set { unlockEnd = (ulong)value.Ticks; } }
public bool Unlocking { get { return unlocking; } set { unlocking = value; } } public bool MobDropped { get; set; } public bool StatsLoaded { get; set; } public string Agate { get; set; }
public byte[] ToArray() { return Buffer; }
public void Deserialize(byte[] buffer) { throw new NotImplementedException(); } public class ItemSocket { public const Byte Phoenix = 0, Dragon = 1, Fury = 2, Rainbow = 3, Kylin = 4, Violet = 5, Moon = 6, Tortoise = 7, Thunder = 10, Glory = 12,
OpenSocket = 255, NoSocket = 0;
/// <summary> /// Pass the entire gem's ID, not just the type. /// </summary> /// <param name="value"></param> /// <returns></returns> public static Double GetGemBonus(Byte value) { switch (value) { case 71: return 0.02; case 72: return 0.04; case 1: case 11: case 21: return 0.05; case 73: return 0.06; case 2: case 12: case 22: case 31: return 0.10; case 3: case 23: case 32: case 61: case 13: return 0.15; case 33: return 0.25; case 51: case 62: return 0.30; case 41: case 52: case 63: return 0.50; case 42: case 53: return 1.00; case 43: return 2.00;
case 101: case 121: return 100; case 102: case 122: return 300; case 103: case 123: return 500;
default: return 0; } } } public Double GemBonus(Byte type) { Double bonus = 0; if (SocketOne != Enums.Gem.NoSocket) { if ((Int32)SocketOne / 10 == type) bonus += ItemSocket.GetGemBonus((Byte)SocketOne); if (SocketTwo != Enums.Gem.NoSocket) { if ((Int32)SocketTwo / 10 == type) bonus += ItemSocket.GetGemBonus((Byte)SocketTwo); } } return bonus; } //public Double GemBonus(Byte type) //{ // Double bonus = 0; // if (SocketOne != Enums.Gem.NoSocket) // { // if ((Int32)SocketOne / 10 == type) // bonus += ItemSocket.GetGemBonus((Byte)SocketOne); // if (SocketTwo != Enums.Gem.NoSocket) // { // if ((Int32)SocketTwo / 10 == type) // bonus += ItemSocket.GetGemBonus((Byte)SocketTwo); // } // } // return bonus; //} public override string ToString() { return ID.ToString() + "#" + Durability.ToString() + "#" + MaximDurability.ToString() + "#" + Position.ToString() + "#" + SocketProgress.ToString() + "#" + ((byte)SocketOne).ToString() + "#" + ((byte)SocketTwo).ToString() + "#" + ((ushort)Effect).ToString() + "#" + Plus.ToString() + "#" + Bless.ToString() + "#" + (Bound ? "1" : "0") + "#" + Enchant.ToString() + "#" + (Suspicious ? "1" : "0") + "#" + Lock.ToString() + "#" + (Unlocking ? "1" : "0") + "#" + PlusProgress.ToString() + "#" + (Inscribed ? "1" : "0") + "#" + suspiciousStart.ToString() + "#" + Days.ToString() + "#" + DayStamp.ToString() + "#" + unlockEnd.ToString(); } public string ToLog() { return "UID: " + UID.ToString() + " | " + "ID: " + ID.ToString() + " | " + "Plus: " + Plus.ToString(); } public ItemAdding.Purification_ Purification { get; set; } public ItemAdding.Refinery_ ExtraEffect { get; set; } public UInt32 RefineItem { get { return mRefineItem; } set { mRefineItem = value; } } public void SendExtras(Client.GameData client) { if (client == null) return;
if (RefineItem != 0) { Refinery.RefineryItem rI = RefineStats; if (rI != null) { client.Send(new Game_ItemSoul() { ID = rI.Identifier, Identifier = UID, Level = rI.Level, Mode = Game_ItemSoul.Types.Refine, Percent = rI.Percent, Type = 1, Time = (UInt32)(RefineryTime.Subtract(DateTime.Now).TotalSeconds) }); } }
ItemAdding add = new ItemAdding(true); if (Purification.Available) add.Append(Purification); if (ExtraEffect.Available) add.Append(ExtraEffect); if (Purification.Available || ExtraEffect.Available) client.Send(add);
if (Lock == 2) { ItemLock itemLock = new ItemLock(true); itemLock.UID = UID; itemLock.ID = ItemLock.UnlockDate; itemLock.dwParam = (uint)(UnlockEnd.Year * 10000 + UnlockEnd.Month * 100 + UnlockEnd.Day); client.Send(itemLock); } } public void SendAgate(Client.GameData client) { byte[] buffer = new byte[(40 + (0x30 * this.Agate_map.Count)) + 0x30]; Writer.WriteUInt16((ushort)(buffer.Length - 8), 0, buffer); Writer.WriteUInt16(0x83e, 2, buffer); Writer.WriteUInt32(this.UID, 8, buffer); Writer.WriteUInt32((byte)this.Agate_map.Count, 12, buffer); Writer.WriteUInt32((byte)this.Agate_map.Count, 0x10, buffer); Writer.WriteUInt32(this.Durability, 0x18, buffer); Writer.WriteUInt32((byte)this.Agate_map.Count, 0x1c, buffer); if (this.Agate_map.Count > 0) { int offset = 0x20; for (uint i = 0; i < this.Agate_map.Count; i++) { Writer.WriteUInt32(i, offset, buffer); offset += 4; Writer.WriteUInt16(ushort.Parse(this.Agate_map[i].Split(new char[] { '~' })[0].ToString()), offset, buffer); offset += 4; Writer.WriteUInt16(ushort.Parse(this.Agate_map[i].Split(new char[] { '~' })[1].ToString()), offset, buffer); offset += 4; Writer.WriteUInt16(ushort.Parse(this.Agate_map[i].Split(new char[] { '~' })[2].ToString()), offset, buffer); offset += 0x24; } } client.Send(buffer); } public void Send(Client.GameData client) { if (client == null) return;
if (ID == 300000) { uint G = SocketProgress & 0xFF; uint B = (SocketProgress >> 8) & 0xFF; uint R = (SocketProgress >> 16) & 0xFF;
if (NextRed == 0 && NextBlue == 0 && NextGreen == 0) { NextRed = (byte)R; NextBlue = (byte)B; NextGreen = (byte)G; Database.ConquerItemTable.UpdateNextSteedColor(this); } }
if (Days > 0) { if (DateTime.Now >= this.DayStamp.AddDays(Days)) { Database.ConquerItemTable.DeleteItem(this.UID); Database.ConquerItemTable.RemoveItem(this.UID); client.Send(new Conquer_Online_Server.Network.GamePackets.Message("Your Item Has Expired", System.Drawing.Color.Red, Message.TopLeft)); } TimeSpan Remain = DayStamp.AddDays(Days) - DateTime.Now; TimeLeftInMinutes = (uint)Remain.TotalSeconds; }
client.Send(Buffer);
ItemAdding add = new ItemAdding(true); if (Purification.Available) add.Append(Purification); if (ExtraEffect.Available) add.Append(ExtraEffect);
if (Purification.Available || ExtraEffect.Available) client.Send(add);
if (Lock == 2 && (Mode == Enums.ItemMode.Default || Mode == Enums.ItemMode.Update)) { ItemLock itemLock = new ItemLock(true); itemLock.UID = UID; itemLock.ID = ItemLock.UnlockDate; itemLock.dwParam = (uint)(UnlockEnd.Year * 10000 + UnlockEnd.Month * 100 + UnlockEnd.Day); client.Send(itemLock); } Mode = Enums.ItemMode.Default; // client.Send(Buffer); } public static Boolean isRune(UInt32 itemid) { if (itemid >= 729960 && itemid <= 729970) return true; return false; } public ushort Vigor { get; set; } public short BattlePower { get { short potBase = 0; byte Quality = (byte)(ID % 10); if (Quality >= 5) potBase += (byte)(Quality - 5); potBase += Plus; if (SocketOne != Enums.Gem.NoSocket) potBase++; if (SocketTwo != Enums.Gem.NoSocket) potBase++; if (((byte)SocketOne) % 10 == 3) potBase++; if (((byte)SocketTwo) % 10 == 3) potBase++;
if (ID / 1000 == 421 || PacketHandler.IsTwoHand(ID)) potBase *= 2; return potBase; } } public override int GetHashCode() { return (int)this.UID; } public override bool Equals(object obj) { return (obj as ConquerItem).UID == GetHashCode(); } public Refinery.RefineryItem RefineStats { get { Refinery.RefineryItem i = null; Kernel.DatabaseRefinery.TryGetValue(RefineItem, out i); return i; } } public DateTime RefineryTime { get { return mRefineryTime; } set { mRefineryTime = value; } } public bool IsTwoHander() { ItemTypes item_type = (ItemTypes)GetItemType(); bool check = ((UInt16)item_type >= 500 && (UInt16)item_type <= 580); if (check) { check = (item_type != ItemTypes.ShieldID); if (check) { check = (item_type != ItemTypes.NinjaSwordID); if (check) { check = (item_type != ItemTypes.MonkBeadsID); } } } return check; } public ItemTypes GetItemType() { return (ItemTypes)(this.ID / 1000); } public static void CheckItemExtra(ConquerItem i, Client.GameData c) { if (i.RefineryTime.Ticks != 0) { if (DateTime.Now > i.RefineryTime) { i.RefineItem = 0; i.RefineryTime = new DateTime(0);
Game_ItemSoul expire = new Game_ItemSoul() { Identifier = i.UID }; expire.Expired(c); i.Send(c); c.Send(PacketHandler.WindowStats(c));
Database.ConquerItemTable.UpdateRefineryItem(i); Database.ConquerItemTable.UpdateRefineryTime(i);
if (!c.Equipment.Free(i.Position)) { //c.UnloadItemStats(i, true); c.LoadItemStats(); } } } } public enum ItemTypes : ushort { BowID = 500, ArrowID = 1050, ShieldID = 900, BackswordID = 421, BladeID = 410, SwordID = 420, NinjaSwordID = 601, MonkBeadsID = 610, FanID = 201, TowerID = 202, CropID = 203, GarmentID_1 = 181, GarmentID_2 = 182, BottleID = 2100, GemID = 700, PickaxeID = 562, RingID = 150, BootID = 160, SteedArmorID = 200,
NecklaceID = 120, BraceletID = 152, BagID = 121, RightAccessory1 = 350, RightAccessory2 = 360, RightAccessory3 = 370, LeftAccessory = 380 }
public uint OriginalUID { get; set; } }
}
وفتـح كـلآس
بدلو بـالاكواد دي
كود PHP:
http://up.top4top.net/downloadf-top4top_1ce67d35c91-rar.html
ورفع الملفات دي علي النافي كات
كود PHP:
http://up.top4top.net/downloadf-top4top_cf2d090bac1-rar.html
الحل نهائي انشاء الله
وملف اتاك نضيف انشاء الله
سلآموز عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع
|