public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.CurrentIndex == player || player.CurrentGame.Data.Players[player].State == TankGameState.FRIST || player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) if (player.CurrentGame.Data.CurrentIndex == player || player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { player.CurrentGame.ReturnPacket(player, packet); player.CurrentGame.Data.Players[player].SetXY(packet.ReadInt(), packet.ReadInt()); //player.CurrentGame.Data.Players[player].StartMoving(); //GameServer.log.Error(string.Format("StopMoving {0} {1}",player.CurrentGame.Data.Players[player].X,player.CurrentGame.Data.Players[player].Y)); //由于同步问题,暂时去掉 //if (player.CurrentGame != null) // player.CurrentGame.Data.Players[player].StartMoving(); // GameServer.log.Error(string.Format("StopMoving {0} {1}", player.CurrentGame.Data.Players[player].X, player.CurrentGame.Data.Players[player].Y)); return(true); } else { //if (player.CurrentGame.Data.CurrentFire != null) //{ //int x = packet.ReadInt(); //player.CurrentGame.Data.Players[player].PosY = packet.ReadInt(); //} //return true; } return(false); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.CurrentFire == player && player.CurrentGame.Data.ReduceFireBombs) //{ // player.CurrentGame.ReturnPacket(player, packet); // int id = packet.ReadInt(); // player.CurrentGame.Data.BlastID = id; // player.CurrentGame.Data.BlastX = packet.ReadInt(); // player.CurrentGame.Data.BlastY = packet.ReadInt(); // FireBallInfo ballInfo = player.CurrentGame.Data.FireBall[id]; // ballInfo.EndTime = packet.ReadInt(); // if (player.CurrentGame.Data.BlastX > 0) // { // int space = ballInfo.GetSpace(player.CurrentGame.Data.BlastX, player.CurrentGame.Data.BlastY, ballInfo.EndTime); // if (space > 20) // { // GameServer.log.Error("子弹爆炸错误,距离为:" + space.ToString()); // player.Client.Disconnect(); // return false; // } // } // process.TankFire(player.CurrentGame, player, player.CurrentGame.Data.BlastX, player.CurrentGame.Data.BlastY, ballInfo); //} return true; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.CurrentFire == player && player.CurrentGame.Data.ReduceFireBombs) //{ // player.CurrentGame.ReturnPacket(player, packet); // int id = packet.ReadInt(); // player.CurrentGame.Data.BlastID = id; // player.CurrentGame.Data.BlastX = packet.ReadInt(); // player.CurrentGame.Data.BlastY = packet.ReadInt(); // FireBallInfo ballInfo = player.CurrentGame.Data.FireBall[id]; // ballInfo.EndTime = packet.ReadInt(); // if (player.CurrentGame.Data.BlastX > 0) // { // int space = ballInfo.GetSpace(player.CurrentGame.Data.BlastX, player.CurrentGame.Data.BlastY, ballInfo.EndTime); // if (space > 20) // { // GameServer.log.Error("子弹爆炸错误,距离为:" + space.ToString()); // player.Client.Disconnect(); // return false; // } // } // process.TankFire(player.CurrentGame, player, player.CurrentGame.Data.BlastX, player.CurrentGame.Data.BlastY, ballInfo); //} return(true); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.CurrentIndex == player || player.CurrentGame.Data.Players[player].State == TankGameState.FRIST || player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) if (player.CurrentGame.Data.CurrentIndex == player || player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { player.CurrentGame.ReturnPacket(player, packet); player.CurrentGame.Data.Players[player].SetXY(packet.ReadInt(), packet.ReadInt()); //player.CurrentGame.Data.Players[player].StartMoving(); //GameServer.log.Error(string.Format("StopMoving {0} {1}",player.CurrentGame.Data.Players[player].X,player.CurrentGame.Data.Players[player].Y)); //由于同步问题,暂时去掉 //if (player.CurrentGame != null) // player.CurrentGame.Data.Players[player].StartMoving(); // GameServer.log.Error(string.Format("StopMoving {0} {1}", player.CurrentGame.Data.Players[player].X, player.CurrentGame.Data.Players[player].Y)); return true; } else { //if (player.CurrentGame.Data.CurrentFire != null) //{ //int x = packet.ReadInt(); //player.CurrentGame.Data.Players[player].PosY = packet.ReadInt(); //} //return true; } return false; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.CurrentFire != null && player.CurrentGame.Data.CurrentIndex != player && !(player.CurrentGame.Data.Players[player].State == TankGameState.DEAD // && player.CurrentTeamIndex == player.CurrentGame.Data.CurrentIndex.CurrentTeamIndex) && player.CanFly == false) // return false; if (player.CurrentGame.Data.CurrentFire != null ) return false; if (player.CurrentGame.Data.CurrentIndex != player|| !player.CanFly) return false; player.CanFly = false; GSPacketIn pkg = player.Out.SendPropUseRespone(player, -2, -2, CARRY_TEMPLATE_ID); player.CurrentGame.SendToPlayerExceptSelf(pkg, player); //构造一个CARRY Item //ItemInfo CarryItem; //using (ProduceBussiness db = new ProduceBussiness()) //{ // ItemTemplateInfo[] CarryTemplate = db.GetSingleCategory(10); // foreach (ItemTemplateInfo tmp in CarryTemplate) // { // if (tmp.TemplateID == CARRY_TEMPLATE_ID) // { // CarryItem = ItemInfo.CreateFromTemplate(tmp, 1); // if (CarryItem == null) // { // return false; // } // //if (player.CurrentGame.Data.CurrentIndex == player) // // player.CurrentGame.Data.TotalDelay += CarryItem.Template.Property5; // ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(CarryItem.Template.Property1); // spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, CarryItem); // return true; // } // } //} ItemTemplateInfo templateInfo = Managers.PropItemMgr.FindAllProp(CARRY_TEMPLATE_ID); if (templateInfo != null) { ItemInfo CarryItem = ItemInfo.CreateFromTemplate(templateInfo, 1, (int)ItemAddType.TempProp); ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(CarryItem.Template.Property1); spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, CarryItem); return true; } return false; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.Players[player].State == TankGameState.FRIST) if (player.CurrentGame.GameState == eGameState.LOAD) { player.CurrentGame.ReturnPacket(player, packet); return(true); } return(false); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD || player.CurrentGame.GameState != eGameState.PLAY) return false; player.CurrentGame.ReturnPacket(player, packet); player.CurrentGame.Data.Players[player].Dead(); return true; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.Players[player].State == TankGameState.FRIST) if (player.CurrentGame.GameState == eGameState.LOAD) { player.CurrentGame.ReturnPacket(player, packet); return true; } return false; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //TankData data = player.CurrentGame.Data; //if (data.AddMultiple < 1 && data.CurrentFire == player) //{ // int id = packet.ReadInt(); // FireBallInfo fireBall = data.FireBall[id]; // fireBall.SetBallInfo(packet.ReadInt(), packet.ReadInt(), packet.ReadInt(), packet.ReadInt()); //} return false; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //TankData data = player.CurrentGame.Data; //if (data.AddMultiple < 1 && data.CurrentFire == player) //{ // int id = packet.ReadInt(); // FireBallInfo fireBall = data.FireBall[id]; // fireBall.SetBallInfo(packet.ReadInt(), packet.ReadInt(), packet.ReadInt(), packet.ReadInt()); //} return(false); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD || player.CurrentGame.GameState != eGameState.PLAY) { return(false); } player.CurrentGame.ReturnPacket(player, packet); player.CurrentGame.Data.Players[player].Dead(); return(true); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.CurrentIndex == player) { if (player.CurrentGame.Data.Players[player].Dander >= 200) { //player.CurrentGame.ReturnPacket(player, packet); player.CurrentGame.Data.Players[player].SetDander(-1); } return(true); } return(false); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { byte type = packet.ReadByte(); int x = packet.ReadInt(); int y = packet.ReadInt(); player.CurrentGame.Data.Players[player].SetXY(packet.ReadInt(), packet.ReadInt()); if (player.CurrentGame.Data.CurrentIndex == player || player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { player.CurrentGame.ReturnPacket(player, packet); return true; } return false; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD || player.CurrentGame.GameState != eGameState.PLAY) // return false; //GSPacketIn pkg = new GSPacketIn((byte)ePackageType.GAME_CMD, player.Client.Player.PlayerCharacter.ID); //pkg.WriteByte((byte)TankCmdType.SUICIDE); //pkg.WriteInt(player.Client.Player.PlayerCharacter.ID); //player.CurrentGame.SendToAll(pkg); //player.CurrentGame.Data.Players[player].Dead(); return true; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.CurrentIndex == player) { if (player.CurrentGame.Data.Players[player].Dander >= 200) { //player.CurrentGame.ReturnPacket(player, packet); player.CurrentGame.Data.Players[player].SetDander( -1); } return true; } return false; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD || player.CurrentGame.GameState != eGameState.PLAY) // return false; //GSPacketIn pkg = new GSPacketIn((byte)ePackageType.GAME_CMD, player.Client.Player.PlayerCharacter.ID); //pkg.WriteByte((byte)TankCmdType.SUICIDE); //pkg.WriteInt(player.Client.Player.PlayerCharacter.ID); //player.CurrentGame.SendToAll(pkg); //player.CurrentGame.Data.Players[player].Dead(); return(true); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.CurrentIndex == player && player.CurrentGame.Data.CurrentFire == null) { player.CurrentGame.Data.SpendTime(packet.ReadByte()); player.CurrentGame.Data.TotalDelay += 100; player.CurrentGame.Data.Players[player].SetDander(40); player.CurrentGame.ReturnPacket(player, packet); process.SendPlayFinish(player.CurrentGame, player); return(true); } return(false); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { byte type = packet.ReadByte(); int x = packet.ReadInt(); int y = packet.ReadInt(); player.CurrentGame.Data.Players[player].SetXY(packet.ReadInt(), packet.ReadInt()); if (player.CurrentGame.Data.CurrentIndex == player || player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { player.CurrentGame.ReturnPacket(player, packet); return(true); } return(false); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //int turnNum = packet.ReadInt(); //if (turnNum != player.CurrentGame.Data.TurnNum) // return false; //player.CurrentGame.Data.Players[player].TurnNum = turnNum; //int Count = player.CurrentGame.Data.GetPlayFinishCount(); //if (Count == player.CurrentGame.Data.Count) //{ // process.SendNextFire(player.CurrentGame, player.CurrentGame.Data.CurrentIndex); //} return true; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //int turnNum = packet.ReadInt(); //if (turnNum != player.CurrentGame.Data.TurnNum) // return false; //player.CurrentGame.Data.Players[player].TurnNum = turnNum; //int Count = player.CurrentGame.Data.GetPlayFinishCount(); //if (Count == player.CurrentGame.Data.Count) //{ // process.SendNextFire(player.CurrentGame, player.CurrentGame.Data.CurrentIndex); //} return(true); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.CurrentIndex == player && player.CurrentGame.Data.CurrentFire == null) { player.CurrentGame.Data.SpendTime(packet.ReadByte()); player.CurrentGame.Data.TotalDelay += 100; player.CurrentGame.Data.Players[player].SetDander(40); player.CurrentGame.ReturnPacket(player, packet); process.SendPlayFinish(player.CurrentGame, player); return true; } return false; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.CurrentIndex == player || player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { GSPacketIn pkg = packet.Clone(); pkg.ClientID = player.PlayerCharacter.ID; player.CurrentGame.SendToPlayerExceptSelf(pkg, player); byte type = packet.ReadByte(); int tx = packet.ReadInt(); int ty = packet.ReadInt(); byte dir = packet.ReadByte(); bool isLiving = packet.ReadBoolean(); Player p = player.CurrentGame.Data.Players[player]; switch (type) { case 0: case 1: //p.X = tx; //p.Y = ty; p.SetXY(tx, ty); if (player.CurrentGame != null) { p.StartMoving(); if (p.Y - ty > 1 || p.IsLiving != isLiving) { //GameServer.log.Error(string.Format("修正掉落: 动作类型 {0} 原始Y:{1} 最新Y:{2}", type, ty, p.Y)); //把服务器修正的掉落指令和客户掉落指令加以区分。 pkg = player.Out.SendPlayerMove(3, p.X, p.Y, 0, p.IsLiving); player.CurrentGame.SendToPlayerExceptSelf(pkg, player); } } break; case 2: if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { p.EndX = tx; p.EndY = ty; } break; } return(true); } return(false); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.CurrentIndex == player || player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { GSPacketIn pkg = packet.Clone(); pkg.ClientID = player.PlayerCharacter.ID; player.CurrentGame.SendToPlayerExceptSelf(pkg, player); byte type = packet.ReadByte(); int tx = packet.ReadInt(); int ty = packet.ReadInt(); byte dir = packet.ReadByte(); bool isLiving = packet.ReadBoolean(); Player p = player.CurrentGame.Data.Players[player]; switch (type) { case 0: case 1: //p.X = tx; //p.Y = ty; p.SetXY(tx, ty); if (player.CurrentGame != null) { p.StartMoving(); if (p.Y - ty > 1 || p.IsLiving != isLiving) { //GameServer.log.Error(string.Format("修正掉落: 动作类型 {0} 原始Y:{1} 最新Y:{2}", type, ty, p.Y)); //把服务器修正的掉落指令和客户掉落指令加以区分。 pkg = player.Out.SendPlayerMove(3, p.X, p.Y, 0, p.IsLiving); player.CurrentGame.SendToPlayerExceptSelf(pkg, player); } } break; case 2: if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { p.EndX = tx; p.EndY = ty; } break; } return true; } return false; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.CurrentIndex != player && player.CurrentGame.Data.Players[player].State != TankGameState.DEAD) // return false; player.CurrentGame.ReturnPacket(player, packet); MapGoodsInfo goods = null; if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { int arkID = packet.ReadInt(); goods = player.CurrentGame.Data.GetFallItemsID(arkID, player); } else { int arkID = packet.ReadInt(); int bombID = packet.ReadInt(); int time = packet.ReadInt(); goods = player.CurrentGame.Data.GetFallItemsID(arkID, player.PlayerCharacter.ID); } if (goods != null) { ItemTemplateInfo temp = Bussiness.Managers.ItemMgr.GetSingleGoods(goods.GoodsID); if (temp != null) { //如果是道具 if (temp.CategoryID == 10) { if (player.PropInventory.AddItemTemplate(temp) == null) { player.Out.SendMessage(Game.Server.Packets.eMessageType.ChatERROR, LanguageMgr.GetTranslation("Game.Server.SceneGames.TankHandle.PropFull")); } } else { player.TempInventory.AddItemTemplate(temp, goods); } } } return(true); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.CurrentIndex != player && player.CurrentGame.Data.Players[player].State != TankGameState.DEAD) // return false; player.CurrentGame.ReturnPacket(player, packet); MapGoodsInfo goods = null; if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { int arkID = packet.ReadInt(); goods = player.CurrentGame.Data.GetFallItemsID(arkID, player); } else { int arkID = packet.ReadInt(); int bombID = packet.ReadInt(); int time = packet.ReadInt(); goods = player.CurrentGame.Data.GetFallItemsID(arkID, player.PlayerCharacter.ID); } if (goods != null) { ItemTemplateInfo temp = Bussiness.Managers.ItemMgr.GetSingleGoods(goods.GoodsID); if (temp != null) { //如果是道具 if (temp.CategoryID == 10) { if (player.PropInventory.AddItemTemplate(temp) == null) { player.Out.SendMessage(Game.Server.Packets.eMessageType.ChatERROR, LanguageMgr.GetTranslation("Game.Server.SceneGames.TankHandle.PropFull")); } } else { player.TempInventory.AddItemTemplate(temp, goods); } } } return true; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) return false; //{ bool tag = packet.ReadBoolean(); if (player.CurrentGame.Data.CurrentFire == null && tag && player.CurrentGame.Data.CurrentIndex == player) { player.CurrentGame.Data.SpendTime(packet.ReadByte()); player.CurrentGame.Data.CurrentFire = player; } if (!tag && player.CurrentGame.Data.CurrentIndex == player) { process.SendPlayFinish(player.CurrentGame, player); } player.CurrentGame.ReturnPacket(player, packet); //} return false; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { return(false); } //{ bool tag = packet.ReadBoolean(); if (player.CurrentGame.Data.CurrentFire == null && tag && player.CurrentGame.Data.CurrentIndex == player) { player.CurrentGame.Data.SpendTime(packet.ReadByte()); player.CurrentGame.Data.CurrentFire = player; } if (!tag && player.CurrentGame.Data.CurrentIndex == player) { process.SendPlayFinish(player.CurrentGame, player); } player.CurrentGame.ReturnPacket(player, packet); //} return(false); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.CurrentIndex == player && player.CurrentGame.Data.Players[player].State != TankGameState.DEAD) { if (player.CurrentGame.Data.CurrentFire == null) player.CurrentGame.Data.CurrentFire = player; int x = packet.ReadInt(); int y = packet.ReadInt(); if (Math.Abs(player.CurrentGame.Data.Players[player].X - x) > 100) { //player.Out.SendMessage(eMessageType.ALERT, LanguageMgr.GetTranslation("Game.Server.SceneGames.TankHandle")); StatMgr.LogErrorPlayer(player.PlayerCharacter.ID, player.PlayerCharacter.UserName, player.PlayerCharacter.NickName, ItemRemoveType.FireError, player.CurrentGame.Data.Players[player].X.ToString() + " to " + x.ToString() + ",MapID:" + player.CurrentGame.Data.MapIndex); player.Client.Disconnect(); return false; ; } int force = packet.ReadInt(); int angle = packet.ReadInt(); TankData data = player.CurrentGame.Data; Tile shape = Managers.BallMgr.FindTile(data.CurrentBall.ID); GSPacketIn pkg = new GSPacketIn((byte)ePackageType.GAME_CMD, player.PlayerCharacter.ID); pkg.WriteByte((byte)TankCmdType.FIRE); pkg.WriteInt(data.AddBall); for (int i = 0; i < data.AddBall; i++) { if (player.CurrentGame.Data.ReduceFireBombs) { if (data.IsFastSpeed()) { StatMgr.LogErrorPlayer(player.PlayerCharacter.ID, player.PlayerCharacter.UserName, player.PlayerCharacter.NickName, ItemRemoveType.FastError, "MapID:" + player.CurrentGame.Data.MapIndex); player.Client.Disconnect(); return false; ; } data.FireLogin = true; double reforce = 1; int reangle = 0; if (i == 1) { reforce = 0.9; reangle = -5; } else if (i == 2) { reforce = 1.1; reangle = 5; } int vx = (int)(force * reforce * Math.Cos((double)(angle + reangle) / 180 * Math.PI)); int vy = (int)(force * reforce * Math.Sin((double)(angle + reangle) / 180 * Math.PI)); data.PhyID++; BombObject bomb = new BombObject(data.PhyID, BallMgr.GetBallType(data.CurrentBall.ID), data.Players[player], shape, data.CurrentBall.Radii, data.AddMultiple < 1, data.CurrentBall.Mass, data.CurrentBall.Weight, data.CurrentBall.Wind, data.CurrentBall.DragIndex, data.BallPower); bomb.SetXY(x, y); bomb.setSpeedXY(vx, vy); data.CurrentMap.AddPhysical(bomb); pkg.WriteBoolean(bomb.IsHole); pkg.WriteInt(bomb.Id); pkg.WriteInt(x); pkg.WriteInt(y); pkg.WriteInt(vx); pkg.WriteInt(vy); pkg.WriteInt(bomb.Actions.Count); foreach (BombAction action in bomb.Actions) { pkg.WriteInt(action.TimeInt); pkg.WriteInt(action.Type); pkg.WriteInt(action.Param1); pkg.WriteInt(action.Param2); pkg.WriteInt(action.Param3); pkg.WriteInt(action.Param4); } data.SetRunTime((int)bomb.RunTime); } } player.CurrentGame.SendToAll(pkg); data.FireLogin = false; if (data.Bombs || data.Players[player].State == TankGameState.DEAD) { data.TotalDelay += data.CurrentBall.Delay; process.SendArk(player.CurrentGame, player); player.PropInventory.AddItemTemplate(PropItemMgr.GetRandomFightProp(data.MapIndex)); data.Players[player].SetDander(20); process.SendPlayFinish(player.CurrentGame, player); //GSPacketIn pkgMsg = new GSPacketIn((byte)ePackageType.GAME_CMD); //pkgMsg.WriteByte((byte)TankCmdType.PLAYFINISH); //pkgMsg.WriteInt(player.CurrentGame.Data.TurnNum); //player.CurrentGame.SendToAll(pkgMsg); } return true; } return false; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.CurrentFire != null && player.CurrentGame.Data.CurrentIndex != player && !(player.CurrentGame.Data.Players[player].State == TankGameState.DEAD // && player.CurrentTeamIndex == player.CurrentGame.Data.CurrentIndex.CurrentTeamIndex) && player.CanFly == false) // return false; if (player.CurrentGame.Data.CurrentFire != null) { return(false); } if (player.CurrentGame.Data.CurrentIndex != player || !player.CanFly) { return(false); } player.CanFly = false; GSPacketIn pkg = player.Out.SendPropUseRespone(player, -2, -2, CARRY_TEMPLATE_ID); player.CurrentGame.SendToPlayerExceptSelf(pkg, player); //构造一个CARRY Item //ItemInfo CarryItem; //using (ProduceBussiness db = new ProduceBussiness()) //{ // ItemTemplateInfo[] CarryTemplate = db.GetSingleCategory(10); // foreach (ItemTemplateInfo tmp in CarryTemplate) // { // if (tmp.TemplateID == CARRY_TEMPLATE_ID) // { // CarryItem = ItemInfo.CreateFromTemplate(tmp, 1); // if (CarryItem == null) // { // return false; // } // //if (player.CurrentGame.Data.CurrentIndex == player) // // player.CurrentGame.Data.TotalDelay += CarryItem.Template.Property5; // ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(CarryItem.Template.Property1); // spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, CarryItem); // return true; // } // } //} ItemTemplateInfo templateInfo = Managers.PropItemMgr.FindAllProp(CARRY_TEMPLATE_ID); if (templateInfo != null) { ItemInfo CarryItem = ItemInfo.CreateFromTemplate(templateInfo, 1, (int)ItemAddType.TempProp); ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(CarryItem.Template.Property1); spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, CarryItem); return(true); } return(false); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.CurrentFire != null) // return false; //if (player.CurrentGame.Data.CurrentIndex != player && !(player.CurrentGame.Data.Players[player].State == TankGameState.DEAD && player.CurrentTeamIndex == player.CurrentGame.Data.CurrentIndex.CurrentTeamIndex)) // return false; //int type = packet.ReadByte(); ////int place = packet.ReadByte(); //int place = packet.ReadInt(); //int templateID = packet.ReadInt(); ////背包中的道具 //if (type == 1) //{ // if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) // return false; // ItemInfo item = player.PropBag.GetItemAt(place); // bool isInfinity = false; // if (item == null && place != -1) // return false; // //如果是全能道具 // if (place == -1 || item.TemplateID == 10200) // { // if (!player.BuffInventory.PropBag() && (item == null || !item.IsValidItem() || item.TemplateID != 10200)) // { // return false; // } // isInfinity = true; // if (item != null) // { // player.PropBag.UseItem(item); // player.PropBag.RefreshItem(item); // } // //ItemTemplateInfo template = Managers.PropItemMgr.FindAllProp(templateID); // ItemTemplateInfo template = Managers.PropItemMgr.FindPropBag(templateID); // item = ItemInfo.CreateFromTemplate(template, 1, (int)ItemAddType.FullProp); // } // if (item != null && item.Count > 0 && item.IsValidItem() && player.CurrentGame.Data.Players[player].ReduceEnergy(item.Template.Property4)) // { // player.CurrentGame.ReturnPacket(player, packet); // if (player.CurrentGame.Data.CurrentIndex == player) // player.CurrentGame.Data.TotalDelay += item.Template.Property5; // ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(item.Template.Property1); // spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, item); // if (!isInfinity) // { // player.PropBag.UseItem(item); // item.Count--; // if (item.Count <= 0) // { // player.RemoveAllItem(item, false, Game.Server.Statics.ItemRemoveType.Use,1); // } // else // { // Statics.StatMgr.LogItemRemove(item.TemplateID, Game.Server.Statics.ItemRemoveType.Use, 1); // player.PropBag.RefreshItem(item); // } // } // player.QuestInventory.CheckUseItem(item.TemplateID); // if (item.Template.Property6 == 1 && player == player.CurrentGame.Data.CurrentIndex) // process.SendPlayFinish(player.CurrentGame, player.CurrentGame.Data.CurrentIndex); // if (!isInfinity) // player.CurrentGame.Data.CostInfo(item); // return true; // } //} ////道具栏的道具 //else //{ // ItemInfo item = player.PropInventory.GetItemAt(place); // if (item != null && player.CurrentGame.Data.Players[player].ReduceEnergy(item.Template.Property4)) // { // player.CurrentGame.ReturnPacket(player, packet); // if (player.CurrentGame.Data.CurrentIndex == player) // player.CurrentGame.Data.TotalDelay += item.Template.Property5; // ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(item.Template.Property1); // spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, item); // player.PropInventory.RemoveItemAt(place); // player.QuestInventory.CheckUseItem(item.TemplateID); // if (item.Template.Property6 == 1 && player == player.CurrentGame.Data.CurrentIndex) // process.SendPlayFinish(player.CurrentGame, player.CurrentGame.Data.CurrentIndex); // return true; // } //} return false; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.CurrentFire != null) // return false; //if (player.CurrentGame.Data.CurrentIndex != player && !(player.CurrentGame.Data.Players[player].State == TankGameState.DEAD && player.CurrentTeamIndex == player.CurrentGame.Data.CurrentIndex.CurrentTeamIndex)) // return false; //int type = packet.ReadByte(); ////int place = packet.ReadByte(); //int place = packet.ReadInt(); //int templateID = packet.ReadInt(); ////背包中的道具 //if (type == 1) //{ // if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) // return false; // ItemInfo item = player.PropBag.GetItemAt(place); // bool isInfinity = false; // if (item == null && place != -1) // return false; // //如果是全能道具 // if (place == -1 || item.TemplateID == 10200) // { // if (!player.BuffInventory.PropBag() && (item == null || !item.IsValidItem() || item.TemplateID != 10200)) // { // return false; // } // isInfinity = true; // if (item != null) // { // player.PropBag.UseItem(item); // player.PropBag.RefreshItem(item); // } // //ItemTemplateInfo template = Managers.PropItemMgr.FindAllProp(templateID); // ItemTemplateInfo template = Managers.PropItemMgr.FindPropBag(templateID); // item = ItemInfo.CreateFromTemplate(template, 1, (int)ItemAddType.FullProp); // } // if (item != null && item.Count > 0 && item.IsValidItem() && player.CurrentGame.Data.Players[player].ReduceEnergy(item.Template.Property4)) // { // player.CurrentGame.ReturnPacket(player, packet); // if (player.CurrentGame.Data.CurrentIndex == player) // player.CurrentGame.Data.TotalDelay += item.Template.Property5; // ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(item.Template.Property1); // spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, item); // if (!isInfinity) // { // player.PropBag.UseItem(item); // item.Count--; // if (item.Count <= 0) // { // player.RemoveAllItem(item, false, Game.Server.Statics.ItemRemoveType.Use,1); // } // else // { // Statics.StatMgr.LogItemRemove(item.TemplateID, Game.Server.Statics.ItemRemoveType.Use, 1); // player.PropBag.RefreshItem(item); // } // } // player.QuestInventory.CheckUseItem(item.TemplateID); // if (item.Template.Property6 == 1 && player == player.CurrentGame.Data.CurrentIndex) // process.SendPlayFinish(player.CurrentGame, player.CurrentGame.Data.CurrentIndex); // if (!isInfinity) // player.CurrentGame.Data.CostInfo(item); // return true; // } //} ////道具栏的道具 //else //{ // ItemInfo item = player.PropInventory.GetItemAt(place); // if (item != null && player.CurrentGame.Data.Players[player].ReduceEnergy(item.Template.Property4)) // { // player.CurrentGame.ReturnPacket(player, packet); // if (player.CurrentGame.Data.CurrentIndex == player) // player.CurrentGame.Data.TotalDelay += item.Template.Property5; // ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(item.Template.Property1); // spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, item); // player.PropInventory.RemoveItemAt(place); // player.QuestInventory.CheckUseItem(item.TemplateID); // if (item.Template.Property6 == 1 && player == player.CurrentGame.Data.CurrentIndex) // process.SendPlayFinish(player.CurrentGame, player.CurrentGame.Data.CurrentIndex); // return true; // } //} return(false); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { player.CurrentGame.ReturnPacket(player, packet); return true; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.CurrentIndex == player && player.CurrentGame.Data.Players[player].State != TankGameState.DEAD) { if (player.CurrentGame.Data.CurrentFire == null) { player.CurrentGame.Data.CurrentFire = player; } int x = packet.ReadInt(); int y = packet.ReadInt(); if (Math.Abs(player.CurrentGame.Data.Players[player].X - x) > 100) { //player.Out.SendMessage(eMessageType.ALERT, LanguageMgr.GetTranslation("Game.Server.SceneGames.TankHandle")); StatMgr.LogErrorPlayer(player.PlayerCharacter.ID, player.PlayerCharacter.UserName, player.PlayerCharacter.NickName, ItemRemoveType.FireError, player.CurrentGame.Data.Players[player].X.ToString() + " to " + x.ToString() + ",MapID:" + player.CurrentGame.Data.MapIndex); player.Client.Disconnect(); return(false);; } int force = packet.ReadInt(); int angle = packet.ReadInt(); TankData data = player.CurrentGame.Data; Tile shape = Managers.BallMgr.FindTile(data.CurrentBall.ID); GSPacketIn pkg = new GSPacketIn((byte)ePackageType.GAME_CMD, player.PlayerCharacter.ID); pkg.WriteByte((byte)TankCmdType.FIRE); pkg.WriteInt(data.AddBall); for (int i = 0; i < data.AddBall; i++) { if (player.CurrentGame.Data.ReduceFireBombs) { if (data.IsFastSpeed()) { StatMgr.LogErrorPlayer(player.PlayerCharacter.ID, player.PlayerCharacter.UserName, player.PlayerCharacter.NickName, ItemRemoveType.FastError, "MapID:" + player.CurrentGame.Data.MapIndex); player.Client.Disconnect(); return(false);; } data.FireLogin = true; double reforce = 1; int reangle = 0; if (i == 1) { reforce = 0.9; reangle = -5; } else if (i == 2) { reforce = 1.1; reangle = 5; } int vx = (int)(force * reforce * Math.Cos((double)(angle + reangle) / 180 * Math.PI)); int vy = (int)(force * reforce * Math.Sin((double)(angle + reangle) / 180 * Math.PI)); data.PhyID++; BombObject bomb = new BombObject(data.PhyID, BallMgr.GetBallType(data.CurrentBall.ID), data.Players[player], shape, data.CurrentBall.Radii, data.AddMultiple < 1, data.CurrentBall.Mass, data.CurrentBall.Weight, data.CurrentBall.Wind, data.CurrentBall.DragIndex, data.BallPower); bomb.SetXY(x, y); bomb.setSpeedXY(vx, vy); data.CurrentMap.AddPhysical(bomb); pkg.WriteBoolean(bomb.IsHole); pkg.WriteInt(bomb.Id); pkg.WriteInt(x); pkg.WriteInt(y); pkg.WriteInt(vx); pkg.WriteInt(vy); pkg.WriteInt(bomb.Actions.Count); foreach (BombAction action in bomb.Actions) { pkg.WriteInt(action.TimeInt); pkg.WriteInt(action.Type); pkg.WriteInt(action.Param1); pkg.WriteInt(action.Param2); pkg.WriteInt(action.Param3); pkg.WriteInt(action.Param4); } data.SetRunTime((int)bomb.RunTime); } } player.CurrentGame.SendToAll(pkg); data.FireLogin = false; if (data.Bombs || data.Players[player].State == TankGameState.DEAD) { data.TotalDelay += data.CurrentBall.Delay; process.SendArk(player.CurrentGame, player); player.PropInventory.AddItemTemplate(PropItemMgr.GetRandomFightProp(data.MapIndex)); data.Players[player].SetDander(20); process.SendPlayFinish(player.CurrentGame, player); //GSPacketIn pkgMsg = new GSPacketIn((byte)ePackageType.GAME_CMD); //pkgMsg.WriteByte((byte)TankCmdType.PLAYFINISH); //pkgMsg.WriteInt(player.CurrentGame.Data.TurnNum); //player.CurrentGame.SendToAll(pkgMsg); } return(true); } return(false); }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { player.CurrentGame.ReturnPacket(player, packet); return(true); }