منتدي اكواد

منتدي اكواد (https://code.vpscairo.com/index.php)
-   تطوير سيرفرات كونكر (https://code.vpscairo.com/forumdisplay.php?f=11)
-   -   اضافه حرب Hero Of Game (https://code.vpscairo.com/showthread.php?t=859)

محمد ياسر 2019-07-19 04:02 PM

اضافه حرب Hero Of Game
 

السلام عليكم عليكم ورحمة الله وبركاته
اضافه حرب الهيروا الي ناس كتير بتدور عليه ومش اتلقيه لاني سحبه من سورس موجوده فيه
يلا نبداء باول كلاستين
في فلدر Game اعمل فلدر داخله اسمه Statue
وارمي الكلاسين دول
واحد باسم Statue.cs
ارمي الاكواد ده جواها
كود PHP:

using System;
using MoDY.Network.GamePackets;
using System.Collections.Concurrent;

namespace 
MoDY.Game
{
    public 
unsafe class Statue Network.Writer
    
{
        public static 
ConcurrentDictionary<uintStatueStatues = new ConcurrentDictionary<uintStatue>();
        public 
byte[] SpawnPacket null;
        public 
uint UID;
        public 
Statue(byte[] array)
        {
            
UID 105175;
            
SpawnPacket = new byte[array.Length];
            for (
ushort x 0< array.Lengthx++)
                
SpawnPacket[x] = array[x];
            
WriteByte(0MsgPlayer.FacingSpawnPacket);
            
WriteUInt32(0MsgPlayer.ActionSpawnPacket);
            
WriteUInt16(1000MsgPlayer.GuildRankSpawnPacket);
            
WriteUInt32(105175MsgPlayer.UIDSpawnPacket);
            
WriteUInt64(0MsgPlayer.StatusFlagSpawnPacket);
            
WriteUInt64(0MsgPlayer.StatusFlag2SpawnPacket);
            
WriteUInt64(0MsgPlayer.StatusFlag3SpawnPacket);
            
WriteUInt32(0MsgPlayer.HitpointsSpawnPacket);
            
WriteUInt32(0MsgPlayer.GuildIDSpawnPacket);
            
328;
            
304;
            if (array.
Length 200)
            {
                if (!
Statues.ContainsKey(105175))
                    
Statues.TryAdd(105175this);
                else
                {
                    
Statues[105175] = this;
                }
            }
         
        }
      
        public static 
bool operator >(Statue statueClient.GameState client)
        {
            if (!
client.Screen.Statue.ContainsKey(statue.UID))
            {
                if (
Kernel.GetDistance(statue.Xstatue.Yclient.Player.Xclient.Player.Y) < 16 && client.Player.MapID == 1002)
                {
                    if (
statue.SpawnPacket.Length 200)
                    {
                        
client.Send(statue.SpawnPacket);
                        return 
true;
                    }
                }
            }
            return 
false;
        }
        public static 
bool operator <(Statue statueClient.GameState client)
        {
            if (
Kernel.GetDistance(statue.Xstatue.Yclient.Player.Xclient.Player.Y) >= 16 && client.Player.MapID == 1002)
            {
                return 
true;
            }
            return 
false;
        }
    }


وواحد باسم StatueTable.cs
ارمي دول جواها
كود PHP:

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Collections.Generic;

namespace 
MoDY.Database
{
    public 
unsafe class StatueTable
    
{
        public static 
void Load()
        {
            
using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("statue").Where("UID"105175))
            
using (var reader cmd.CreateReader())
            {
                if (
reader.Read())
                {
                    
using (var stream = new MemoryStream((reader.ReadBlob("data"))))
                    
using (var hreader = new BinaryReader(stream))
                    {
                        
uint Count hreader.ReadUInt32();
                        
byte[] array = new byte[Count];
                        for (
int x 0Countx++)
                            array[
x] = hreader.ReadByte();
                        new 
Game.Statue(array);
                    }
                }
                else
                {
                    
string SQL "INSERT INTO `statue` (uid, data) VALUES (@UID, @Data)";
                    
MemoryStream stream = new MemoryStream();
                    
BinaryWriter writer = new BinaryWriter(stream);
                    
writer.Write(0);
                    
byte[] rawData stream.ToArray();
                    
using (var conn DataHolder.MySqlConnection)
                    {
                        
conn.Open();
                        
using (var cmd2 = new MySql.Data.MySqlClient.MySqlCommand(SQLconn))
                        {
                            
cmd2.Parameters.AddWithValue("@UID"105175);
                            
cmd2.Parameters.AddWithValue("@Data"rawData);
                            
cmd2.ExecuteNonQuery();
                        }
                    }
                }
            }
        }
        public static 
void Save()
        {
            
MemoryStream stream = new MemoryStream();
            
BinaryWriter writer = new BinaryWriter(stream);
            
bool WasAdd false;
            foreach (var 
statu in Game.Statue.Statues.Values)
            {
                if (
statu.SpawnPacket != null)
                {
                    if (
statu.SpawnPacket.Length 200)
                    {
                        
WasAdd true;
                        
writer.Write(statu.SpawnPacket.Length);
                        
writer.Write(statu.SpawnPacket);
                    }
                }
            }
            if (!
WasAdd)
                
writer.Write(0);
            
string SQL "UPDATE `statue` SET data=@Data where UID = " 105175 " ;";
            
byte[] rawData stream.ToArray();
            
using (var conn DataHolder.MySqlConnection)
            {
                
conn.Open();
                
using (var cmd = new MySql.Data.MySqlClient.MySqlCommand())
                {
                    
cmd.Connection conn;
                    
cmd.CommandText SQL;
                    
cmd.Parameters.AddWithValue("@Data"rawData);
                    
cmd.ExecuteNonQuery();
                }
            }
        }
    }


وارفع ده للقاعده
عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع

كده خلصنا من شغل التمثال
نيجي لشغل الكوسته نفسه
في المسار ده او اي مسار
كود PHP:

Game\Features\Event 

اعمل ملف اسمه
HeroOfGame.cs
ارمي في دول
كود PHP:

using MoDY.Network.GamePackets;
using System;
using System.Linq;

namespace 
MoDY.Game.Features.Tournaments
{
    public 
unsafe class HeroOfGame
    
{
        public 
HeroOfGame()
        {
            
open false;
        }
        public 
void CheakUp()
        {
            if (
DateTime.Now.Hour == 19 && DateTime.Now.Minute == 17 && DateTime.Now.Second <= && !open)
            {
                
Start();
            }
        }
        
uint Secounds 0;
        private 
IDisposable Subscribe;
        
bool open false;
        
bool SendInvitation false;
        public 
void Start()
        {
            if (!
open)
            {
                
Secounds 0;
                
SendInvitation false;
                
open true;
                
Subscribe Thread.Subscribe(Work1000);
            }
        }
        public 
void SendMapMessage(string packet)
        {
            var 
data = new Network.GamePackets.MsgTalk(packetSystem.Drawing.Color.YellowNetwork.GamePackets.MsgTalk.Center);
            var 
MapDictionary Kernel.GamePool.Values.Where(=> p.Player.MapID == 1507).ToArray();
            foreach (var 
client in MapDictionary)
            {
                
client.Send(data);
            }
        }
        public 
int CkeckUPAlive()
        {
            
int Count 0;
            var 
MapDictionary Kernel.GamePool.Values.Where(=> p.Player.MapID == 1507).ToArray();
            foreach (var 
client in MapDictionary)
            {
                if (
client.Player.Hitpoints 0)
                    
Count++;
            }
            return 
Count;
        }
        public 
void Close()
        {
            
open false;
            
Subscribe.Dispose();
        }
        public 
void Work(int time)
        {
            if (!
SendInvitation)
            {
                foreach (var 
client in Kernel.GamePool.Values)
                {
                    if (!
client.InQualifier() && client.Map.BaseID != 6001 && client.Map.BaseID != 6000 && !client.Player.Dead)
                    {
                        
client.MessageBox("Hero OF Game has begun! Would you like to join?",
                               (
p) => { p.Player.Teleport(150796113); }, null40);
                    }
                }
                
SendInvitation true;
            }
            else
            {
                if (
open)
                {
                    if (
Secounds == 30)
                        
SendMapMessage("Hero OF Game will start in 30 Secounds");
                    else if (
Secounds == 40)
                        
SendMapMessage("Hero OF Game will start in 20 Secounds");
                    else if (
Secounds == 50)
                        
SendMapMessage("Hero OF Game will start in 10 Secounds");
                    else if (
Secounds == 55)
                        
SendMapMessage("Hero OF Game will start in 5 Secounds");
                    else if (
Secounds == 58)
                        
SendMapMessage("Hero OF Game will start in 3 Secounds");
                    else if (
Secounds == 60)
                    {
                        var 
MapDictionary Kernel.GamePool.Values.Where(=> p.Player.MapID == 1507).ToArray();
                        foreach (var 
client in MapDictionary)
                        {
                            
client.Player.AllowToAttack true;
                        }
                        
SendMapMessage("Fight Now!");
                    }
                    else if (
Secounds 60)
                    {
                        
byte[] Messaje = new Network.GamePackets.MsgTalk("Alive Players : [ " CkeckUPAlive() + " ]"System.Drawing.Color.YellowNetwork.GamePackets.MsgTalk.FirstRightCorner).ToArray();
                        var 
MapDictionar Kernel.GamePool.Values.Where(=> p.Player.MapID == 1507).ToArray();
                        foreach (var 
client in MapDictionar)
                            
client.Send(Messaje);
                        if (
CkeckUPAlive() == 1)
                        {
                            var 
client Kernel.GamePool.Values.SingleOrDefault(=> p.Player.MapID == 1507 && p.Player.Hitpoints 0);
                            if (
client != null)
                            {
                                
Game.Statue statue = new Statue(client.Player.SpawnPacket);
                                
client.Player.ConquerPoints += 5000;
                                
client.Player.AddTopStatus((ulong)MsgUpdate.Flags3.rygh_hglx3DateTime.Now.AddMinutes(58));
                                
Game.Player.SendWorldMessage("Congratulation ! " client.Player.Name " win the Hero OF Game, he receice 5000 Conquer Points");
                                
Close();
                            }
                            foreach (var 
player in Kernel.GamePool.Values)
                            {
                                if (
player.Player.MapID == 1507)
                                    
player.Player.Teleport(1002300278);
                                
player.Player.AllowToAttack false;
                            }
                        }
                        else if (
CkeckUPAlive() == 0)
                        {
                            
Close();
                        }
                    }
                    
Secounds++;
                }
            }
        }
    }


في كلاس screen.cs
ابحث عن
كود PHP:

public void Reload(IPacket spawnWith)
        { 

تحت القوس ضيف دول
كود PHP:

 CleanUp(spawnWith);
            if (
Owner.Player.MapID == 1002)
            {
                foreach (var 
statue in Game.Statue.Statues.Values)
                {
                    if (
statue Owner)
                    {
                        
Statue.TryAdd(statue.UIDstatue);
                    }
                    else if (
statue Owner)
                    {
                        
Game.Statue astatue;
                        
Statue.TryRemove(statue.UIDout astatue);
                    }
                }
            }
            else
            {
                if (
Statue.Count 0)
                    
Statue.Clear();
            } 

في نفس الكلاس ضيف ال public ده
كود PHP:

public ConcurrentDictionary<uintStatueStatue = new ConcurrentDictionary<uintStatue>(); 

في كلاس Thread.cs او world.cs
ضيف ال public ده
كود PHP:

public HeroOfGame HeroOfGame = new HeroOfGame(); 

وضيف الانفيت تحت اي انفيت عندك
كود PHP:

#region HeroOFGame
            
if (DateTime.Now.Hour == 19 && DateTime.Now.Hour == 16 && DateTime.Now.Second == 30)
            {
                
HeroOfGame.CheakUp();
            } 
            
#endregion 

في كلاس ال war.cs
ابحث عن
كود PHP:

public class Start 

تحت القوس الي تحتيه ضيف ده
كود PHP:

 public static bool HeroOfGame
                
{
                    
get
                    
{
                        return 
now.Minute == 30;
                    }
                } 

في كلاس EventTimeTable.cs او progrem لو ملقتهاش في الكلاس الاول اتلقيه في البروجرام
ضيف ده
ابحث عن
كود PHP:

DeathWarEnd reader.ReadUInt32("DeathWarEnd"); 

تحته ضيف ده
كود PHP:

                    HeroOFGameHour reader.ReadUInt32("HeroOFGameHour");
                    
HeroOFGameMinute reader.ReadUInt32("HeroOFGameMinute"); 

في نفس الكلاس
ابحث عن
كود PHP:

DeathWarEnd 0

ضيف تحته ده
كود PHP:

        HeroOFGameHour 0,
        
HeroOFGameMinute 0

ده الاضافه كامله لسورس msg علشان الي كان عايزه دلوقتي بقيت سهله ونقل التمثال موجود في شرح ميروا

MohamedModyAdel 2019-07-20 05:02 PM

رد: اضافه حرب Hero Of Game
 
عاش

stevenayman 2019-07-24 03:49 AM

رد: اضافه حرب Hero Of Game
 
تسلم

Avalanche 2019-07-24 03:53 AM

رد: اضافه حرب Hero Of Game
 
عــاش + كلمني فيـس حسن مدخلك معياا فشات

Adel Abd El Hay 2019-08-09 03:01 PM

رد: اضافه حرب Hero Of Game
 
انا شغال بالسورس دا بس الحرب مش شغاله مع انها متكوده

محمود محمدm 2019-10-21 04:10 PM

رد: اضافه حرب Hero Of Game
 
عاااش

انت عمري 2019-10-23 10:37 AM

رد: اضافه حرب Hero Of Game
 
سؤال واحد عايز افهمه بعد اذنك هل دة لسورسات اليكس ولا لا ؟

محمد ياسر 2019-12-04 08:18 AM

رد: اضافه حرب Hero Of Game
 
اقتباس:

المشاركة الأصلية كتبت بواسطة انت عمري (المشاركة 19298)
سؤال واحد عايز افهمه بعد اذنك هل دة لسورسات اليكس ولا لا ؟

لا

uncelsam 2020-03-03 11:10 PM

رد: اضافه حرب Hero Of Game
 
عااااش

essamarpi1 2020-05-05 11:38 AM

رد: اضافه حرب Hero Of Game
 
عاش


الساعة الآن 04:38 AM

مرحبا بكم في منتدي اكواد لتطوير الالعاب