i make clanwar for my server
but there is some problem
clans score don't appear at screen
clan name don't change at the clan pole
but there is some problem
clans score don't appear at screen
clan name don't change at the clan pole
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Conquer_Online_Server.Database;
using Conquer_Online_Server.Network.GamePackets;
using Conquer_Online_Server.ServerBase;
namespace Conquer_Online_Server.Game.Tournaments
{
class ClanWar
{
private static bool changed = false;
public static int Claim = 0;
public static SobNpcSpawn ClanFlag, ClanFlag2;
public static Conquer_Online_Server.Game.Clans CurrentTopLeader;
public static bool FirstRound = false;
public static bool IsWar = false;
public static Time32 LastWin;
public static Conquer_Online_Server.Game.Clans PoleKeeper;
private static string[] scoreMessages;
public static SafeDictionary<uint, Conquer_Online_Server.Game.Clans> Scores = new SafeDictionary<uint, Conquer_Online_Server.Game.Clans>(100);
public static Time32 ScoreSendStamp;
public static DateTime StartTime;
public static void AddScore(uint addScore, Conquer_Online_Server.Game.Clans clan)
{
if (clan != null)
{
clan.WarScore += addScore;
if ((int)ClanFlag.Hitpoints <= 0)
{
FinishRound();
return;
}
else
{
changed = true;
if (!Scores.ContainsKey(clan.ClanId))
{
Scores.Add(clan.ClanId, clan);
SendScores();
}
}
}
}
public static void End()
{
if (ClanFlag != null)
{
Kernel.SendWorldMessage(new Message("The Clan, " + PoleKeeper.ClanName + ", owned by " + PoleKeeper.ClanLider + " has won this Clan war!---Clan war has ended!", System.Drawing.Color.White, 0x7db), Kernel.GamePool.Values);
}
else
{
Kernel.SendWorldMessage(new Message("Clan war has ended and there was no winner!", System.Drawing.Color.Red, 0x7db), Kernel.GamePool.Values);
}
IsWar = false;
UpdatePole(ClanFlag);
}
public static void FinishRound()
{
if (!((PoleKeeper == null) || FirstRound))
{
}
LastWin = Time32.Now;
FirstRound = false;
SortScores(out PoleKeeper);
if (PoleKeeper != null)
{
Kernel.SendWorldMessage(new Message("The Clan, " + PoleKeeper.ClanName + ", owned by " + PoleKeeper.ClanLider + " has won this Clan war round!", System.Drawing.Color.Red, Message.Center), ServerBase.Kernel.GamePool.Values);
ClanFlag.Name = PoleKeeper.ClanName;
}
ClanFlag.Hitpoints = ClanFlag.MaxHitpoints;
Kernel.SendWorldMessage(ClanFlag, Kernel.GamePool.Values, (ushort)0x5e5);
Reset();
UpdatePole(ClanFlag);
}
public static void Initiate()
{
var Map = Kernel.Maps[1509];
ClanFlag = (SobNpcSpawn)Map.Npcs[812];
}
public static void Reset()
{
Scores = new SafeDictionary<uint, Conquer_Online_Server.Game.Clans>(100);
ClanFlag.Hitpoints = ClanFlag.MaxHitpoints;
IsWar = true;
}
public static void SendScores()
{
if (scoreMessages == null)
{
scoreMessages = new string[0];
}
if (Scores.Count == 0)
{
return;
}
if (changed)
{
SortScores(out CurrentTopLeader);
for (int i = 0; i < scoreMessages.Length; i++)
{
Message message = new Message(scoreMessages[i], System.Drawing.Color.Red, i == 0 ? Message.FirstRightCorner : Message.ContinueRightCorner);
Kernel.SendWorldMessage(message, ServerBase.Kernel.GamePool.Values, (ushort)1509);
}
}
}
private static void SortScores(out Conquer_Online_Server.Game.Clans winner)
{
winner = null;
List<string> list = new List<string>();
string item = Constants.ServerName + " ClanWar:";
list.Add(item);
SortedDictionary<uint, SortEntry<uint, Conquer_Online_Server.Game.Clans>> source = new SortedDictionary<uint, SortEntry<uint, Conquer_Online_Server.Game.Clans>>();
foreach (Conquer_Online_Server.Game.Clans clans in Scores.Values)
{
if (Kernel.ServerClans.ContainsKey(clans.ClanId))
{
if (source.ContainsKey(clans.WarScore))
{
source[clans.WarScore].Values.Add(clans.ClanId, clans);
}
else
{
source.Add(clans.WarScore, new SortEntry<uint, Conquer_Online_Server.Game.Clans>());
source[clans.WarScore].Values = new Dictionary<uint, Conquer_Online_Server.Game.Clans>();
source[clans.WarScore].Values.Add(clans.ClanId, clans);
}
}
}
int num = 0;
foreach (KeyValuePair<uint, SortEntry<uint, Conquer_Online_Server.Game.Clans>> pair in source.Reverse<KeyValuePair<uint, SortEntry<uint, Conquer_Online_Server.Game.Clans>>>())
{
foreach (Conquer_Online_Server.Game.Clans clans in pair.Value.Values.Values)
{
if (num == 0)
{
winner = clans;
}
object[] objArray = new object[] { "No ", (num + 1).ToString(), ": ", clans.ClanName, "(", pair.Key, ")" };
string str2 = string.Concat(objArray);
list.Add(str2);
num++;
if (num == 4)
{
break;
}
}
if (num == 4)
{
break;
}
}
changed = false;
scoreMessages = list.ToArray();
}
public static void Start()
{
Scores = new SafeDictionary<uint, Conquer_Online_Server.Game.Clans>(100);
StartTime = DateTime.Now;
Kernel.SendWorldMessage(new Message("Clan war has began!", System.Drawing.Color.Red, 0x7db), Kernel.GamePool.Values);
FirstRound = true;
IsWar = true;
}
public static void UpdatePole(SobNpcSpawn ClanFlag)
{
new Database.MySqlCommand(Conquer_Online_Server.Database.MySqlCommandType.UPDATE)
.Update("sobnpcs").Set("name", ClanFlag.Name)
.Set("life", (long)ClanFlag.Hitpoints).Where("id", (long)ClanFlag.UID).Execute();
}
}
}






