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

مشاهدة النسخة كاملة : ضيف وحوش بسهوله في مابات خش وافهم منقول


midoazoz
2019-11-14, 07:40 PM
السلام عليكم
مرحب رجالتنا الحلوين
انا رجعت للمجال من قريب ولسا مش اول يعني فيه بس
هنزلكم الموضوع ده لاني كنت شايله عندي من سنه ^_^
نزل الموضوع ده عبدالله صاحب لعبه xConquer
المهم الفكره انك تضيف وحوش في مابه بالعدد الي عاوزه بسهوله جدا
يلا نبدا

================================================== ===

اولا هتعمل كلا جديد باسم
NewMonsterSpawn
في datebase
وتحط دول

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

namespace MidoAzoz.Database
{
public class NewMonsterSpawn
{
public static bool Loading = false;
public static Map Map;
public static Database.MonsterInformation MonsterInformation;
public static Dictionary<uint, MonstersInfo> MSSpawn = new Dictionary<uint, MonstersInfo>();
public class MonstersInfo
{
public uint UID;
public uint Count;
public string Name;
public ushort MapID;
public ushort Xx;
public ushort Yy;
public uint MonsterID;
public bool EmptySpots;
public int Respawn;
public byte RangeSpot;
}
public static void Load()
{
using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("newmobspawn"))
using (var reader = cmd.CreateReader())
{
while (reader.Read())
{
MonstersInfo MoB = new MonstersInfo();
MoB.UID = reader.ReadUInt32("UID");
MoB.Count = reader.ReadUInt32("Count");
MoB.Name = reader.ReadString("Name");
MoB.MapID = reader.ReadUInt16("MapID");
if (!Kernel.Maps.ContainsKey(MoB.MapID))
Database.DMaps.LoadMap(MoB.MapID);
MoB.Xx = reader.ReadUInt16("Xx");
MoB.Yy = reader.ReadUInt16("Yy");
MoB.MonsterID = reader.ReadUInt32("MonsterID");
MoB.EmptySpots = reader.ReadBoolean("EmptySpots");
MoB.Respawn = reader.ReadInt32("Respawn");
MoB.RangeSpot = reader.ReadByte("RangeSpot");
MSSpawn.Add(MoB.UID, MoB);
}
}
SendSpawns();
Loading = false;
}
public static void SendSpawns()
{
Loading = true;
foreach (var mob in MSSpawn.Values)
{
try
{
Map = Kernel.Maps[mob.MapID];
if (Map == null) { ReportError(mob, "[Map]"); continue; }
if (mob.Count < 1) { ReportError(mob, "[Count]"); continue; }
if (mob.MapID < 1) { ReportError(mob, "[MapID]"); continue; }
if (mob.MonsterID < 1) { ReportError(mob, "[MonsterID]"); continue; }

Tuple<ushort, ushort> coords;
if (mob.EmptySpots)
{
for (uint i = 0; i <= mob.Count; i++)
{
coords = Map.RandomCoordinates();
if (Kernel.GetDistance(coords.Item1, coords.Item2, mob.Xx, mob.Yy) > mob.RangeSpot * 2)//Mesh haytl3 el wo7osh fi el distance da..
{
if (Map.Npcs.Values.Where(n => n.X == coords.Item1 && n.Y == coords.Item2).Count() == 0 && Map.Entities.Values.Where(n => n.X == coords.Item1 && n.Y == coords.Item2).Count() == 0)
Spawn(mob, coords.Item1, coords.Item2);//Haytl3 el w7osh [b3eed] 3an el distance ale bt7dd..
}
}
}
if (!mob.EmptySpots)
{
if (mob.Xx > 0)
{
for (uint i = 0; i <= mob.Count; i++)
{
coords = Kernel.Maps[mob.MapID].RandomCoordinates(mob.Xx, mob.Yy, mob.RangeSpot);
if (Kernel.GetDistance(coords.Item1, coords.Item2, mob.Xx, mob.Yy) < mob.RangeSpot)//Haytl3 el w7osh [fe] el distance ale bt7dd bas..
{
if (Map.Npcs.Values.Where(n => n.X == coords.Item1 && n.Y == coords.Item2).Count() == 0 && Map.Entities.Values.Where(n => n.X == coords.Item1 && n.Y == coords.Item2).Count() == 0)
Spawn(mob, coords.Item1, coords.Item2);
}
}
}
if (mob.Xx == 0)
{
for (uint i = 0; i <= mob.Count; i++)
{
coords = Map.RandomCoordinates();
if (Map.Npcs.Values.Where(n => n.X == coords.Item1 && n.Y == coords.Item2).Count() == 0 && Map.Entities.Values.Where(n => n.X == coords.Item1 && n.Y == coords.Item2).Count() == 0)
Spawn(mob, coords.Item1, coords.Item2);//Haytl3 el w7osh fe el map kolha
}
}
}

}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
public static void ReportError(MonstersInfo Mob, string reson)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(string.Format("UID: {0}, ID: {1}, Name: {2}, Count: {3}, MapID: {4}.." + reson.ToUpper(), Mob.UID, Mob.MonsterID, Mob.Name, Mob.Count, Mob.MapID));
Console.ForegroundColor = ConsoleColor.Red;
}
public static void Spawn(MonstersInfo Mob, ushort X, ushort Y)
{
if (Database.MonsterInformation.MonsterInformations.C ontainsKey(Mob.MonsterID))
{
Database.MonsterInformation mt = Database.MonsterInformation.MonsterInformations[Mob.MonsterID];
mt.RespawnTime = Mob.Respawn;
mt.BoundX = X;
mt.BoundY = Y;
mt.BoundCX = X;
mt.BoundCY = Y;

Player entity = new Player(PlayerFlag.Monster, false);
entity.MapObjType = MapObjectType.Monster;
entity.MonsterInfo = mt.Copy();
entity.MonsterInfo.Owner = entity;
entity.Name = mt.Name;
entity.MinAttack = mt.MinAttack;
entity.MaxAttack = entity.MagicAttack = mt.MaxAttack;
entity.Hitpoints = entity.MaxHitpoints = mt.Hitpoints;
entity.Defence = mt.Defence;
entity.Body = mt.Mesh;
entity.Level = mt.Level;
entity.UID = Map.EntityUIDCounter.Next;
entity.MapID = Map.ID;
entity.SendUpdates = true;
entity.X = X;
entity.Y = Y;

if (Map.Floor[entity.X, entity.Y, MapObjectType.Monster, entity])
{
Map.AddEntity(entity);
}
Map.Timer = Map.MonsterTimers.Add(Map);
foreach (var p in Kernel.GamePool.Values.Where(z => z.Map.ID == Map.ID && z.GetDistance(entity) <= 19))
entity.SendSpawn(p);
}
}
}
}

