public PlayerController(Player player, SignalBus bus, PlayerStats playerStats, SceneHandler sceneHandler) { Player = player; _bus = bus; _playerStats = playerStats; _sceneHandler = sceneHandler; }
public void EnemySpawnList(Model.Player a_player) { if (m_spawnList.Count > 0) { for (int i = 0; i < m_spawnList.Count; i++) { if (m_spawnList[i].WaitingToSpawn()) { m_spawnList[i].SpawnTimer--; } else { //BUGGFIX FÖR LOOTRUTOR EFTER SPAWN if (m_spawnList[i] == a_player.LootTarget) { a_player.LootTarget = null; } //Skapar den nya fienden här fär att spawnen ska bli rätt. MapObject mapObj = m_spawnList[i].ThisUnit; Rectangle spawnPos = new Rectangle(m_spawnList[i].SpawnPosition.X, m_spawnList[i].SpawnPosition.Y, m_spawnList[i].ThisUnit.Bounds.Width, m_spawnList[i].ThisUnit.Bounds.Height); mapObj.Bounds = spawnPos; Enemy enemy = new Enemy(mapObj, m_spawnList[i].Type, m_spawnList[i].UnitId, m_spawnList[i].EnemyZone); m_enemies.Add(enemy); m_spawnList.Remove(m_spawnList[i]); } } } }
//Constructor public Camera(GraphicsDevice a_graphicsDevice, Model.GameModel a_gameModel) { this.m_viewPort = a_graphicsDevice.Viewport; this.m_mapView = a_graphicsDevice.Viewport.Bounds; this.m_currentMap = a_gameModel.CurrentMap; this.m_player = a_gameModel.Player; }
/// <summary> /// Constructor /// </summary> /// <param name="graphicsDevice">GraphicsDevice instance</param> /// <param name="gameModel">Game model instance</param> public Camera(GraphicsDevice graphicsDevice, Model.GameModel gameModel) { this._viewPort = graphicsDevice.Viewport; this._mapView = graphicsDevice.Viewport.Bounds; this._currentMap = gameModel.CurrentMap; this._player = gameModel.PlayerSystem.Player; }
internal override Model ReadEntry(BinaryReaderEx br) { ModelType type = br.GetEnum32 <ModelType>(br.Position + 8); switch (type) { case ModelType.MapPiece: var mapPiece = new Model.MapPiece(br); MapPieces.Add(mapPiece); return(mapPiece); case ModelType.Object: var obj = new Model.Object(br); Objects.Add(obj); return(obj); case ModelType.Enemy: var enemy = new Model.Enemy(br); Enemies.Add(enemy); return(enemy); case ModelType.Player: var player = new Model.Player(br); Players.Add(player); return(player); case ModelType.Collision: var collision = new Model.Collision(br); Collisions.Add(collision); return(collision); default: throw new NotImplementedException($"Unimplemented model type: {type}"); } }
/// <summary> /// Constructor /// </summary> /// <param name="spriteBatch">SpriteBatch instance</param> /// <param name="player">Player object</param> /// <param name="inputHandler">InputHandler instance</param> /// <param name="camera">Camera instance</param> public WorldMap(SpriteBatch spriteBatch, Model.Player player, InputHandler inputHandler, Camera camera) { this._player = player; this._spriteBatch = spriteBatch; this._inputHandler = inputHandler; this._camera = camera; }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate (savedInstanceState); // Open up a connection to the database string path = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "ClashLedger.db"); m_Database = new Data.DataAccess(path); // Load player data m_Player = new Model.Player(m_Database); // Load some test data AddTestData(); AddTestData(); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // Setup header UpdateHeader(); // Setup the list of wars ListView warList = FindViewById<ListView>(Resource.Id.warList); warList.ItemClick += OnListItemClick; warList.Adapter = new WarListViewAdapter(this, m_Player.Wars); }
public void Set(Model.Player model, bool updateCurrentHP) { // NOTE: InitStats()를 호출한 후에 base.Set()을 호출합니다. // 이는 InitStats()내에서 Inventory가 할당되기 때문입니다. // base.Set()에서 updateCurrentHP 파라메터가 true일 때 내부적으로 InitializeHpBar()가 호출되는데, // 이때 Inventory가 채워져 있어야 하기 때문입니다. InitStats(model); base.Set(model, updateCurrentHP); _disposablesForModel.DisposeAllAndClear(); CharacterModel = model; EquipCostumes(model.Costumes); EquipEquipmentsAndUpdateCustomize(model.armor, model.weapon); if (!SpeechBubble) { SpeechBubble = Widget.Create <SpeechBubble>(); } SpeechBubble.speechBreakTime = GameConfig.PlayerSpeechBreakTime; if (!(this is EnemyPlayer)) { Widget.Find <UI.Battle>().ComboText.comboMax = CharacterModel.AttackCountMax; } }
/// <summary> /// Method for drawing dialog boxes /// </summary> /// <param name="player">Player object</param> private void DrawDialogBoxes(Model.Player player) { //Trigger the drawing dialog boxes if (player.Target != null) { if (player.Target.GetType() == Model.GameModel.FRIENDLY_NPC) { Model.NonPlayerCharacter npc = player.Target as Model.NonPlayerCharacter; if (_inputHandler.DidGetTargetedByLeftClick(_camera.VisualizeRectangle(npc.ThisUnit.Bounds)) && npc.ThisUnit.Bounds.Intersects(player.CollisionArea) && npc.CanInterract) { _conversation.DrawDialog = true; } else if (!npc.ThisUnit.Bounds.Intersects(player.CollisionArea)) { _conversation.DrawDialog = false; } bool isQuestNpc = false; if (npc.UnitId == _gameModel.QuestSystem.ActiveNpc) { isQuestNpc = true; } if (_conversation.DrawDialog) { _conversation.DrawNPCText(player.Target, isQuestNpc); } } } }
public bool Hit(Model.Player target, int from, int to) // from or to = 1 left | from or to = 2 right { if (from == 1 && !this.leftHand.Dead) { if (to == 1 && !target.leftHand.Dead) { int used = target.leftHand.UsedFingers + this.leftHand.UsedFingers; target.leftHand = new Hand(used); return(true); } else if (to == 2 && !target.rightHand.Dead) { int used = target.rightHand.UsedFingers + this.leftHand.UsedFingers; target.rightHand = new Hand(used); return(true); } } else if (from == 2 && !this.rightHand.Dead) { if (to == 1 && !target.leftHand.Dead) { int used = target.leftHand.UsedFingers + this.rightHand.UsedFingers; target.leftHand = new Hand(used); return(true); } else if (to == 2 && !target.rightHand.Dead) { int used = target.rightHand.UsedFingers + this.rightHand.UsedFingers; target.rightHand = new Hand(used); return(true); } } return(false); }
internal bool UnTarget() { Model.Player player = m_gameModel.m_playerSystem.m_player; return((m_inputHandler.DidLeftClick() && !m_inputHandler.MouseIsOverObject && !m_inputHandler.MouseIsOverInterface) && !m_conversation.DrawDialog || !player.Target.ThisUnit.Bounds.Intersects(m_camera.GetScreenRectangle)); }
public void SelectPlayer(Model.Player player) { lock (Sync) { GameServer.SelectCharacter(player.Number); Wait(r => r is Result.EnterWorld); } }
public EndCondition(bool end, Model.Player winner, int first, int second, int third) { this.end = end; this.winner = winner; this.first = first; this.second = second; this.third = third; }
//Constructor public ItemView(Model.GameModel a_gameModel, Camera a_camera, AnimationSystem a_animationSystem) { this.m_player = a_gameModel.Player; this.m_level = a_gameModel.TMXLevel; this.m_camera = a_camera; this.m_animationSystem = a_animationSystem; this.m_trampolineWatch = new Stopwatch(); }
/// <summary> /// Move the Player to Defined Location. /// </summary> public void Go(Location to) { Model.Player nPlayer = new Model.Player(Connection); Memory.Writer.Uint(Memory.Addresses.Player.GoTo_X, to.X, 2); Memory.Writer.Uint(Memory.Addresses.Player.GoTo_Y, to.Y, 2); Memory.Writer.Uint(Memory.Addresses.Player.GoTo_Z, to.Z, 1); nPlayer.IsWalking = true; }
public PlayerViewModel(Model.Player player) : this() { Name = player.Name; IsOnline = player.IsOnline; avatar = player.Avatar; SteamAvailability = player.SteamAvailability; SteamId = player.SteamId; LastLogOff = player.LastLogOff.ToLocalTime().ToString(); }
/// <summary> /// Attack the Defined Creature. /// </summary> public void Creature(Creature target) { Model.Player nPlayer = new Model.Player(Connection); nPlayer.Target = target; PacketBuilder Builder = new PacketBuilder(0xA1, connection); Builder.Append(target.Id); Connection.Send(Builder.GetPacket()); }
public IActionResult Create([FromBody] string name) { var e = new Model.Player() { Name = name, Points = 0 }; _service.AddPlayer(e); return(new NoContentResult()); }
/// <summary> /// Constructor /// </summary> /// <param name="spriteBatch">SpriteBatch instance</param> /// <param name="activeSpells">List of activ spells</param> /// <param name="player">Player object</param> /// <param name="questSystem">QuestSystem instance</param> /// <param name="camera">Camera instance</param> public ActionBar(SpriteBatch spriteBatch, List <Model.Spell> activeSpells, Model.Player player, Model.QuestSystem questSystem, Camera camera) { this._spriteBatch = spriteBatch; this._camera = camera; this._player = player; this._questSystem = questSystem; this._barPosition = new Vector2[7]; this._activeSpells = activeSpells; }
public static void UpdatePlayer(string playerUserName, string playerName) { Model.Player _player = new Model.Player(); _player.PlayerID = 1; _player.PlayerUsername = playerUserName; _player.PlayerName = playerName; _player.PlayerCreated = new DateTime(1970,1,1); _player.PlayerLastActive = DateTime.Now; SetPlayer(_player); }
public static Model.Player ConvertToPlayer(ProfileModel model) { var converted = new Model.Player() { UserName = model.Username, HashId = model.UserHashId, Picture = model.Picture, PrincessTitle = model.PrincessTitle, }; return(converted); }
public Model.Player getupdate(int?id) { try { DataContext db = new DataContext(); Model.Player q = db.Players.SingleOrDefault(z => z.ID == id); return(q); } catch (Exception) { throw; } }
public UnitView(Model.GameModel a_gameModel, SpriteBatch a_spriteBatch, Camera a_camera, InputHandler a_inputHandler, AnimationSystem a_animationSystem, View.Conversation a_conversation) { this.m_player = a_gameModel.m_playerSystem.m_player; this.m_enemies = a_gameModel.m_enemySystem.m_enemies; this.m_deadEnemies = a_gameModel.m_enemySystem.m_spawnList; this.m_friends = a_gameModel.m_friendSystem.m_friends; this.m_questSystem = a_gameModel.m_questSystem; this.m_camera = a_camera; this.m_spriteBatch = a_spriteBatch; this.m_inputHandler = a_inputHandler; this.m_animationSystem = a_animationSystem; this.m_conversation = a_conversation; }
/// <summary> /// Constructor /// </summary> /// <param name="gameModel">GameModel instance</param> /// <param name="spriteBatch">SpriteBatch instance</param> /// <param name="camera">Camera instance</param> /// <param name="inputHandler">InputHandler instance</param> /// <param name="animationSystem">AnimationSystem instance</param> /// <param name="dialog">Dialog instance</param> public UnitView(Model.GameModel gameModel, SpriteBatch spriteBatch, Camera camera, InputHandler inputHandler, AnimationSystem animationSystem, View.Dialog dialog) { this._player = gameModel.PlayerSystem.Player; this._enemies = gameModel.EnemySystem.Enemies; this._deadEnemies = gameModel.EnemySystem.SpawnList; this._nonPlayerCharacters = gameModel.NpcSystem.NonPlayerCharacters; this._questSystem = gameModel.QuestSystem; this._camera = camera; this._spriteBatch = spriteBatch; this._inputHandler = inputHandler; this._animationSystem = animationSystem; this._conversation = dialog; }
public frmMain() { InitializeComponent(); player1 = new Model.Player("João"); player2 = new Model.Player("Caetano"); currentPlayer = 1; lbl1Name.Text = player1.Name; lbl2Name.Text = player2.Name; Update(); }
private void deletePlayerToolStripMenuItem_Click(object sender, EventArgs e) { if (playerCount != 0) { player = new Model.Player(); playerCount = 0; MessageBox.Show("Player Deleted !", "Player Deletion", MessageBoxButtons.OK); } else { MessageBox.Show("There is no player to delete !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
internal override Model ReadEntry(BinaryReaderEx br) { ModelType type = br.GetEnum32 <ModelType>(br.Position + 8); switch (type) { case ModelType.MapPiece: var mapPiece = new Model.MapPiece(br); MapPieces.Add(mapPiece); return(mapPiece); case ModelType.Object: var obj = new Model.Object(br); Objects.Add(obj); return(obj); case ModelType.Enemy: var enemy = new Model.Enemy(br); Enemies.Add(enemy); return(enemy); // Potential from mistake in m36 :trashcat: case ModelType.Item: var item = new Model.Item(br); Items.Add(item); return(item); case ModelType.Player: var player = new Model.Player(br); Players.Add(player); return(player); case ModelType.Collision: var collision = new Model.Collision(br); Collisions.Add(collision); return(collision); case ModelType.Navmesh: var navmesh = new Model.Navmesh(br); Navmeshes.Add(navmesh); return(navmesh); case ModelType.Other: var other = new Model.Other(br); Others.Add(other); return(other); default: throw new NotImplementedException($"Unsupported model type: {type}"); } }
public void writeCurrentUserLine(Model.Player player) { if (String.Compare(player.getColor(), "whitePlayer") == 0) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("White Player : " + player.getName()); } else { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Black Player : " + player.getName()); } }
public bool setupdate(int?id, int teamID) { try { DataContext db = new DataContext(); Model.Player q = db.Players.SingleOrDefault(z => z.ID == id); q.IDTeam = teamID; db.SaveChanges(); return(true); } catch (Exception) { return(false); } }
public int predictRank(Model.Player player) { inputLayer.process(player.myValues); this.hiddenLayers[0].process(inputLayer.Output); for (int j = 1; j < this.nbHiddenLayers; j++) { this.hiddenLayers[j].process(this.hiddenLayers[j - 1].Output); } this.outputLayer.process(this.hiddenLayers[this.nbHiddenLayers - 1].Output); return((int)Math.Round(this.outputLayer.Output[0] * (Model.Player.NB_RANKS - 1) / Params.OUTPUT_MULTIPLIER) + 1); }
internal override Model ReadEntryBB(BinaryReaderEx br) { ModelType type = br.GetEnum32 <ModelType>(br.Position + 8); switch (type) { case ModelType.MapPiece: var mapPiece = new Model.MapPiece(br, MSBVersion.MSBVersionBB); MapPieces.Add(mapPiece); return(mapPiece); case ModelType.Object: var obj = new Model.Object(br, MSBVersion.MSBVersionBB); Objects.Add(obj); return(obj); case ModelType.Enemy: var enemy = new Model.Enemy(br, MSBVersion.MSBVersionBB); Enemies.Add(enemy); return(enemy); case ModelType.Item: var enemy2 = new Model.Enemy(br); Enemies.Add(enemy2); return(enemy2); case ModelType.Player: var player = new Model.Player(br, MSBVersion.MSBVersionBB); Players.Add(player); return(player); case ModelType.Collision: var collision = new Model.Collision(br, MSBVersion.MSBVersionBB); Collisions.Add(collision); return(collision); /* * case ModelType.Other: * var other = new Model.Other(br); * Others.Add(other); * return other; */ default: return(null); //throw new NotImplementedException($"Unsupported model type: {type}"); } }
//Metod för utritning av Items på kartan samt sättande spelarens Itemtarget private void DrawItems(float a_elapsedTime) { List <Model.Item> items = m_gameModel.m_itemSystem.m_items; Model.Player player = m_gameModel.m_playerSystem.m_player; foreach (Model.Item item in items) { if (m_inputHandler.MouseIsOver(m_camera.VisualizeRectangle(item.ThisItem.Bounds))) { m_inputHandler.MouseIsOverLoot = true; } //Kontrollerar om spelaren har targetat ett item. if (m_inputHandler.DidGetTargetedByLeftClick(m_camera.VisualizeRectangle(item.ThisItem.Bounds))) { player.ItemTarget = item; } if (player.ItemTarget == item) { if (m_inputHandler.DidGetTargetedByLeftClick(m_camera.VisualizeRectangle(item.ThisItem.Bounds)) && player.ItemTarget.ThisItem.Bounds.Intersects(player.CollisionArea) && !m_lootWatch.IsRunning) { item.WasLooted = true; } else { item.WasLooted = false; } } if (item.GetType() == Model.GameModel.ARMOR) { Model.Armor Armor = item as Model.Armor; if (Armor.Type == Model.Armor.HEAD_ARMOR) { Vector2 position = m_camera.VisualizeCordinates(Armor.ThisItem.Bounds.Location.X, Armor.ThisItem.Bounds.Location.Y); int itemAnimation = 0; itemAnimation = AnimationSystem.FACING_CAMERA; m_animationSystem.UpdateAndDraw(a_elapsedTime, Color.White, position, itemAnimation, AnimationSystem.ITEM_PURPLE_CHEST); } } } }
public UIView(SpriteBatch a_spriteBatch, Camera a_camera, InputHandler a_inputHandler, Model.GameModel a_gameModel, Conversation a_conversation) { this.m_spriteBatch = a_spriteBatch; this.m_keyPositions = new Vector2[7]; this.m_camera = a_camera; this.m_inputHandler = a_inputHandler; this.m_activeSpells = a_gameModel.m_playerSystem.m_spellSystem.ActiveSpells; this.m_player = a_gameModel.m_playerSystem.m_player; this.m_questSystem = a_gameModel.m_questSystem; this.m_worldItems = a_gameModel.m_itemSystem.m_items; this.m_currentMap = a_gameModel.m_level.CurrentMap(); this.m_rightClickWatch = new Stopwatch(); this.m_conversation = a_conversation; }
/// <summary> /// Method for drawing of map Items as well as setting the players item targets /// </summary> /// <param name="elapsedTime">Elapsed time in milleseconds</param> private void DrawItems(float elapsedTime, Model.Player player) { List <Model.Item> items = _gameModel.ItemSystem._items; foreach (Model.Item item in items) { if (_inputHandler.MouseIsOver(_camera.VisualizeRectangle(item.ThisItem.Bounds))) { _inputHandler.MouseIsOverLoot = true; } //Checks if the player targeted an item if (_inputHandler.DidGetTargetedByLeftClick(_camera.VisualizeRectangle(item.ThisItem.Bounds))) { player.ItemTarget = item; } if (player.ItemTarget == item) { if (_inputHandler.DidGetTargetedByLeftClick(_camera.VisualizeRectangle(item.ThisItem.Bounds)) && player.ItemTarget.ThisItem.Bounds.Intersects(player.CollisionArea) && !_lootWatch.IsRunning) { item.WasLooted = true; } else { item.WasLooted = false; } } if (item.GetType() == Model.GameModel.ARMOR) { Model.Armor Armor = item as Model.Armor; if (Armor.Type == Model.Armor.HEAD_ARMOR) { Vector2 position = _camera.VisualizeCordinates(Armor.ThisItem.Bounds.Location.X, Armor.ThisItem.Bounds.Location.Y); Model.State itemAnimation = 0; itemAnimation = Model.State.FACING_CAMERA; _animationSystem.UpdateAndDraw(elapsedTime, Color.White, position, itemAnimation, AnimationSystem.Texture.ITEM_PURPLE_CHEST); } } } }
private void ParsePlayersInfo(Response response) { if (response != null) { // Strip header byte header = response.GetNextByte(); if (header == ResponseHeader) { byte numberOfPlayers = response.GetNextByte(); for (byte i = 0; i < numberOfPlayers; i++) { var player = new Model.Player(); player.Index = response.GetNextByte(); player.Name = response.GetNextString(); player.Score = response.GetNextInt(); player.Duration = TimeSpan.FromSeconds(response.GetNextFloat()); _ServerModel.Players.Add(player); } } else throw new ArgumentException("Expect 0x44"); } }
private void Init() { // add event handlers pbMap.MouseDown += new MouseEventHandler(mapPicBox_MouseDown); pbMap.MouseMove += new MouseEventHandler(mapPicBox_MouseMove); pbMap.MouseHover += new EventHandler(mapPicBox_MouseHover); pbMap.MouseUp += new MouseEventHandler(mapPicBox_MouseUp); this.KeyDown += new KeyEventHandler(MapEditor_KeyDown); this.KeyPreview = true; FormClosing += new FormClosingEventHandler(MapEditor_FormClosing); // create tooltips for tools ToolTip toolTips = new ToolTip(); toolTips.AutoPopDelay = 5000; toolTips.InitialDelay = 1000; toolTips.ReshowDelay = 500; toolTips.ShowAlways = true; toolTips.SetToolTip(btnToolSelection, "Selection(S)"); toolTips.SetToolTip(btnToolBrush, "Brush(B)"); toolTips.SetToolTip(btnToolEraser, "Eraser(E)"); toolTips.SetToolTip(btnToolFill, "Fill(F)"); toolTips.SetToolTip(btnToolSelectTile, "Select Tile(T)"); // initialized some variables grid_on = true; show_walkable_on = false; isIsometric = false; choosingPlayer = false; choosingPlayer = false; choosingBomb = false; choosingCoin = false; choosingBullet = false; selected_tile = null; selection = new Controller.SelectionTool(); // select brush as default tool SelectTool(ToolType.selection); backup_map = new Model.Map(); undo = new Stack<Model.HistoryNode>(); undoToolStripMenuItem.Enabled = false; redo = new Stack<Model.HistoryNode>(); redoToolStripMenuItem.Enabled = false; clipboard = new Model.Clipboard(); pasteToolStripMenuItem.Enabled = false; saveMapToolStripMenuItem.Enabled = false; tile_library = new Model.Tile[0]; playerCount = 0; monstersCount = 0; bombsCount = 0; coinsCount = 0; bulletsCount = 0; player = new Model.Player(); monsters = new List<Model.Monster>(); bombs = new List<Model.Bomb>(); coins = new List<Model.CoinGift>(); bullets = new List<Model.BulletGift>(); codesGenerator = new Controller.CodesGenerator(map, map_name, map_width, map_height, tile_library, tile_width, tile_height, tbCode, player, monsters, coins, bullets, bombs); }
public void ClearMovables() { PlayerR = new Model.Player(true); //TODO Choose AI players PlayerG = new Model.Player(false); PlayerY = new Model.Player(false); PlayerB = new Model.Player(false); Forests = new List<Model.Forest>(); Barricades = new List<Model.Barricade>(); SelectableFields = new List<Model.Field>(); SelectablePawns = new List<Model.Pawn>(); SelectedBarricade = null; SelectedPawn = null; }
private void GameMainThread() { Packet.Packet packet = null; while (State >= State.Begun) { lock (IdleLock) { packet = Network.Read(); if (packet == null) { IsIdle = true; Monitor.Wait(IdleLock); continue; } } if (packet is Packet.Server.KeyPacket) { var _packet = packet as Packet.Server.KeyPacket; Network.Crypt(_packet.Key); } else if (packet is Packet.Server.CharSelectInfo) { var _packet = packet as Packet.Server.CharSelectInfo; State = State.Lobby; if (Connected != null && _packet.List != null) Connected(_packet.List); } else if (packet is Packet.Server.CharMoveToLocation) { var _packet = packet as Packet.Server.CharMoveToLocation; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { creature.Destination = _packet.Destination; creature.MoveTarget = 0; if (_packet.Position == _packet.Destination) { creature.IsMoving = false; if (FinishMoving != null) FinishMoving(creature); } else { creature.IsMoving = true; creature.LastMoveTime = System.DateTime.Now; if (StartMoving != null) StartMoving(creature); } } else { Logger.Warn("Creature not found"); } } else if (packet is Packet.Server.CharInfo) { var _packet = packet as Packet.Server.CharInfo; var character = World[_packet.ObjectId] as Model.OtherPlayer; if (character == null) World.Add(character = new Model.OtherPlayer() { ObjectId = _packet.ObjectId }); // mapping Packet => CharInfo character.Position = _packet.Position; character.Heading = _packet.Heading; character.ObjectId = _packet.ObjectId; character.Name = _packet.Name; character.Race = _packet.Race; character.Gender = _packet.Gender; character.ClassId = _packet.Class; character.Equipment = new Model.Equipment() { Underwear = _packet.Underwear, Head = _packet.Head, RightHand = _packet.RightHand, LeftHand = _packet.LeftHand, Gloves = _packet.Gloves, Chest = _packet.Chest, Legs = _packet.Legs, Feet = _packet.Feet, Back = _packet.Back, BothHand = _packet.BothHand, Hair = _packet.Hair, }; character.InPvP = _packet.IsPvP; character.Karma = _packet.Karma; character.MAtkSpd = _packet.MAttackSpeed; character.PAtkSpd = _packet.PAttackSpeed; character.RunSpd = _packet.RunSpeed; character.WalkSpd = _packet.WalkSpeed; character.SwimRunSpd = _packet.SwimRunSpeed; character.SwimWalkSpd = _packet.SwimWalkSpeed; character.FlRunSpd = _packet.FlRunSpeed; character.FlWalkSpd = _packet.FlWalkSpeed; character.FlyRunSpd = _packet.FlyRunSpeed; character.FlyWalkSpd = _packet.FlyWalkSpeed; character.MoveSpdMult = _packet.MoveSpeedMult; character.AtkSpdMult = _packet.AttackSpeedMult; character.CollisionRadius = _packet.CollisionRadius; character.CollisionHeight = _packet.CollisionHeight; character.HairStyle = _packet.HairSytle; character.HairColor = _packet.HairColor; character.FaceType = _packet.FaceType; character.Title = _packet.Title; character.ClanId = _packet.ClanId; character.ClanCrestId = _packet.ClanCrestId; character.AllyId = _packet.AllyId; character.AllyCrestId = _packet.AllyCrestId; //ch_inf.SiegeFlags = cip.SiegeFlags; character.IsSitting = !_packet.IsStanding; character.IsRunning = _packet.IsRunning; character.IsInCombat = _packet.IsInCombat; character.IsAlikeDead = _packet.IsAlikeDead; character.IsInvisible = _packet.IsInvisible; character.MountType = _packet.MountType; character.PrivateStore = _packet.PrivateStore; character.Cubics = _packet.Cubics.Cast<int>().ToList<int>(); character.IsFindParty = _packet.IsFindParty; character.AbnormalEffects = _packet.AbnormalEffects; character.RecLeft = _packet.RecommendLeft; character.RecAmount = _packet.RecommendAmount; character.MaxCp = _packet.MaxCp; character.Cp = _packet.Cp; character.Enchant = _packet.EnchantAmount; character.TeamCircle = _packet.TeamCircle; character.LargeCrestId = _packet.ClanLargeCrestId; character.IsHeroIcon = _packet.IsHeroIcon; character.IsHeroGlow = _packet.IsHeroGlow; character.IsFishing = _packet.IsFishing; character.Fish = _packet.Fish; character.NameColor = _packet.NameColor; if (CreatureInfo != null) CreatureInfo(character); } else if (packet is Packet.Server.UserInfo) { var _packet = packet as Packet.Server.UserInfo; Model.Player me = World.Me; if (me == null) World.Add(World.Me = me = new Model.Player()); // mapping Packet => Model.Player me.Name = _packet.Name; me.Title = _packet.Title; me.Heading = _packet.Heading; me.ObjectId = _packet.ObjectId; me.NameColor = _packet.NameColor; me.Race = _packet.Race; me.ClassId = _packet.ClassId; me.BaseClassId = _packet.BaseClassId; me.Gender = _packet.Gender; me.MountType = _packet.MountType; me.PrivateStore = _packet.PrivateStore; me.ClanId = _packet.ClanId; me.ClanCrestId = _packet.ClanCrestId; me.AllyId = _packet.AllyId; me.AllyCrestId = _packet.AllyCrestId; me.LargeCrestId = _packet.LargeCrestId; me.MoveSpdMult = _packet.MoveSpdMult; me.AtkSpdMult = _packet.AtkSpdMult; me.CollisionRadius = _packet.CollisionRadius; me.CollisionHeight = _packet.CollisionHeight; me.HairStyle = _packet.HairStyle; me.HairColor = _packet.HairColor; me.FaceType = _packet.FaceType; me.Level = _packet.Level; me.MaxHp = _packet.MaxHp; me.Hp = _packet.Hp; me.MaxMp = _packet.MaxMp; me.Mp = _packet.Mp; me.MaxCp = _packet.MaxCp; me.Cp = _packet.Cp; me.Xp = _packet.Xp; me.Sp = _packet.Sp; me.Load = _packet.Load; me.MaxLoad = _packet.MaxLoad; me.PvP = _packet.PvP; me.Pk = _packet.Pk; me.PAtk = _packet.PAtk; me.PAtkSpd = _packet.PAtkSpd; me.PDef = _packet.PDef; me.Evasion = _packet.Evasion; me.Accuracy = _packet.Accuracy; me.Focus = _packet.Focus; me.MAtk = _packet.MAtk; me.MAtkSpd = _packet.MAtkSpd; me.MDef = _packet.MDef; me.Karma = _packet.Karma; me.RunSpd = _packet.RunSpd; me.WalkSpd = _packet.WalkSpd; me.SwimRunSpd = _packet.SwimRunSpd; me.SwimWalkSpd = _packet.SwimWalkSpd; me.FlRunSpd = _packet.FlRunSpd; me.FlWalkSpd = _packet.FlWalkSpd; me.FlyRunSpd = _packet.FlyRunSpd; me.FlyWalkSpd = _packet.FlyWalkSpd; me.InPvP = _packet.InPvP; me.IsFishing = _packet.IsFishing; me.IsHeroIcon = _packet.IsHeroIcon; me.IsHeroGlow = _packet.IsHeroGlow; me.IsFindParty = _packet.IsFindParty; me.IsClanLeader = _packet.IsClanLeader; me.HasDwarfCraft = _packet.HasDwarfCraft; me.Position = _packet.Position; me.Fish = _packet.Fish; me.INT = _packet.INT; me.STR = _packet.STR; me.CON = _packet.CON; me.MEN = _packet.MEN; me.DEX = _packet.DEX; me.WIT = _packet.WIT; ((Model.Character)me).Equipment = new Model.Equipment() { Underwear = _packet.Underwear.ItemId, RightEaring = _packet.RightEaring.ItemId, LeftEaring = _packet.LeftEaring.ItemId, Neck = _packet.Neck.ItemId, RightFinger = _packet.RightFinger.ItemId, LeftFinger = _packet.LeftFinger.ItemId, Head = _packet.Head.ItemId, RightHand = _packet.RightHand.ItemId, LeftHand = _packet.LeftHand.ItemId, Gloves = _packet.Gloves.ItemId, Chest = _packet.Chest.ItemId, Legs = _packet.Legs.ItemId, Feet = _packet.Feet.ItemId, Back = _packet.Back.ItemId, BothHand = _packet.BothHand.ItemId, Hair = _packet.Hair.ItemId, }; me.Equipment = new Model.Equipment() { Underwear = _packet.Underwear.ObjectId, RightEaring = _packet.RightEaring.ObjectId, LeftEaring = _packet.LeftEaring.ObjectId, Neck = _packet.Neck.ObjectId, RightFinger = _packet.RightFinger.ObjectId, LeftFinger = _packet.LeftFinger.ObjectId, Head = _packet.Head.ObjectId, RightHand = _packet.RightHand.ObjectId, LeftHand = _packet.LeftHand.ObjectId, Gloves = _packet.Gloves.ObjectId, Chest = _packet.Chest.ObjectId, Legs = _packet.Legs.ObjectId, Feet = _packet.Feet.ObjectId, Back = _packet.Back.ObjectId, BothHand = _packet.BothHand.ObjectId, Hair = _packet.Hair.ObjectId, }; me.RecLeft = _packet.RecLeft; me.RecAmount = _packet.RecAmount; me.InventoryLimit = _packet.InventoryLimit; me.SpecialEffects = _packet.SpecialEffects; me.AbnormalEffects = _packet.AbnormalEffects; me.AccessLevel = _packet.AccessLevel; me.Enchant = _packet.Enchant; me.TeamCircle = _packet.TeamCircle; me.Cubics = _packet.Cubics; if (!World.Contains(World.Me.ObjectId)) World.Add(World.Me); // Run event if (CreatureInfo != null) CreatureInfo(World.Me); } else if (packet is Packet.Server.Attack) { var _packet = packet as Packet.Server.Attack; int attackerId = _packet.AttackerId; int targetId = _packet.Hits[0].TargetId; //lets check who is attacking what and set things as needed var creature = World[attackerId] as Model.Creature; if (creature != null) { if (creature.TargetId == 0) creature.TargetId = targetId; creature.IsInCombat = true; if (Attack != null) Attack(creature); } } else if (packet is Packet.Server.Die) { var _packet = packet as Packet.Server.Die; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { creature.Destination = creature.Position; creature.IsAlikeDead = true; creature.IsMoving = false; var npc = creature as Model.Npc; if (npc != null) npc.IsSpoiled = _packet.IsSpoiled; if (Die != null) Die(creature, creature == World.Me ? (Lineage.ReturnPoint?)_packet.Points : null); } } else if (packet is Packet.Server.Revive) { var _packet = packet as Packet.Server.Revive; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { creature.IsAlikeDead = false; if (Revive != null) Revive(creature); } } else if (packet is Packet.Server.SpawnItem) { var _packet = packet as Packet.Server.SpawnItem; var item = World[_packet.ObjectId] as Model.Item; if (item == null) World.Add(item = new Model.Item() { ObjectId = _packet.ObjectId }); item.ItemId = _packet.ItemId; item.Count = _packet.Count; item.Position = _packet.Position; item.IsStackable = _packet.IsStackable; if (ItemInfo != null) ItemInfo(item); } else if (packet is Packet.Server.DropItem) { var _packet = packet as Packet.Server.DropItem; var item = World[_packet.ObjectId] as Model.Item; if (item == null) World.Add(item = new Model.Item() { ObjectId = _packet.ObjectId }); item.DroppedBy = _packet.DroppedBy; item.ItemId = _packet.ItemId; item.Position = _packet.Position; item.IsStackable =_packet.IsStackable; item.Count = _packet.Count; if (ItemInfo != null) ItemInfo(item); } else if (packet is Packet.Server.GetItem) { var _packet = packet as Packet.Server.GetItem; var item = World[_packet.ObjectId] as Model.Item; var creature = World[_packet.PlayerId] as Model.Creature; if (item != null) { if (Pickup != null) Pickup(item, creature, _packet.Position); if (creature != World.Me) World.Remove(item); } } else if (packet is Packet.Server.StatusUpdate) { var _packet = packet as Packet.Server.StatusUpdate; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { var me = World.Me; foreach (var pair in _packet.Attributes) { int key = pair.Key; int value = pair.Value; switch (key) // ToDo enum { case 0x01: creature.Level = value; break; case 0x02: me.Xp = value; break; case 0x03: me.STR = value; break; case 0x04: me.DEX = value; break; case 0x05: me.CON = value; break; case 0x06: me.INT = value; break; case 0x07: me.WIT = value; break; case 0x08: me.MEN = value; break; case 0x09: creature.Hp = value; break; case 0x0A: creature.MaxHp = value; break; case 0x0B: creature.Mp = value; break; case 0x0C: creature.MaxMp = value; break; case 0x0D: me.Sp = value; break; case 0x0E: me.Load = value; break; case 0x0F: me.MaxLoad = value; break; case 0x11: me.PAtk = value; break; case 0x12: creature.PAtkSpd = value; break; case 0x13: me.PDef = value; break; case 0x14: me.Evasion = value; break; case 0x15: me.Accuracy = value; break; case 0x16: me.Focus = value; break; case 0x17: me.MAtk = value; break; case 0x18: creature.MAtkSpd = value; break; case 0x19: me.MDef = value; break; case 0x1A: ((Model.Character)creature).InPvP = value != 0; break; case 0x1B: ((Model.Character)creature).Karma = value; break; case 0x21: creature.Cp = value; break; case 0x22: creature.MaxCp = value; break; } } if (CreatureUpdate != null) CreatureUpdate(creature); } } else if (packet is Packet.Server.NpcHtmlMessage) { var _packet = packet as Packet.Server.NpcHtmlMessage; //NPC_Chat.Npc_Chat(hmp.MessageId, hmp.Content); } else if (packet is Packet.Server.DeleteObject) { var _packet = packet as Packet.Server.DeleteObject; Model.Object obj = World[_packet.ObjectId]; if (obj != null) { World.Remove(obj); if (ObjectRemoved != null) ObjectRemoved(obj); } else Logger.Warn("Object Removed, but not found"); } else if (packet is Packet.Server.CharSelected) { var _packet = packet as Packet.Server.CharSelected; Model.Player me = World.Me; if (me == null) World.Add(World.Me = me = new Model.Player()); // mapping Packet => Model.Player me.Name = _packet.Name; me.Title = _packet.Title; me.ObjectId = _packet.ObjectId; me.SessionId = _packet.SessionId; me.Position = _packet.Position; me.Gender = _packet.Gender; me.Race = _packet.Race; me.BaseClassId = _packet.BaseClassId; me.Hp = _packet.Hp; me.Mp = _packet.Mp; me.Sp = _packet.Sp; me.Xp = _packet.Xp; me.Level = _packet.Level; me.Karma = _packet.Karma; me.INT = _packet.INT; me.STR = _packet.STR; me.CON = _packet.CON; me.MEN = _packet.MEN; me.DEX = _packet.DEX; me.WIT = _packet.WIT; ((Model.Character)me).Equipment = new Model.Equipment() { Underwear = _packet.Underwear.ItemId, RightEaring = _packet.RightEaring.ItemId, LeftEaring = _packet.LeftEaring.ItemId, Neck = _packet.Neck.ItemId, RightFinger = _packet.RightFinger.ItemId, LeftFinger = _packet.LeftFinger.ItemId, Head = _packet.Head.ItemId, RightHand = _packet.RightHand.ItemId, LeftHand = _packet.LeftHand.ItemId, Gloves = _packet.Gloves.ItemId, Chest = _packet.Chest.ItemId, Legs = _packet.Legs.ItemId, Feet = _packet.Feet.ItemId, Back = _packet.Back.ItemId, BothHand = _packet.BothHand.ItemId, Hair = _packet.Hair.ItemId }; me.Equipment.Underwear = _packet.Underwear.ObjectId; me.Equipment.RightEaring = _packet.RightEaring.ObjectId; me.Equipment.LeftEaring = _packet.LeftEaring.ObjectId; me.Equipment.Neck = _packet.Neck.ObjectId; me.Equipment.RightFinger = _packet.RightFinger.ObjectId; me.Equipment.LeftFinger = _packet.LeftFinger.ObjectId; me.Equipment.Head = _packet.Head.ObjectId; me.Equipment.RightHand = _packet.RightHand.ObjectId; me.Equipment.LeftHand = _packet.LeftHand.ObjectId; me.Equipment.Gloves = _packet.Gloves.ObjectId; me.Equipment.Chest = _packet.Chest.ObjectId; me.Equipment.Legs = _packet.Legs.ObjectId; me.Equipment.Feet = _packet.Feet.ObjectId; me.Equipment.Back = _packet.Back.ObjectId; me.Equipment.BothHand = _packet.BothHand.ObjectId; me.Equipment.Hair = _packet.Hair.ObjectId; me.ClanId = _packet.ClanId; me.IsActive = _packet.IsActive; State = State.World; MoveThread.Start(); RefreshManorList(); RefreshQuestList(); Network.Send(new Packet.Client.EnterWorld()); RefreshSkillList(); if (EnterWorld != null) EnterWorld(); } else if (packet is Packet.Server.NpcInfo) { var _packet = packet as Packet.Server.NpcInfo; var npc = World[_packet.ObjectId] as Model.Npc; if (npc == null) World.Add(npc = new Model.Npc() { ObjectId = _packet.ObjectId }); npc.NpcId = _packet.NpcId; npc.ObjectId = _packet.ObjectId; npc.Heading = _packet.Heading; npc.Name = _packet.Name; npc.Title = _packet.Title; npc.Position = _packet.Position; npc.MAtkSpd = _packet.MAtkSpd; npc.PAtkSpd = _packet.PAtkSpd; npc.RunSpd = _packet.RunSpd; npc.WalkSpd = _packet.WalkSpd; npc.SwimRunSpd = _packet.SwimRunSpd; npc.SwimWalkSpd = _packet.SwimWalkSpd; npc.FlRunSpd = _packet.FlRunSpd; npc.FlWalkSpd = _packet.FlWalkSpd; npc.FlyRunSpd = _packet.FlyRunSpd; npc.FlyWalkSpd = _packet.FlyWalkSpd; npc.RightHand = _packet.RightHand; npc.BothHand = _packet.BothHand; npc.LeftHand = _packet.LeftHand; npc.MoveSpdMult = _packet.MoveSpdMult; npc.AtkSpdMult = _packet.AtkSpdMult; npc.CollisionRadius = _packet.CollisionRadius; npc.CollisionHeight = _packet.CollisionHeight; npc.IsAttackable = _packet.IsAttackable; npc.IsSummoned = _packet.IsSummoned; npc.IsAlikeDead = _packet.IsAlikeDead; npc.IsInCombat = _packet.IsInCombat; npc.IsRunning = _packet.IsRunning; npc.IsShowName = _packet.IsShowName; if (CreatureInfo != null) CreatureInfo(npc); } else if (packet is Packet.Server.ItemList) { var _packet = packet as Packet.Server.ItemList; var items = new List<Tuple<Model.Item, ItemUpdate>>(); foreach (var _item in _packet.Items) { var item = World[_item.ObjectId] as Model.Item; if (item == null) World.Add(item = new Model.Item() { ObjectId = _item.ObjectId }); item.ObjectId = _item.ObjectId; item.ItemId = _item.ItemId; item.Count = _item.Count; item.Slot = _item.Slot; item.Enchant = _item.Enchant; item.IsEquipped = _item.IsEquipped; item.Type1 = _item.Type1; item.Type2 = _item.Type2; item.Type3 = _item.Type3; item.Type4 = _item.Type4; items.Add(new Tuple<Model.Item, ItemUpdate>(item, ItemUpdate.Append)); } if (InventoryRefresh != null) InventoryRefresh(items); } else if (packet is Packet.Server.Sunrise) { var _packet = packet as Packet.Server.Sunrise; if (ChangeTime != null) ChangeTime(Lineage.DayTime.Night, null); } else if (packet is Packet.Server.Sunset) { var _packet = packet as Packet.Server.Sunset; if (ChangeTime != null) ChangeTime(Lineage.DayTime.Day, null); } else if (packet is Packet.Server.ActionFailed) { if (ActionFailed != null) ActionFailed(); } else if (packet is Packet.Server.InventoryUpdate) { var _packet = packet as Packet.Server.InventoryUpdate; var items = new List<Tuple<Model.Item, ItemUpdate>>(); foreach (var _item in _packet.Items) { var item = World[_item.ObjectId] as Model.Item; if (_item.Change == (int)ItemUpdate.Append || _item.Change == (int)ItemUpdate.Modify) { if (item == null) World.Add(item = new Model.Item() { ObjectId = _item.ObjectId }); item.ItemId = _item.ItemId; item.Count = _item.Count; item.Slot = _item.Slot; item.Enchant = _item.Enchant; item.IsEquipped = _item.IsEquipped; item.Type1 = _item.Type1; item.Type2 = _item.Type2; item.Type3 = _item.Type3; item.Type4 = _item.Type4; } // Если Drop, удалять объект нельзя // Тут ничего не делаем т.к. нахождение в инвентаре отслеживается по position, а та уже установлена items.Add(new Tuple<Model.Item, ItemUpdate>(item, (ItemUpdate)_item.Change)); } if (InventoryUpdate != null) InventoryUpdate(items); } else if (packet is Packet.Server.TeleportToLocation) { var _packet = packet as Packet.Server.TeleportToLocation; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { creature.Position = _packet.Position; if (creature.ObjectId == World.Me.ObjectId) { var me = World.Me; lock (World) { World.Clear(); World.Add(me); } Network.Send(new Packet.Client.ValidatePosition() { Position = World.Me.Position, Angle = World.Me.Heading }); Network.Send(new Packet.Client.Appearing()); } if (Teleported != null) Teleported(creature); } } else if (packet is Packet.Server.TargetSelected) { var _packet = packet as Packet.Server.TargetSelected; var creature = World[_packet.ObjectId] as Model.Creature; var target = World[_packet.TargetId] as Model.Creature; if (creature != null && target != null) if (creature.TargetId != target.ObjectId) { creature.TargetId = target.ObjectId; if (TargetChanged != null) TargetChanged(creature, target); } } else if (packet is Packet.Server.TargetUnselected) { var _packet = packet as Packet.Server.TargetUnselected; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { creature.TargetId = 0; // ToDo Target = null? if (TargetChanged != null) TargetChanged(creature, null); } } else if (packet is Packet.Server.AutoAttackStart) { var _packet = packet as Packet.Server.AutoAttackStart; var creature = World[_packet.TargetId] as Model.Creature; if (creature != null) creature.IsInCombat = true; } else if (packet is Packet.Server.AutoAttackStop) { var _packet = packet as Packet.Server.AutoAttackStop; var creature = World[_packet.TargetId] as Model.Creature; if (creature != null) creature.IsInCombat = false; } else if (packet is Packet.Server.SocialAction) { var _packet = packet as Packet.Server.SocialAction; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null && UsedSocialAction != null) UsedSocialAction(creature, _packet.Action); } else if (packet is Packet.Server.ChangeMoveType) { var _packet = packet as Packet.Server.ChangeMoveType; var character = World[_packet.ObjectId] as Model.Character; if (character != null) character.IsRunning = _packet.MoveType == Lineage.MoveType.Run; } else if (packet is Packet.Server.ChangeWaitType) { var _packet = packet as Packet.Server.ChangeWaitType; var character = World[_packet.ObjectId] as Model.Character; if (character != null) character.IsSitting = _packet.WaitType == Lineage.WaitType.Sit; } else if (packet is Packet.Server.AskJoinPledge) { var _packet = packet as Packet.Server.AskJoinPledge; var creature = World[_packet.ObjectId] as Model.Creature; if (QuestionAsked != null && creature != null) QuestionAsked(Lineage.Question.JoinClan, creature.Name, _packet.ClanName); else if (creature == null) Logger.Warn("Join a clan question author is not found."); } else if (packet is Packet.Server.AskJoinParty) { var _packet = packet as Packet.Server.AskJoinParty; if (QuestionAsked != null) QuestionAsked(Lineage.Question.JoinParty, _packet.LeaderName, _packet.PartyLoot.ToString()); } else if (packet is Packet.Server.ShortcutInit) { var _packet = packet as Packet.Server.ShortcutInit; foreach (Model.Shortcut shortcut in _packet.List) World.Shortcut[shortcut.Page, shortcut.Slot] = shortcut; } else if (packet is Packet.Server.StopMove) { var _packet = packet as Packet.Server.StopMove; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { creature.Position = _packet.Position; creature.Heading = _packet.Heading; creature.IsMoving = false; } } else if (packet is Packet.Server.MagicSkillUser) { var _packet = packet as Packet.Server.MagicSkillUser; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { creature.Casting = new Model.Casting() { SkillId = _packet.SkillId, SkillLevel = _packet.SkillLevel, Start = DateTime.Now, Length = _packet.CastTime }; if (creature == World.Me) { var skills = World.Me.Skills; lock (skills) if (skills.ContainsKey(_packet.SkillId)) { var skill = skills[_packet.SkillId]; if (_packet.ReuseDelay > TimeSpan.Zero) { skill.IsReady = false; if (skill.Reuse != null) skill.Reuse.Dispose(); skill.Reuse = new System.Timers.Timer(_packet.ReuseDelay.TotalMilliseconds) { AutoReset = false }; skill.Reuse.Elapsed += (object sender, System.Timers.ElapsedEventArgs args) => { skill.IsReady = true; if (SkillReused != null) SkillReused(skill); }; skill.Reuse.Start(); } } else Logger.Warn(string.Format("Skill #{0} not found, but got in MagicSkillUser packet", _packet.SkillId)); } if (SkillStarted != null) SkillStarted(creature); } } else if (packet is Packet.Server.MagicSkillCanceld) { var _packet = packet as Packet.Server.MagicSkillCanceld; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { if (SkillCanceled != null) SkillCanceled(creature); creature.Casting = null; } } else if (packet is Packet.Server.CreatureSay) { var _packet = packet as Packet.Server.CreatureSay; if (ChatMessage != null) { Model.Creature author = World[_packet.ObjectId] as Model.Creature; ChatMessage(_packet.Type, _packet.Message, _packet.Author, author); } } else if (packet is Packet.Server.PartySmallWindowAll) { var _packet = packet as Packet.Server.PartySmallWindowAll; var party = World.Party = new Model.Party() { Loot = _packet.Loot }; foreach (var _member in _packet.Members) { var member = World[_member.ObjectId] as Model.Character; if (member == null) World.Add(member = new Model.OtherPlayer() { ObjectId = _member.ObjectId }); lock (party.Members) party.Members.Add(member); if (member.ObjectId == _packet.LeaderId) party.Leader = member; member.Name = _member.Name; member.Cp = _member.Cp; member.MaxCp = _member.MaxCp; member.Hp = _member.Hp; member.MaxHp = _member.MaxHp; member.Mp = _member.Mp; member.MaxMp = _member.MaxMp; member.Level = _member.Level; member.ClassId = _member.Class; } lock (party.Members) party.Members.Add(World.Me); if (PartyInfo != null) PartyInfo(null); } else if (packet is Packet.Server.PartySmallWindowAdd) { var _packet = packet as Packet.Server.PartySmallWindowAdd; var member = World[_packet.ObjectId] as Model.Character; if (member == null) World.Add(member = new Model.OtherPlayer() { ObjectId = _packet.ObjectId }); var party = World.Party; lock (party.Members) party.Members.Add(member); member.Name = _packet.Name; member.Cp = _packet.Cp; member.MaxCp = _packet.MaxCp; member.Hp = _packet.Hp; member.MaxHp = _packet.MaxHp; member.Mp = _packet.Mp; member.MaxMp = _packet.MaxMp; member.Level = _packet.Level; member.ClassId = _packet.Class; if (PartyAppend != null) PartyAppend(party, member); } else if (packet is Packet.Server.PartySmallWindowDeleteAll) { var _packet = packet as Packet.Server.PartySmallWindowDeleteAll; World.Party = null; if (PartyInfo != null) PartyInfo(null); } else if (packet is Packet.Server.PartySmallWindowDelete) { var _packet = packet as Packet.Server.PartySmallWindowDelete; var party = World.Party; var member = World[_packet.ObjectId] as Model.Character; if (member != null) { lock (party.Members) party.Members.Remove(member); if (PartyDelete != null) PartyDelete(party, member); } } else if (packet is Packet.Server.PartySmallWindowUpdate) { var _packet = packet as Packet.Server.PartySmallWindowUpdate; var member = World[_packet.ObjectId] as Model.Character; if (member != null) { member.Name = _packet.Name; member.Cp = _packet.Cp; member.MaxCp = _packet.MaxCp; member.Hp = _packet.Hp; member.MaxHp = _packet.MaxHp; member.Mp = _packet.Mp; member.MaxMp = _packet.MaxMp; member.Level = _packet.Level; member.ClassId = _packet.Class; if (PartyUpdate != null) PartyUpdate(World.Party, member); } } else if (packet is Packet.Server.PledgeShowMemberListAll) { var _packet = packet as Packet.Server.PledgeShowMemberListAll; Model.Ally ally = !_packet.InAlly ? null : new Model.Ally() { Id = _packet.AllyId, Name = _packet.AllyName, CrestId = _packet.AllyCrestId }; Model.Clan clan = new Model.Clan() { Id = _packet.ClanId, Level = _packet.ClanLevel, CrestId = _packet.ClanCrestId, AllyId = _packet.InAlly ? _packet.AllyId : 0, Name = _packet.ClanName, Leader = _packet.LeaderName, InWar = _packet.InWar, HasCastle = _packet.HasCastle, HasClanhall = _packet.HasClanhall }; clan.Members = new Model.ClanMember[_packet.Members.Length]; for (int i = 0; i < _packet.Members.Length; i++) { clan.Members[i].ObjectId = _packet.Members[i].ObjectId; clan.Members[i].Name = _packet.Members[i].Name; clan.Members[i].Level = _packet.Members[i].Level; clan.Members[i].ClassId = _packet.Members[i].ClassId; clan.Members[i].IsOnline = _packet.Members[i].IsOnline; } if (ClanInfo != null) ClanInfo(clan, ally); } else if (packet is Packet.Server.SkillList) { var _packet = packet as Packet.Server.SkillList; var skills = World.Me.Skills; var list = new List<Model.Skill>(); lock (skills) foreach (Packet.Server.SkillList.SkillItem _skill in _packet.List) { Model.Skill skill = null; if (skills.ContainsKey(_skill.Id)) skill = skills[_skill.Id]; else skills.Add(_skill.Id, skill = new Model.Skill()); skill.SkillId = _skill.Id; skill.Level = _skill.Level; skill.IsActive = _skill.Active; } if (SkillList != null) SkillList(list); } else if (packet is Packet.Server.RestartResponse) { var _packet = packet as Packet.Server.RestartResponse; if (_packet.Reason == Packet.Server.RestartResponse.reason.Ok) { State = State.Lobby; if (Restarted != null) Restarted(); } else throw new NotImplementedException(); } else if (packet is Packet.Server.MoveToPawn) { var _packet = packet as Packet.Server.MoveToPawn; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { creature.IsMoving = true; creature.MoveTarget = _packet.TargetId; creature.LastMoveTime = System.DateTime.Now; } } else if (packet is Packet.Server.ValidateLocation) { var _packet = packet as Packet.Server.ValidateLocation; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { creature.Heading = _packet.Heading; creature.Position = new Library.Point( _packet.PositionX, _packet.PositionY, _packet.PositionZ ); } } else if (packet is Packet.Server.SystemMessage) { var _packet = packet as Packet.Server.SystemMessage; if (_packet.MessageId == 46) //TODO MAGIC CONST { //use skill //changing of bot state based on successful skill done elsewhere now } //Todo Spoiling failed / Spoiling condition has activated catch const int already_spoiled = 357; //TODO MAGIC CONST const int spoil_landed = 612; //TODO MAGIC CONST var npc = World[World.Me.TargetId] as Model.Npc; if (npc != null && (_packet.MessageId == already_spoiled || _packet.MessageId == spoil_landed)) npc.IsSpoiled = true; // object[] arguments = new object[_packet.Arguments.Length]; for (int i = 0; i < _packet.Arguments.Length; i++) { object argument = null; var pair = _packet.Arguments[i]; switch (pair.Key) { case Packet.Server.SystemMessage.type.Text: argument = (string)pair.Value; break; case Packet.Server.SystemMessage.type.Number: argument = ((int)pair.Value).ToString(); break; case Packet.Server.SystemMessage.type.NpcName: argument = new Model.Npc() { NpcId = (int)pair.Value }; break; case Packet.Server.SystemMessage.type.ItemName: argument = new Model.Item() { ItemId = (int)pair.Value }; break; case Packet.Server.SystemMessage.type.SkillName: argument = new Model.Skill() { SkillId = (int)pair.Value }; break; } arguments[i] = argument; } // if (SystemMessage != null) SystemMessage(_packet.MessageId, arguments); } else if (packet is Packet.Server.PledgeCrest) { var _packet = packet as Packet.Server.PledgeCrest; //throw new NotImplementedException(); //ToDo: Crests.Get_ClanCrest(buffe); } else if (packet is Packet.Server.ValidateLocationInVehicle) { var _packet = packet as Packet.Server.ValidateLocationInVehicle; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { creature.Heading = _packet.Heading; creature.Position = new Library.Point( _packet.PositionX, _packet.PositionY, _packet.PositionZ ); } } else if (packet is Packet.Server.MagicSkillLaunched) { var _packet = packet as Packet.Server.MagicSkillLaunched; var creature = World[_packet.ObjectId] as Model.Creature; if (creature != null) { if (SkillLaunched != null) SkillLaunched(creature); creature.Casting = null; } } else if (packet is Packet.Server.AskJoinFriend) { var _packet = packet as Packet.Server.AskJoinFriend; if (QuestionAsked != null) QuestionAsked(Lineage.Question.JoinFriend, _packet.PlayerName, null); } else if (packet is Packet.Server.Logout) { var _packet = packet as Packet.Server.Logout; Abort(); if (LoggedOut != null) LoggedOut(); } else if (packet is Packet.Server.PledgeInfo) { var _packet = packet as Packet.Server.PledgeInfo; lock (World.Clans) { Model.Clan clan = null; if (World.Clans.ContainsKey(_packet.ClanId)) clan = World.Clans[_packet.ClanId]; else World.Clans.Add(_packet.ClanId, clan = new Model.Clan()); clan.Name = _packet.ClanName; clan.Ally = _packet.AllyName; } // Crests.Get_ClanCrest(buffe); } else if (packet is Packet.Server.PledgeShowInfoUpdate) { var _packet = packet as Packet.Server.PledgeShowInfoUpdate; Model.Clan clan = null; lock (World.Clans) if (World.Clans.ContainsKey(_packet.ClanId)) clan = World.Clans[_packet.ClanId]; else World.Clans.Add(_packet.ClanId, clan = new Model.Clan()); clan.Id = _packet.ClanId; clan.CrestId = _packet.CrestId; clan.Level = _packet.ClanLevel; clan.HasCastle = _packet.HasCastle; clan.HasClanhall = _packet.HasClanhall; if (ClanUpdate != null) ClanUpdate(clan); } else if (packet is Packet.Server.MyTargetSelected) { var _packet = packet as Packet.Server.MyTargetSelected; var me = World.Me; var target = World[me.TargetId] as Model.Creature; if (target != null) target.NameColor = _packet.TargetColor; if (me.TargetId != _packet.ObjectId) { target = World[_packet.ObjectId] as Model.Creature; if (target != null && TargetChanged != null) TargetChanged(me, target); } } else if (packet is Packet.Server.PartyMemberPosition) { var _packet = packet as Packet.Server.PartyMemberPosition; foreach (var _member in _packet.Members) { var member = World[_member.ObjectId] as Model.Creature; if (member != null) member.Position = _member.Position; } } else if (packet is Packet.Server.AskJoinAlly) { var _packet = packet as Packet.Server.AskJoinAlly; if (QuestionAsked != null) QuestionAsked(Lineage.Question.JoinAlly, _packet.AllyName, null); } else if (packet is Packet.Server.AllyCrest) { var _packet = packet as Packet.Server.AllyCrest; //throw new NotImplementedException(); //ToDo: Crests.Get_AllyCrest(buffe); } else if (packet is Packet.Server.HennaInfo) { var _packet = packet as Packet.Server.HennaInfo; var me = World.Me; me.INT = _packet.INT; me.STR = _packet.STR; me.CON = _packet.CON; me.MEN = _packet.MEN; me.DEX = _packet.DEX; me.WIT = _packet.WIT; me.Symbols = new int[_packet.Symbols.Length]; for (int i = 0; i < me.Symbols.Length; i++) me.Symbols[i] = _packet.Symbols[i]; if (HennaInfo != null) HennaInfo(me.Symbols); } else if (packet is Packet.Server.SignsSky) { var _packet = packet as Packet.Server.SignsSky; if (ChangeTime != null) ChangeTime(null, _packet.Sky); } else if (packet is Packet.Server.GameGuardVerfy) { var _packet = packet as Packet.Server.GameGuardVerfy; Network.Send(new Packet.Client.GameGuardReply()); } else if (packet is Packet.Server.FriendRecvMsg) { var _packet = packet as Packet.Server.FriendRecvMsg; if (ChatMessage != null) ChatMessage(Lineage.Channel.Friend, _packet.Message, _packet.Sender, null); } } Dispose(); }
public override void Parse(byte[] buffer) { Reader reader = new Reader(new MemoryStream(buffer)); reader.ReadByte(); // Id int Count = reader.ReadInt32(); List = new List<Model.Player>(Count); for(int i = 0; i < Count; i++) { var c = new Model.Player(); c.Number = i; c.Name = reader.ReadString(Encoding.Unicode); c.ObjectId = reader.ReadInt32(); c.Login = reader.ReadString(Encoding.Unicode); c.SessionId = reader.ReadInt32(); c.ClanId = reader.ReadInt32(); reader.ReadInt32(); c.Gender = reader.ReadInt32() == 0 ? Lineage.Gender.Male : Lineage.Gender.Female; c.Race = reader.ReadInt32(); c.BaseClassId = reader.ReadInt32(); c.IsActive = reader.ReadInt32() != 0; c.Position = new Library.Point( reader.ReadInt32(), reader.ReadInt32(), reader.ReadInt32()); c.Hp = reader.ReadDouble(); c.Mp = reader.ReadDouble(); c.Sp = reader.ReadInt32(); c.Xp = reader.ReadInt32(); c.Level = reader.ReadInt32(); c.Karma = reader.ReadInt32(); reader.ReadInt32(); reader.ReadInt32(); reader.ReadInt32(); reader.ReadInt32(); reader.ReadInt32(); reader.ReadInt32(); reader.ReadInt32(); reader.ReadInt32(); reader.ReadInt32(); c.Equipment = new Model.Equipment() { Underwear = reader.ReadInt32(), RightEaring = reader.ReadInt32(), LeftEaring = reader.ReadInt32(), Neck = reader.ReadInt32(), RightFinger = reader.ReadInt32(), LeftFinger = reader.ReadInt32(), Head = reader.ReadInt32(), RightHand = reader.ReadInt32(), LeftHand = reader.ReadInt32(), Gloves = reader.ReadInt32(), Chest = reader.ReadInt32(), Legs = reader.ReadInt32(), Feet = reader.ReadInt32(), Back = reader.ReadInt32(), BothHand = reader.ReadInt32(), Hair = reader.ReadInt32(), }; ((Model.Character)c).Equipment = new Model.Equipment() { Underwear = reader.ReadInt32(), RightEaring = reader.ReadInt32(), LeftEaring = reader.ReadInt32(), Neck = reader.ReadInt32(), RightFinger = reader.ReadInt32(), LeftFinger = reader.ReadInt32(), Head = reader.ReadInt32(), RightHand = reader.ReadInt32(), LeftHand = reader.ReadInt32(), Gloves = reader.ReadInt32(), Chest = reader.ReadInt32(), Legs = reader.ReadInt32(), Feet = reader.ReadInt32(), Back = reader.ReadInt32(), BothHand = reader.ReadInt32(), Hair = reader.ReadInt32(), }; c.HairStyle = reader.ReadInt32(); c.HairColor = reader.ReadInt32(); c.FaceType = reader.ReadInt32(); c.MaxHp = (int)reader.ReadDouble(); c.MaxMp = (int)reader.ReadDouble(); c.ToRemove = reader.ReadInt32(); c.ClassId = reader.ReadInt32(); c.IsLastUsed = reader.ReadInt32() != 0; c.Enchant = reader.ReadByte(); List.Add(c); } }
public void Init() { _board = new Model.Board(); _player1 = new Model.Player { Name = "Frederick", ShortName = 'X', Id = 1 }; _player2 = new Model.Player { Name = "Edward", ShortName = 'O', Id = 2 }; CreateTilesOnBoard(); }