|
|
|
المشاركات 1,340 |
+التقييم 0.49 |
تاريخ التسجيل Apr 2019 |
الاقامة |
نظام التشغيل |
رقم العضوية 115 |

GameServer\Game\MsgTournaments
MsgTopPole
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GameServer.Game.MsgTournaments
{
public class MsgTopPole
{
public static System.SafeDictionary<uint, Info> TopPoleList = new System.SafeDictionary<uint, Info>();
public static Info RoundOwner;
public static ProcesType Proces = ProcesType.Dead;
public static Dictionary<Role.SobNpc.StaticMesh, Role.SobNpc> Furnitures = new Dictionary<Role.SobNpc.StaticMesh, Role.SobNpc>();
public static ushort MapID = 1737;
public class Info
{
public uint UID;
public uint Score;
public string Name;
}
public static void Load()
{
Furnitures.Add(Role.SobNpc.StaticMesh.Pole, Pool.ServerMaps[MapID].View.GetMapObject<Role.SobNpc>(Role.MapObjectType.SobNpc, 65056));
}
public static void Start()
{
RoundOwner = null;
TopPoleList = new System.SafeDictionary<uint, Info>();
Proces = ProcesType.Alive;
MsgSchedules.SendInvitation("TopPole War", "CPS", 465, 325, 1002, 0, 100);
MsgSchedules.SendSysMesage("TopPole War has been begun..");
}
public static void End()
{
if (Proces == ProcesType.Alive)
{
Proces = ProcesType.Dead;
MsgSchedules.SendSysMesage(RoundOwner == null ? "TopPole War has ended and there is no winner" : "" + RoundOwner.Name + ", He is the winner of TopPole War.", MsgServer.MsgMessage.ChatMode.Center);
TopPoleList.Clear();
}
}
public static void CheckUP()
{
DateTime Now = DateTime.Now;
if (Proces == ProcesType.Dead && Now.Hour == 11)
Start();
if (Proces == ProcesType.Alive)
{
if (Now.Minute == 30 && Now.Second <= 2)
MsgSchedules.SendSysMesage("TopPole War will ended after 30 Minutes.", MsgServer.MsgMessage.ChatMode.Center);
if (Now.Minute == 55 && Now.Second <= 2)
MsgSchedules.SendSysMesage("TopPole War will ended after 5 Minutes.", MsgServer.MsgMessage.ChatMode.Center);
if (Now.Hour == 12 && Now.Second <= 2)
End();
}
}
public static void Reset(ServerSockets.Packet stream)
{
TopPoleList = new System.SafeDictionary<uint, Info>();
foreach (var npc in Furnitures.Values)
npc.HitPoints = npc.MaxHitPoints;
var Pole = Furnitures[Role.SobNpc.StaticMesh.Pole];
var users = Pool.GamePoll.Values.Where(u => u != null && u.Player.Map == MapID && Role.Core.GetDistance(u.Player.X, u.Player.Y, Pole.X, Pole.Y) <= Role.SobNpc.SeedDistrance).ToArray();
if (users != null)
{
foreach (var user in users)
{
MsgServer.MsgUpdate upd = new MsgServer.MsgUpdate(stream, Pole.UID, 1);
stream = upd.Append(stream, MsgServer.MsgUpdate.DataType.Mesh, (long)Pole.Mesh);
stream = upd.GetArray(stream);
user.Send(stream);
stream = upd.Append(stream, MsgServer.MsgUpdate.DataType.Hitpoints, Pole.HitPoints);
stream = upd.GetArray(stream);
user.Send(stream);
if ((Role.SobNpc.StaticMesh)Pole.Mesh == Role.SobNpc.StaticMesh.Pole)
user.Send(Pole.GetArray(stream, false));
}
}
}
public static void FinishRound(ServerSockets.Packet stream)
{
SortScores(true);
Furnitures[Role.SobNpc.StaticMesh.Pole].Name = RoundOwner.Name;
MsgSchedules.SendSysMesage("The Round Ownered by " + RoundOwner.Name + ".", MsgServer.MsgMessage.ChatMode.Center);
Reset(stream);
}
public static void UpdateScore(ServerSockets.Packet stream, uint Score, Role.Player Player)
{
if (!TopPoleList.ContainsKey(Player.UID))
TopPoleList.Add(Player.UID, new Info() { Name = Player.Name, UID = Player.UID, Score = Score });
else
TopPoleList[Player.UID].Score += Score;
SortScores();
if (Furnitures[Role.SobNpc.StaticMesh.Pole].HitPoints < 1)
{
FinishRound(stream);
return;
}
}
private static void SortScores(bool getwinner = false)
{
if (Proces != ProcesType.Dead)
{
var Array = TopPoleList.Values.ToArray();
var DescendingList = Array.OrderByDescending(p => p.Score).ToArray();
for (int x = 0; x < DescendingList.Length; x++)
{
var element = DescendingList[x];
if (x == 0 && getwinner)
{
RoundOwner = element;
}
using (var rec = new ServerSockets.RecycledPacket())
{
Game.MsgServer.MsgMessage msg = new MsgServer.MsgMessage("No " + (x + 1).ToString() + ". " + element.Name + " (" + element.Score + ")"
, MsgServer.MsgMessage.MsgColor.yellow, x == 0 ? MsgServer.MsgMessage.ChatMode.FirstRightCorner : MsgServer.MsgMessage.ChatMode.ContinueRightCorner);
SendMapPacket(msg.GetArray(rec.GetStream()));
}
if (x == 4)
break;
}
}
}
public static void SendMapPacket(ServerSockets.Packet packet)
{
foreach (var client in Pool.ServerMaps[MapID].Values)
client.Send(packet);
}
}
}
SobNpc
else if (UID == Game.MsgTournaments.MsgTopPole.Furnitures[StaticMesh.Pole].UID)
{
uint Damage = (uint)HitPoints;
if (HitPoints > 0)
HitPoints = 0;
Game.MsgTournaments.MsgTopPole.UpdateScore(stream, Damage, killer.Player);
}
MsgSchedules
MsgTopPole.CheckUP();
NPC.cs
else if (MsgTournaments.MsgTopPole.Proces == MsgTournaments.ProcesType.Alive && attacked.UID == MsgTournaments.MsgTopPole.Furnitures[Role.SobNpc.StaticMesh.Pole].UID)
MsgTournaments.MsgTopPole.UpdateScore(stream, obj.Damage, client.Player);
Game.MsgTournaments.MsgTopPole.Load();
CanAttackNpc
if (attacked.UID == MsgTournaments.MsgTopPole.Furnitures[Role.SobNpc.StaticMesh.Pole].UID)
{
if (client.Player.MyGuild == null)
return false;
if (MsgTournaments.MsgTopPole.Furnitures[Role.SobNpc.StaticMesh.Pole].HitPoints == 0)
return false;
if (client.Player.Name == MsgTournaments.MsgTopPole.Furnitures[Role.SobNpc.StaticMesh.Pole].Name)
return false;
if (MsgTournaments.MsgTopPole.Proces != MsgTournaments.ProcesType.Alive)
return false;
}
[NpcAttribute(NpcID.TopPole)]
//[NpcAttribute((NpcID)43431)]
public static void TopPole(Client.GameClient client, ServerSockets.Packet stream, byte Option, string Input, uint id)
{//code By: MrRayzo
Dialog data = new Dialog(client, stream);
switch (Option)
{
case 0:
{
data.AddText("Hi, I'm the leader of TopPole .. How can i help you? it start at 11:00");
data.AddOption("Enter", 1);
data.AddOption("Reward.", 2);
data.AddOption("Just passing by..");
data.AddAvatar(63).FinalizeDialog();
break;
}
case 1:
{
if (Game.MsgTournaments.MsgTopPole.Proces == ProcesType.Alive)
{
client.Player.Revive(stream);
client.Teleport(90, 90, 1737);
}
else
client.SendSysMesage("TopPole war has ben finished .. Please come back later at 11:00.");
break;
}
case 2:
{
if (Game.MsgTournaments.MsgTopPole.Proces == ProcesType.Dead)
{
if (Game.MsgTournaments.MsgTopPole.RoundOwner != null)
{
if (Game.MsgTournaments.MsgTopPole.RoundOwner.UID == client.Player.UID)
{
client.Player.ConquerPoints += RayzoDrop.TopPole;
MsgSchedules.SendSysMesage("Congratulations, " + client.Player.Name + " has claim his reward from TopPole War .. 500,000 CPs.", MsgMessage.ChatMode.Center);
Game.MsgTournaments.MsgTopPole.RoundOwner = null;
}
}
}
break;
}
}
}
TopPole = 43431,
65056,Rayzo,10,1137,1737,70,67,1000000,1000000,17,1
43431,TopPole,2,29200,1002,466,331,0,0,1,1

|
| الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
|
| الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
| مشكله ف عمود الجيلد وير والسوبر | abuhaneen | مشكلات السيرفيرات كونكر الشخصيه | 11 | 2020-06-27 12:37 AM |
| عندى مشكلة ف عمود الجيلد وار | abdocoder | مشكلات السيرفيرات كونكر الشخصيه | 4 | 2020-04-03 10:52 PM |
| مشكلة في عمود الوار | ElSaher | مشكلات السيرفيرات كونكر الشخصيه | 6 | 2020-03-09 01:34 PM |
| اعمل شفرات للاعبين و للـناس الـvip زى السيرفر الاول عـ العالـم | Ahmeed Sheeko | تطوير سيرفرات كونكر | 3 | 2019-08-01 10:08 PM |
| اعمل حظر ip للاعبين | Hazem | تطوير سيرفرات كونكر | 2 | 2019-06-25 05:33 AM |