الشى سيستم كامل
.اولا خش على
Network\PacketHandler.cs
وضيف دا فى ,
Network\PacketHandler.cs
وضيف دا فى ,
كود PHP:
case 0x9e5:
ChiSystem2.Handle(packet, client);
return;
case 0x9e6:
client.Send(packet);
return;
Network\GamePackets
واعمل Class ,وسميه
Chi.cs وضيف دا فى
كود PHP:
using System;
using System.Collections.Generic;
using System.Text;
namespace Conquer_Online_Server.Network.GamePackets
{
public class ChiInfo : Writer, Interfaces.IPacket
{
public enum ChiAction
{
Unlock = 0,
QueryInfo = 1,
Study = 2,
BuyStrength = 3,
}
public enum ChiPowerType
{
None = 0,
Dragon = 1,
Phoenix = 2,
Tiger = 3,
Turtle = 4
}
public enum ChiAttribute
{
None = 0,
CriticalRate,
MagicCriticalRate,
AntiMagicCriticalRate,
CrashAttack,
CrashDefense,
MaxLife,
AddAttack,
AddMagicAttack,
AddMagicDefense,
FinalAttack,
FinalMagicAttack,
FinalDefense,
FinalMagicDefense
}
byte[] Buffer;
public ChiInfo(bool Create)
{
if (Create)
{
Buffer = new byte[168 + 8];
WriteUInt16(168, 0, Buffer);
WriteUInt16(2533, 2, Buffer);
}
Strings = new List<string>();
}
public uint Type
{
get { return BitConverter.ToUInt32(Buffer, 4); }
set { WriteUInt32(value, 4, Buffer); }
}
public ulong dwParam
{
get { return BitConverter.ToUInt64(Buffer, 8); }
set { WriteUInt64(value, 8, Buffer); }
}
public ushort wParam1
{
get { return BitConverter.ToUInt16(Buffer, 8); }
set { WriteUInt16(value, 8, Buffer); }
}
public ushort wParam2
{
get { return BitConverter.ToUInt16(Buffer, 10); }
set { WriteUInt16(value, 10, Buffer); }
}
public uint dwParam2
{
get { return BitConverter.ToUInt32(Buffer, 16); }
set { WriteUInt32(value, 16, Buffer); }
}
public uint dwParam3
{
get { return BitConverter.ToUInt32(Buffer, 20); }
set { WriteUInt32(value, 20, Buffer); }
}
public uint dwParam4
{
get { return BitConverter.ToUInt32(Buffer, 24); }
set { WriteUInt32(value, 24, Buffer); }
}
//Thanks to ImmuneOne, who fixed the strings offsets, I managed to get nobility done.
public byte StringCount
{
get { return Buffer[32]; }
set { Buffer[32] = value; }
}
public List<string> DecodedStrings
{
get
{
List<string> list = new List<string>(StringCount);
int offset = 33;
for (int count = 0; count < StringCount; count++)
{
byte stringLength = Buffer[offset]; offset++;
string String = Encoding.ASCII.GetString(Buffer, offset, stringLength);
offset += stringLength;
list.Add(String);
}
return list;
}
}
public List<string> Strings;
public void UpdateString(Game.ConquerStructures.NobilityInformation info)
{
string buildString = info.EntityUID + " " + info.Donation + " " + (byte)info.Rank + " " + info.Position;
buildString = (char)buildString.Length + buildString;
Strings.Add(buildString);
}
public void ListString(Game.ConquerStructures.NobilityInformation info)
{
string buildString = info.EntityUID + " " + info.Gender + " 0 " + info.Name + " " + info.Donation + " " + (byte)info.Rank + " " + info.Position;
buildString = (char)buildString.Length + buildString;
Strings.Add(buildString);
}
public void Send(Client.GameState client)
{
client.Send(ToArray());
}
public byte[] ToArray()
{
if (Strings.Count == 0)
return Buffer;
string theString = "";
for (int count = 0; count < Strings.Count; count++)
{
theString += Strings[count];
}
byte[] newBuffer = new byte[168 + 8 + theString.Length];
Buffer.CopyTo(newBuffer, 0);
WriteUInt16((ushort)(newBuffer.Length - 8), 0, newBuffer);
newBuffer[34] = (byte)Strings.Count;
WriteString(theString, 35, newBuffer);
return newBuffer;
}
public void Deserialize(byte[] buffer)
{
Buffer = buffer;
}
}
}
,واعملا كمان class وسميه
ChiGate.cs
وضيف دا فى
كود PHP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Conquer_Online_Server.Network.GamePackets
{
public enum ChiGate // byte
{
Dragon = 1,
Tiger = 2,
Phoneix = 3,
Turtle = 4 //build
}
}
12.واعمل كمان
Class وسميه ChiStats.cs
وحط فى دا
كود PHP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Conquer_Online_Server.Network.GamePackets
{
public class ChiStats : Writer, Interfaces.IPacket
{
byte[] mData;
public ChiGate ChiGate
{
get
{
return (ChiGate)mData[22];
}
set
{
mData[22] = (byte)value;
}
}
public uint ChiPoints
{
get
{
return BitConverter.ToUInt32(mData, 10);
}
set
{
WriteUInt32(value, 10, mData);
}
}
public uint Identifier
{
get
{
return BitConverter.ToUInt32(mData, 6);
}
set
{
WriteUInt32(value, 6, mData);
}
}
public ushort Unknown1
{
get
{
return BitConverter.ToUInt16(mData, 4);
}
set
{
WriteUInt16(value, 4, mData);
}
}
public uint Unknown2
{
get
{
return BitConverter.ToUInt32(mData, 14);
}
set
{
WriteUInt32(value, 14, mData);
}
}
public uint Unknown3
{
get
{
return BitConverter.ToUInt32(mData, 18);
}
set
{
WriteUInt32(value, 18, mData);
}
}
public uint Val1
{
get
{
return BitConverter.ToUInt32(mData, 24);
}
set
{
WriteUInt32(value, 24, mData);
}
}
public uint Val2
{
get
{
return BitConverter.ToUInt32(mData, 28);
}
set
{
WriteUInt32(value, 28, mData);
}
}
public uint Val3
{
get
{
return BitConverter.ToUInt32(mData, 32);
}
set
{
WriteUInt32(value, 32, mData);
}
}
public uint Val4
{
get
{
return BitConverter.ToUInt32(mData, 36);
}
set
{
WriteUInt32(value, 36, mData);
}
}
/* public static implicit operator byte[](ChiStats d)
{
return d.mData;
}*/
public ChiStats()
{
mData = new byte[39 + 8];
WriteUInt16(39, 0, mData);
WriteUInt16(2534, 2, mData);
}
public static ChiStats ChiStats22(byte[] d)
{
var packet = new ChiStats();
packet.mData = d;
return packet;
}
public byte[] ToArray()
{
return mData;
}
public void Send(Client.GameState client)
{
client.Send(mData);
}
public void Deserialize(byte[] buffer)
{
mData = buffer;
}
} // class ChiStats
}
ChiSystem.cs
وضيف دا فى
كود PHP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Conquer_Online_Server.Network.GamePackets
{
public class ChiSystem : Writer, Interfaces.IPacket
{
byte[] mData;
public ChiSystem()
{
mData = new byte[16];
WriteUInt16((ushort)mData.Length, 0, mData);
WriteUInt16(2533, 2, mData);
}
public uint Identifier
{
get
{
return BitConverter.ToUInt32(mData, 4);
}
set
{
Writer.WriteUInt32(value, 4, mData);
}
}
public byte StudyFlag
{
get
{
return mData[11];
}
set
{
mData[11] = value;
}
}
public enum ChiSystemType : ushort
{
Unlock = 0,
Open = 1,
Study = 2,
CPFillChi = 3
}
public ChiSystemType Type
{
get
{
return (ChiSystemType)BitConverter.ToUInt16(mData, 8);
}
set
{
Writer.WriteUInt32((ushort)value, 8, mData);
}
}
public byte Unknown1
{
get
{
return mData[10];
}
set
{
mData[10] = value;
}
}
public uint Unknown2
{
get
{
return BitConverter.ToUInt32(mData, 12);
}
set
{
Writer.WriteUInt32(value, 12, mData);
}
}
/* public static implicit operator byte[](ChiSystem d)
{
return d.mData;
}*/
public ChiSystem(byte[] d)
{
mData = new byte[d.Length];
d.CopyTo(mData, 0);
}
public byte[] ToArray()
{
return mData;
}
public void Send(Client.GameState client)
{
client.Send(mData);
}
public void Deserialize(byte[] buffer)
{
mData = buffer;
}
} // class ChiSystem
}
واعمل Class
بى اسم ChiSystem2.cs
وضيف فى دا
كود PHP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Conquer_Online_Server.Network.GamePackets
{
public class ChiSystem2
{
public ChiSystem2()
{
}
public static void Handle(byte[] Data, Client.GameState Client)
{
ChiSystem chiSystem = new ChiSystem(Data);
Console.WriteLine(chiSystem.Identifier);
Console.WriteLine(chiSystem.Unknown1);
Console.WriteLine(chiSystem.Type);
Console.WriteLine(chiSystem.StudyFlag);
Console.WriteLine(chiSystem.Unknown2);
chiSystem.Unknown1 = 1;
chiSystem.StudyFlag = 1;
chiSystem.Unknown2 = 1;
switch (chiSystem.Type)
{
case Conquer_Online_Server.Network.GamePackets.ChiSystem.ChiSystemType.Open:
ChiStats chiStats = new ChiStats()
{
Identifier = Client.Entity.UID,
ChiPoints = Client.Entity.ChiPoints,
Unknown2 = 13,
Unknown3 = 1,
ChiGate = ChiGate.Dragon,
Val1 = 1000,
Val2 = 2000,
Val3 = 3000,
Val4 = 4000
};
ChiStats chiStats2 = new ChiStats()
{
Identifier = Client.Entity.UID,
ChiPoints = Client.Entity.ChiPoints,
Unknown2 = 13,
Unknown3 = 1,
ChiGate = ChiGate.Phoneix,
Val1 = 1000,
Val2 = 2000,
Val3 = 3000,
Val4 = 4000
};
ChiStats chiStats3 = new ChiStats()
{
Identifier = Client.Entity.UID,
ChiPoints = Client.Entity.ChiPoints,
Unknown2 = 13,
Unknown3 = 1,
ChiGate = ChiGate.Tiger,
Val1 = 1000,
Val2 = 2000,
Val3 = 3000,
Val4 = 4000
};
ChiStats chiStats4 = new ChiStats()
{
Identifier = Client.Entity.UID,
ChiPoints = Client.Entity.ChiPoints,
Unknown2 = 13,
Unknown3 = 1,
ChiGate = ChiGate.Turtle,
Val1 = 1000,
Val2 = 2000,
Val3 = 3000,
Val4 = 4000
};
Client.Send(chiStats);
Client.Send(chiStats2);
Client.Send(chiStats3);
Client.Send(chiStats4);
break;
case Conquer_Online_Server.Network.GamePackets.ChiSystem.ChiSystemType.CPFillChi:
uint ui1 = 2000;
uint ui2 = (uint)Math.Floor((double)(1000.0F - (1000.0F * ((float)ui1 / 4000.0F))));
Client.Entity.ChiPoints += 50;
Client.Entity.ConquerPoints -= ui2;
Console.WriteLine("qq " + ui2 + "");
Console.WriteLine("pp " + chiSystem.Unknown1 + " ");
break;
default:
Console.WriteLine(String.Concat("Unhandled ChiSystem Type: ", chiSystem.Type));
break;
}
}
} // class ChiSystem
}
بئذن الله لما نكمله هينزل .
والسلام عليكم ورحمه الله وبركاته
,,
●●▬▬▬▬▬▬▬▬▬▬▬▬●●
وهـنـضيف دا هنـآ
Packet.cs
كود PHP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
كود PHP:
namespace Conquer_Online_Server.Network.GamePackets
{
class Packet
{
internal void InitWriter()
{
throw new NotImplementedException();
}
internal void Write(ushort p)
{
throw new NotImplementedException();
}
internal void Write(int id)
{
throw new NotImplementedException();
}
internal void Write(string p, int p_2)
{
throw new NotImplementedException();
}
internal void Chi(out int id, out ChiAction action, out ChiPowerType type, out int data)
{
throw new NotImplementedException();
}
}
}
وكود اللى هيضاف فى entity.cs اللى قولت عليه هيضاف دور على دى
كود PHP:
public uint LiliesDonation { get; set; }
وضيفو تحتها
كود PHP:
public uint ChiPoints { get; set; }
0 التعليقات:
إرسال تعليق