================================================== =
هتخش في
Map.cs

نبحث عن

private static void _timerCallBack(Map map, int time)

تحت فتحه القوس هنحط ده

if (Database.NewMonsterSpawn.Loading) return;

بعديل في

Server.cs

هنحط ده تحت اي load

Database.NewMonsterSpawn.Load();

كده تمام السورس

بصو الاضافات دي لسورس msg الفرق بسيط جدا

عموما ده لسورس عادي

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

namespace MidoAzoz.Database
{
public class NewMonsterSpawn
{
public static bool Loading = false;
public static Map Map;
public static Database.MonsterInformation MonsterInformation;
public static Dictionary<uint, MonstersInfo> MSSpawn = new Dictionary<uint, MonstersInfo>();
public class MonstersInfo
{
public uint UID;
public uint Count;
public string Name;
public ushort MapID;
public ushort Xx;
public ushort Yy;
public uint MonsterID;
public bool EmptySpots;
public int Respawn;
public byte RangeSpot;
}
public static void Load()
{
using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("newmobspawn"))
using (var reader = cmd.CreateReader())
{
while (reader.Read())
{
MonstersInfo MoB = new MonstersInfo();
MoB.UID = reader.ReadUInt32("UID");
MoB.Count = reader.ReadUInt32("Count");
MoB.Name = reader.ReadString("Name");
MoB.MapID = reader.ReadUInt16("MapID");
if (!Kernel.Maps.ContainsKey(MoB.MapID))
Database.DMaps.LoadMap(MoB.MapID);
MoB.Xx = reader.ReadUInt16("Xx");
MoB.Yy = reader.ReadUInt16("Yy");
MoB.MonsterID = reader.ReadUInt32("MonsterID");
MoB.EmptySpots = reader.ReadBoolean("EmptySpots");
MoB.Respawn = reader.ReadInt32("Respawn");
MoB.RangeSpot = reader.ReadByte("RangeSpot");
MSSpawn.Add(MoB.UID, MoB);
}
}
SendSpawns();
Loading = false;
}
public static void SendSpawns()
{
Loading = true;
foreach (var mob in MSSpawn.Values)
{
try
{
Map = Kernel.Maps[mob.MapID];
if (Map == null) { ReportError(mob, "[Map]"); continue; }
if (mob.Count < 1) { ReportError(mob, "[Count]"); continue; }
if (mob.MapID < 1) { ReportError(mob, "[MapID]"); continue; }
if (mob.MonsterID < 1) { ReportError(mob, "[MonsterID]"); continue; }

Tuple<ushort, ushort> coords;
if (mob.EmptySpots)
{
for (uint i = 0; i <= mob.Count; i++)
{
coords = Map.RandomCoordinates();
if (Kernel.GetDistance(coords.Item1, coords.Item2, mob.Xx, mob.Yy) > mob.RangeSpot * 2)//Mesh haytl3 el wo7osh fi el distance da..
{
if (Map.Npcs.Values.Where(n => n.X == coords.Item1 && n.Y == coords.Item2).Count() == 0 && Map.Entities.Values.Where(n => n.X == coords.Item1 && n.Y == coords.Item2).Count() == 0)
Spawn(mob, coords.Item1, coords.Item2);//Haytl3 el w7osh [b3eed] 3an el distance ale bt7dd..
}
}
}
if (!mob.EmptySpots)
{
if (mob.Xx > 0)
{
for (uint i = 0; i <= mob.Count; i++)
{
coords = Kernel.Maps[mob.MapID].RandomCoordinates(mob.Xx, mob.Yy, mob.RangeSpot);
if (Kernel.GetDistance(coords.Item1, coords.Item2, mob.Xx, mob.Yy) < mob.RangeSpot)//Haytl3 el w7osh [fe] el distance ale bt7dd bas..
{
if (Map.Npcs.Values.Where(n => n.X == coords.Item1 && n.Y == coords.Item2).Count() == 0 && Map.Entities.Values.Where(n => n.X == coords.Item1 && n.Y == coords.Item2).Count() == 0)
Spawn(mob, coords.Item1, coords.Item2);
}
}
}
if (mob.Xx == 0)
{
for (uint i = 0; i <= mob.Count; i++)
{
coords = Map.RandomCoordinates();
if (Map.Npcs.Values.Where(n => n.X == coords.Item1 && n.Y == coords.Item2).Count() == 0 && Map.Entities.Values.Where(n => n.X == coords.Item1 && n.Y == coords.Item2).Count() == 0)
Spawn(mob, coords.Item1, coords.Item2);//Haytl3 el w7osh fe el map kolha
}
}
}

}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
public static void ReportError(MonstersInfo Mob, string reson)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(string.Format("UID: {0}, ID: {1}, Name: {2}, Count: {3}, MapID: {4}.." + reson.ToUpper(), Mob.UID, Mob.MonsterID, Mob.Name, Mob.Count, Mob.MapID));
Console.ForegroundColor = ConsoleColor.Red;
}
public static void Spawn(MonstersInfo Mob, ushort X, ushort Y)
{
if (Database.MonsterInformation.MonsterInformations.C ontainsKey(Mob.MonsterID))
{
Database.MonsterInformation mt = Database.MonsterInformation.MonsterInformations[Mob.MonsterID];
mt.RespawnTime = Mob.Respawn;
mt.BoundX = X;
mt.BoundY = Y;
mt.BoundCX = X;
mt.BoundCY = Y;

Entity entity = new Entity(EntityFlag.Monster, false);
entity.MapObjType = MapObjectType.Monster;
entity.MonsterInfo = mt.Copy();
entity.MonsterInfo.Owner = entity;
entity.Name = mt.Name;
entity.MinAttack = mt.MinAttack;
entity.MaxAttack = entity.MagicAttack = mt.MaxAttack;
entity.Hitpoints = entity.MaxHitpoints = mt.Hitpoints;
entity.Defence = mt.Defence;
entity.Body = mt.Mesh;
entity.Level = mt.Level;
entity.UID = Map.EntityUIDCounter.Next;
entity.MapID = Map.ID;
entity.SendUpdates = true;
entity.X = X;
entity.Y = Y;

if (Map.Floor[entity.X, entity.Y, MapObjectType.Monster, entity])
{
Map.AddEntity(entity);
}
Map.Timer = Map.MonsterTimers.Add(Map);
foreach (var p in Kernel.GamePool.Values.Where(z => z.Map.ID == Map.ID && z.GetDistance(entity) <= 19))
entity.SendSpawn(p);
}
}
}
}

