/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Forgotten world base entrance /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void ForgottenWorld(int itemid) { try { //Spawn portal WorldMgr.Monsters o = new WorldMgr.Monsters(); float x = Character.Position.x; float z = Character.Position.z; float y = Character.Position.y; o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object); o.UniqueID = o.Ids.GetUniqueID; o.xSec = Character.Position.xSec; o.ySec = Character.Position.ySec; o.x = Formule.gamex(x,o.xSec); o.z = z; o.y = Formule.gamey(y, o.ySec); client.Send(Packet.SpawnPortal(o, Character, itemid)); } catch (Exception ex) { Log.Exception(ex); } }
void GMmobkill(int id, ushort type) { try { WorldMgr.Monsters o = Helpers.GetInformation.GetObject(id); o.ChangeState(0, 2); o.AddAgroDmg(Character.Information.UniqueID, o.HP); o.HP = 0; Send(Packet.StatePack(Character.Information.UniqueID, 8, 0, false)); o.Send(Packet.Testeffect(id, o.HP)); o.GetDie = true; o.Die = true; o.MonsterDrop(); o.SetExperience(); o.StartDeadTimer(5000); if (o.Type == 3) { Helpers.SendToClient.SendAll(Packet.Unique_Data(6, (int)o.ID, Character.Information.Name)); } //Thread.Sleep(5000); /*o.Dispose(); * o = null;*/ } catch (Exception ex) { Log.Exception(ex); } }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Forgotten world base entrance /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void ForgottenWorld(int itemid) { try { //Spawn portal WorldMgr.Monsters o = new WorldMgr.Monsters(); float x = Character.Position.x; float z = Character.Position.z; float y = Character.Position.y; o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object); o.UniqueID = o.Ids.GetUniqueID; o.xSec = Character.Position.xSec; o.ySec = Character.Position.ySec; o.x = Formule.gamex(x, o.xSec); o.z = z; o.y = Formule.gamey(y, o.ySec); client.Send(Packet.SpawnPortal(o, Character, itemid)); } catch (Exception ex) { Log.Exception(ex); } }
public void SavePlace() { //Wrap our function inside a catcher try { //Open our packet reader PacketReader reader = new PacketReader(PacketInformation.buffer); int ObjectID = reader.Int32(); //Get object information WorldMgr.Monsters o = Helpers.GetInformation.GetObject(ObjectID); //Defaul value for type byte type = 0; //Switch by object name switch (ObjData.Manager.ObjectBase[o.ID].Name) { case "STORE_CH_GATE": type = 1; break; case "STORE_WC_GATE": type = 2; break; case "STORE_KT_GATE": type = 5; break; case "STORE_EU_GATE": type = 20; break; case "STORE_CA_GATE": type = 25; break; case "STORE_SD_GATE1": type = 175; break; case "STORE_SD_GATE2": type = 176; break; } //Set new return global information Character.Information.Place = type; //Update database DB.query("update character set savearea='" + Character.Information.Place + "' where id='" + Character.Information.CharacterID + "'"); //Send confirmation packet client.Send(Packet.UpdatePlace()); } catch (Exception ex) { Log.Exception(ex); } }
public static double gamedistance(WorldMgr.Monsters p1, WorldMgr.character._pos p2) { // Nukei: for test with range checking on objects, maybe faster than only calculating distance if ((p1.xSec >= p2.xSec - 1) && (p1.xSec <= p2.xSec + 1) && (p1.ySec >= p2.ySec - 1) && (p1.ySec <= p2.ySec + 1)) { return(gamedistance(p1.x, p1.y, p2.x, p2.y)); } else { return(99999999999999); } }
void GM_ISATTACK(int id, ushort type) { try { WorldMgr.Monsters o = Helpers.GetInformation.GetObject(id); o.Agresif = 1; } catch (Exception ex) { Log.Exception(ex); } }
/* * public static void StartEffectDamage(int intval, int HitPower, byte e_index, object target) * { * try * { * if (target.sys.Character.Action.DeBuff.Effect.EffectImpactTimer[e_index] != null) target.sys.Character.Action.DeBuff.Effect.EffectImpactTimer[e_index].Dispose(); * * target.sys.Character.Action.DeBuff.Effect.EffectImpactTimer[e_index] = new Timer( * new TimerCallback( * delegate(object e) * { * if (target.type == true) // player * { * if (!target.sys.Character.State.Die) * { * target.HP(HitPower); * target.sys.Send(Packet.Effects2Dmg(target.sys.Character.Information.UniqueID, HitPower)); * } * else return; * } * else if (target.type == false) // mob * { * if (!target.os.Die) * { * target.HP(HitPower); * target.os.Send(Packet.Effects2Dmg(target.ID, HitPower)); * } * else return; * } * } * ), null, 0, intval); * } * catch (Exception ex) * { * Log.Exception(ex); * Console.WriteLine("StartEffectDamage() Error {0}", ex); * } * } */ /////////////////////////////////////////////////////////////////////////// // Shock state /////////////////////////////////////////////////////////////////////////// public static void GenerateEffect_es(object target, int skillid) { // Get effects parameters int Power = ObjData.Manager.SkillBase[skillid].Properties1["es"]; int Probability = ObjData.Manager.SkillBase[skillid].Properties2["es"]; int Random = Rnd.Next(1, 100); byte slot; // if effect succeeded if (Random <= Probability) { if (target.GetType().ToString() == "CLGameServer.PlayerMgr") // player { PlayerMgr sys = target as PlayerMgr; if (sys.Character.State.Die == true) { return; } slot = sys.DeBuffGetFreeSlot(); sys.Character.Action.DeBuff.Effect.EffectID[slot] = EffectNumbers.SHOCKED; sys.Character.Action.DeBuff.Effect.SkillID[slot] = skillid; sys.StartEffectTimer(Power * 100, slot); sys.client.Send(Packet.EffectUpdate(sys.Character.Information.UniqueID, EffectNumbers.SHOCKED, true)); // Timer for burn state } else if (target.GetType().ToString() == "CLGameServer.WorldMgr.Monsters") // mob { WorldMgr.Monsters os = target as WorldMgr.Monsters; if (os.Die == true) { return; } slot = os.DeBuffGetFreeSlot(); os.DeBuff.Effect.EffectID[slot] = EffectNumbers.SHOCKED; os.DeBuff.Effect.SkillID[slot] = skillid; os.StartEffectTimer(Power * 100, slot); os.Send(Packet.EffectUpdate(os.UniqueID, EffectNumbers.SHOCKED, true)); // Burn timer // Add (character details). } } }
public static void DeleteEffect_fb(object target, byte EffectSlot) { try { if (target.GetType().ToString() == "CLGameServer.PlayerMgr") // player { PlayerMgr sys = target as PlayerMgr; sys.Send(Packet.EffectUpdate(sys.Character.Information.UniqueID, sys.Character.Action.DeBuff.Effect.EffectID[EffectSlot], false)); sys.Character.Action.DeBuff.Effect.EffectID[EffectSlot] = 0; sys.Character.Action.DeBuff.Effect.SkillID[EffectSlot] = 0; //sys.Character.Speed.AttackSpeedModifier = 1; sys.Character.Speed.RunSpeed *= 2; sys.Character.Speed.WalkSpeed *= 2; sys.Character.Speed.BerserkSpeed *= 2; sys.Send(Packet.SetSpeed(sys.Character.Information.UniqueID, sys.Character.Speed.WalkSpeed, sys.Character.Speed.RunSpeed)); } else if (target.GetType().ToString() == "CLGameServer.WorldMgr.Monsters") // mob { WorldMgr.Monsters os = target as WorldMgr.Monsters; os.Send(Packet.EffectUpdate(os.UniqueID, os.DeBuff.Effect.EffectID[EffectSlot], false)); os.DeBuff.Effect.EffectID[EffectSlot] = 0; os.DeBuff.Effect.SkillID[EffectSlot] = 0; // attack speed os.AttackSpeed = 1; // movement speed os.RunningSpeed *= 2; os.WalkingSpeed *= 2; //Set bool to false again os.Frostbite = false; os.Send(Packet.SetSpeed(os.UniqueID, os.WalkingSpeed, os.RunningSpeed)); } } catch (Exception ex) { Log.Exception(ex); } }
public void SelectObject() { try { if (Character.Information.Scroll) { return; } PacketReader Reader = new PacketReader(PacketInformation.buffer); int objectid = Reader.Int32(); if (objectid == 0) { return; } //Character.Action.Target = objectid; //if (Character.Position.Walking) StopPlayerMovementO(objectid); if (objectid == Character.Information.UniqueID) { return; } WorldMgr.Monsters o = Helpers.GetInformation.GetObject(objectid); if (o != null) { byte[] bb = Packet.SelectObject(objectid, o.ID, o.LocalType, o.HP); if (bb == null) { return; } client.Send(bb); //Character.Action.Object = o; return; } PlayerMgr sys = Helpers.GetInformation.GetPlayers(objectid); if (o == null && sys != null) { client.Send(Packet.SelectObject(objectid, 0, 5, sys.Character.Stat.Hp)); Character.Action.Object = sys; return; } Reader.Close(); } catch (Exception ex) { Console.WriteLine("Selectobject error: {0}", ex); } }
void GMmovetonpc(string NPCNAME) { WorldMgr.Monsters selectednpc = Helpers.GetInformation.GetObject(NPCNAME); if (selectednpc != null) { Character.Position.xSec = selectednpc.ySec; Character.Position.ySec = selectednpc.ySec; Character.Position.x = (float)selectednpc.x; Character.Position.z = (float)selectednpc.z; Character.Position.y = (float)selectednpc.y; BuffAllClose(); ObjectDeSpawnCheck(); DeSpawnMe(); //client.Send(Packet.TeleportOtherStart()); Character.InGame = false; client.Send(Packet.TeleportImage(selectednpc.xSec, selectednpc.ySec)); Character.Teleport = true; } else { client.Send(Packet.GameMaster(1, 0, 0, 0, "Could not find the chosen npc, teleporting has been stopped")); } }
///////////////////////////////////////////////////////////////////////////// // Teleports ///////////////////////////////////////////////////////////////////////////// public static void TeleportBuilding() { TxtFile.ReadFromFile(@"\data\teleportbuilding.txt", '\t'); string s = null; for (int l = 0; l <= TxtFile.amountLine - 1; l++) { s = TxtFile.lines[l].ToString(); TxtFile.commands = s.Split('\t'); if (!(short.Parse(TxtFile.commands[41]) == 0)) { WorldMgr.Monsters o = new WorldMgr.Monsters(); int ID = Convert.ToInt32(TxtFile.commands[1]); short AREA = short.Parse(TxtFile.commands[41]); float x = Convert.ToSingle(TxtFile.commands[43]); float z = Convert.ToSingle(TxtFile.commands[44]); float y = Convert.ToSingle(TxtFile.commands[45]); o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object); o.UniqueID = o.Ids.GetUniqueID; objectdata os = new objectdata(); os.Name = TxtFile.commands[2]; Manager.ObjectBase[ID] = os; o.ID = ID; o.area = AREA; o.xSec = Convert.ToByte((AREA).ToString("X4").Substring(2, 2), 16); o.ySec = Convert.ToByte((AREA).ToString("X4").Substring(0, 2), 16); o.x = Formule.gamex(x,o.xSec); o.z = z; o.y = Formule.gamey(y, o.ySec); o.HP = 0x000000C0; o.LocalType = 3; Helpers.Manager.Objects.Add(o); } } Console.WriteLine("[INFO] Loaded " + TxtFile.amountLine + " teleport buildings"); TeleportData(); }
public static void GenerateEffect_fb(object target, int skillid) { // Get effects parameters int Power = ObjData.Manager.SkillBase[skillid].Properties1["fb"]; int Probability = ObjData.Manager.SkillBase[skillid].Properties2["fb"]; int Random = Rnd.Next(1, 100); byte slot; // if effect succeeded if (Random <= Probability) { if (target.GetType().ToString() == "CLGameServer.PlayerMgr") // player { PlayerMgr sys = target as PlayerMgr; if (sys.Character.State.Die == true) { return; } slot = sys.DeBuffGetFreeSlot(); sys.Character.Action.DeBuff.Effect.EffectID[slot] = EffectNumbers.FROSTBITE; sys.Character.Action.DeBuff.Effect.SkillID[slot] = skillid; sys.StartEffectTimer(Power * 100, slot); sys.Send(Packet.EffectUpdate(sys.Character.Information.UniqueID, EffectNumbers.FROSTBITE, true)); // attack speed //sys.Character.Speed.AttackSpeedModifier = 1.5; sys.Character.Speed.RunSpeed /= 2; sys.Character.Speed.WalkSpeed /= 2; sys.Character.Speed.BerserkSpeed /= 2; sys.Send(Packet.SetSpeed(sys.Character.Information.UniqueID, sys.Character.Speed.WalkSpeed, sys.Character.Speed.RunSpeed)); } else if (target.GetType().ToString() == "CLGameServer.WorldMgr.Monsters") // mob { WorldMgr.Monsters os = target as WorldMgr.Monsters; if (os.Die == true) { return; } slot = os.DeBuffGetFreeSlot(); os.DeBuff.Effect.EffectID[slot] = EffectNumbers.FROSTBITE; os.DeBuff.Effect.SkillID[slot] = skillid; //target.os.DeBuff.Effect.EffectPower[slot] = Power; os.StartEffectTimer(Power * 100, slot); os.Send(Packet.EffectUpdate(os.UniqueID, EffectNumbers.FROSTBITE, true)); // attack speed os.AttackSpeed = 1.5; // movement speed os.RunningSpeed /= 2; os.WalkingSpeed /= 2; //Set our bool active os.Frostbite = true; os.Send(Packet.SetSpeed(os.UniqueID, os.WalkingSpeed, os.RunningSpeed)); } } }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Monster Summon Scrolls /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void HandleSummon(int scrollid) { try { //if (Character.Information.Level < 10) return; int count = 1;//Default should be set to 1 //single scroll if (scrollid == 3936) { count = 5; } //party scroll if (scrollid == 3935) { if (Character.Network.Party == null) { return; } if (Character.Network.Party.Members.Count < 5) { return; } count = Character.Network.Party.Members.Count; } int model = GetStrongMobByLevel(Character.Information.Level); byte type = ObjData.Manager.ObjectBase[model].ObjectType; for (int i = 1; i <= count; i++) { WorldMgr.Monsters Spawn = new WorldMgr.Monsters(); Spawn.ID = model; Spawn.Type = type; Spawn.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object); Spawn.UniqueID = Spawn.Ids.GetUniqueID; Spawn.x = Character.Position.x; Spawn.z = Character.Position.z; Spawn.y = Character.Position.y; Spawn.OriginalX = Spawn.x; Spawn.OriginalY = Spawn.y; Spawn.xSec = Character.Position.xSec; Spawn.ySec = Character.Position.ySec; Spawn.AutoMovement = true; Spawn.State = 1; Spawn.Move = 1; Spawn.WalkingSpeed = ObjData.Manager.ObjectBase[Spawn.ID].SpeedWalk; Spawn.RunningSpeed = ObjData.Manager.ObjectBase[Spawn.ID].SpeedRun; Spawn.BerserkerSpeed = ObjData.Manager.ObjectBase[Spawn.ID].SpeedZerk; Spawn.HP = ObjData.Manager.ObjectBase[model].HP; Spawn.Agresif = ObjData.Manager.ObjectBase[model].Agresif; Spawn.LocalType = 1; Spawn.AutoSpawn = false; Spawn.Kat = 1; Helpers.Functions.aRound(ref Spawn.x, ref Spawn.y, 1); Helpers.Manager.Objects.Add(Spawn); Spawn.SpawnMe(); } } catch (Exception ex) { Log.Exception(ex); } }
public targetObject(object o, PlayerMgr player) { try { os = null; o_x = 0; o_y = 0; o_z = 0; magdef = 0; phydef = 0; type = false; if (o == null) return; main = player; if (main == null) return; if (o.GetType().ToString() == "CLGameServer.WorldMgr.Monsters") { os = o as Monsters; if (os.Die) { player.StopAttackTimer(); return; } o_x = (float)os.x; o_y = (float)os.y; o_z = (float)os.z; xsec = os.xSec; ysec = os.ySec; magdef = ObjData.Manager.ObjectBase[os.ID].MagDef; phydef = ObjData.Manager.ObjectBase[os.ID].PhyDef; id = os.UniqueID; type = false; hps = os.HP; state = os.State; main.Character.Action.MonsterID.Add(os.UniqueID); mabsrob = 0; os.Target = player; } if (o.GetType().ToString() == "CLGameServer.PlayerMgr") { sys = o as PlayerMgr; o_x = sys.Character.Position.x; o_y = sys.Character.Position.y; o_z = sys.Character.Position.z; xsec = sys.Character.Position.xSec; ysec = sys.Character.Position.ySec; magdef = sys.Character.Stat.MagDef; phydef = sys.Character.Stat.PhyDef; id = sys.Character.Information.UniqueID; absorbphy = sys.Character.Stat.phy_Absorb; absorbmag = sys.Character.Stat.mag_Absorb; state = sys.Character.State.LastState; hps = sys.Character.Stat.SecondHp; type = true; mabsrob = sys.Character.Stat.Absorb_mp; } } catch (Exception ex) { Log.Exception(ex); } }
void GMloadmonster(int M_ObjID, byte M_Count, byte M_Type, bool Zoe = false) { try { for (int index = 1; index <= M_Count; index++) { WorldMgr.Monsters o = new WorldMgr.Monsters(); o.ID = M_ObjID; o.Type = M_Type; o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object); o.UniqueID = o.Ids.GetUniqueID; if (Zoe) { ObjData.SpawnData.TempSpawn.Add(o.UniqueID); o.AutoMovement = false; } else { o.AutoMovement = true; } o.x = Character.Position.x; o.z = Character.Position.z; o.y = Character.Position.y; o.OriginalX = o.x; o.OriginalY = o.y; o.xSec = Character.Position.xSec; o.ySec = Character.Position.ySec; o.Angle = (ushort)(index / M_Count * 65535 / M_Count * index); o.HP = ObjData.Manager.ObjectBase[o.ID].HP; o.Agresif = ObjData.Manager.ObjectBase[o.ID].Agresif; if (ObjData.Manager.ObjectBase[o.ID].Type == 4) o.LocalType = 4; else if (ObjData.Manager.ObjectBase[o.ID].Type == 1) o.LocalType = 1; else if (ObjData.Manager.ObjectBase[o.ID].Type == 2) o.LocalType = 2; o.AutoSpawn = false; o.Kat = 1; o.WalkingSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedWalk; o.RunningSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedRun; o.BerserkerSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedZerk; switch (M_Type) { case 1: o.Agresif = 1; o.HP *= 2; o.Kat = 2; o.StartAgressiveTimer(2000); break; case 4: o.HP *= 20; o.Kat = 20; o.Agresif = 1; o.StartAgressiveTimer(2000); break; case 5: o.HP *= 100; o.Kat = 100; o.Agresif = 1; o.StartAgressiveTimer(2000); break; case 16: o.HP *= 10; o.Kat = 10; break; case 17: o.HP *= 20; o.Kat = 20; o.Agresif = 1; o.StartAgressiveTimer(2000); break; case 20: o.HP *= 210; o.Kat = 210; o.Agresif = 1; o.StartAgressiveTimer(2000); break; } Helpers.Manager.Objects.Add(o); o.SpawnMe(); if (M_Type == 3 || M_Type == 5) { Helpers.SendToClient.SendAll(Packet.Unique_Data(5, o.ID, string.Empty)); } } } catch (Exception ex) { Console.WriteLine(ex); } }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Monster Summon Scrolls /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void HandleSummon(int scrollid) { try { //if (Character.Information.Level < 10) return; int count = 1;//Default should be set to 1 //single scroll if (scrollid == 3936) { count = 5; } //party scroll if (scrollid == 3935) { if (Character.Network.Party == null) return; if (Character.Network.Party.Members.Count < 5) return; count = Character.Network.Party.Members.Count; } int model = GetStrongMobByLevel(Character.Information.Level); byte type = ObjData.Manager.ObjectBase[model].ObjectType; for (int i = 1; i <= count; i++) { WorldMgr.Monsters Spawn = new WorldMgr.Monsters(); Spawn.ID = model; Spawn.Type = type; Spawn.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object); Spawn.UniqueID = Spawn.Ids.GetUniqueID; Spawn.x = Character.Position.x; Spawn.z = Character.Position.z; Spawn.y = Character.Position.y; Spawn.OriginalX = Spawn.x; Spawn.OriginalY = Spawn.y; Spawn.xSec = Character.Position.xSec; Spawn.ySec = Character.Position.ySec; Spawn.AutoMovement = true; Spawn.State = 1; Spawn.Move = 1; Spawn.WalkingSpeed = ObjData.Manager.ObjectBase[Spawn.ID].SpeedWalk; Spawn.RunningSpeed = ObjData.Manager.ObjectBase[Spawn.ID].SpeedRun; Spawn.BerserkerSpeed = ObjData.Manager.ObjectBase[Spawn.ID].SpeedZerk; Spawn.HP = ObjData.Manager.ObjectBase[model].HP; Spawn.Agresif = ObjData.Manager.ObjectBase[model].Agresif; Spawn.LocalType = 1; Spawn.AutoSpawn = false; Spawn.Kat = 1; Helpers.Functions.aRound(ref Spawn.x, ref Spawn.y, 1); Helpers.Manager.Objects.Add(Spawn); Spawn.SpawnMe(); } } catch (Exception ex) { Log.Exception(ex); } }
public void RandomMonster(int sID, byte randomTYPE) { try { if (ObjData.Manager.ObjectBase[sID].SpeedWalk == 0 && ObjData.Manager.ObjectBase[sID].SpeedRun == 0) { return; } Monsters o = new Monsters(); o.ID = sID; o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object); o.UniqueID = o.Ids.GetUniqueID; o.x = x; o.z = z; o.y = y; Helpers.Functions.aRound(ref o.x, ref o.y, 2); o.UniqueGuardMode = true; o.OriginalY = OriginalY; o.OriginalX = OriginalX; o.xSec = xSec; o.ySec = ySec; o.AutoMovement = AutoMovement; o.AutoSpawn = true; o.Move = 1; o.HP = ObjData.Manager.ObjectBase[o.ID].HP; o.WalkingSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedWalk; o.RunningSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedRun; o.BerserkerSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedZerk; o.Agresif = 0; o.LocalType = 1; o.State = 2; o.Kat = 1; o.spawnOran = 0; if (randomTYPE == 0) // Standart { o.Type = Helpers.Functions.RandomType(ObjData.Manager.ObjectBase[o.ID].Level, ref Kat, false, ref o.Agresif); if (o.Type == 1) o.Agresif = 1; if (ObjData.Manager.ObjectBase[o.ID].Agresif == 1) { o.Agresif = 1; } o.HP *= Kat; } else { if (randomTYPE == 6) o.HP *= 4; else if (randomTYPE == 4) o.HP *= 20; else if (randomTYPE == 1) o.HP *= 2; else if (randomTYPE == 16) o.HP *= 10; else if (randomTYPE == 17) o.HP *= 20; else if (randomTYPE == 20) o.HP *= 210; o.AutoSpawn = false; o.Type = randomTYPE; o.Agresif = 1; } Helpers.Manager.Objects.Add(o); o.SpawnMe(); } catch (Exception ex) { Log.Exception(ex); } }
void GMloadmonster(int M_ObjID, byte M_Count, byte M_Type, bool Zoe = false) { try { for (int index = 1; index <= M_Count; index++) { WorldMgr.Monsters o = new WorldMgr.Monsters(); o.ID = M_ObjID; o.Type = M_Type; o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object); o.UniqueID = o.Ids.GetUniqueID; if (Zoe) { ObjData.SpawnData.TempSpawn.Add(o.UniqueID); o.AutoMovement = false; } else { o.AutoMovement = true; } o.x = Character.Position.x; o.z = Character.Position.z; o.y = Character.Position.y; o.OriginalX = o.x; o.OriginalY = o.y; o.xSec = Character.Position.xSec; o.ySec = Character.Position.ySec; o.Angle = (ushort)(index / M_Count * 65535 / M_Count * index); o.HP = ObjData.Manager.ObjectBase[o.ID].HP; o.Agresif = ObjData.Manager.ObjectBase[o.ID].Agresif; if (ObjData.Manager.ObjectBase[o.ID].Type == 4) { o.LocalType = 4; } else if (ObjData.Manager.ObjectBase[o.ID].Type == 1) { o.LocalType = 1; } else if (ObjData.Manager.ObjectBase[o.ID].Type == 2) { o.LocalType = 2; } o.AutoSpawn = false; o.Kat = 1; o.WalkingSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedWalk; o.RunningSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedRun; o.BerserkerSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedZerk; switch (M_Type) { case 1: o.Agresif = 1; o.HP *= 2; o.Kat = 2; o.StartAgressiveTimer(2000); break; case 4: o.HP *= 20; o.Kat = 20; o.Agresif = 1; o.StartAgressiveTimer(2000); break; case 5: o.HP *= 100; o.Kat = 100; o.Agresif = 1; o.StartAgressiveTimer(2000); break; case 16: o.HP *= 10; o.Kat = 10; break; case 17: o.HP *= 20; o.Kat = 20; o.Agresif = 1; o.StartAgressiveTimer(2000); break; case 20: o.HP *= 210; o.Kat = 210; o.Agresif = 1; o.StartAgressiveTimer(2000); break; } Helpers.Manager.Objects.Add(o); o.SpawnMe(); if (M_Type == 3 || M_Type == 5) { Helpers.SendToClient.SendAll(Packet.Unique_Data(5, o.ID, string.Empty)); } } } catch (Exception ex) { Console.WriteLine(ex); } }
///////////////////////////////////////////////////////////////////////////// // Load objects ///////////////////////////////////////////////////////////////////////////// public static void LoadObject() { TxtFile.ReadFromFile(@"\data\npcpos.txt", '\t'); int npcamount = Helpers.Settings.Rate.MonsterSpawn; for (int l = 0; l <= TxtFile.amountLine - 1; l++) { TxtFile.commands = TxtFile.lines[l].ToString().Split('\t'); int ID = Convert.ToInt32(TxtFile.commands[0]); string namecheck = Manager.ObjectBase[ID].Name; if (namecheck.Contains("MOB_")) { for (int i = 1; i <= npcamount; i++) { WorldMgr.Monsters o = new WorldMgr.Monsters(); short AREA = short.Parse(TxtFile.commands[1]); float x = Convert.ToInt32(TxtFile.commands[2]); float z = Convert.ToInt32(TxtFile.commands[3]); float y = Convert.ToInt32(TxtFile.commands[4]); o.ID = ID; o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object); o.UniqueID = o.Ids.GetUniqueID; o.xSec = Convert.ToByte((AREA).ToString("X4").Substring(2, 2), 16); o.ySec = Convert.ToByte((AREA).ToString("X4").Substring(0, 2), 16); o.x = Formule.gamex(x, o.xSec); o.z = z; o.y = Formule.gamey(y, o.ySec); if (i > 1) { Helpers.Functions.aRound(ref o.x, ref o.y, Rnd.Next(1, 6)); } o.OriginalX = o.x; o.OriginalY = o.y; o.State = 1; o.Move = 1; o.AutoSpawn = true; o.State = 2; o.HP = Manager.ObjectBase[ID].HP; o.Kat = 1; o.AgressiveDMG = new List<WorldMgr._agro>(); o.WalkingSpeed = Manager.ObjectBase[o.ID].SpeedWalk; o.RunningSpeed = Manager.ObjectBase[o.ID].SpeedRun; o.BerserkerSpeed = Manager.ObjectBase[o.ID].SpeedZerk; o.Agresif = Manager.ObjectBase[o.ID].Agresif; if (o.Type == 1) o.Agresif = 1; o.spawnOran = 20; if (o.WalkingSpeed == 0 && o.RunningSpeed == 0) { o.AutoMovement = false; o.LocalType = 5;//fix for static flowers,ishades,etc } else { o.AutoMovement = true; o.LocalType = Manager.ObjectBase[ID].Type; } if (o.AutoMovement) o.StartRunTimer(Rnd.Next(1, 5) * 1000); if (Manager.ObjectBase[ID].ObjectType != 3) { o.Type = Helpers.Functions.RandomType(Manager.ObjectBase[ID].Level, ref o.Kat, false, ref o.Agresif); o.HP *= o.Kat; if (o.Type == 1) o.Agresif = 1; Helpers.Manager.Objects.Add(o); } else { o.AutoSpawn = false; o.Type = Manager.ObjectBase[ID].ObjectType; //GlobalUnique.AddObject(o); } if (namecheck.Contains("CH")) Manager.ObjectBase[ID].Race = 0; if (namecheck.Contains("EU")) Manager.ObjectBase[ID].Race = 1; if (!namecheck.Contains("CH") && (!namecheck.Contains("EU"))) Manager.ObjectBase[ID].Race = 2; o.InitalizeNpcs(); } } } Console.WriteLine("[INFO] Loaded " + TxtFile.amountLine + " monsters"); }
///////////////////////////////////////////////////////////////////////////// // Load npcs ///////////////////////////////////////////////////////////////////////////// public static void LoadNpcs() { TxtFile.ReadFromFile(@"\data\npcpos.txt", '\t'); string input = null; string s = null; string[] npcangle1; int count = TxtFile.amountLine; uint index = 0; int countme = 0; for (int l = 0; l <= TxtFile.amountLine - 1; l++) { s = TxtFile.lines[l].ToString(); TxtFile.commands = s.Split('\t'); int ID = Convert.ToInt32(TxtFile.commands[0]); byte race = Manager.ObjectBase[ID].Type; string namecheck = Manager.ObjectBase[ID].Name; if (namecheck.Contains("NPC_")) { countme += 1; TextReader Npcangle = new StreamReader(Environment.CurrentDirectory + @"\data\NpcAngles.txt"); WorldMgr.Monsters o = new WorldMgr.Monsters(); index++; short AREA = short.Parse(TxtFile.commands[1]); float x = Convert.ToSingle(TxtFile.commands[2]); float z = Convert.ToSingle(TxtFile.commands[3]); float y = Convert.ToSingle(TxtFile.commands[4]); byte movement = 0; o.Agresif = movement; o.AutoMovement = true; o.ID = ID; o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object); o.UniqueID = o.Ids.GetUniqueID; o.area = AREA; o.xSec = Convert.ToByte((AREA).ToString("X4").Substring(2, 2), 16); o.ySec = Convert.ToByte((AREA).ToString("X4").Substring(0, 2), 16); o.x = Formule.gamex(x, o.xSec); o.z = z; o.y = Formule.gamey(y, o.ySec); o.OriginalX = o.x; o.OriginalY = o.y; o.State = 1; o.Move = 1; o.LocalType = 2; o.AutoSpawn = true; o.State = 2; o.HP = Manager.ObjectBase[ID].HP; o.Kat = 1; o.AgressiveDMG = new List<WorldMgr._agro>(); o.spawnOran = 20; while ((input = Npcangle.ReadLine()) != null) { npcangle1 = input.Split(','); if (ID == ushort.Parse(npcangle1[0]) && AREA == ushort.Parse(npcangle1[2])) { o.Angle = ushort.Parse(npcangle1[1]); break; } } Npcangle.Close(); if (Manager.ObjectBase[ID].ObjectType != 3) { o.Type = Helpers.Functions.RandomType(Manager.ObjectBase[ID].Level, ref o.Kat, false, ref o.Agresif); o.HP *= o.Kat; if (o.Type == 1) o.Agresif = 1; Helpers.Manager.Objects.Add(o); } else { o.AutoSpawn = false; o.Type = Manager.ObjectBase[ID].ObjectType; // This is unique NPC_MONSTER } } } Console.WriteLine("[INFO] Loaded " + TxtFile.amountLine + " npc's"); }