النافي كات
افتح النافي كات ودوس 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
شوية صور :-
بس كدا سلام
ليست هناك تعليقات:
إرسال تعليق