المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : اضافه حرب ClanWar لمن يعاني في مشاكل عنده


Hassan Emprator
2019-12-09, 09:12 PM
اولا كدا سيبك من اي اضافه عندك بعيد عن كلاس UnionWar دي اضافه مظبوطه وهنضيفها كامله انشاء الله


اعمل كلاس وسميه ClanWar2

وضيف فيه

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EmpratorServer.Network.GamePackets;
using EmpratorServer.Database;

namespace EmpratorServer.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()
{
var Map = Kernel.Maps[1509];
Pole = (SobNpcSpawn)Map.Npcs[812];
}
public static void Start()
{
Scores = new SafeDictionary<uint, Clan>(100);
StartTime = DateTime.Now;
Kernel.SendWorldMessage(new Message("Clan war has began!", System.Drawing.Color.Red, Message.Center), Program.Values);
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;
Kernel.SendWorldMessage(new Message("The Clan, " + PoleKeeper.Name + ", owned by " + PoleKeeper.LeaderName + " has won this Clan war round!", System.Drawing.Color.Red, Message.Center), Program.Values);

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 clan, " + PoleKeeper.Name + ", owned by " + PoleKeeper.LeaderName + " has won " + ServerRates.Clan + " cps!---Clan war has ended!", System.Drawing.Color.White, Message.Center), Program.Values);

PoleKeeper.PoleKeeper = true;
}
else
{
Kernel.SendWorldMessage(new Message("Clan 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 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)1509);
}
}

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(EmpratorServer.Database.MySq lCommandType.UPDATE)
.Update("sobnpcs").Set("name", pole.Name).Set("life", Pole.Hitpoints).Where("id", pole.UID).Execute();
}
}
}


كلاس Handel

ضيف

تخت

if (attacker.MapID == 2075)



if (attacker.MapID == 1509)
{
if (attacked.UID == 812)
{
Clan clan = attacker.GetClan;
if (Game.ClanWar.PoleKeeper == clan)
return;
if (attacked.Hitpoints <= damage)
attacked.Hitpoints = 0;
Game.ClanWar.AddScore(damage, clan);
}
}

ابحث عن

if (attacker.MapID == 2075)

ضيف

if (attacker.MapID == 1509)
{
if (attacker.ClanId == 0 || !Game.ClanWar.IsWar)
{
if (attacked.UID == 812)
{
return false;
}
}
if (Game.ClanWar.PoleKeeper != null)
{
if (Game.ClanWar.PoleKeeper == attacker.GetClan)
{
if (attacked.UID == 812)
{
return false;
}
}
}
}


الانبي سي

#region CLANWAR
case 48116:
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Hello there. Do you want to Join The ClanWar?.");
dialog.Option("Yes Please.", 1);
dialog.Option("Claim Prize.", 2);
dialog.Option("Just Passing By!", 255);
dialog.Send();
break;
}
case 1:
{
if (ClanWar.IsWar)
{
client.Entity.Teleport(1509, 82, 118);
client.Entity.PKMode = Game.Enums.PKMode.PK;
client.Send(new Data(true) { UID = client.Entity.UID, ID = Data.ChangePKMode, dwParam = (uint)client.Entity.PKMode });
}
else
{
dialog.Text("The War Has Not Started Start At [8.00] And [20.00]");
dialog.Option("Aww ok!", 255);
dialog.Send();
}
break;
}
case 2:
{
if (ClanWar.KeeperID != 0 && !ClanWar.IsWar && ClanWar.Claim && client.Entity.ClanId == ClanWar.KeeperID && client.Entity.ClanRank == Clan.Ranks.ClanLeader)
{

Program.AddWarLog("ClanWar", " . ", client.Entity.Name);
ClanWar.Claim = false;
ClanWar.KeeperID = 0;
client.Entity.ConquerPoints += ServerRates.Clan;

client.Entity.killerpoints += 100;
client.Entity.AddTopStatus(Update.Flags2.Top8Arche r, 2, DateTime.Now.AddDays(1));
EmpratorServer.Kernel.SendWorldMessage(new Message("Congratulations! " + client.Entity.Name + " Leader of " + client.Entity.ClanName + " The winner Clan has Claimed Clan War Prize " + ServerRates.Clan + " cps + 100 Vip point's !", System.Drawing.Color.White, Message.TopLeft), Program.Values);
}
else
{
dialog.Text("Sorry you dont have Any Prize to claim only CL of the winner CLAN can claim Prize After CW");
dialog.Option("Ahh.", 255);
dialog.Send();
}

break;
}
}
break;
}
case 4482115:
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Hello there. Do you want to Teleport To Twincity.");
dialog.Option(" Send Me There. ", 1);
dialog.Option("Just Passing By!", 255);
dialog.Send();
break;
}
case 1:
{
client.Entity.Teleport(1002, 300, 266);
break;
}
}
break;
}
#endregion


