عرض مشاركة واحدة
قديم 2019-12-11, 07:08 AM
المشاركة 5
Alaa Ghanem
.:: عضو نشيط ::.
  • غير متواجد
افتراضي رد: مشكل في سورس MR_ZeZOo
خد الحل يا عم بالترتيب
هتدخل علي كلاس World.cs
هتبحث عن ده

كود:
#region clanwar 

لقيتو ؟؟
اقفلو من السالب -
وامسحو
وبعدين افتح كلاس UnionWar.cs
هتمسح كل الي فيه وتحط ده

كود:
// * Created by ZeZoOo
// * Copyright © 2020
// * All rights reserved Mr.ZeZoOo - Project
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mr_ZeZo.Network.GamePackets;
using Mr_ZeZo.Database;

namespace 
Mr_ZeZo.Game
{
    public class 
ClanWar
    
{
        public static 
SobNpcSpawn Pole;
        public static 
SafeDictionary<uint, Clan> Scores = new SafeDictionary<uint, Clan>(100);
        public static 
bool IsWar = false, FirstRound = false;
        public static 
Time32 ScoreSendStamp, LastWin;
        public static 
Clan PoleKeeper, CurrentTopLeader;
        private static 
bool changed = false;
        private static 
string[] scoreMessages;
        public static 
DateTime StartTime;
        public static 
bool Claim
        
{
            
get { return Program.Vars["cwclaim"]; }
            
set { Program.Vars["cwclaim"] = value; }
        }
        public static 
uint KeeperID
        
{
            
get { return Program.Vars["cwkeeperid"]; }
            
set { Program.Vars["cwkeeperid"] = value; }
        }
        public static 
void Initiate()
        {
            
Database.DMaps.LoadMap(1509);
            var 
Map = Kernel.Maps[1509];
            
Pole = (SobNpcSpawn)Map.Npcs[812];
        }
        public static 
void Start()
        {
            
Scores = new SafeDictionary<uint, Clan>(100);
            
StartTime = DateTime.Now;
            
FirstRound = true;
            foreach (
Clan clan in Kernel.Clans.Values)
            {
                
clan.WarScore = 0;
            }
            
Claim = false;
            
IsWar = true;
        }

        public static 
void Reset()
        {
            
Scores = new SafeDictionary<uint, Clan>(100);
            
Pole.Hitpoints = Pole.MaxHitpoints;

            foreach (
Clan clan in Kernel.Clans.Values)
            {
                
clan.WarScore = 0;
            }

            
IsWar = true;
        }

        public static 
void FinishRound()
        {
            
LastWin = Time32.Now;

            
FirstRound = false;
            
SortScores(out PoleKeeper);
            if (
PoleKeeper != null)
            {
                
KeeperID = PoleKeeper.ID;
                
Pole.Name = PoleKeeper.Name;
            }
            
Pole.Hitpoints = Pole.MaxHitpoints;
            
Kernel.SendWorldMessage(Pole, Program.Values, (ushort)1509);
            
Reset();
        }

        public static 
void End()
        {
            if (
PoleKeeper != null)
            {
                
Kernel.SendWorldMessage(new Message("The Union, " + PoleKeeper.Name + ", owned by " + PoleKeeper.LeaderName + " has won " + rates.Clanwarday + " cps!---Clan war has ended!", System.Drawing.Color.White, Message.Center), Program.Values);

                
PoleKeeper.PoleKeeper = true;
            }
            else
            {
                
Kernel.SendWorldMessage(new Message(" Union has ended and there was no winner ", System.Drawing.Color.Red, Message.Center), Program.Values);

            }
            
Claim = true;
            
IsWar = false;
            
UpdatePole(Pole);
        }

        public static 
void AddScore(uint addScore, Clan clan)
        {
            if (
clan != null)
            {
                
clan.WarScore += addScore;
                
changed = true;
                if (!
Scores.ContainsKey(clan.ID))
                    
Scores.Add(clan.ID, clan);
                if ((int)
Pole.Hitpoints <= 0)
                {
                    
FinishRound();

                    return;
                }
            }
        }

        public static 
void SendScores()
        {
            if (
scoreMessages == null)
                
scoreMessages = new string[0];
            if (
Scores.Count == 0)
                return;
            if (
changed)
                
SortScores(out CurrentTopLeader);

            for (
int c = 0; c < scoreMessages.Length; c++)
            {
                
Message msg = new Message(scoreMessages[c], System.Drawing.Color.Red, c == 0 ? Message.FirstRightCorner : Message.ContinueRightCorner);
                
Kernel.SendWorldMessage(msg, Program.Values, (ushort)1510);
            }
        }

        private static 
void SortScores(out Clan winner)
        {
            
winner = null;
            List<
string> ret = new List<string>();
            
int Place = 0;
            foreach (
Clan clan in Scores.Values.OrderByDescending((p) => p.WarScore))
            {
                if (
Place == 0)
                    
winner = clan;
                
string str = "No  " + (Place + 1).ToString() + ": " + clan.Name + "(" + clan.WarScore + ")";
                
ret.Add(str);
                
Place++;
                if (
Place == 4)
                    break;
            }

            
changed = false;
            
scoreMessages = ret.ToArray();
        }

        private static 
void UpdatePole(SobNpcSpawn pole)
        {
            new 
Database.MySqlCommand(Mr_ZeZo.Database.MySqlCommandType.UPDATE)
            .
Update("sobnpcs").Set("name", pole.Name).Set("life", Pole.Hitpoints).Where("id", pole.UID).Execute();
        }
    }
    public class 
UnionWar
    
{
        public static 
SobNpcSpawn Pole;
        public static 
SafeDictionary<uint, Mr_ZeZo.Network.GamePackets.Union.UnionClass> Scores = new SafeDictionary<uint, Mr_ZeZo.Network.GamePackets.Union.UnionClass>(100);
        public static 
bool IsWar = false, FirstRound = false;
        public static 
Time32 ScoreSendStamp, LastWin;
        public static 
Mr_ZeZo.Network.GamePackets.Union.UnionClass PoleKeeper, CurrentTopLeader;
        private static 
string[] scoreMessages;
        public static 
DateTime StartTime;
        public static 
bool Claim
        
{
            
get { return Program.Vars["uwclaim"]; }
            
set { Program.Vars["uwclaim"] = value; }
        }
        public static 
uint KeeperID
        
{
            
get { return Program.Vars["uwkeeperid"]; }
            
set { Program.Vars["uwkeeperid"] = value; }
        }
        public static 
void Initiate()
        {
            
Database.DMaps.LoadMap(1510);
            var 
Map = Kernel.Maps[1510];
            
Pole = (SobNpcSpawn)Map.Npcs[817];
        }
        public static 
void Start()
        {
            
Scores = new SafeDictionary<uint, Mr_ZeZo.Network.GamePackets.Union.UnionClass>(100);
            
StartTime = DateTime.Now;
            
Kernel.SendWorldMessage(new Message("Union war has began!", System.Drawing.Color.Red, Message.Center), Program.Values);
            
FirstRound = true;
            foreach (
Mr_ZeZo.Network.GamePackets.Union.UnionClass clan in Kernel.Unions.Values)
            {
                
clan.WarScore = 0;
            }
            
Claim = false;
            
IsWar = true;
        }

        public static 
void Reset()
        {
            
Scores = new SafeDictionary<uint, Mr_ZeZo.Network.GamePackets.Union.UnionClass>(100);
            
Pole.Hitpoints = Pole.MaxHitpoints;

            foreach (
Mr_ZeZo.Network.GamePackets.Union.UnionClass clan in Kernel.Unions.Values)
            {
                
clan.WarScore = 0;
            }

            
IsWar = true;
        }

        public static 
void FinishRound()
        {
            
LastWin = Time32.Now;

            
FirstRound = false;
            
SortScores(out PoleKeeper);
            if (
PoleKeeper != null)
            {
                
KeeperID = PoleKeeper.ID;
                
Kernel.SendWorldMessage(new Message("The Union, " + PoleKeeper.Name + ", owned by " + PoleKeeper.LeaderName + " has won this Union war round", System.Drawing.Color.Red, Message.Center), Program.Values);

                
Pole.Name = PoleKeeper.Name;
            }
            
Pole.Hitpoints = Pole.MaxHitpoints;
            
SendScreen(Pole.ToArray());
            
Kernel.SendWorldMessage(Pole, Program.Values, (ushort)1510);
            
Reset();
        }

        public static 
void End()
        {
            if (
PoleKeeper != null)
            {
                
Mr_ZeZo.Kernel.SendWorldMessage(new Message(" The Union " + PoleKeeper.Name + " claimed the prize [250.000] ConquerPoints for winning the UnionWar ", System.Drawing.Color.Black, Message.Center), Program.Values);
                
PoleKeeper.PoleKeeper = true;
            }
            else
            {
                
Kernel.SendWorldMessage(new Message(" Union war has ended and there was no winner ", System.Drawing.Color.Red, Message.Center), Program.Values);

            }
            
Claim = true;
            
IsWar = false;
            
UpdatePole(Pole);
        }
        public static 
void SendScreen(byte[] buffer)
        {
            foreach (
Client.GameState client in Program.Values)
            {

                if (
client != null)
                {
                    if (
client.Player != null)
                    {
                        {
                            if (
Kernel.GetDistance(client.Player.X, client.Player.Y, Pole.X, Pole.Y) > 18 && client.Player.MapID == 1510)
                            {
                                continue;
                            }
                            
client.Send(buffer);
                        }
                    }
                }
            }
        }
        public static 
void AddScore(uint addScore, Mr_ZeZo.Network.GamePackets.Union.UnionClass clan)
        {
            if (
clan != null)
            {
                
clan.WarScore += addScore;
                if (!
Scores.ContainsKey(clan.ID))
                    
Scores.Add(clan.ID, clan);
                
SendScores();
                if ((int)
Pole.Hitpoints <= 0)
                {
                    
FinishRound();

                    return;
                }
            }
        }
     
        public static 
void SendScores()
        {
            if (
scoreMessages == null)
                
scoreMessages = new string[0];
            if (
Scores.Count == 0)
                return;
            for (
int c = 0; c < scoreMessages.Length; c++)
            {
                
Message msg = new Message(scoreMessages[c], System.Drawing.Color.Red, c == 0 ? Message.FirstRightCorner : Message.ContinueRightCorner);
                
Kernel.SendWorldMessage(msg, Program.Values, (ushort)1510);
            }
        }

        private static 
void SortScores(out Mr_ZeZo.Network.GamePackets.Union.UnionClass winner)
        {
            
winner = null;
            List<
string> ret = new List<string>();
            
int Place = 0;
            foreach (
Mr_ZeZo.Network.GamePackets.Union.UnionClass clan in Scores.Values.OrderByDescending((p) => p.WarScore))
            {
                if (
Place == 0)
                    
winner = clan;
                
string str = "No  " + (Place + 1).ToString() + ": " + clan.Name + "(" + clan.WarScore + ")";
                
ret.Add(str);
                
Place++;
                if (
Place == 4)
                    break;
            }

            
scoreMessages = ret.ToArray();
        }

        private static 
void UpdatePole(SobNpcSpawn pole)
        {
            new 
Database.MySqlCommand(Mr_ZeZo.Database.MySqlCommandType.UPDATE)
            .
Update("sobnpcs").Set("name", pole.Name).Set("life", Pole.Hitpoints).Where("id", pole.UID).Execute();
        }
    }
} 

اشطات كدا بسيطه اهيه
دوس F6 عشان تسيف وبعدين F5 عشان تطبق وتفتح القونصل
اشطا عليك