الخميس، 28 أبريل 2016

Activeness System 100%

أكمل المقال

النافي كات 
افتح النافي كات ودوس 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  

شوية صور :-


بس كدا سلام 


ليست هناك تعليقات:

إرسال تعليق