والباقي هو هو

==============================
يلا في القاعده

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

=============================

متحطوش في map عدد كبير عشان هيجبلك ايرور في القنصول ^_^

بالتوفيق

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

Hassan Emprator
2019-11-14, 07:45 PM
عاش يحب ايوة كدا اعم ميدو ورينا شغلك بقا

Hassan Emprator
2019-11-14, 07:45 PM
بس ليه مش بتشتغل بي سورسك ؟

uncelsam
2019-11-14, 07:47 PM
مشكور

midoazoz
2019-11-14, 08:20 PM
بس ليه مش بتشتغل بي سورسك ؟

هقولك النسخه الي ع النت دي كنت نزلتها وبعدها عدلت ع السورس كتير جدا وللاسف بسبب الكليه مسحت كل حاجه فلما رجعت وتقريبا انا مش زي الاول خالص
حملت النسخه الي ع النت لقيت مشاكل مشاء الله عاوزه وقت وانا بفكر اعمل لعبه
فشوفت سورس تاني اه لقيت مشاكل كتير برده بالاخص انه msg بس عادي انا اشتغلت في ده برده
قدرت احله معظم مشاكله وضفتله حاجات كتير وشكلي هسيب المجال تاني هههههههه وانزله بس المرادي هنزله كامل اخر نسخه عشان لما احب ارجع استخدمه ^^_^^

حبيبي اتكلمت كتير بس هو ده الي حصل فعلا ههههههههههه :D:D:D

midoazoz
2019-11-14, 08:21 PM
مشكور

حبيبي تحت امرك ^_^

محمد ياسر
2019-11-14, 08:30 PM
عاششششششششششششششش

midoazoz
2019-11-14, 08:43 PM
عاششششششششششششششش

حبيبي يا مدير

ALz3em
2019-11-14, 10:24 PM
عاش تسلم

ahmedfathy
2019-11-30, 03:38 PM
الله ينور

Rihanna
2019-12-23, 11:18 PM
3ash

zorom
2020-03-28, 01:49 PM
عاااااااااااش

Kemoo0ka
2022-04-08, 12:10 AM
مشكووووووووور

mohamedabdo
2024-09-20, 11:42 PM
عاش