|
|
المشاركات 2,308 |
+التقييم 0.84 |
تاريخ التسجيل Apr 2019 |
الاقامة Egypt |
نظام التشغيل windows 7 |
رقم العضوية 1 |
public class Arena
public static ConcurrentDictionary<uint, ChampionPoints> ChampionArenaStatistics = new ConcurrentDictionary<uint, ChampionPoints>();
SaveArenaStats
private static void SaveArenaStats()
{
var array = ArenaStatistics.Values.ToArray();
var array2 = ChampionArenaStatistics.Values.ToArray();
foreach (ArenaStatistic stats in array)
if (stats != null)
Database.ArenaTable.SaveArenaStatistics(stats, null);
foreach (ChampionPoints stats in array2)
if (stats != null)
Database.ArenaTable.SaveArenaStatistics(null, stats);
}
winner.Inventory.Add(723912, 0, 1);
#region ChampionPoints
if (winner.ArenaStatistic.TodayWin == 7)
{
winner.ChampionPoints += 250;
}
if (loser.ArenaStatistic.TodayBattles == 1)
{
loser.ChampionPoints += 100;
}
if (winner.ArenaStatistic.TodayBattles == 1)
{
winner.ChampionPoints += 100;
}
if (loser.ArenaStatistic.TodayBattles == 3)
{
loser.ChampionPoints += 150;
}
if (winner.ArenaStatistic.TodayBattles == 3)
{
winner.ChampionPoints += 150;
}
if (loser.ArenaStatistic.TodayBattles == 5)
{
loser.ChampionPoints += 200;
}
if (winner.ArenaStatistic.TodayBattles == 5)
{
winner.ChampionPoints += 200;
}
if (loser.ArenaStatistic.TodayBattles == 7)
{
loser.ChampionPoints += 200;
}
if (winner.ArenaStatistic.TodayBattles == 7)
{
winner.ChampionPoints += 200;
}
#endregion
public static void Reset()
public static void Reset()
{
if (!DayPassed)
{
if (DateTime.Now.DayOfYear != StartDateTime.DayOfYear)
{
DayPassed = true;
var array = ArenaStatistics.Values.ToArray();
foreach (ArenaStatistic stat in array)
{
try
{
if (Kernel.GamePool.ContainsKey(stat.EntityID))
{
Client.GameClient client = Kernel.GamePool[stat.EntityID];
Database.ArenaTable.Reset(client, stat, null);
client.Send(stat);
}
else
Database.ArenaTable.Reset(null, stat, null);
}
catch { }
}
var array2 = ChampionArenaStatistics.Values.ToArray();
foreach (ChampionPoints stat in array2)
{
try
{
if (Kernel.GamePool.ContainsKey(stat.EntityID))
{
Client.GameClient client = Kernel.GamePool[stat.EntityID];
Database.ArenaTable.Reset(client, null, stat);
client.Send(stat);
}
else
Database.ArenaTable.Reset(null, null, stat);
}
catch { }
}
try
{
SaveArenaStats();
}
catch
{
}
YesterdaySort();
}
}
else
{
if (DateTime.Now.DayOfYear == StartDateTime.DayOfYear)
{
DayPassed = false;
StartDateTime = DateTime.Now;
}
}
}
foreach (var teammate in winner.Team.Teammates)
#region ChampionPoints
if (teammate.ArenaStatistic.TodayWin == 7)
{
teammate.ChampionPoints += 250;
}
if (teammate.ArenaStatistic.TodayBattles == 1)
{
teammate.ChampionPoints += 100;
}
if (teammate.ArenaStatistic.TodayBattles == 3)
{
teammate.ChampionPoints += 150;
}
if (teammate.ArenaStatistic.TodayBattles == 5)
{
teammate.ChampionPoints += 200;
}
if (teammate.ArenaStatistic.TodayBattles == 7)
{
teammate.ChampionPoints += 200;
}
#endregion
foreach (var teammate in loser.Team.Teammates)
#region ChampionPoints
if (teammate.ArenaStatistic.TodayWin == 7)
{
teammate.ChampionPoints += 250;
}
if (teammate.ArenaStatistic.TodayBattles == 1)
{
teammate.ChampionPoints += 100;
}
if (teammate.ArenaStatistic.TodayBattles == 3)
{
teammate.ChampionPoints += 150;
}
if (teammate.ArenaStatistic.TodayBattles == 5)
{
teammate.ChampionPoints += 200;
}
if (teammate.ArenaStatistic.TodayBattles == 7)
{
teammate.ChampionPoints += 200;
}
#endregion
GameClient & GameState
public Network.GamePackets.ArenaStatistic
public Network.GamePackets.ChampionPoints CP;
public void ReadyToPlay()
Trade = new Game.ConquerStructures.Trade();
CP = new ChampionPoints();
public uint ChampionPoints
{
get
{
return CP.Points;
}
set
{
uint old = CP.Points;
if (CP.TodayPoints < value)
CP.TodayPoints = value;
if (CP.TodayPoints > 650)
{
CP.TodayPoints = 650;
if (Entity.FullyLoaded)
Send(new Message("Your Champion Points have reached the max amount of 650 points. You can collect more points tommorrow.", Color.Red, Message.System));
}
else
{
CP.Points =
value;
if (old < ChampionPoints)
CP.AllChampionPoints += (ChampionPoints - old);
if (Entity.FullyLoaded && old < ChampionPoints)
Send(new Message("You received " + (ChampionPoints - old) + " Champion Points!", Color.Red, Message.System));
}
if (Entity.LoadedActivenessSystem)
{
Activenes.SendSinglePacket(this, Activeness.Types.ChampionPTask, 1);
}
}
}
while (reader.Read())
{
Network.GamePackets.ChampionPoints CP = new Network.GamePackets.ChampionPoints();
CP.Points = reader.ReadUInt32("ChampionPoints");
CP.TodayPoints = reader.ReadUInt32("TodayChampionPoints");
CP.AllChampionPoints = reader.ReadUInt32("AllChampionPoints");
CP.EntityID = reader.ReadUInt32("EntityID");
Game.Arena.ChampionArenaStatistics.Add(CP.EntityID, CP);
public static void Reset(Client.GameClient client, ArenaStatistic stat, ChampionPoints CP)
{
if (CP != null)
{
CP.TodayPoints = 0;
}
stat.LastSeasonArenaPoints = stat.ArenaPoints;
stat.LastSeasonWin = stat.TodayWin;
stat.LastSeasonLose = stat.TodayBattles - stat.TodayWin;
stat.LastSeasonRank = stat.Rank;
stat.TodayWin = 0;
stat.TodayBattles = 0;
if (stat.Rank != 0)
{
if (client == null)
{
stat.CurrentHonor += (1001 - stat.Rank) * 1000;
stat.HistoryHonor += (1001 - stat.Rank) * 1000;
}
else
{
client.CurrentHonor += (1001 - stat.Rank) * 1000;
client.HistoryHonor += (1001 - stat.Rank) * 1000;
}
}
stat.Rank = 0;
if (client == null)
stat.ArenaPoints = Database.ArenaTable.ArenaPointFill(stat.Level);
else
client.ArenaPoints = Database.ArenaTable.ArenaPointFill(stat.Level);
stat.LastArenaPointFill = DateTime.Now;
}
public static void SaveArenaStatistics(Network.GamePackets.ArenaStatistic stats, Network.GamePackets.ChampionPoints CP, MySql.Data.MySqlClient.MySqlConnection conn)
{
if (stats == null && CP != null)
{
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("arena"))
cmd.Set("ChampionPoints", CP.Points).Set("TodayChampionPoints", CP.TodayPoints).Set("AllChampionPoints", CP.AllChampionPoints)
.Where("EntityID", stats.EntityID)
.Execute(conn);
return;
}
if (CP == null && stats != null)
{
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("arena"))
cmd.Set("LastSeasonRank", stats.LastSeasonRank)
.Set("ArenaPoints", stats.ArenaPoints).Set("TodayWin", stats.TodayWin)
.Set("TodayBattles", stats.TodayBattles).Set("LastSeasonWin", stats.LastSeasonWin)
.Set("LastSeasonLose", stats.LastSeasonLose).Set("TotalWin", stats.TotalWin)
.Set("TotalLose", stats.TotalLose).Set("HistoryHonor", stats.HistoryHonor)
.Set("CurrentHonor", stats.CurrentHonor).Set("Level", stats.Level).Set("Class", stats.Class)
.Set("EntityName", stats.Name).Set("ArenaPointFill", stats.LastArenaPointFill.Ticks).Set("Model", stats.Model)
.Set("Class", stats.Class).Set("LastSeasonArenaPoints", stats.LastSeasonArenaPoints).Where("EntityID", stats.EntityID)
.Execute(conn);
}
else
{
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("arena"))
cmd.Set("LastSeasonRank", stats.LastSeasonRank)
.Set("ArenaPoints", stats.ArenaPoints).Set("TodayWin", stats.TodayWin)
.Set("TodayBattles", stats.TodayBattles).Set("LastSeasonWin", stats.LastSeasonWin)
.Set("LastSeasonLose", stats.LastSeasonLose).Set("TotalWin", stats.TotalWin)
.Set("TotalLose", stats.TotalLose).Set("HistoryHonor", stats.HistoryHonor)
.Set("ChampionPoints", CP.Points).Set("TodayChampionPoints", CP.TodayPoints)
.Set("CurrentHonor", stats.CurrentHonor).Set("Level", stats.Level).Set("Class", stats.Class)
.Set("EntityName", stats.Name).Set("ArenaPointFill", stats.LastArenaPointFill.Ticks).Set("Model", stats.Model)
.Set("Class", stats.Class).Set("LastSeasonArenaPoints", stats.LastSeasonArenaPoints).Where("EntityID", stats.EntityID)
.Execute(conn);
}
}
public static void SaveArenaStatistics(Network.GamePackets.ArenaStatistic stats, ChampionPoints CP)
{
using (var conn = DataHolder.MySqlConnection)
{
conn.Open();
SaveArenaStatistics(stats,CP, conn);
}
}
CMsgChampionPoints
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CMsgConquer.Client;
namespace CMsgConquer.Network.GamePackets
{
public class ChampionPoints : Writer, Interfaces.IPacket
{
byte[] Buffer;
public ChampionPoints()
{
Buffer = new byte[7 + 8];
Writer.Write(7, 0, Buffer);
Writer.Write(2600, 2, Buffer);
}
public uint TodayPoints;
public uint AllChampionPoints;
public DateTime LastChampionPointFill
{
get;
set;
}
public uint Points;
public void Send(Client.GameClient client)
{
client.Send(ToArray());
}
public byte[] ToArray()
{
byte[] ptr = CreateProtocolBuffer(Points, AllChampionPoints);
byte[] Buffer = new byte[11 + ptr.Length];
Writer.Write((ushort)(Buffer.Length - 8), 0, Buffer);
Writer.Write(2600, 2, Buffer);
Write(8, 4, Buffer);
Array.Copy(ptr, 0, Buffer, 4, ptr.Length);
return Buffer;
}
public static byte[] CreateProtocolBuffer(params uint[] values)
{
List<byte> ptr = new List<byte>();
ptr.Add(8);
for (int x = 0; x < values.Length; x++)
{
uint value = values[x];
while (value > 0x7F)
{
ptr.Add((byte)((value & 0x7F) | 0x80));
value >>= 7;
}
ptr.Add((byte)(value & 0x7F));
ptr.Add((byte)(8 * (x + 2)));
if (x + 1 == values.Length)
break;
}
return ptr.ToArray();
}
public void Deserialize(byte[] buffer)
{
Buffer = buffer;
}
public uint EntityID
{
get;
set;
}
}
}
PacketHandler
#region Champion Point
case 2600:
{
if (client.CP != null)
client.CP.Send(client);
break;
}
#endregion
#region JiangHu
case 2702:
#region JiangHu(Train)
case 2702:
{
byte Mode = packet[9];
switch (Mode)
{
#region TrainFree
case 0:
{
byte Star = packet[10];
byte Stage = packet[11];
byte Higher = packet[8];
if (Star > 9 || Stage > 9)
break;
if (client.Entity.MyJiang != null)
{
if (client.Entity.SubClasses.StudyPoints >= 10 && client.Entity.MyJiang.Talent >= 1 && client.Entity.MyJiang.FreeCourse >= 10000)
{
if (Higher == 2 && (client.Inventory.Contains(3003126, 1) || client.Entity.ConquerPoints >= 50) || (Higher == 1 && (client.Entity.ConquerPoints >= 5) || client.Inventory.Contains(3003125, 1)) || Higher == 0)
{
if (Higher == 1)
{
if (client.Inventory.Contains(3003125, 1))
{
client.Inventory.Remove(3003125, 1);
}
else
client.Entity.ConquerPoints -= 5;
}
if (Higher == 2)
{
if (client.Inventory.Contains(3003126, 1))
{
client.Inventory.Remove(3003126, 1);
}
else
{
client.Entity.ConquerPoints -= 50;
}
}
client.Entity.MyJiang.Talent -= 1;
client.Entity.MyJiang.Level = client.Entity.Level;
client.Entity.MyJiang.FreeCourse -= 10000;
client.Entity.SubClasses.StudyPoints -= 10;
client.Entity.MyJiang.FreeTimeTodeyUsed += 1;
client.ChampionPoints += 10;
client.Entity.JiangStudyTimes++;
client.Entity.MyJiang.CreateRollValue(client, Star, Stage, false, Higher);
client.Entity.MyJiang.SendInfo(client, GamePackets.JiangHu.UpdateTime, client.Entity.MyJiang.FreeCourse.ToString(), client.Entity.MyJiang.Time.ToString());
client.Entity.MyJiang.SendInfo(client, GamePackets.JiangHu.UpdateStar, Stage.ToString(), Star.ToString());
client.Entity.MyJiang.SendInfo(client, GamePackets.JiangHu.UpdateTalent, client.Entity.UID.ToString(), client.Entity.MyJiang.Talent.ToString());
client.Activenes.SendSinglePacket(client, Activeness.Types.JiangTask, (byte)client.Entity.JiangStudyTimes);
}
}
}
break;
}
#endregion
#region TrainWithCPs
case 1:
{
if (client.Entity.MyJiang == null) break;
byte Star = packet[10];
byte Stage = packet[11];
byte Higher = packet[8];
if (Star > 9 || Stage > 9)
break;
if (client.Entity.ConquerPoints >= (client.Entity.MyJiang.RoundBuyPoints + 1) * 10)
{
if (Higher == 2 && (client.Inventory.Contains(3003126, 1) || client.Entity.ConquerPoints >= ((client.Entity.MyJiang.RoundBuyPoints + 1) * 10) + 50) || (Higher == 1 && (client.Entity.ConquerPoints >= ((client.Entity.MyJiang.RoundBuyPoints + 1) * 10) + 5) || client.Inventory.Contains(3003125, 1)) || Higher == 0)
{
client.Entity.ConquerPoints -= (uint)((client.Entity.MyJiang.RoundBuyPoints + 1) * 10);
if (Higher == 1)
{
if (client.Inventory.Contains(3003125, 1))
{
client.Inventory.Remove(3003125, 1);
}
else
client.Entity.ConquerPoints -= 5;
}
client.Entity.MyJiang.RoundBuyPoints = (byte)Math.Min(49, client.Entity.MyJiang.RoundBuyPoints + 1);
client.Entity.MyJiang.Level = client.Entity.Level;
client.ChampionPoints += 10;
client.Entity.JiangStudyTimes++;
if (Higher == 2)
{
if (client.Inventory.Contains(3003126, 1))
{
client.Inventory.Remove(3003126, 1);
}
else
{
client.Entity.ConquerPoints -= 50;
}
}
client.Entity.MyJiang.CreateRollValue(client, Star, Stage, false, Higher);
client.Entity.MyJiang.SendInfo(client, GamePackets.JiangHu.UpdateTime, client.Entity.MyJiang.FreeCourse.ToString(), client.Entity.MyJiang.Time.ToString());
client.Entity.MyJiang.SendInfo(client, GamePackets.JiangHu.UpdateStar, Stage.ToString(), Star.ToString());
client.Entity.MyJiang.SendInfo(client, GamePackets.JiangHu.UpdateTalent, client.Entity.UID.ToString(), client.Entity.MyJiang.Talent.ToString());
client.Activenes.SendSinglePacket(client, Activeness.Types.JiangTask, (byte)client.Entity.JiangStudyTimes);
}
}
break;
}
#endregion
#region TrainPill
case 2:
{
byte Star = packet[10];
byte Stage = packet[11];
byte Higher = packet[8];
if (client.Inventory.Contains(3003124, 1))
{
client.Inventory.Remove(3003124, 1);
client.Entity.MyJiang.Level = client.Entity.Level;
client.ChampionPoints += 10;
client.Entity.JiangStudyTimes++;
client.Entity.MyJiang.CreateRollValue(client, Star, Stage, false, Higher);
client.Entity.MyJiang.SendInfo(client, GamePackets.JiangHu.UpdateStar, Stage.ToString(), Star.ToString());
client.Activenes.SendSinglePacket(client, Activeness.Types.JiangTask, (byte)client.Entity.JiangStudyTimes);
}
break;
}
#endregion
}
break;
}
#endregion
BuyStrengthChi
client.Entity.ConquerPoints -= cost;
client.ChiPoints = 4000;
client.ChampionPoints += 100;
KingdomMissionItems
#region Quest KingdomMission (Items)
case 3007108:
{
client.Entity.InnerPower.AddPotency(null, client, 400);
client.UnionExploits += 50;
if (client.Union != null)
{
client.Union.UnionFund += 100;
}
client.MessageBox("You got 50 War Exploits, 400 PotencyPoints and 100 Union Fund!");
client.Inventory.Remove(item, Game.Enums.ItemUse.Remove);
break;
}
case 3007109:
{
client.Entity.InnerPower.AddPotency(null, client, 600);
client.UnionExploits += 100;
client.ChampionPoints += 50;
if (client.Union != null)
{
client.Union.UnionFund += 160;
}
client.Inventory.Remove(item, Game.Enums.ItemUse.Remove);
client.MessageBox("You got 100 War Exploits, 600 PotencyPoints, 50 ChampionPoints and 160 Union Fund!");
break;
}
case 3007110:
{
client.Inventory.Remove(item, Game.Enums.ItemUse.Remove);
client.UnionExploits += 150;
client.Entity.InnerPower.AddPotency(null, client, 1000);
client.ChampionPoints += 100;
if (client.Union != null)
{
client.Union.UnionFund += 360;
}
client.MessageBox("You got 150 War Exploits, 1000 PotencyPoints, 100 ChampionPoints and 360 Union Fund!");
break;
}
#endregion
#region Champion shop
#region Champion shop
if (itemUsage.UID == Database.ChampionShop.UID)
{
ushort Amount = (ushort)(itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1);
Database.ChampionShop.ChampionItem item;
if (Database.ChampionShop.Shop.Items.TryGetValue(itemUsage.dwParam, out item))
{
if (client.Inventory.Count <= 40 - Amount)
{
if (client.ChampionPoints >= (item.Price * Amount))
{
ConquerItem newItem = new GamePackets.ConquerItem(true);
newItem.ID = itemUsage.dwParam;
Database.ConquerItemBaseInformation ibi;
if (Database.ConquerItemInformation.BaseInformations.TryGetValue(newItem.ID, out ibi))
{
if (ibi.Durability > 0)
{
newItem.Durability = ibi.Durability;
newItem.MaximDurability = ibi.Durability;
}
}
if (ibi != null)
if (ibi.Name.Contains("Stone"))
newItem.Plus = (byte)(newItem.ID % 10);
newItem.Bound = true;
client.Inventory.Add(newItem.ID, newItem.Plus, Amount, newItem.Bound);
client.ChampionPoints -= (item.Price * Amount);
client.CP.Send(client);
}
else client.Send(new Message("You do not have enough Champion Points", Color.Red, Message.TopLeft));
}
else client.Send(new Message("You do not have enough space in your inventory", Color.Red, Message.TopLeft));
}
else client.Send(new Message("Can not find this item", Color.Red, Message.TopLeft));
return;
}
#endregion
EntityTable
#region ChampionPoints
#region ChampionPoints
Game.Qualifier.ChampionArenaStatistics.TryGetValue(client.Entity.UID, out client.CP);
if (client.CP == null)
{
client.CP = new CMsgConquer.Network.GamePackets.ChampionPoints();
client.CP.EntityID = client.Entity.UID;
client.CP.Points = 0;
client.CP.TodayPoints = 0;
client.CP.AllChampionPoints = 0;
if (Game.Qualifier.ChampionArenaStatistics.ContainsKey(client.Entity.UID))
Game.Qualifier.ChampionArenaStatistics.Remove(client.Entity.UID);
Game.Qualifier.ChampionArenaStatistics.Add(client.Entity.UID, client.CP);
}
else if (client.CP.EntityID == 0)
{
client.CP = new CMsgConquer.Network.GamePackets.ChampionPoints();
client.CP.EntityID = client.Entity.UID;
client.CP.Points = 0;
client.CP.TodayPoints = 0;
client.CP.AllChampionPoints = 0;
if (Game.Qualifier.ChampionArenaStatistics.ContainsKey(client.Entity.UID))
Game.Qualifier.ChampionArenaStatistics.Remove(client.Entity.UID);
Game.Qualifier.ChampionArenaStatistics.Add(client.Entity.UID, client.CP);
}
else
{
client.CP.Points = client.ChampionPoints;
}
client.ChampionPoints = client.CP.Points;
#endregion
ChampionPoints int 10 0 -1 0 -1 0 0 0 0 0 0
TodayChampionPoints int 10 0 -1 0 -1 0 0 0 0 0 0
AllChampionPoints int 10 0 -1 0 -1 0 0 0 0 0 0
| الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
|
| الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
| خلي كل Boss لية كلاس لوحدة وحل مشأكل ان الوحوش بتطلع اكثر من مره | ديسكو الفظيع | تطوير سيرفرات كونكر | 12 | 2021-02-18 11:17 PM |
| مشكله في وحوش ال Boss سورس اسكواد بروتو | Adel Abd El Hay | مشكلات السيرفيرات كونكر الشخصيه | 11 | 2020-08-13 12:22 AM |
| شكل جديد ل Boss | Hazem | تطوير سيرفرات كونكر | 29 | 2020-07-27 01:53 AM |
| طريقه نقل وحش boss | walid88 | مشكلات السيرفيرات كونكر الشخصيه | 12 | 2020-05-04 05:53 PM |
| Big Monsters full system | Rider | تطوير سيرفرات كونكر | 6 | 2019-12-21 05:21 PM |