Okay so I got a base(not saying from who) but it's a very basic base which contains mobinfos but no mobspawns, I am trying to load mobspawns from a .txt file in my source but it just freezes at the Loading Mobs part. It was first used for MySql but I went and tried putting it for ini because I simply do not want to fill all the tables in MySql full of mobs (sorry kinda lazy today).
Here is the LoadMobs() void I used:
If I can't do it like that then I'm going to have to go back to adding it manually which is a pain >.>.
Any Thoughs, Ideas, or Theories are accepted along with some help :).
Here is the LoadMobs() void I used:
Code:
public static void LoadMobs()
{
/*MySqlHandler.Reader r = new MySqlHandler.Reader(new MySqlHandler.Command(MySqlHandler.CommandType.SELECT).Select("entities_mobinfo"));
while (r.Read())
{
Game.Mob M = new Conquer_FX.Game.Mob(r);
Kernel.D_MobInfo.Add(M.MobID, M);
}*/
string[] FMobs = File.ReadAllLines(Environment.CurrentDirectory + "\\database\\MobInfos.txt");
Hashtable Mobs = new Hashtable(FMobs.Length);
for (int i = 0; i < FMobs.Length; i++)
{
if (FMobs[i][0] != '*')
{
Game.Mob M = new Game.Mob(FMobs[i]);
Mobs.Add(M.MobID, M);
}
}
string[] FSpawns = File.ReadAllLines(Environment.CurrentDirectory + "\\database\\MobSpawns.txt");
foreach (string Spawn in FSpawns)
{
if (Spawn[0] == '*') return;
string[] SpawnInfo = Spawn.Split(' ');
int MobID = int.Parse(SpawnInfo[0]);
int Count = int.Parse(SpawnInfo[1]);
ushort Map = ushort.Parse(SpawnInfo[2]);
ushort XFrom = ushort.Parse(SpawnInfo[3]);
ushort YFrom = ushort.Parse(SpawnInfo[4]);
ushort XTo = ushort.Parse(SpawnInfo[5]);
ushort YTo = ushort.Parse(SpawnInfo[6]);
if (!Game.Kernel.H_Mobs.Contains(Map))
Game.Kernel.H_Mobs.Add(Map, new Hashtable());
Hashtable MapMobs = (Hashtable)Game.Kernel.H_Mobs[Map];
DMap D = (DMap)DMaps.H_DMaps[Map];
for (int i = 0; i < Count; i++)
{
Game.Mob _Mob = new Conquer_FX.Game.Mob((Game.Mob)Mobs[MobID]);
_Mob.Loc = new Conquer_FX.Game.Location();
_Mob.Loc.Map = Map;
_Mob.Loc.X = (ushort)Program.Rnd.Next(Math.Min(XFrom, XTo), Math.Max(XFrom, XTo));
_Mob.Loc.Y = (ushort)Program.Rnd.Next(Math.Min(YFrom, YTo), Math.Max(YFrom, YTo));
while (D != null && D.GetCell(_Mob.Loc.X, _Mob.Loc.Y).NoAccess)
{
_Mob.Loc.X = (ushort)Program.Rnd.Next(Math.Min(XFrom, XTo), Math.Max(XFrom, XTo));
_Mob.Loc.Y = (ushort)Program.Rnd.Next(Math.Min(YFrom, YTo), Math.Max(YFrom, YTo));
}
_Mob.StartLoc = _Mob.Loc;
_Mob.EntityID = (uint)Program.Rnd.Next(400000, 500000);
while (Game.Kernel.H_Chars.Contains(_Mob.EntityID) || MapMobs.Contains(_Mob.EntityID))
_Mob.EntityID = (uint)Program.Rnd.Next(400000, 500000);
MapMobs.Add(_Mob.EntityID, _Mob);
monst++;
}
}
Program.WriteLine("Mobs loaded: " + monst.ToString());
}
Any Thoughs, Ideas, or Theories are accepted along with some help :).