0
الشى سيستم كامل

الشى سيستم  كامل
 
 
.اولا خش على
Network\PacketHandler.cs
وضيف دا فى ,
كود PHP:
                                case 0x9e5:
                                    
ChiSystem2.Handle(packet, client);
                                    return;
                                case 
0x9e6:
                                    
client.Send(packet);
                                    return; 
10.ثانيا خش على .
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 } 
13.واعمل Class ,وسميه
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 } 
14.وهوا لسه مش TQ بس هيبقا معاك زى كدا

بئذن الله لما نكمله هينزل .

والسلام عليكم ورحمه الله وبركاته
,,
●●▬▬▬▬▬▬▬▬▬▬▬▬●●
وهـنـضيف دا هنـآ

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 التعليقات:

إرسال تعليق

 
تعريب وتطوير mandoo
مدونة conquer Pvp لشروحات السيرفرات الشخصيه © 2010 | عودة الى الاعلى
Designed by mandoo