بسم الله الرحمن الرحيم
اقدم لكم اليوم شرح اضافة البوكر كاامل عشان تبقا عامل سيرفر مظبوط نخش بقا في الاضافة
اولا هنحمل الكلاسات دي وتبدلها بالي عندك او لو معندكش البوكر تضفها من الصفر
co.vpscairo.com
لو رابط التحميل مش شغال بلغ من هنا
بعد كدة هنخش علي GameState او GameClient علي حسب سورسك ونبحث عن
public void SendScreen(Interfaces.IPacket buffer
ونضيف تحتة
public void Disconnect(bool save = true) { if (Fake) return; if (Screen != null) Screen.DisposeTimers(); GeneralData.RemoveTPA(this); Server.Thread.UnRegister(this); if (OnDisconnect != null) OnDisconnect(this); if (_socket.Connector != null) { if (Player != null) { CheckPokerDisconnect(); CheckRouletteDisconnect(); } _socket.Disconnect(); ShutDown(); } } public void CheckPokerDisconnect() { if (Player.MyPokerTable != null) { var T = Player.MyPokerTable; if (T != null) if (T.Players.ContainsKey(Player.UID) && T.Pot > 1) { T.StopMoveCountDown(); T.RemovePlayer(Player.UID); } else T.RemovePlayer(Player.UID); } } public void CheckRouletteDisconnect() { Database.Roulettes.RouletteTable Table; if (PlayRouletteUID != 0) { if (Database.Roulettes.RoulettesPoll.TryGetValue(PlayRouletteUID, out Table)) { Table.RemovePlayer(this); } } else if (WatchRoulette != 0) { if (Database.Roulettes.RoulettesPoll.TryGetValue(WatchRoulette, out Table)) { Table.RemoveWatch(Player.UID); } } }
بعد كدة هنخش علا كلاس Enums.cs ونبحث عن
public enum NpcType : byte
ونضيف فية
Poker = 33, Poker2 = 34, Poker3 = 35, Poker4 = 36, Poker5 = 37, Poker6 = 38
بعد كدة في نفس الكلاس نبحث عن
public enum MapsName : uint
ونضيف فية
PokerRoom = 1858, VIPPokerRoom = 1860,
بعد كدة نخش علي كلاس HeroOfGame.cs
ونبحث فية عن
public void Work(int time)
تقفلة من السالب و نبدلة بي دة
public void Work(int time) { if (!SendInvitation) { foreach (var client in Kernel.GamePool.Values) { if (!client.InQualifier() && client.Player.PokerTable == 0 && client.PlayRouletteUID == 0 && client.Map.BaseID != 6001 && client.Map.BaseID != 6000 && !client.Player.Dead) { Network.GamePackets.MsgInviteTrans alert = new Network.GamePackets.MsgInviteTrans { InviteID = 10563, Countdown = 60, Action = 1 }; client.Player.InviteID = 10563; client.Send(alert.ToArray()); } } 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 => 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.Yellow, Network.GamePackets.MsgTalk.FirstRightCorner).ToArray(); var MapDictionar = Kernel.GamePool.Values.Where(p => p.Player.MapID == 1507).ToArray(); foreach (var client in MapDictionar) client.Send(Messaje); if (CkeckUPAlive() == 1) { var client = Kernel.GamePool.Values.SingleOrDefault(p => p.Player.MapID == 1507 && p.Player.Hitpoints > 0); if (client != null) { Game.Statue statue = new Statue(client.Player.SpawnPacket); client.Player.ConquerPoints += 1000; ////client.Player.ConquerPointsFake += 1000; Game.Player.SendWorldMessage("Congratulation ! " + client.Player.Name + " win the Hero OF Game, he receice 1000 Conquest Points"); Close(); } foreach (var player in Kernel.GamePool.Values) { if (player.Player.MapID == 1507) player.Player.Teleport(1002, 239, 245); player.Player.AllowToAttack = false; } } else if (CkeckUPAlive() == 0) { Close(); } } Secounds++; } } }
بعد كدة نخش علي كلاس PlanderWar.cs ونبحث فية عن
public void Work(int time)
نقفلة من السالب ونبدلة بدة
public void Work(int time) { if (!SendInvitation) { foreach (var client in Kernel.GamePool.Values.Where(U => U.Union != null)) { if (!client.InQualifier() && client.Player.PokerTable == 0 && client.PlayRouletteUID == 0 && client.Map.BaseID != 6001 && client.Map.BaseID != 6000 && !client.Player.Dead) { Network.GamePackets.MsgInviteTrans alert = new Network.GamePackets.MsgInviteTrans { InviteID = 10573, Countdown = 60, Action = 1 }; client.Player.InviteID = 10573; client.Send(alert.ToArray()); } } SendInvitation = true; } else { if (CheckClose() == true) { Close(); } } }
بعد كدة نخش علي كلاس player او Entity
ونبحث فية عن
public uint CursedTime
ونقفلة من السالب ونضيف تحتة
#region Poker public uint PokerTable = 0; public PokerTable MyPokerTable { get { if (PokerDatabase.PokerTables.ContainsKey(PokerTable)) return PokerDatabase.PokerTables[PokerTable]; else return null; } set { PokerTable = value.UID; } } #endregion
وبعد مدا نخش علي كلاس screen.cs ونبحث فية عن
if (client.Map.ID == 8880 || client.Map.ID == 8881)
ونبدلة بي
if (client.Map.ID == 8880 || client.Map.ID == 8881) { SafeDictionary<uint, PokerTable> ToRem = new SafeDictionary<uint, PokerTable>(40); foreach (PokerTable T in PokerTables.Values) { if (client.Map.ID == T.Map) if (Kernel.GetDistance(T.X, T.Y, client.Player.X, client.Player.Y) > Constants.nScreenDistance) ToRem.Add(T.UID, T); } foreach (PokerTable T in ToRem.Values) if (PokerTables.ContainsKey(T.UID)) PokerTables.Remove(T.UID); }
وبعد كدة نبحث في نفس الكلاس عن
private IMapObject[] _objects;
ونضيف تحتة
private static ConcurrentDictionary<uint, PokerTable> PokerTables;
وفنفس الكلاس برضو نبحث عن
public Screen(GameState client)
ونضيف فية
PokerTables = new ConcurrentDictionary<uint, PokerTable>();
بعد كدة نبحث في نفس الكلاس برضو علي
public void Clear()
ونقفلة من السالب ونبدلة بي دة
public void Clear() { PokerTables.Clear(); _objectDictionary.Clear(); _objects = new IMapObject[0]; }
وبعد كدة نبحث في نفس الكلاس برضو عن
if (Owner.Map.ID == 8880 || Owner.Map.ID == 8881 || Owner.Map.ID == 1002)
ونبدلة بي دة
if (Owner.Map.ID == 8880 || Owner.Map.ID == 8881 || Owner.Map.ID == 1002) { foreach (PokerTable T in PokerDatabase.PokerTables.Values) { if (T.Map == Owner.Map.ID) { if (Kernel.GetDistance(T.X, T.Y, Owner.Player.X, Owner.Player.Y) <= Constants.nScreenDistance && !PokerTables.ContainsKey(T.UID)) { T.Spawn(Owner); PokerTables.Add(T.UID, T); } } } } if (Owner.Map.ID == Database.Roulettes.RouletteTable.MapID) { foreach (var R in Database.Roulettes.RoulettesPoll.Values) { if (Kernel.GetDistance(R.SpawnPacket.X, R.SpawnPacket.Y, Owner.Player.X, Owner.Player.Y) <= Constants.nScreenDistance && !PokerTables.ContainsKey(R.SpawnPacket.UID)) { Owner.Send(R.SpawnPacket); } } } }
بعد كدة نخش كلاس
MsgAction.cs
نبحث فية عن
public enum Mode : ushort
ونضيف فية
poker = 167,
وفنفس الكلاس برضو نضيف
public uint Data24_Uint//For Poker { get { return BitConverter.ToUInt32(Packet, 28); } set { WriteUInt32(value, 28, Packet); } }
public uint Data28_Uint//For Poker { get { return BitConverter.ToUInt32(Packet, 28); } set { fixed (byte* Pack = Packet) *((uint*)(Pack + 28)) = value; } }
وفنفس الكلاس نبحث عن
public static void Process(byte[] packet, Client.GameState client
ونضيف فية
#region Poker Tele case Mode.poker: { switch (gData.dwParam) { case 1://Money Poker { if (client.Player.Money >= 100) { client.Player.Money -= 100; client.Player.Teleport(8880, 80, 75); } else { client.Send(Constants.NoMoney(100)); } break; } case 2://CPS Poker { if (client.Player.Money >= 100) { client.Player.Money -= 100; client.Player.Teleport(8881, 55, 62); } else { client.Send(Constants.NoMoney(100)); } break; } case 3://Bandit Poker { if (client.Player.Money >= 100) { client.Player.Money -= 100; client.Player.Teleport(1002, 342, 278); } else { client.Send(Constants.NoMoney(100)); } break; } case 4://Roulette Poker { if (client.Player.Money >= 100) { client.Player.Money -= 100; client.Player.Teleport(1858, 80, 75); } else { client.Send(Constants.NoMoney(100)); } break; } } break; } #endregion
بعد كدة نخش علا كلاس MsgChat.cs
ونبحث فية عن
case "PhesantPoint":
ونضيف تحتيها
case "pokermove": { //COPokerTable.ManagePotsRoundEnd(); break; }
ونضيف برضو في نفس الكلاس
case "crosspoker": { byte[] ketos = new byte[60 + 8]; Writer.WriteUInt32((ushort)(ketos.Length - 8), 0, ketos); Writer.Byte(10, 4, ketos); client.Send(ketos); break; }
ونضيف في نفس الكلاس برضو
case "pokercards": { byte[] buf = new byte[116 + 8]; Network.Writer.Write((ushort)116, 0, buf); Network.Writer.Write((ushort)2091, 2, buf); Network.Writer.Write((ushort)1800, 3, buf); Network.Writer.Write((ushort)7, 4, buf);//kickedUID Network.Writer.Write((ushort)9, 30, buf); //Network.Writer.Write((ushort)768, 8, buf); //Network.Writer.Write((ushort)12642, 10, buf); client.Send(buf); break; }
ونضيف في نفس الكلاس برضو
case "kickpoker": { byte[] buf = new byte[18 + 8]; Network.Writer.Write((ushort)18, 0, buf); Network.Writer.Write((ushort)2088, 2, buf); Network.Writer.Write((ushort)30724, 4, buf);//kickedUID Network.Writer.Write((ushort)12258, 6, buf); Network.Writer.Write((ushort)768, 8, buf); Network.Writer.Write((ushort)12642, 10, buf); //Network.Writer.Write((ushort)49, 11, buf); Network.Writer.Write((ushort)49, 11, buf); Network.Writer.Write((ushort)25091, 12, buf); Network.Writer.Write((ushort)12042, 14, buf); //Network.Writer.Write((ushort)12042, 16, buf); client.Send(buf); break; }
بس كدا خلصنا اضافة السي شارب نخش بقا علي الطربيزات هنحمل الفولدر دة ونصطبة جوا bin/Debuge/database
كداا خلصنا نخش بقا علي الصور للتاكيد
كلمة شكر تكفي
5 thoughts on “Add Poker 100% – نزل البوكر فى سيرفرك 100%”
بيجيب ايرورات كتير جدا ممكن مساعده؟
لو سمحت حضرتك انا عندى مشكله صغيره اووى ان مينفعش يقعد ع الطرابيزه اكتر من اتنين ممكن حلها ؟؟
بوكر ال CPS شغال كمان ولا Gold بس
طبقت الشرح ده صح
لا انا بسال البوكر دا CPS , GOLD ولا GOLD بس