النافي كات 
افتح النافي كات ودوس F6
وارمي دول ف القونصول
البروجكت بقى
كلاس جديد باسم Activeness.cs
كلاس Update.cs
فوق اي فويد
كلاس جديدة تاني باسم ActivenessTable.cs
كلاس GameClient.cs
في اي حته
في نفس الكلاس دور على فويد اسمه ReadyToPlay()
في اي حته
في نفس الكلاس فويد اسمه Shutdown
تحت دة
هتضيف دة
في كلاس EntityTable.cs
ابحث عن
تحت القوص حط
في نفس الكلاس برضو
ابحث عن
فوقيه حط دة
في كلاس Entity.cs
في اي حته
ضيف
كلاس PacketHandler.cs
ابحث عن فويد LoginMessage
اخره حط دة
في نفس الكلاس ابحث عن
فوقيه حط دة
في كلاس World.cs
في فويد CharactersCallBack
شوية صور :-


بس كدا سلام
افتح النافي كات ودوس F6
وارمي دول ف القونصول
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for activeness -- ---------------------------- CREATE TABLE `activeness` (
`UID` bigint(18) NOT NULL default '0',
`ClaimedGift1` bigint(18) unsigned NOT NULL default '0',
`ClaimedGift2` bigint(18) unsigned NOT NULL default '0',
`ClaimedGift3` bigint(18) unsigned NOT NULL default '0',
`ChiStudy` bigint(18) unsigned NOT NULL default '0',
`JiangStudy` bigint(18) unsigned NOT NULL default '0',
PRIMARY KEY (`UID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
البروجكت بقى
كلاس جديد باسم Activeness.cs
using System;
namespace CaptainJoe.Network.GamePackets {
public unsafe class Activeness : Writer, Interfaces.IPacket
{
byte[] Buffer;
public enum Types : byte
{
NumberOfTasks = 14,
LoginTask = 25,
VIPTask = 26,
HoursTask = 27,
LotteryTask = 28,
DailyQuestTask = 29,
FlowerTask = 30,
QualiferTask = 31,
ChampionPTask = 32,
HorseRacingTask = 33,
TIBTask = 34,
Enlightenment = 35,
TeamQualiferTask = 36,
ChiTask = 37,
JiangTask = 38,
}
public Activeness(Client.GameClient client,bool Ok = true)
{
if (Ok)
{
Buffer = new byte[90 + 8];
Buffer[0] = 90;//Length
WriteUInt16(2820, 2, Buffer);
Buffer[4] = 3;//Type(Unknown)
Buffer[5] = (byte)Types.NumberOfTasks;//NumberOfTasks
Buffer[6] = (byte)Types.LoginTask;//MayBe Show LoginToTheGameTask
Buffer[12] = (byte)Types.VIPTask;//MayBe Show VipActivenessTask
Buffer[18] = (byte)Types.HoursTask;//MayBe Show HowManyHoursOnline
Buffer[24] = (byte)Types.LotteryTask;//Show Lottery task
Buffer[30] = (byte)Types.DailyQuestTask;//Show DailyQuest Task
Buffer[36] = (byte)Types.FlowerTask;//Show Flower/Gift Task
if (client.Entity.Level >= 40)
{
Buffer[42] = (byte)Types.QualiferTask;//Show Qualifer Task
Buffer[48] = (byte)Types.ChampionPTask;//Show ChampionPoints Task
Buffer[72] = (byte)Types.TeamQualiferTask;//TeamQualifer
}
Buffer[54] = (byte)Types.HorseRacingTask;//Show HorseRacing
Buffer[60] = (byte)Types.TIBTask;//TreasureInTheBlue
if (client.Entity.Level >= 90)
{
Buffer[66] = (byte)Types.Enlightenment;//Enlightenment
}
if (client.Entity.Reborn >= 1 && client.Entity.Level >= 110)
{
Buffer[78] = (byte)Types.ChiTask;//ChiTask Show
}
if (client.Entity.MyJiang != null)
{
Buffer[84] = (byte)Types.JiangTask;//Show Jiang Task
}
}
}
public static void Login(Client.GameClient client)
{
Activeness AN = new Activeness(client);
AN.CompleteLoginTask = 1;
AN.LoginTimes = 1;
if (client.Entity.VIPLevel > 0)
{
AN.CompleteVIPActiveness = 1;
AN.VIPActivenessTimes = 1;
}
else
{
AN.CompleteVIPActiveness = 0;
AN.VIPActivenessTimes = 0;
}
AN.CompleteHalfAnHourOnline = 0;
AN.HalfAnHourOnlineTimes = 0;
AN.HalfHourTask = Time32.Now;
if (client.LotteryEntries >= 10)
{
AN.CompleteLottery = 1;
AN.LotteryTimes = 10;
}
else
{
AN.CompleteLottery = 0;
AN.LotteryTimes = client.LotteryEntries;
}
AN.CompleteDailyQuest = 0;
AN.DailyQuestTimes = 0;
if (client.Entity.MyFlowers.aFlower >= 1)
{
AN.CompleteFlowerAndGift = 0;
AN.FlowerAndGiftTime = 0;
}
else
{
AN.CompleteFlowerAndGift = 1;
AN.FlowerAndGiftTime = 1;
}
if (client.ArenaStatistic != null && client.ArenaStatistic.TodayBattles >= 5)
{
AN.CompleteQualifer = 1;
AN.QualiferTimes = 5;
}
else
{
AN.CompleteQualifer = 0;
AN.QualiferTimes = (byte)client.ArenaStatistic.TodayBattles;
}
AN.ChiStudyTimes = Math.Min((byte)client.Entity.ChiStudyTimes, (byte)12);
AN.JiangStudyTimes = Math.Min((byte)client.Entity.JiangStudyTimes, (byte)12);
if (AN.ChiStudyTimes >= 12)
{
AN.CompleteChiStudy = 1;
}
if (AN.ChiStudyTimes >= 12)
{
AN.CompleteJiangStudy = 1;
}
if (client.CP != null && client.TodayChampionPoints >= 1)
{
AN.CompleteChampionPoints = 1;
AN.ChampionPointsTimes = 1;
}
else
{
AN.CompleteChampionPoints = 0;
AN.ChampionPointsTimes = 0;
}
AN.HorseRacingComplete = 0;
AN.HorseRacingTimes = 0;
AN.CompleteTIB = 0;
AN.TIBTimes = 0;
if (client.Entity.EnlightenPoints != 0)
{
AN.EnlightenmentTimes = (byte)client.Entity.EnlightenPoints;
if (AN.EnlightenmentTimes >= 3)
AN.CompleteEnlightenment = 1;
}
if (client.TeamArenaStatistic != null && client.TeamArenaStatistic.TodayBattles >= 2)
{
AN.CompleteTeamQualifer = 1;
AN.TeamQualiferTimes = 2;
}
else
{
AN.CompleteTeamQualifer = 0;
AN.TeamQualiferTimes = (byte)client.TeamArenaStatistic.TodayBattles;
}
AN.Send(client);
ActivenessPoints AP = new ActivenessPoints();
AP.Points = AP.GetActivenessPoints(AN.ToArray());
client.ActivenessPoints = AP.GetActivenessPoints(AN.ToArray());
AP.Send(client);
if (client.Entity.ClaimedActivenessGift1 == 1)
{
ClaimActivenessGift CAG = new ClaimActivenessGift();
CAG.Type = 1;
client.Send(CAG.ToArray());
}
if (client.Entity.ClaimedActivenessGift2 == 1)
{
ClaimActivenessGift CAG = new ClaimActivenessGift();
CAG.Type = 2;
client.Send(CAG.ToArray());
}
if (client.Entity.ClaimedActivenessGift3 == 1)
{
ClaimActivenessGift CAG = new ClaimActivenessGift();
CAG.Type = 3;
client.Send(CAG.ToArray());
}
}
public byte CompleteLoginTask
{
get { return Buffer[10]; }
set { Buffer[10] = value; }
}
public byte LoginTimes
{
get { return Buffer[11]; }
set { Buffer[11] = value; }
}
public byte CompleteVIPActiveness
{
get { return Buffer[16]; }
set { Buffer[16] = value; }
}
public byte VIPActivenessTimes
{
get { return Buffer[17]; }
set { Buffer[17] = value; }
}
public byte CompleteHalfAnHourOnline
{
get { return Buffer[22]; }
set { Buffer[22] = value; }
}
public Time32 HalfHourTask;
public byte HalfAnHourOnlineTimes
{
get { return Buffer[23]; }
set { Buffer[23] = value; }
}
public byte CompleteLottery
{
get { return Buffer[28]; }
set { Buffer[28] = value; }
}
public byte LotteryTimes
{
get { return Buffer[29]; }
set { Buffer[29] = value; }
}
public byte CompleteDailyQuest
{
get { return Buffer[34]; }
set { Buffer[34] = value; }
}
public byte DailyQuestTimes
{
get { return Buffer[35]; }
set { Buffer[35] = value; }
}
public byte CompleteFlowerAndGift
{
get { return Buffer[40]; }
set { Buffer[40] = value; }
}
public byte FlowerAndGiftTime
{
get { return Buffer[41]; }
set { Buffer[41] = value; }
}
public byte CompleteQualifer
{
get { return Buffer[46]; }
set { Buffer[46] = value; }
}
public byte QualiferTimes
{
get { return Buffer[47]; }
set { Buffer[47] = value; }
}
public byte CompleteChampionPoints
{
get { return Buffer[52]; }
set { Buffer[52] = value; }
}
public byte ChampionPointsTimes
{
get { return Buffer[53]; }
set { Buffer[53] = value; }
}
public byte HorseRacingComplete
{
get { return Buffer[58]; }
set { Buffer[58] = value; }
}
public byte HorseRacingTimes
{
get { return Buffer[59]; }
set { Buffer[59] = value; }
}
public byte CompleteTIB
{
get { return Buffer[64]; }
set { Buffer[64] = value; }
}
public byte TIBTimes
{
get { return Buffer[65]; }
set { Buffer[65] = value; }
}
public byte CompleteEnlightenment
{
get { return Buffer[70]; }
set { Buffer[70] = value; }
}
public byte EnlightenmentTimes
{
get { return Buffer[71]; }
set { Buffer[71] = value; }
}
public byte CompleteTeamQualifer
{
get { return Buffer[76]; }
set { Buffer[76] = value; }
}
public byte TeamQualiferTimes
{
get { return Buffer[77]; }
set { Buffer[77] = value; }
}
public byte CompleteChiStudy
{
get { return Buffer[82]; }
set { Buffer[82] = value; }
}
public byte ChiStudyTimes
{
get { return Buffer[83]; }
set { Buffer[83] = value; }
}
public byte CompleteJiangStudy
{
get { return Buffer[88]; }
set { Buffer[88] = value; }
}
public byte JiangStudyTimes
{
get { return Buffer[89]; }
set { Buffer[89] = value; }
}
public void Deserialize(byte[] buffer)
{
Buffer = buffer;
}
public byte[] ToArray()
{
return Buffer;
}
public void Send(Client.GameClient client)
{
if (Buffer != null)
client.Send(Buffer);
}
}
public class ClaimActivenessGift : Writer, Interfaces.IPacket
{
byte[] Buffer;
public ClaimActivenessGift()
{
Buffer = new byte[30 + 8];
Buffer[0] = 30;//Length
WriteUInt16(2822, 2, Buffer);
}
public byte Type//1 To Complete
{
get { return Buffer[4]; }
set { Buffer[4] = value; }
}
public void Deserialize(byte[] buffer)
{
Buffer = buffer;
}
public byte[] ToArray()
{
return Buffer;
}
public void Send(Client.GameClient client)
{
if (Buffer != null)
client.Send(Buffer);
}
}
public class ActivenessPoints : Writer, Interfaces.IPacket
{
byte[] Buffer;
public ActivenessPoints()
{
Buffer = new byte[30 + 8];
Buffer[0] = 30;
WriteUInt16(2823, 2, Buffer);
Buffer[4] = 1;
Buffer[5] = 2;
Buffer[9] = 1;
}
public ushort GetActivenessPoints(byte[] buffer)
{
ushort points = ushort.MinValue;
if (buffer != null)
{
points += (ushort)(BitConverter.ToUInt16(buffer, 11) * 5);
points += (ushort)(BitConverter.ToUInt16(buffer, 17) * 5);
points += (ushort)(BitConverter.ToUInt16(buffer, 23) * 5);
points += (ushort)(BitConverter.ToUInt16(buffer, 29) * 5);
points += (ushort)(BitConverter.ToUInt16(buffer, 35) * 5);
points += (ushort)(BitConverter.ToUInt16(buffer, 41) * 5);
points += (ushort)(BitConverter.ToUInt16(buffer, 47) * 5);
points += (ushort)(BitConverter.ToUInt16(buffer, 53) * 10);
points += (ushort)(BitConverter.ToUInt16(buffer, 59) * 10);
points += (ushort)(BitConverter.ToUInt16(buffer, 65) * 10);
points += (ushort)(BitConverter.ToUInt16(buffer, 71) * 5);
points += (ushort)(BitConverter.ToUInt16(buffer, 77) * 10);
points += (ushort)(BitConverter.ToUInt16(buffer, 83) * 5);
points += (ushort)(BitConverter.ToUInt16(buffer, 89) * 5);
return (ushort)(points - 6400);
}
return 0;
}
public ushort Points
{
get { return BitConverter.ToUInt16(Buffer, 13); }
set { WriteUInt16(value, 13, Buffer); }
}
public void Deserialize(byte[] buffer)
{
Buffer = buffer;
}
public byte[] ToArray()
{
return Buffer;
}
public void Send(Client.GameClient client)
{
if (Buffer != null)
client.Send(Buffer);
}
}
}
كلاس Update.cs
فوق اي فويد
public static void UpdateActivenessTask(Client.GameClient client, byte Task, byte value)
{
byte[] Buffer = new byte[12 + 8];
Writer.WriteByte(12, 0, Buffer);
Writer.WriteUInt16(2820, 2, Buffer);//Length
Writer.WriteByte(3, 4, Buffer);//Unknown
Writer.WriteByte(1, 5, Buffer);//AmountTasksWillUpdate
Writer.WriteByte(Task, 6, Buffer);//type
Writer.WriteByte(0, 10, Buffer);//Completed
Writer.WriteByte(value, 11, Buffer);//value
client.Send(Buffer);
}
كلاس جديدة تاني باسم ActivenessTable.cs
using System; using CaptainJoe.Client;
namespace CaptainJoe.Database {
public unsafe class ActivenessTable
{
public static void Load(GameClient client)
{
using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("Activeness").Where("UID", client.Entity.UID))
using (var reader = new MySqlReader(cmd))
{
while (reader.Read())
{
client.Entity.ClaimedActivenessGift1 = reader.ReadByte("ClaimedGift1");
client.Entity.ClaimedActivenessGift2 = reader.ReadByte("ClaimedGift2");
client.Entity.ClaimedActivenessGift3 = reader.ReadByte("ClaimedGift3");
client.Entity.ChiStudyTimes = reader.ReadByte("ChiStudy");
client.Entity.JiangStudyTimes = reader.ReadByte("JiangStudy");
return;
}
ActivenessTable.Insert(client);
}
}
public static void Save(GameClient client)
{
if (client.Entity == null) return;
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("Activeness"))
cmd.Set("ClaimedGift1", client.Entity.ClaimedActivenessGift1)
.Set("ClaimedGift2", client.Entity.ClaimedActivenessGift2)
.Set("ClaimedGift3", client.Entity.ClaimedActivenessGift3)
.Set("JiangStudy", client.Entity.JiangStudyTimes)
.Set("ChiStudy", client.Entity.ChiStudyTimes)
.Where("UID", client.Entity.UID)
.Execute();
}
public static void Reset(GameClient client)
{
if (client.Entity == null) return;
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("Activeness"))
cmd.Set("ClaimedGift1", 0)
.Set("ClaimedGift2", 0)
.Set("ClaimedGift3", 0)
.Set("ChiStudy", 0)
.Set("JiangStudy", 0)
.Where("UID", client.Entity.UID)
.Execute();
}
private static void Insert(GameClient client)
{
if (!ActivenessTable.Exists(client.Entity.UID))
{
using (var cmd = new MySqlCommand(MySqlCommandType.INSERT).Insert("Activeness"))
cmd.Insert("UID", client.Entity.UID).Execute();
}
}
private static bool Exists(uint UID)
{
using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("Activeness").Where("UID", UID))
using (var reader = new MySqlReader(cmd))
{
while (reader.Read())
{
reader.Close();
reader.Dispose();
return true;
}
return false;
}
}
}
}
كلاس GameClient.cs
في اي حته
public ushort ActivenessPoints
{
get
{
return ActivenessPoint.Points;
}
set
{
ActivenessPoint.Points =
value;
}
}
public ActivenessPoints ActivenessPoint;
public Activeness Activenes;
في نفس الكلاس دور على فويد اسمه ReadyToPlay()
في اي حته
ActivenessPoint = new ActivenessPoints();
Activenes = new Activeness(this);
في نفس الكلاس فويد اسمه Shutdown
تحت دة
Database.EntityTable.SaveEntity(this, conn);
هتضيف دة
Database.ActivenessTable.Save(this);
في كلاس EntityTable.cs
ابحث عن
if (DateTime.Now.DayOfYear != client.LastResetTime.DayOfYear)
تحت القوص حط
Database.ActivenessTable.Reset(client);
في نفس الكلاس برضو
ابحث عن
client.Entity.FullyLoaded = true;
فوقيه حط دة
Database.ActivenessTable.Load(client);
في كلاس Entity.cs
في اي حته
ضيف
public uint ChiStudyTimes = 0;
public byte ClaimedActivenessGift1 = 0;
public byte ClaimedActivenessGift2= 0;
public byte ClaimedActivenessGift3 = 0;
public uint JiangStudyTimes = 0;
كلاس PacketHandler.cs
ابحث عن فويد LoginMessage
اخره حط دة
#region Activeness Activeness.Login(client);
#endregion
في نفس الكلاس ابحث عن
#region Item/Ping
فوقيه حط دة
#region ActivenessClaimGift
case 2822:
{
ClaimActivenessGift CA = new ClaimActivenessGift();
CA.Deserialize(packet);
switch (CA.Type)
{
case 1:
{
if (client.Entity.ClaimedActivenessGift1 == 1)
return;
//client.Inventory.Add...................
break;
}
case 2:
{
if (client.Entity.ClaimedActivenessGift2 == 1)
return;
//client.Inventory.Add...................
break;
}
case 3:
{
if (client.Entity.ClaimedActivenessGift3 == 1)
return;
//client.Inventory.Add...................
break;
}
}
if (CA.Type == 1)
client.Entity.ClaimedActivenessGift1 = 1;
if (CA.Type == 2)
client.Entity.ClaimedActivenessGift2 = 1;
if (CA.Type == 3)
client.Entity.ClaimedActivenessGift3 = 1;
CA.Send(client);
break;
}
#endregion
في كلاس World.cs
في فويد CharactersCallBack
#region Activeness
if (client.Activenes != null)
{
if (Time32.Now >= client.Activenes.HalfHourTask.AddMinutes(30))
{
client.Activenes.HalfHourTask = Time32.Now;
client.Activenes.HalfAnHourOnlineTimes++;
if (client.Activenes.HalfAnHourOnlineTimes > 5)
client.Activenes.HalfAnHourOnlineTimes = 5;
if (client.Activenes.HalfAnHourOnlineTimes == 5)
client.Activenes.CompleteHalfAnHourOnline = 1;
client.Send(client.Activenes);
}
}
#endregion
شوية صور :-
بس كدا سلام
ليست هناك تعليقات:
إرسال تعليق