|
|
المشاركات 2,307 |
+التقييم 0.84 |
تاريخ التسجيل Apr 2019 |
الاقامة Egypt |
نظام التشغيل windows 7 |
رقم العضوية 1 |
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Conquer_Online_Server.Network;
using Conquer_Online_Server.Client;
using Conquer_Online_Server.Interfaces;
using ProtoBuf;
namespace Conquer_Online_Server.Network.GamePackets
{
public class UnionPacket
{
public unsafe class CMsgLeagueOpt : Interfaces.IPacket
{
private byte[] Buffer;
public CMsgLeagueOpt(bool Create)
{
if (Create)
{
Buffer = new byte[8 + 23];
Writer.WriteUInt16(23, 0, Buffer);
Writer.WriteUInt16(2622, 2, Buffer);
}
}
public UnionPacket.Action dwParam1
{
get { return (UnionPacket.Action)BitConverter.ToUInt16(Buffer, 4); }
set { Writer.WriteUInt16((ushort)value, 4, Buffer); }
}
public uint dwParam2
{
get { return BitConverter.ToUInt32(Buffer, 6); }
set { Writer.WriteUInt32(value, 6, Buffer); }
}
public uint UID
{
get { return BitConverter.ToUInt32(Buffer, 10); }
set { Writer.WriteUInt32(value, 10, Buffer); }
}
public uint dwParam3
{
get { return BitConverter.ToUInt32(Buffer, 14); }
set { Writer.WriteUInt32(value, 14, Buffer); }
}
public void Deserialize(byte[] buffer)
{
this.Buffer = buffer;
}
public byte[] ToArray()
{
return Buffer;
}
public void Send(Client.GameState client)
{
client.Send(Buffer);
}
}
public static Counter UnionCounter = new Counter(0);
public enum Action : byte
{
LeagueInfo = 0,
LeagueSynList = 1,
LeagueGuildMemList = 2,
LeagueMemList = 3,
LeagueAllegianceList = 4,
KingdomIcon = 5,
ChangeNameGui = 6,
CreateLeague = 7,
JoinLeagueOthers = 8,
QuitLeague = 9,
ExpelMember = 10,
GuildJoinLeague = 11,
GuildQuitLeague = 12,
ExpelGuild = 13,
TransferLeader = 14,
KingdomTitleGui = 17,
CreateKingdomTitle = 18,
Declarationmsg = 20,
LeaguePalaceGuardsList = 23,
AppointPalaceGuard = 24,
RemovePalaceGuard = 25,
ReSignPalaceGuard = 26,
CoreOfficals = 27,
AppointCoreOffical = 28,
RemoveCoreOffical = 29,
ReSignCoreOffical = 30,
Officals = 34,
LeagueConcubinesList = 40,
AppointLeagueConcubines = 41,
RemoveHarem = 44,
AppointCore = 47,
AppointGuard = 48,
AppointHarem = 49,
Bulletinmsg = 66,
}
public static byte[] SendLeagueAllegianceList(byte page)
{
byte Page = page;
byte[] buffer = new byte[0];
var Unions = Kernel.Unions.Values.ToArray();
int Count = Unions.Length;
if (Count > (3 * (Page + 1)))
{
Count = 3;
buffer = new byte[(304 * Count) + 17 + 8];
}
else
{
Count = Count - (3 * Page);
buffer = new byte[(304 * Count) + 17 + 8];
}
Writer.WriteUInt16((ushort)(buffer.Length - 8), 0, buffer);
Writer.WriteUInt16(2624, 2, buffer);
buffer[4] = 4;
buffer[8] = Page;
Writer.WriteUInt16((ushort)Count, 10, buffer);
buffer[12] = 1;
int Offset = 13;
for (int i = 3 * Page; i < (Unions.Length); i++)
{
var Union = Unions[i];
Writer.WriteUInt64(Union.UnionFund, Offset, buffer); Offset += 8;
Writer.WriteUInt32((uint)Union.ID, Offset, buffer); Offset += 4;
Writer.WriteUInt32(Union.GoldBricks, Offset, buffer); Offset += 4;
Writer.WriteString(Union.Name, Offset, buffer); Offset += 16;
Writer.WriteString(Union.LeaderName, Offset, buffer); Offset += 16;
Writer.WriteString(Union.Declaration, Offset, buffer); Offset += 256;
}
return buffer;
}
[ProtoContract]
public class OverheadLeagueInfo
{
[ProtoMember(1, IsRequired = true)]
public uint Unknown1 = 0;
[ProtoMember(2, IsRequired = true)]
public uint UID = 0;
[ProtoMember(3, IsRequired = true)]
public uint UnionID = 0;
[ProtoMember(4, IsRequired = true)]
public uint PlayerRank = 0;
[ProtoMember(5, IsRequired = true)]
public uint UnionRank = 0;
[ProtoMember(6, IsRequired = true)]
public uint Unknown2 = 14;
[ProtoMember(7, IsRequired = true)]
public string UnionName = "";
}
[ProtoContract]
public class LeagueConcubines
{
[ProtoMember(1, IsRequired = true)]
public uint UID = 0;
[ProtoMember(2, IsRequired = true)]
public uint RankID = 0;
[ProtoMember(3, IsRequired = true)]
public string Name = "";
[ProtoMember(4, IsRequired = true)]
public uint Class = 0;
[ProtoMember(5, IsRequired = true)]
public uint Level = 0;
[ProtoMember(6, IsRequired = true)]
public uint BattelPower = 0;
[ProtoMember(7, IsRequired = true)]
public uint Exploits = 0;
[ProtoMember(8, IsRequired = true)]
public uint Nobility = 0;
[ProtoMember(9, IsRequired = true)]
public uint Online = 0;
[ProtoMember(10, IsRequired = true)]
public uint Mesh = 0;
}
public static void Prosses(byte[] packet, Client.GameState client)
{
UnionPacket.CMsgLeagueOpt LeagueOpt = new UnionPacket.CMsgLeagueOpt(false);
LeagueOpt.Deserialize(packet);
switch (LeagueOpt.dwParam1)
{
case UnionPacket.Action.ChangeNameGui:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
string name = Encoding.UTF8.GetString(packet, 20, packet[19]);
client.Union.Name = name;
Game.ConquerStructures.Union.SendOverheadLeagueInfo(client);
foreach (var player in Kernel.GamePool.Values)
{
if (player.Union != null)
{
if (player.Union.ID == client.UnionID)
{
Game.ConquerStructures.Union.SendOverheadLeagueInfo(player);
}
}
}
}
}
break;
}
case UnionPacket.Action.RemovePalaceGuard:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
var _client = Client.GameState.GetClientFromID(LeagueOpt.UID);
if (_client != null)
{
client.Send(client.Union.ShowLeaguePalaceGuardsList((byte)1));
}
}
}
break;
}
case UnionPacket.Action.ReSignPalaceGuard:
{
if (client.Union != null)
{
client.Send(client.Union.ShowLeaguePalaceGuardsList((byte)1));
}
break;
}
case UnionPacket.Action.AppointGuard:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
}
}
break;
}
case UnionPacket.Action.AppointPalaceGuard:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
}
}
break;
}
case UnionPacket.Action.LeaguePalaceGuardsList:
{
if (client.Union != null)
{
client.Send(client.Union.ShowLeaguePalaceGuardsList((byte)LeagueOpt.dwParam3));
}
break;
}
case UnionPacket.Action.AppointHarem:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
string name = Encoding.UTF8.GetString(packet, 20, packet[19]);
}
}
break;
}
case UnionPacket.Action.RemoveHarem:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
var _client = Client.GameState.GetClientFromID(LeagueOpt.UID);
if (_client != null)
{
client.Send(client.Union.ShowLeagueConcubinesList());
}
}
}
break;
}
case UnionPacket.Action.AppointLeagueConcubines:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
}
}
break;
}
case UnionPacket.Action.LeagueConcubinesList:
{
client.Send(client.Union.ShowLeagueConcubinesList());
break;
}
case UnionPacket.Action.LeagueInfo:
{
if (client.Union != null)
{
client.Send(client.Union.SendLeagueInfo());
}
break;
}
case UnionPacket.Action.LeagueSynList:
{
if (client.Union != null)
{
client.Send(client.Union.SendLeagueSynList((byte)LeagueOpt.dwParam3));
}
break;
}
case UnionPacket.Action.LeagueGuildMemList:
{
if (client.Union != null)
{
client.Send(client.Union.ShowLeagueGuildMemList((ushort)LeagueOpt.dwParam2, (ushort)LeagueOpt.dwParam3));
}
break;
}
case UnionPacket.Action.LeagueMemList:
{
if (client.Union != null)
{
client.Send(client.Union.ShowLeagueMemList((ushort)LeagueOpt.dwParam2, (ushort)LeagueOpt.dwParam3));
}
break;
}
case UnionPacket.Action.LeagueAllegianceList:
{
if (client.Union == null)
{
client.Send(GamePackets.UnionPacket.SendLeagueAllegianceList((byte)LeagueOpt.dwParam3));
}
break;
}
case UnionPacket.Action.JoinLeagueOthers:
{
if (client.Union == null && client.Guild == null)
{
}
break;
}
case UnionPacket.Action.ExpelMember:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
var c = Client.GameState.GetClientFromID(LeagueOpt.dwParam3);
if (c != null)
{
client.Union.RemoveMember(c);
}
}
}
break;
}
case UnionPacket.Action.ExpelGuild:
{
break;
}
case UnionPacket.Action.TransferLeader:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
var _client = Client.GameState.GetClientFromID(LeagueOpt.UID);
if (_client != null)
{
if (_client.Union != null)
{
if (_client.Union.ID == client.Union.ID)
{
client.Union.LeaderName = _client.Entity.Name;
client.Union.LeaderUID = _client.Entity.UID;
Database.UnionTable.UpdateLeader(client.Union);
_client.Offical = 1;
client.Offical = 0;
_client.Send(Game.ConquerStructures.Union.SendOverheadLeagueInfo(_client));
client.Send(Game.ConquerStructures.Union.SendOverheadLeagueInfo(client));
}
}
}
}
}
break;
}
case UnionPacket.Action.CreateKingdomTitle:
{
if (client.Union != null && client.Union.IsLeader(client.Entity.UID))
{
string Name = Encoding.UTF8.GetString(packet, 20, packet[19]);
if (Name.Length <= 5)
{
client.Union.Title = Name;
}
}
break;
}
case UnionPacket.Action.QuitLeague:
{
if (client.Union != null)
{
var Union = client.Union;
Union.RemoveMember(client);
}
break;
}
case UnionPacket.Action.GuildJoinLeague:
{
if (client.Guild != null && client.Entity.GuildRank == 1000 && client.Union == null)
{
var Union = Kernel.Unions[LeagueOpt.dwParam3];
Union.AddGuild(client);
}
break;
}
case UnionPacket.Action.GuildQuitLeague:
{
if (client.Guild != null && client.Entity.GuildRank == 1000 && client.Union != null)
{
client.Union.RemoveGuild(client.Guild.ID);
}
break;
}
case Network.GamePackets.UnionPacket.Action.CreateLeague:
{
if (client.Union == null && client.Guild != null && client.Entity.GuildRank == 1000)
{
string Name = Encoding.UTF8.GetString(packet, 20, packet[19]);
var Check = Kernel.Unions.Values.Where(p => p.Name == Name).FirstOrDefault();
if (Check == null)
{
Game.ConquerStructures.Union Union = new Game.ConquerStructures.Union(client, Name);
}
else
{
client.Entity.SendSysMesage("There's a union with the same name please choose another name.");
}
}
break;
}
case Network.GamePackets.UnionPacket.Action.Declarationmsg:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
string msg = Encoding.UTF8.GetString(packet, 20, packet[19]);
client.Union.Declaration = msg;
}
}
break;
}
case Network.GamePackets.UnionPacket.Action.CoreOfficals:
{
if (client.Union != null)
{
client.Send(client.Union.ShowLeagueImperialCourtList());
}
break;
}
case Network.GamePackets.UnionPacket.Action.AppointCoreOffical:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
}
}
break;
}
case Network.GamePackets.UnionPacket.Action.AppointCore:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
string name = Encoding.UTF8.GetString(packet, 20, packet[19]);
}
}
break;
}
case Network.GamePackets.UnionPacket.Action.RemoveCoreOffical:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
var _client = Client.GameState.GetClientFromID(LeagueOpt.UID);
if (_client != null)
{
client.Send(client.Union.ShowLeagueImperialCourtList());
}
}
}
break;
}
case Network.GamePackets.UnionPacket.Action.ReSignCoreOffical:
{
if (client.Union != null)
{
client.Send(client.Union.ShowLeagueImperialCourtList());
}
break;
}
case Network.GamePackets.UnionPacket.Action.Officals:
{
if (client.Union != null)
{
client.Send(client.Union.ShowLeagueImperialCourt());
}
break;
}
case Network.GamePackets.UnionPacket.Action.Bulletinmsg:
{
if (client.Union != null)
{
if (client.Union.IsLeader(client.Entity.UID))
{
string msg = Encoding.UTF8.GetString(packet, 20, packet[19]);
client.Union.Bulletin = msg;
}
}
break;
}
}
}
}
}
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Conquer_Online_Server.Network;
using Conquer_Online_Server.Game.ConquerStructures;
using Conquer_Online_Server.Network.GamePackets;
using ProtoBuf;
namespace Conquer_Online_Server.Game.ConquerStructures
{
public class Union
{
public class Member
{
public Member(uint UnionID)
{
this.UnionID = UnionID;
}
public uint Offical = 0;
public uint Harem = 0;
public uint Guards = 0;
public uint UnionExploits = 0;
public uint ID;
public string Name;
public bool IsOnline
{
get
{
return Kernel.GamePool.ContainsKey(ID);
}
}
public byte Level;
public NobilityRank NobilityRank;
public uint Mesh = 0;
public byte Class;
public uint UnionID;
public uint GuildID;
}
public uint ID;
uint _goldbricks = 0;
public uint GoldBricks
{
get
{
return _goldbricks;
}
set
{
_goldbricks = value;
UpdateDatabase("GoldBricks", value);
}
}
ulong _unionfund = 0;
public ulong UnionFund
{
get
{
return _unionfund;
}
set
{
_unionfund = value;
UpdateDatabase("UnionFund", value);
}
}
string _declaration = "";
public string Declaration
{
get
{
return _declaration;
}
set
{
_declaration = value;
}
}
string _Name;
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
foreach (var client in Kernel.GamePool.Values)
{
client.Send(Union.SendOverheadLeagueInfo(client));
}
}
}
string _title = "";
public string Title
{
get
{
return _title;
}
set
{
_title = value;
foreach (var client in Kernel.GamePool.Values)
{
if (client.UnionID == this.ID)
{
client.Send(Union.SendOverheadLeagueInfo(client));
}
}
}
}
public List<uint> Guilds;
public List<Member> Members
{
get
{
return Database.UnionTable.LoadMembers(this.ID);
}
}
public Union(Client.GameState Owner, string name)
{
Guilds = new List<uint>();
LeaderName = Owner.Entity.Name;
LeaderUID = Owner.Entity.UID;
this.Name = name;
ID = UnionPacket.UnionCounter.Next;
Database.UnionTable.CreateUnion(this);
Kernel.Unions.Add(this.ID, this);
Owner.Union = Kernel.Unions[this.ID];
Owner.UnionID = Owner.Union.ID;
Owner.Offical = 0;
Owner.Harem = 0;
Owner.Guards = 0;
Owner.Guild.UnionID = Owner.Union.ID;
Database.GuildTable.UpdateUnionID(Owner.Guild);
Owner.Send(Game.ConquerStructures.Union.SendOverheadLeagueInfo(Owner));
this.AddGuild(Owner);
new Database.MySqlCommand(Database.MySqlCommandType.UPDATE).Update("configuration").Set("UnionID", Network.GamePackets.UnionPacket.UnionCounter.Now).Where("Server", Constants.ServerName).Execute();
}
public Union()
{
Guilds = new List<uint>();
}
public uint[] CoreOfficals = new uint[8];
public uint[] Harem = new uint[10];
public uint[] Guards = new uint[20];
public string LeaderName;
public uint LeaderUID;
string _bulletin = "";
public string Bulletin
{
get
{
return _bulletin;
}
set
{
_bulletin = value;
}
}
public bool IsLeader(uint uid)
{
if (uid == LeaderUID)
{
return true;
}
return false;
}
public bool IsKingdom()
{
if (Kernel.ServerKingdom == this.ID)
{
return true;
}
return false;
}
public static void Upgrade()
{
UnionPacket.CMsgLeagueOpt response;
var Kingdom = Kernel.Unions.Values.OrderByDescending(p => p.GoldBricks).FirstOrDefault();
Kernel.ServerKingdom = Kingdom.ID;
foreach (var client in Kernel.GamePool.Values)
{
if (client.Union != null)
{
if (client.UnionID == Kingdom.ID)
{
client.Union.GetPlayerRanks(client);
if (client.Union.IsLeader(client.Entity.UID))
{
response = new UnionPacket.CMsgLeagueOpt(true);
response.dwParam1 = UnionPacket.Action.KingdomTitleGui;
response.dwParam3 = (ushort)Kernel.ServerKingdom;
client.Send(response);
}
}
}
response = new UnionPacket.CMsgLeagueOpt(true);
response.dwParam1 = UnionPacket.Action.KingdomIcon;
response.dwParam3 = (ushort)Kernel.ServerKingdom;
client.Send(response);
client.Send(Union.SendOverheadLeagueInfo(client));
client.SendScreen(client.Entity.SpawnPacket, false);
}
}
public static void Downgrade()
{
Kernel.ServerKingdom = 0;
foreach (var client in Kernel.GamePool.Values)
{
client.Offical = 0;
client.Harem = 0;
client.Guards = 0;
UnionPacket.CMsgLeagueOpt response = new UnionPacket.CMsgLeagueOpt(true);
response.dwParam1 = UnionPacket.Action.KingdomIcon;
response.dwParam3 = (ushort)Kernel.ServerKingdom;
client.Send(response);
client.Send(Union.SendOverheadLeagueInfo(client));
}
}
public byte[] ShowLeaguePalaceGuardsList(byte Page)
{
byte[] buffer;
List<Game.ConquerStructures.Union.Member> Members = this.Members.Where(p => p.Guards == 512 && Guards.Contains(p.ID)).OrderByDescending(p => p.IsOnline).ToList();
int Count = Members.Count;
if (Count > (10 * Page))
{
Count = 10;
buffer = new byte[(41 * Count) + 10 + 8];
}
else
{
Count = Count - (10 * (Page - 1));
buffer = new byte[(41 * Count) + 10 + 8];
}
Writer.WriteUInt16((ushort)(buffer.Length - 8), 0, buffer);
Writer.WriteUInt16(2628, 2, buffer);
Writer.WriteByte((byte)Count, 4, buffer);
Writer.WriteByte(Page, 5, buffer);
int Offset = 6;
foreach (var Member in Members)
{
if (Member.IsOnline)
{
var c = Client.GameState.GetClientFromID(Member.ID);
Writer.WriteUInt32((uint)c.Entity.BattlePower, Offset, buffer);
}
else
{
Writer.WriteUInt32((uint)0, Offset, buffer);
}
Offset += 4;
Writer.WriteUInt32(Member.Mesh, Offset, buffer); Offset += 4;
Writer.WriteUInt32(Member.UnionExploits, Offset, buffer); Offset += 4;
Writer.WriteUInt32((uint)Member.NobilityRank, Offset, buffer); Offset += 4;
Writer.WriteUInt32(Member.ID, Offset, buffer); Offset += 4;
Writer.WriteUInt16(Member.Level, Offset, buffer); Offset += 2;
Writer.WriteUInt16(Member.Class, Offset, buffer); Offset += 2;
if (Member.IsOnline)
{
buffer[Offset] = 1;
}
else
{
buffer[Offset] = 0;
}
Offset += 1;
Writer.WriteString(Member.Name, Offset, buffer); Offset += 16;
}
return buffer;
}
public byte[] ShowLeagueConcubinesList()
{
List<Network.GamePackets.UnionPacket.LeagueConcubines> packets = new List<Network.GamePackets.UnionPacket.LeagueConcubines>();
byte[] buffer = new byte[0];
List<Game.ConquerStructures.Union.Member> Members = this.Members.Where(p => p.Harem > 0 && Harem.Contains(p.ID)).OrderByDescending(p => p.IsOnline).ToList();
Network.GamePackets.UnionPacket.LeagueConcubines Packet = null;
uint I = 0;
foreach (var member in Members)
{
for (int i = 0; i < 10; i++)
{
if (Harem[i] == member.ID)
{
if (i == 1 || i == 2)
{
I = (uint)i;
}
if (i > 2)
{
I = (uint)i - 2;
}
}
}
uint ID = 0;
if (member.Harem == 1024)
{
ID = 4000;
}
if (member.Harem == 2048)
{
ID = 4010 + I;
}
if (member.Harem == 4096)
{
ID = 4020 + I;
}
Packet = new Network.GamePackets.UnionPacket.LeagueConcubines()
{
UID = member.ID,
RankID = ID,
Name = member.Name,
Class = member.Class,
Level = member.Level,
Exploits = member.UnionExploits,
Nobility = (uint)member.NobilityRank,
Online = member.IsOnline ? (uint)1 : (uint)0,
Mesh = member.Mesh,
};
if (member.IsOnline)
{
Packet.BattelPower = (uint)Client.GameState.GetClientFromID(member.ID).Entity.BattlePower;
}
packets.Add(Packet);
}
if (packets.Count > 0)
{
using (var ms = new System.IO.MemoryStream())
{
ProtoBuf.Serializer.Serialize<List<Network.GamePackets.UnionPacket.LeagueConcubines>>(ms, packets);
buffer = ms.ToArray();
uint value = buffer[1];
int offset = 2;
while (offset < buffer.Length)
{
buffer[offset - 2] = 18;
offset += buffer[offset - 1] + 2;
}
}
}
byte[] array = new byte[6 + 8 + buffer.Length];
System.Buffer.BlockCopy(buffer, 0, array, 6, buffer.Length);
Writer.WriteUInt16((ushort)(array.Length - 8), 0, array);
Writer.WriteUInt16(2634, 2, array);
array[4] = 8;
return array;
}
public byte[] ShowLeagueImperialCourt()
{
byte[] buffer;
List<Game.ConquerStructures.Union.Member> Members = this.Members.Where(p => (p.Offical > 0 && CoreOfficals.Contains(p.ID)) || p.Offical == 1).OrderByDescending(p => p.IsOnline).ToList();
int Count = Members.Count;
buffer = new byte[(43 * Count) + 10 + 8];
Writer.WriteUInt16((ushort)(buffer.Length - 8), 0, buffer);
Writer.WriteUInt16(2629, 2, buffer);
Writer.WriteByte(1, 4, buffer);
Writer.WriteUInt32((uint)Count, 5, buffer);
int Offset = 6;
foreach (var Member in Members)
{
ushort ID = 0;
if (Member.IsOnline)
{
var c = Client.GameState.GetClientFromID(Member.ID);
Writer.WriteUInt32((uint)c.Entity.BattlePower, Offset, buffer);
}
else
{
Writer.WriteUInt32((uint)0, Offset, buffer);
}
Offset += 4;
Writer.WriteUInt32(Member.Mesh, Offset, buffer); Offset += 4;
Writer.WriteUInt32(Member.UnionExploits, Offset, buffer); Offset += 4;
Writer.WriteUInt32((uint)Member.NobilityRank, Offset, buffer); Offset += 4;
Writer.WriteUInt32(Member.ID, Offset, buffer); Offset += 4;
Writer.WriteUInt16(Member.Level, Offset, buffer); Offset += 2;
Writer.WriteUInt16(Member.Class, Offset, buffer); Offset += 2;
if (Member.Offical == 1)
ID = 1000;
if (Member.Offical == 2)
ID = 2000;
if (Member.Offical == 4)
ID = 2010;
if (Member.Offical == 8)
ID = 2020;
if (Member.Offical == 16)
ID = 2030;
if (Member.Offical == 32)
ID = 2040;
if (Member.Offical == 64)
ID = 2050;
if (Member.Offical == 128)
ID = 2060;
if (Member.Offical == 256)
ID = 2070;
Writer.WriteUInt16(ID, Offset, buffer); Offset += 2;
if (Member.IsOnline)
{
buffer[Offset] = 1;
}
else
{
buffer[Offset] = 0;
}
Offset += 1;
Writer.WriteString(Member.Name, Offset, buffer); Offset += 16;
}
return buffer;
}
public byte[] ShowLeagueImperialCourtList()
{
byte[] buffer;
List<Game.ConquerStructures.Union.Member> Members = this.Members.Where(p => p.Offical > 0 & CoreOfficals.Contains(p.ID)).OrderByDescending(p => p.IsOnline).ToList();
int Count = Members.Count;
buffer = new byte[(43 * Count) + 10 + 8];
Writer.WriteUInt16((ushort)(buffer.Length - 8), 0, buffer);
Writer.WriteUInt16(2629, 2, buffer);
Writer.WriteUInt32((uint)Count, 5, buffer);
int Offset = 6;
foreach (var Member in Members)
{
ushort ID = 0;
if (Member.IsOnline)
{
var c = Client.GameState.GetClientFromID(Member.ID);
Writer.WriteUInt32((uint)c.Entity.BattlePower, Offset, buffer);
}
else
{
Writer.WriteUInt32((uint)0, Offset, buffer);
}
Offset += 4;
Writer.WriteUInt32(Member.Mesh, Offset, buffer); Offset += 4;
Writer.WriteUInt32(Member.UnionExploits, Offset, buffer); Offset += 4;
Writer.WriteUInt32((uint)Member.NobilityRank, Offset, buffer); Offset += 4;
Writer.WriteUInt32(Member.ID, Offset, buffer); Offset += 4;
Writer.WriteUInt16(Member.Level, Offset, buffer); Offset += 2;
Writer.WriteUInt16(Member.Class, Offset, buffer); Offset += 2;
if (Member.Offical == 2)
ID = 2000;
if (Member.Offical == 4)
ID = 2010;
if (Member.Offical == 8)
ID = 2020;
if (Member.Offical == 16)
ID = 2030;
if (Member.Offical == 32)
ID = 2040;
if (Member.Offical == 64)
ID = 2050;
if (Member.Offical == 128)
ID = 2060;
if (Member.Offical == 256)
ID = 2070;
Writer.WriteUInt16(ID, Offset, buffer); Offset += 2;
if (Member.IsOnline)
{
buffer[Offset] = 1;
}
else
{
buffer[Offset] = 0;
}
Offset += 1;
Writer.WriteString(Member.Name, Offset, buffer); Offset += 16;
}
return buffer;
}
public byte[] ShowLeagueGuildMemList(ushort guildid, ushort page)
{
byte[] buffer = new byte[0];
byte Page = (byte)page;
ushort GuildID = guildid;
List<Game.ConquerStructures.Union.Member> Members = this.Members.Where(p => p.GuildID == GuildID).OrderByDescending(p => p.IsOnline).ToList();
int Count = Members.Count;
if (Count > (10 * (Page + 1)))
{
Count = 10;
buffer = new byte[(45 * Count) + 23 + 8];
}
else
{
Count = Count - (10 * Page);
buffer = new byte[(45 * Count) + 23 + 8];
}
Writer.WriteUInt16((ushort)(buffer.Length - 8), 0, buffer);
Writer.WriteUInt16(2626, 2, buffer);
Writer.WriteUInt32((uint)GuildID, 4, buffer);
if (Kernel.Guilds[GuildID].Leader != null)
{
Writer.WriteUInt32((uint)Kernel.Guilds[GuildID].Leader.ID, 8, buffer);
}
Writer.WriteUInt32((uint)Members.Count, 12, buffer);
Writer.WriteUInt16((ushort)Count, 16, buffer);
buffer[18] = 1;
int Offset = 19;
for (int i = 10 * Page; i < Count; i++)
{
var Member = Members[i];
Writer.WriteUInt32(Member.UnionExploits, Offset, buffer); Offset += 4;
Writer.WriteUInt32(Member.Class, Offset, buffer); Offset += 4;
Writer.WriteUInt16(Member.Level, Offset, buffer); Offset += 2;
Writer.WriteUInt32(Member.Mesh, Offset, buffer); Offset += 4;
if (Member.IsOnline)
{
buffer[Offset] = 1;
}
else
{
buffer[Offset] = 0;
}
Offset += 1;
Writer.WriteString(Member.Name, Offset, buffer); Offset += 16;
if (Member.IsOnline)
{
var c = Client.GameState.GetClientFromID(Member.ID);
Writer.WriteUInt32(c.UnionTitle, Offset, buffer); Offset += 4;
}
else
{
Writer.WriteUInt32(0, Offset, buffer); Offset += 4;
}
Writer.WriteUInt32((uint)Member.NobilityRank, Offset, buffer); Offset += 4;
Writer.WriteUInt32((uint)Member.ID, Offset, buffer); Offset += 4;
if (Member.IsOnline)
{
var c = Client.GameState.GetClientFromID(Member.ID);
Writer.WriteUInt16((ushort)c.Entity.BattlePower, Offset, buffer);
}
else
{
Writer.WriteUInt16((ushort)0, Offset, buffer);
}
Offset += 2;
}
return buffer;
}
public byte[] ShowLeagueMemList(ushort guildid, ushort page)
{
byte[] buffer = new byte[0];
byte Page = (byte)page;
ushort GuildID = guildid;
List<Game.ConquerStructures.Union.Member> Members = this.Members.Where(p => p.GuildID == 0).OrderByDescending(p => p.IsOnline).ToList();
int Count = Members.Count;
if (Count > (10 * (Page + 1)))
{
Count = 10;
buffer = new byte[(45 * Count) + 23 + 8];
}
else
{
Count = Count - (10 * Page);
buffer = new byte[(45 * Count) + 23 + 8];
}
Writer.WriteUInt16((ushort)(buffer.Length - 8), 0, buffer);
Writer.WriteUInt16(2626, 2, buffer);
Writer.WriteUInt32((uint)GuildID, 4, buffer);
Writer.WriteUInt32((uint)0, 8, buffer);
Writer.WriteUInt32((uint)Members.Count, 12, buffer);
Writer.WriteUInt16((ushort)Count, 16, buffer);
buffer[18] = 1;
int Offset = 19;
for (int i = 10 * Page; i < Count; i++)
{
var Member = Members[i];
Writer.WriteUInt32(Member.UnionExploits, Offset, buffer); Offset += 4;
Writer.WriteUInt32(Member.Class, Offset, buffer); Offset += 4;
Writer.WriteUInt16(Member.Level, Offset, buffer); Offset += 2;
Writer.WriteUInt32(Member.Mesh, Offset, buffer); Offset += 4;
if (Member.IsOnline)
{
buffer[Offset] = 1;
}
else
{
buffer[Offset] = 0;
}
Offset += 1;
Writer.WriteString(Member.Name, Offset, buffer); Offset += 16;
if (Member.IsOnline)
{
var c = Client.GameState.GetClientFromID(Member.ID);
Writer.WriteUInt32(c.UnionTitle, Offset, buffer); Offset += 4;
}
else
{
Writer.WriteUInt32(0, Offset, buffer); Offset += 4;
}
Writer.WriteUInt32((uint)Member.NobilityRank, Offset, buffer); Offset += 4;
Writer.WriteUInt32((uint)Member.ID, Offset, buffer); Offset += 4;
if (Member.IsOnline)
{
var c = Client.GameState.GetClientFromID(Member.ID);
Writer.WriteUInt16((ushort)c.Entity.BattlePower, Offset, buffer);
}
else
{
Writer.WriteUInt16((ushort)0, Offset, buffer);
}
Offset += 2;
}
return buffer;
}
public byte[] SendLeagueInfo()
{
byte[] buffer = new byte[362 + 8];
if (this != null)
{
Writer.WriteUInt16((ushort)(buffer.Length - 8), 0, buffer);
Writer.WriteUInt16(2623, 2, buffer);
Writer.WriteUInt64(this.UnionFund, 4, buffer);
Writer.WriteUInt64(this.GoldBricks, 12, buffer);
Writer.WriteString(this.Name, 28, buffer);
Writer.WriteString(this.LeaderName, 44, buffer);
Writer.WriteString(this.Bulletin, 60, buffer);
Writer.WriteString(this.Title, 316, buffer);
}
return buffer;
}
public byte[] SendLeagueSynList(byte Page)
{
byte[] buffer = new byte[0];
int Count = this.Guilds.Count;
if (Count > (15 * (Page + 1)))
{
Count = 15;
buffer = new byte[(48 * Count) + 15 + 8];
}
else
{
Count = Count - (15 * Page);
buffer = new byte[(48 * Count) + 15 + 8];
}
Writer.WriteUInt16((ushort)(buffer.Length - 8), 0, buffer);
Writer.WriteUInt16(2625, 2, buffer);
Writer.WriteUInt32((uint)this.Guilds.Count, 4, buffer);
buffer[8] = (byte)Count;
buffer[10] = 1;
int Offset = 11;
for (int i = 15 * Page; i < Count; i++)
{
uint ID = this.Guilds[i];
var Guild = Kernel.Guilds[ID];
Writer.WriteUInt32(Guild.ID, Offset, buffer); Offset += 4;
Writer.WriteUInt64(Guild.SilverFund, Offset, buffer); Offset += 8;
Writer.WriteUInt16((ushort)Guild.Members.Count, Offset, buffer); Offset += 2;
Writer.WriteUInt16((ushort)Guild.Level, Offset, buffer); Offset += 2;
Writer.WriteString(Guild.Name, Offset, buffer); Offset += 16;
Writer.WriteString(Guild.LeaderName, Offset, buffer); Offset += 16;
}
Offset += 4;
return buffer;
}
public static byte[] SendOverheadLeagueInfo(Client.GameState client)
{
byte[] buffer;
Network.GamePackets.UnionPacket.OverheadLeagueInfo Packet = null;
if (client.Union != null)
{
Packet = new Network.GamePackets.UnionPacket.OverheadLeagueInfo()
{
UID = client.Entity.UID,
UnionID = client.Union.ID,
PlayerRank = client.Union.IsLeader(client.Entity.UID) ? (uint)1 : (uint)0,
UnionRank = client.Union.IsKingdom() ? (uint)1 : (uint)0,
UnionName = client.Union.Name,
Unknown2 = 14,
Unknown1 = 0,
};
if (Packet.UnionRank == 1)
{
Packet.UnionName = client.Union.Title == "" ? client.Union.Name : client.Union.Title + "KDM";
}
client.Entity.UnionName = Packet.UnionName;
client.UnionRank = (byte)Packet.PlayerRank;
client.UnionType = (byte)Packet.UnionRank;
client.UnionID = Packet.UnionID;
}
else
{
if (client.Union != null)
{
Packet = new Network.GamePackets.UnionPacket.OverheadLeagueInfo()
{
UID = client.Entity.UID,
UnionID = 0,
PlayerRank = 0,
UnionRank = 0,
UnionName = "",
Unknown2 = 14,
Unknown1 = 0,
};
client.Entity.UnionName = Packet.UnionName;
client.UnionRank = (byte)Packet.PlayerRank;
client.UnionType = (byte)Packet.UnionRank;
client.UnionID = Packet.UnionID;
}
}
using (var ms = new System.IO.MemoryStream())
{
Serializer.Serialize(ms, Packet);
buffer = ms.ToArray();
}
byte[] Array = new byte[buffer.Length + 12];
System.Buffer.BlockCopy(buffer, 0, Array, 4, buffer.Length);
Writer.WriteUInt16((ushort)(Array.Length - 8), 0, Array);
Writer.WriteUInt16(2631, 2, Array);
if (client.Entity.EntityFlag == EntityFlag.Player)
{
client.Entity.Update((byte)Network.GamePackets.Update.UnionRank, (ushort)(client.Offical + client.Harem + client.Guards), true);
}
return Array;
}
private void UpdateDatabase(string column, ulong value)
{
new Database.MySqlCommand(Database.MySqlCommandType.UPDATE).Update("Unions")
.Set(column, value)
.Where("ID", this.ID)
.Execute();
}
private void UpdateDatabase(string column, uint value)
{
new Database.MySqlCommand(Database.MySqlCommandType.UPDATE).Update("Unions")
.Set(column, value)
.Where("ID", this.ID)
.Execute();
}
public void RemoveMember(Client.GameState client)
{
var C = Members.Where(p => p.ID == client.Entity.UID).FirstOrDefault();
if (C != null)
{
if (C.UnionID == this.ID)
{
client.Union = null;
client.UnionID = 0;
client.Offical = 0;
client.Harem = 0;
client.Guards = 0;
UnionPacket.CMsgLeagueOpt response = new UnionPacket.CMsgLeagueOpt(true);
response.dwParam1 = UnionPacket.Action.KingdomIcon;
response.dwParam3 = (ushort)Kernel.ServerKingdom;
client.Send(response);
client.Send(Game.ConquerStructures.Union.SendOverheadLeagueInfo(client));
}
}
}
public void GetMemberRankGuard(Client.GameState client)
{
if (this.Guards.Contains(client.Entity.UID))
{
client.Guards = 512;
}
}
public void GetMemberRankHarem(Client.GameState client)
{
if (this.Harem.Contains(client.Entity.UID))
{
for (int i = 0; i < 10; i++)
{
if (Harem[i] == client.Entity.UID)
{
if (i == 0)
{
client.Harem = 1024;
}
else if (i == 1 || i == 2)
{
client.Harem = 2048;
}
else
{
client.Harem = 4096;
}
}
}
}
}
public void GetMemberRankOffical(Client.GameState client)
{
if (IsLeader(client.Entity.UID))
{
client.Offical = 1;
return;
}
if (this.CoreOfficals.Contains(client.Entity.UID))
{
for (int i = 0; i < 8; i++)
{
if (CoreOfficals[i] == client.Entity.UID)
{
if (i == 0)
{
client.Offical = 2;
}
else if (i == 1)
{
client.Offical = 4;
}
else if (i == 2)
{
client.Offical = 8;
}
else if (i == 3)
{
client.Offical = 16;
}
else if (i == 4)
{
client.Offical = 32;
}
else if (i == 5)
{
client.Offical = 64;
}
else if (i == 6)
{
client.Offical = 128;
}
else if (i == 7)
{
client.Offical = 256;
}
}
}
}
}
public void GetPlayerRanks(Client.GameState client)
{
if (this.IsKingdom())
{
GetMemberRankHarem(client);
GetMemberRankOffical(client);
GetMemberRankGuard(client);
}
}
public void AddGuild(Client.GameState client)
{
if (Guilds.Contains(client.Guild.ID))
{
Guilds.Remove(client.Guild.ID);
}
Guilds.Add(client.Guild.ID);
client.Guild.UnionID = ID;
Database.GuildTable.UpdateUnionID(client.Guild);
foreach (var mem in client.Guild.Members.Values)
{
}
}
public void RemoveGuild(uint GuildID)
{
var Guild = Kernel.Guilds[GuildID];
if (Guild != null)
{
if (Guilds.Contains(GuildID))
{
Guild.UnionID = 0;
Database.GuildTable.UpdateUnionID(Guild);
Guilds.Remove(GuildID);
foreach (var mem in Kernel.Guilds[GuildID].Members.Values)
{
if (mem.IsOnline)
{
if (mem.Client != null)
{
RemoveMember(mem.Client);
}
}
}
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Conquer_Online_Server.Game.ConquerStructures;
namespace Conquer_Online_Server.Database
{
public class UnionTable
{
public static List<Game.ConquerStructures.Union.Member> LoadMembers(uint UnionID)
{
List<Game.ConquerStructures.Union.Member> Members = new List<Game.ConquerStructures.Union.Member>();
using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("entities").Where("UnionID", UnionID))
using (var reader = new MySqlReader(cmd))
{
while (reader.Read())
{
var member = new Game.ConquerStructures.Union.Member(UnionID);
member.ID = reader.ReadUInt32("uid");
member.Name = reader.ReadString("name");
member.Level = reader.ReadByte("level");
if (Game.ConquerStructures.Nobility.Board.ContainsKey(member.ID))
{
member.NobilityRank = Game.ConquerStructures.Nobility.Board[member.ID].Rank;
}
member.Class = reader.ReadByte("Class");
member.UnionExploits = reader.ReadUInt32("UnionExploits");
member.Offical = reader.ReadUInt16("Offical");
member.Harem = reader.ReadUInt16("Harem");
member.Guards = reader.ReadUInt16("Guards");
member.GuildID = reader.ReadUInt32("guildid");
member.Mesh = uint.Parse(reader.ReadUInt16("Face").ToString() + reader.ReadUInt16("Body").ToString());
Members.Add(member);
}
}
return Members;
}
public static void Load()
{
using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("Unions"))
using (var reader = new MySqlReader(cmd))
{
while (reader.Read())
{
var Union = new Game.ConquerStructures.Union();
Union.ID = reader.ReadUInt32("ID");
Union.GoldBricks = reader.ReadUInt32("GoldBricks");
Union.UnionFund = reader.ReadUInt64("UnionFund");
Union.Name = reader.ReadString("Name");
Union.Title = reader.ReadString("Title");
Union.LeaderName = reader.ReadString("LeaderName");
Union.LeaderUID = reader.ReadUInt32("LeaderUID");
Union.Bulletin = reader.ReadString("Bulletin");
Union.Declaration = reader.ReadString("Declaration");
foreach (var guild in Kernel.Guilds.Values)
{
if (guild.UnionID == Union.ID)
{
Union.Guilds.Add(guild.ID);
}
}
string[] Officals = reader.ReadString("CoreOfficals").Split('#');
Union.CoreOfficals[0] = uint.Parse(Officals[0]);
Union.CoreOfficals[1] = uint.Parse(Officals[1]);
Union.CoreOfficals[2] = uint.Parse(Officals[2]);
Union.CoreOfficals[3] = uint.Parse(Officals[3]);
Union.CoreOfficals[4] = uint.Parse(Officals[4]);
Union.CoreOfficals[5] = uint.Parse(Officals[5]);
Union.CoreOfficals[6] = uint.Parse(Officals[6]);
Union.CoreOfficals[7] = uint.Parse(Officals[7]);
string[] Harem = reader.ReadString("Harem").Split('#');
Union.Harem[0] = uint.Parse(Harem[0]);
Union.Harem[1] = uint.Parse(Harem[1]);
Union.Harem[2] = uint.Parse(Harem[2]);
Union.Harem[3] = uint.Parse(Harem[3]);
Union.Harem[4] = uint.Parse(Harem[4]);
Union.Harem[5] = uint.Parse(Harem[5]);
Union.Harem[6] = uint.Parse(Harem[6]);
Union.Harem[7] = uint.Parse(Harem[7]);
Union.Harem[8] = uint.Parse(Harem[8]);
Union.Harem[9] = uint.Parse(Harem[9]);
string[] Guards = reader.ReadString("Guards").Split('#');
Union.Guards[0] = uint.Parse(Guards[0]);
Union.Guards[1] = uint.Parse(Guards[1]);
Union.Guards[2] = uint.Parse(Guards[2]);
Union.Guards[3] = uint.Parse(Guards[3]);
Union.Guards[4] = uint.Parse(Guards[4]);
Union.Guards[5] = uint.Parse(Guards[5]);
Union.Guards[6] = uint.Parse(Guards[6]);
Union.Guards[7] = uint.Parse(Guards[7]);
Union.Guards[8] = uint.Parse(Guards[8]);
Union.Guards[9] = uint.Parse(Guards[9]);
Union.Guards[10] = uint.Parse(Guards[10]);
Union.Guards[11] = uint.Parse(Guards[11]);
Union.Guards[12] = uint.Parse(Guards[12]);
Union.Guards[13] = uint.Parse(Guards[13]);
Union.Guards[14] = uint.Parse(Guards[14]);
Union.Guards[15] = uint.Parse(Guards[15]);
Union.Guards[16] = uint.Parse(Guards[16]);
Union.Guards[17] = uint.Parse(Guards[17]);
Union.Guards[18] = uint.Parse(Guards[18]);
Union.Guards[19] = uint.Parse(Guards[19]);
Kernel.Unions.Add(Union.ID, Union);
}
}
}
public static void CreateUnion(Union union)
{
using (var cmd = new MySqlCommand(MySqlCommandType.INSERT).Insert("Unions")
.Insert("ID", union.ID)
.Insert("GoldBricks", union.GoldBricks)
.Insert("UnionFund", union.UnionFund)
.Insert("Name", union.Name)
.Insert("Title", union.Title)
.Insert("LeaderName", union.LeaderName)
.Insert("LeaderUID", union.LeaderUID)
.Insert("Bulletin", "")
.Insert("Declaration", ""))
cmd.Execute();
}
public static void UpdateHarem(Union union)
{
var builder = new StringBuilder();
builder.Append
(
union.Harem[0] + "#" +
union.Harem[1] + "#" +
union.Harem[2] + "#" +
union.Harem[3] + "#" +
union.Harem[4] + "#" +
union.Harem[5] + "#" +
union.Harem[6] + "#" +
union.Harem[7] + "#" +
union.Harem[8] + "#" +
union.Harem[9]
);
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("Unions")
.Set("Harem", builder.ToString()).Where("ID", union.ID))
cmd.Execute();
}
public static void UpdateCoreOfficals(Union union)
{
var builder = new StringBuilder();
builder.Append
(
union.CoreOfficals[0] + "#" +
union.CoreOfficals[1] + "#" +
union.CoreOfficals[2] + "#" +
union.CoreOfficals[3] + "#" +
union.CoreOfficals[4] + "#" +
union.CoreOfficals[5] + "#" +
union.CoreOfficals[6] + "#" +
union.CoreOfficals[7]
);
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("Unions")
.Set("CoreOfficals", builder.ToString()).Where("ID", union.ID))
cmd.Execute();
}
public static void UpdateGuards(Union union)
{
var builder = new StringBuilder();
builder.Append
(
union.Guards[0] + "#" +
union.Guards[1] + "#" +
union.Guards[2] + "#" +
union.Guards[3] + "#" +
union.Guards[4] + "#" +
union.Guards[5] + "#" +
union.Guards[6] + "#" +
union.Guards[7] + "#" +
union.Guards[8] + "#" +
union.Guards[9] + "#" +
union.Guards[10] + "#" +
union.Guards[11] + "#" +
union.Guards[12] + "#" +
union.Guards[13] + "#" +
union.Guards[14] + "#" +
union.Guards[15] + "#" +
union.Guards[16] + "#" +
union.Guards[17] + "#" +
union.Guards[18] + "#" +
union.Guards[19]
);
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("Unions")
.Set("Guards", builder.ToString()).Where("ID", union.ID))
cmd.Execute();
}
public static void UpdateLeader(Union union)
{
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("Unions")
.Set("LeaderName", union.LeaderName).Set("LeaderUID", union.LeaderUID).Where("ID", union.ID))
cmd.Execute();
}
}
}
#region Union
case 2622:
{
UnionPacket.Prosses(packet, client);
break;
}
case 11:
{
byte[] pac = new byte[23 + 8];
Writer.WriteUInt32(23, 0, pac);
Writer.WriteUInt32(2622, 2, pac);
Writer.WriteUInt32(8, 4, pac);
Writer.WriteUInt32(3, 6, pac);// 3 = kingdom 2 = union
Writer.WriteUInt32(3, 14, pac);// 3 = kingdom 2 = union
client.Send(pac);
break;
}
case 12://خروج من يونيون
{
byte[] pac = new byte[23 + 8];
Writer.WriteUInt32(23, 0, pac);
Writer.WriteUInt32(2622, 2, pac);
Writer.WriteUInt32(8, 4, pac);
Writer.WriteUInt32(3, 14, pac);// 3 = kingdom 2 = union
client.Send(pac);
break;
}
#endregion
public const byte
UnionRank = 83,
MilitaryRank = 82,
public bool ChatBlock;
private string _unionname = "";
public string UnionName
{
get
{
return _unionname;
}
set
{
_unionname = value;
Entity.WriteStringList(new List<string>() { Entity.Name, "", Entity.ClanName, "", "", "", _unionname }, 284, Entity.SpawnPacket);
SendScreen(Entity.SpawnPacket, false);
}
}
uint _UnionID;
public uint UnionID
{
get
{
return _UnionID;
}
set
{
_UnionID = value;
Entity.SpawnPacket[270] = (byte)_UnionID;
Entity.UpdateDatabase("UnionID", _UnionID);
SendScreen(Entity.SpawnPacket, false);
}
}
public byte UnionRank
{
set
{
Entity.SpawnPacket[282] = value;
SendScreen(Entity.SpawnPacket, false);
}
}
public byte UnionType
{
set
{
Entity.SpawnPacket[283] = value;
SendScreen(Entity.SpawnPacket, false);
}
}
public uint UnionTitle
{
get
{
if (Union != null)
{
if (Union.IsKingdom())
{
return (uint)(Offical + Harem + Guards);
}
}
return 0;
}
}
uint _UnionExploits;
public uint UnionExploits
{
get
{
return _UnionExploits;
}
set
{
_UnionExploits = value;
Entity.UpdateDatabase("UnionExploits", _UnionExploits);
byte i = 0;
if (_UnionExploits >= 200)
i += 1;
if (_UnionExploits >= 500)
i += 1;
if (_UnionExploits >= 1000)
i += 1;
if (_UnionExploits >= 1500)
i += 1;
if (_UnionExploits >= 2100)
i += 1;
if (_UnionExploits >= 2800)
i += 1;
if (_UnionExploits >= 3700)
i += 1;
if (_UnionExploits >= 4700)
i += 1;
if (_UnionExploits >= 6000)
i += 1;
if (_UnionExploits >= 7500)
i += 1;
if (_UnionExploits >= 10000)
i += 1;
if (_UnionExploits >= 15000)
i += 1;
if (_UnionExploits >= 23000)
i += 1;
Entity.SpawnPacket[274] = i;
if (Entity.EntityFlag == EntityFlag.Player)
{
Entity.Update((byte)Network.GamePackets.Update.MilitaryRank, i, true);
}
}
}
ushort _Offical;
public ushort Offical
{
get
{
return _Offical;
}
set
{
_Offical = value;
Entity.UpdateDatabase("Offical", _Offical);
Writer.WriteUInt16((ushort)(Offical + Harem + Guards), 278, Entity.SpawnPacket);
if (Entity.EntityFlag == EntityFlag.Player)
{
Entity.Update((byte)Update.UnionRank, (ushort)(Offical + Harem + Guards), true);
}
SendScreen(Entity.SpawnPacket, false);
}
}
ushort _Harem;
public ushort Harem
{
get
{
return _Harem;
}
set
{
_Harem = value;
Entity.UpdateDatabase("Harem", _Harem);
Writer.WriteUInt16((ushort)(Offical + Harem + Guards), 278, Entity.SpawnPacket);
if (Entity.EntityFlag == EntityFlag.Player)
{
Entity.Update((byte)Update.UnionRank, (ushort)(Offical + Harem + Guards), true);
}
SendScreen(Entity.SpawnPacket, false);
}
}
ushort _Guards;
public ushort Guards
{
get
{
return _Guards;
}
set
{
_Guards = value;
Entity.UpdateDatabase("Guards", _Guards);
Writer.WriteUInt16((ushort)(Offical + Harem + Guards), 278, Entity.SpawnPacket);
if (Entity.EntityFlag == EntityFlag.Player)
{
Entity.Update((byte)Update.UnionRank, (ushort)(Offical + Harem + Guards), true);
}
SendScreen(Entity.SpawnPacket, false);
}
}
public Game.ConquerStructures.Union Union;
public static GameState GetClientFromID(uint p)
{
foreach (var c in Kernel.GamePool.Values)
{
if (c.Entity.UID == p)
{
return c;
}
}
return null;
}
public static GameState GetClientFromName(string Name)
{
foreach (var c in Kernel.GamePool.Values)
{
if (c.Entity.Name == Name)
{
return c;
}
}
return null;
}
public static Dictionary<uint, Conquer_Online_Server.Game.ConquerStructures.Union> Unions = new Dictionary<uint, Conquer_Online_Server.Game.ConquerStructures.Union>(10000);
public static uint ServerKingdom = 0;
public void Die(UInt32 killer)
private void UpdateDatabase(string column, byte value)
public void UpdateDatabase(string column, long value)
{
new Database.MySqlCommand(Conquer_Online_Server.Database.MySqlCommandType.UPDATE).Update("entities").Set(column, value).Where("UID", UID).Execute();
}
public string Name
private string _unionname = "";
public string UnionName
{
get
{
return _unionname;
}
set
{
_unionname = value;
Entity.WriteStringList(new List<string>() { Name, "", ClanName, "", "", "", _unionname }, 308, SpawnPacket);
Owner.SendScreen(SpawnPacket, false);
}
}
public void AddMember
public void AddMember(Client.GameState client)
{
if (client.AsMember == null && client.Guild == null)
{
if (client.Union != null)
{
if (!client.Union.Guilds.Contains(ID))
{
var union = Kernel.Unions[client.UnionID];
union.RemoveMember(client);
}
}
if (UnionID != 0)
{
if (Kernel.Unions[UnionID] != null)
{
}
}
client.AsMember = new Member(ID)
{
ID = client.Entity.UID,
Level = client.Entity.Level,
Name = client.Entity.Name,
Rank = Conquer_Online_Server.Game.Enums.GuildMemberRank.Member,
Mesh = client.Entity.Mesh
};
if (Nobility.Board.ContainsKey(client.Entity.UID))
{
client.AsMember.Gender = Nobility.Board[client.Entity.UID].Gender;
client.AsMember.NobilityRank = Nobility.Board[client.Entity.UID].Rank;
}
MemberCount++;
client.Guild = this;
client.Entity.GuildID = (ushort)client.Guild.ID;
client.Entity.GuildRank = (ushort)client.AsMember.Rank;
client.Entity.GuildBattlePower = GetSharedBattlepower(client.AsMember.Rank);
for (int i = 0; i < client.ArsenalDonations.Length; i++)
client.ArsenalDonations[i] = 0;
Database.EntityTable.UpdateGuildID(client);
Database.EntityTable.UpdateGuildRank(client);
Members.Add(client.Entity.UID, client.AsMember);
SendGuild(client);
client.Screen.FullWipe();
client.Screen.Reload(null);
SendGuildMessage(new Message(client.AsMember.Name + " has joined our guild.", System.Drawing.Color.Black, Message.Guild));
Network.GamePackets.GuildMinDonations mindonation = new GuildMinDonations(31);
mindonation.AprendGuild(this);
client.Send(mindonation.ToArray());
}
}
public void SendMembers
public void SendMembers(Client.GameState client, ushort page)
{
ulong timernow = (ulong)DateTime.Now.Ticks;
MemoryStream strm = new MemoryStream();
BinaryWriter wtr = new BinaryWriter(strm);
wtr.Write((ushort)0);
wtr.Write((ushort)2102);
wtr.Write((uint)0);
wtr.Write((uint)page);
int left = (int)MemberCount - page;
if (left > 12) left = 12;
if (left < 0) left = 0;
wtr.Write((uint)left);
int count = 0;
int maxmem = page + 12;
int minmem = page;
List<Member> online = new List<Member>(250);
List<Member> offline = new List<Member>(250);
foreach (Member member in Members.Values)
{
if (member.IsOnline)
online.Add(member);
else
offline.Add(member);
}
online.OrderByDescending((mem) => mem.Rank);
var unite = online.Union<Member>(offline);
byte[] name = null;
foreach (Member member in unite)
{
if (count >= minmem && count < maxmem)
{
name = System.Text.Encoding.Default.GetBytes(member.Name);
for (int j = 0; j < 16; j++)
{
if (name.Length > j) wtr.Write(name[j]);
else wtr.Write((byte)0);
}
wtr.Write((uint)member.NobilityRank);
// wtr.Write((uint)member.Gender);
if (member.Gender == 3)
wtr.Write((uint)(member.Gender - 2));
else
wtr.Write((uint)(member.Gender + 1));
wtr.Write((uint)member.Level);
wtr.Write((uint)member.Rank);
wtr.Write((uint)0); // EXP
//wtr.Write((uint)member.SilverDonation + 1);
wtr.Write((uint)member.ArsenalDonation);
wtr.Write((uint)(member.IsOnline ? 1 : 0));
wtr.Write((uint)0); // unknown
// if (member.IsOnline)
// wtr.Write((uint)member.Client.Entity.Class); // class
// else
//wtr.Write((uint)member.Class); // class
if (member.IsOnline) wtr.Write((uint)member.Client.Entity.Class); // class
else wtr.Write((uint)Database.EntityTable.GetClass(member.Name)); // class
wtr.Write((uint)(((timernow - member.LastLogin) / 10000000))); // Offline time (in secoudes)
wtr.Write((uint)client.Entity.Mesh);//mesh
}
count++;
}
int packetlength = (int)strm.Length;
strm.Position = 0;
wtr.Write((ushort)packetlength);
strm.Position = strm.Length;
wtr.Write(Encoding.Default.GetBytes("TQServer"));
strm.Position = 0;
byte[] buf = new byte[strm.Length];
strm.Read(buf, 0, buf.Length);
wtr.Close();
strm.Close();
client.Send(buf);
}
public void Disband()
if (Kernel.Unions.ContainsKey(UnionID))
{
Kernel.Unions[UnionID].RemoveGuild(this.ID);
}
public void AddAlly(string name)
public uint UnionID { get; set; }
guild.CTFdonationCPsold = reader.ReadUInt32("CTFdonationCPsold");
guild.UnionID = reader.ReadUInt32("UnionID");
public static void Create(Guild guild)
using (var cmd = new MySqlCommand(MySqlCommandType.INSERT).Insert("guilds")
.Insert("ID", guild.ID).Insert("name", guild.Name).Insert("Bulletin", "")
.Insert("SilverFund", 500000).Insert("LeaderName", guild.LeaderName))
cmd.Execute();
using (var cmd = new MySqlCommand(MySqlCommandType.INSERT).Insert("guilds")
.Insert("ID", guild.ID).Insert("name", guild.Name).Insert("Bulletin", "")
.Insert("SilverFund", 500000).Insert("UnionID", guild.UnionID).Insert("LeaderName", guild.LeaderName))
cmd.Execute();
}
public static void ChangeName
public static void UpdateUnionID(Guild guild)
{
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("guilds")
.Set("UnionID", guild.UnionID)
.Where("id", guild.ID))
cmd.Execute();
}
client.Entity.Atributes = reader.ReadUInt16("Atributes");
client.UnionID = reader.ReadUInt32("UnionID");
client.UnionExploits = reader.ReadUInt32("UnionExploits");
client.Entity.GuildRank = (ushort)client.AsMember.Rank;
client.Guild = null;
}
if (client.Guild != null)
{
if (client.Guild.UnionID != 0)
{
if (Kernel.Unions.ContainsKey(client.Guild.UnionID))
{
client.Union = Kernel.Unions[client.Guild.UnionID];
if (client.UnionID != client.Guild.UnionID)
{
if (client.UnionID != 0)
{
}
client.UnionID = client.Guild.UnionID;
client.Offical = 0;
client.Harem = 0;
client.Guards = 0;
}
}
else
{
client.UnionID = 0;
client.Offical = 0;
client.Harem = 0;
client.Guards = 0;
}
}
else
{
if (client.UnionID != 0)
{
}
client.UnionID = 0;
client.Offical = 0;
client.Harem = 0;
client.Guards = 0;
}
}
else
{
if (client.UnionID != 0)
{
if (Kernel.Unions.ContainsKey(client.UnionID))
{
client.Union = Kernel.Unions[client.UnionID];
}
}
else
{
client.UnionID = 0;
client.Offical = 0;
client.Harem = 0;
client.Guards = 0;
}
}
if (client.Union != null)
{
client.Union.GetPlayerRanks(client);
public static void UpdateData(Client.GameState client, string column, object value)
public static void SaveUnionID(Client.GameState client, uint ID)
{
UpdateData(client, "UnionID", ID);
}
public static void SaveUnionR(Client.GameState client, Game.Enums.GuildMemberRank ID)
{
UpdateData(client, "UnionRank", (ushort)ID);
}
EntityUID = new Counter(r.ReadUInt32("EntityID"));
Network.GamePackets.UnionPacket.UnionCounter =
new Conquer_Online_Server.Counter(r.ReadUInt32("UnionID"));
Database.NobilityTable.Load();
Database.UnionTable.Load();
case 10003:
#region GuildDirector
case 10003:
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Hello there. Do you want to create a new guild? You need level 90 and 500,000 Money and you have to not belong to any guild. If you are a guild leader.");
dialog.Option("Create Guild.", 1);
dialog.Option("Open DeputyLeader", 3);
if (client.Union == null)
{
dialog.Option("Create Union.", 31);
}
else
{
dialog.Option("Change UnionName.", 45);
}
dialog.Option("Move leadership.", 6);
dialog.Option("Change Guild name.", 17);
dialog.Option("Disband Guild.", 9);
dialog.Option("I don't have that.", 255);
//dialog.Option("Weird Named Deputy leader.", 16);
//dialog.Option("Remove ins From my items.", 15);
dialog.Send();
break;
}
case 31:
{
client.Send(new Data(true) { ID = Network.GamePackets.Data.OpenWindow, dwParam = 693, UID = client.Entity.UID });
break;
}
case 45:
{
if (client.Union != null)
{
UnionPacket.CMsgLeagueOpt packet = new UnionPacket.CMsgLeagueOpt(true);
packet.dwParam1 = UnionPacket.Action.ChangeNameGui;
packet.dwParam3 = client.UnionID;
client.Send(packet);
}
break;
}
default:
{
var member = client.Guild.Members.Values.Where(x => x.Name.StartsWith("~")).OrderBy(z => z.ID).ToArray()[npcRequest.OptionID - 100];
if (member.Rank != Conquer_Online_Server.Game.Enums.GuildMemberRank.Member)
{
dialog.Text("You cannot promote this member anymore.");
dialog.Option("Ah, nevermind.", 255);
dialog.Send();
return;
}
else
{
member.Rank = Conquer_Online_Server.Game.Enums.GuildMemberRank.DeputyLeader;
if (member.IsOnline)
{
client.Guild.SendGuild(member.Client);
member.Client.Entity.GuildRank = (ushort)member.Rank;
member.Client.Screen.FullWipe();
member.Client.Screen.Reload(null);
}
dialog.Text("You have prometed " + member.Name + "to be a DeputyLeader");
dialog.Option("cool!", 255);
dialog.Send();
client.Guild.RanksCounts[(ushort)Game.Enums.GuildMemberRank.DeputyLeader]++;
Database.EntityTable.UpdateGuildRank(member.ID, member.Rank);
}
break;
}
case 17:
{
if (client.Guild != null && client.AsMember.Rank == Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader && client.Entity.Money >= 500000)
{
dialog.Text("Name your guild. The name must have less than 16 characters of any type.");
dialog.Text("It's for 215 Cps.");
dialog.Input("Here:", 18, 16);
dialog.Option("Ah, nevermind.", 255);
dialog.Send();
}
else
{
dialog.Text("You don't meet the requierments.");
dialog.Option("Ahh.", 255);
dialog.Send();
}
break;
}
case 18:
{
if (client.Guild != null && client.AsMember.Rank == Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader && client.Entity.ConquerPoints >= 215)
{
if (npcRequest.Input != "" && npcRequest.Input.Length > 3 && npcRequest.Input.Length < 16)
{
if (!Guild.CheckNameExist(npcRequest.Input))
{
Database.GuildTable.ChangeName(client, npcRequest.Input);
client.Guild.Name = npcRequest.Input;
client.Guild.SendGuild(client);
client.Guild.SendName(client);
client.Screen.FullWipe();
client.Screen.Reload(null);
}
else
{
dialog.Text("There is a Guild Already with this Name i'm sorry.");
dialog.Option("Choose another Name", 1);
dialog.Option("Ok Sorry.", 255);
dialog.Send();
}
}
else
{
dialog.Text("There is a Guild bad Name i'm sorry.");
dialog.Option("Try Again", 1);
dialog.Option("Ok Sorry.", 255);
dialog.Send();
}
}
else
{
dialog.Text("Error >>> [Not in a Guild] , [Not GuildLeader], [Dont have 215 CPS]");
dialog.Option("Try Again", 1);
dialog.Option("Ok Sorry.", 255);
dialog.Send();
}
break;
}
case 16:
{
if (client.Guild != null && client.AsMember.Rank == Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader)
{
var invchar = client.Guild.Members.Values.Where(x => x.Name.StartsWith("~")).OrderBy(z => z.ID).ToArray();
if (invchar.Length == 0)
{
dialog.Text("You don't have any members that start with weird char!.");
dialog.Option("Ahh.", 255);
dialog.Send();
}
else
{
dialog.Text("choose one!.");
for (int i = 0; i < invchar.Length; i++)
{
dialog.Option(invchar[i].Name, (byte)(100 + i));
}
dialog.Send();
}
}
else
{
dialog.Text("You don't meet the requierments.");
dialog.Option("Ahh.", 255);
dialog.Send();
}
break;
}
case 15:
{
if (client.Guild != null)
{
dialog.Text("Sorry you Already in guild i cant help you, need to Quit so i can help You.");
dialog.Option("Ahh.", 255);
dialog.Send();
}
else
{
//Conquer_Online_Server.Database.ConquerItemTable.deleteallguildins(client);
dialog.Text("Congratulations, all your items is back to normal status again, Now you need to Relog!");
dialog.Option("Thanks, i'll relog.", 255);
dialog.Send();
}
break;
}
case 9:
{
if (client.Guild != null && client.AsMember.Rank == Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader)
{
dialog.Text("Are you sure you want to disband your guild?");
dialog.Option("Yes.", 10);
dialog.Option("Ah, nevermind.", 255);
dialog.Send();
}
else
{
dialog.Text("You don't meet the requierments.");
dialog.Option("Ahh.", 255);
dialog.Send();
}
break;
}
case 10:
{
if (client.Guild != null && client.AsMember.Rank == Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader)
{
client.Guild.Disband();
}
break;
}
case 6:
{
if (client.Guild != null && client.AsMember.Rank == Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader)
{
dialog.Text("Input here the member name you want to promote as guild leader.");
dialog.Input("Here:", 7, 16);
dialog.Option("Ah, nevermind.", 255);
dialog.Send();
}
else
{
dialog.Text("You don't meet the requierments.");
dialog.Option("Ahh.", 255);
dialog.Send();
}
break;
}
case 7:
{
if (client.Guild != null && client.AsMember.Rank == Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader)
{
if (npcRequest.Input != "")
{
string lookingFor = npcRequest.Input.Replace(" ", "").Replace("~", "");
var member = client.Guild.Members.Values.FirstOrDefault((p) => p.Name.Replace(" ", "").Replace("~", "") == lookingFor);
if (member == null)
{
dialog.Text("There is no such member in your guild.");
dialog.Option("Ah, nevermind.", 255);
dialog.Send();
return;
}
else
{
if (member.Rank == Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader)
{
dialog.Text("You cannot promote this member anymore.");
dialog.Option("Ah, nevermind.", 255);
dialog.Send();
return;
}
else
{
client.Entity.GuildBattlePower = 0;
client.AsMember.Rank = member.Rank;
EntityTable.UpdateGuildRank(client.Entity.UID, member.Rank);
member.Rank = Game.Enums.GuildMemberRank.GuildLeader;
EntityTable.UpdateGuildRank(member.ID, member.Rank);
if (member.IsOnline)
{
var memberClient = member.Client;
member.Client.Entity.GuildBattlePower = 0;
memberClient.Entity.GuildRank = (ushort)member.Rank;
memberClient.Screen.FullWipe();
memberClient.Screen.Reload(null);
memberClient.Guild.SendGuild(memberClient);
}
client.Entity.GuildRank = (ushort)client.AsMember.Rank;
client.Screen.FullWipe();
client.Screen.Reload(null);
client.Guild.SendGuild(client);
client.Guild.GetMaxSharedBattlepower(true);
}
}
}
}
break;
}
case 3:
{
if (client.Guild != null && client.AsMember.Rank == Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader)
{
dialog.Text("You have now " + client.Guild.RanksCounts[(ushort)Game.Enums.GuildMemberRank.DeputyLeader] + " named deupty leaders.");
if (client.Guild.RanksCounts[(ushort)Game.Enums.GuildMemberRank.DeputyLeader] == 25)
{
dialog.Text("You cannot name any other deupty leader.");
dialog.Option("Ah, nevermind.", 255);
dialog.Send();
}
else
{
dialog.Text("Input here the member name you want to promote as deputy leader.");
dialog.Input("Here:", 4, 16);
dialog.Option("Ah, nevermind.", 255);
dialog.Send();
}
}
else
{
dialog.Text("You don't meet the requierments.");
dialog.Option("Ahh.", 255);
dialog.Send();
}
break;
}
case 4:
{
if (client.Guild != null && client.AsMember.Rank == Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader)
{
if (npcRequest.Input != "")
{
string lookingFor = npcRequest.Input.Replace(" ", "~");
var member = client.Guild.Members.Values.FirstOrDefault((p) => p.Name == lookingFor);
if (member == null)
{
dialog.Text("There is no such member in your guild.");
dialog.Option("Ah, nevermind.", 255);
dialog.Send();
return;
}
else
{
if (member.Rank != Conquer_Online_Server.Game.Enums.GuildMemberRank.Member)
{
dialog.Text("You cannot promote this member anymore.");
dialog.Option("Ah, nevermind.", 255);
dialog.Send();
return;
}
else
{
member.Rank = Conquer_Online_Server.Game.Enums.GuildMemberRank.DeputyLeader;
if (member.IsOnline)
{
client.Guild.SendGuild(member.Client);
member.Client.Entity.GuildRank = (ushort)member.Rank;
member.Client.Screen.FullWipe();
member.Client.Screen.Reload(null);
member.Client.Entity.GuildBattlePower = member.Guild.GetSharedBattlepower(member.Rank);
}
client.Guild.RanksCounts[(ushort)Game.Enums.GuildMemberRank.DeputyLeader]++;
}
}
}
else
{
dialog.Text("Please input the name of the person you want to Deputilize.");
dialog.Option("Ah, Ok.", 255);
dialog.Send();
}
}
else
{
dialog.Text("You are not the guild leader of the current guild you are in.");
dialog.Option("Ah, Ok.", 255);
dialog.Send();
}
break;
}
case 1:
{
if (client.Guild == null && client.Entity.Level >= 90 && client.Entity.Money >= 500000)
{
dialog.Text("Name your guild. The name must have less than 16 characters of any type.");
dialog.Input("Here:", 2, 16);
dialog.Option("Ah, nevermind.", 255);
dialog.Send();
}
else
{
dialog.Text("You don't meet the requierments.");
dialog.Option("Ahh.", 255);
dialog.Send();
}
break;
}
case 2:
{
if (client.Guild == null && client.Entity.Level >= 90 && client.Entity.Money >= 500000)
{
if (npcRequest.Input != "" && npcRequest.Input.Length > 3 && npcRequest.Input.Length < 16)
{
if (!Guild.CheckNameExist(npcRequest.Input))
{
client.Entity.Money -= 500000;
Guild guild = new Guild(client.Entity.Name);
guild.ID = Guild.GuildCounter.Next;
guild.SilverFund = 1000000;
client.AsMember = new Conquer_Online_Server.Game.ConquerStructures.Society.Guild.Member(guild.ID)
{
SilverDonation = 500000,
ID = client.Entity.UID,
Level = client.Entity.Level,
Name = client.Entity.Name,
Rank = Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader,
};
if (client.NobilityInformation != null)
{
client.AsMember.Gender = client.NobilityInformation.Gender;
client.AsMember.NobilityRank = client.NobilityInformation.Rank;
}
client.Entity.GuildID = (ushort)guild.ID;
client.Entity.GuildRank = (ushort)Conquer_Online_Server.Game.Enums.GuildMemberRank.GuildLeader;
guild.Leader = client.AsMember;
client.Guild = guild;
guild.Create(npcRequest.Input);
guild.Name = npcRequest.Input;
guild.MemberCount++;
guild.SendGuild(client);
guild.SendName(client);
Database.GuildArsenalTable.Insert(guild.ID);
client.Screen.FullWipe();
client.Screen.Reload(null);
}
else
{
dialog.Text("There is a Guild Already with this Name i'm sorry.");
dialog.Option("Choose another Name", 1);
dialog.Option("Ok Sorry.", 255);
dialog.Send();
}
}
}
break;
}
}
break;
}
#endregion
UnionID bigint 255 0 -1 0 0 0 0 0 0 0
UnionID bigint 255 0 -1 0 0 0 0 0 0 0
UnionExploits bigint 255 0 -1 0 0 0 0 0 0 0
Harem bigint 255 0 -1 0 0 0 0 0 0 0
Guards bigint 255 0 -1 0 0 0 0 0 0 0
Offical bigint 255 0 -1 0 0 0 0 0 0 0
UnionID bigint 255 0 -1 0 0 0 0 0 0 0
| الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
|
| الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
| حصريا اقوي لودر لتني مره MeGo لاصدار 6711 كامل | MeGo | البرامج والودرات | 241 | 2021-09-22 08:26 PM |
| اضافه ابيك القرصان للسورسات العاديه | Hazem | تطوير سيرفرات كونكر | 47 | 2021-09-15 08:07 PM |
| هديه مني ليكم يا رجاله ملف اتاك يعتبر فكسد بنسبه كبيره للسورسات العاديه كلمه شكر تكفي | MahmoudMano | تطوير سيرفرات كونكر | 35 | 2021-08-20 09:15 PM |
| الان سيستم كامل فيكسد نظام الشخصية الزكية ممكن تلعب مع نفسك بمستويات مختلفة | Mero | تطوير سيرفرات كونكر | 88 | 2021-02-16 09:38 PM |
| اليونيون | messi55 | مشكلات السيرفيرات كونكر الشخصيه | 1 | 2020-09-16 10:48 AM |