بعدين سيرش عا

public static readonly System.Collections.Generic.List<ushort> PKFreeMaps = new System.Collections.Generic.List<ushort>()


وضيف

1509,

ودا الانبي سي بتاع الخروج

وابححث عن

public class Start

وضيف

public static bool ClanWar
{
get
{
return now.Hour == 14 || now.Hour == 2;
}
}
ولو جالك ايرور في GetClan

ضيف في Entity

public Clan GetClan
{
get
{
Clan cl;
Kernel.Clans.TryGetValue(ClanId, out cl);
return cl;
}
}
string clan = "";

ودا الاوتو انفنت

#region Clan War
if ((Now64.Hour == 20 || Now64.Hour == 8) && Now64.Minute == 00 && Now64.Second == 5 && !ClanWar.IsWar)
{
Game.ClanWar.Start();
ClanWarAI = false;
if (Now64.Hour != 8)
{
ClanWarAI = Now64.Hour != 8;
foreach (var client in Program.Values)
if (client.Entity.GuildID != 0)
client.MessageBox("ClanWar Has Begun! Would You Like To Join This War ...?",
p => { p.Entity.Teleport(1002, 284, 146); }, null);
}
}
if (Now64.Hour == 8 && Now64.Minute == 10 && !ClanWarAI)
{
ClanWarAI = true;
foreach (var client in Program.Values)
if (client.Entity.GuildID != 0)
client.MessageBox("ClanWar Has Begun! Would You Like To Join This War ...?",
p => { p.Entity.Teleport(1002, 284, 146); }, null);
}
if ((Now64.Hour == 21 || Now64.Hour == 9) && Now64.Minute == 00 && ClanWar.IsWar)
{
Game.ClanWar.End();
}
if (Game.ClanWar.IsWar)
{
if (Time32.Now > Game.ClanWar.ScoreSendStamp.AddSeconds(3))
{
Game.ClanWar.ScoreSendStamp = Time32.Now;
Game.ClanWar.SendScores();
}

}
#endregion



وحمل الملاف دا في bin/debug/database


عفواً لايمكن عرض الروابط في الإرشيف

وبكدا لااضافه كامله انشاء الله والسلام عليكم ورحمه الله

محمد ياسر
2019-12-09, 11:55 PM
عاش ياض

Hassan Emprator
2019-12-10, 12:08 AM
عاش ياض

قلبي <3

Hassan Emprator
2019-12-10, 09:22 PM
;)عاش ياض

Alaa Ghanem
2019-12-13, 12:49 AM
الله ينور يا عم حسن شكراً جداً بس لسه بتواجهني مشكله صغيره
لينك الموضوع
عفواً لايمكن عرض الروابط في الإرشيف

تفريباً المشكله في SobNpcSpawn Pole بس مش عارف اوصل لحل

abdocoder
2020-04-01, 07:23 PM
شكرا

hegazii4
2024-09-22, 04:23 PM
44444