public static void ProcessFakeRoleGoBack(int FakeRoleID) { FakeRoleItem fakeRoleItem = FakeRoleManager.FindFakeRoleByID(FakeRoleID); if (null != fakeRoleItem) { GameManager.ClientMgr.NotifyAllDelFakeRole(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, fakeRoleItem); int toMapCode = fakeRoleItem.CurrentMapCode; GameMap gameMap = null; if (GameManager.MapMgr.DictMaps.TryGetValue(toMapCode, out gameMap)) { int defaultBirthPosX = gameMap.DefaultBirthPosX; int defaultBirthPosY = gameMap.DefaultBirthPosY; int defaultBirthRadius = gameMap.BirthRadius; Point newPos = Global.GetMapPoint(ObjectTypes.OT_FAKEROLE, toMapCode, defaultBirthPosX, defaultBirthPosY, defaultBirthRadius); int toMapX = (int)newPos.X; int toMapY = (int)newPos.Y; int oldX = fakeRoleItem.MyRoleDataMini.PosX; int oldY = fakeRoleItem.MyRoleDataMini.PosY; fakeRoleItem.MyRoleDataMini.PosX = toMapX; fakeRoleItem.MyRoleDataMini.PosY = toMapY; fakeRoleItem.MyRoleDataMini.LifeV = fakeRoleItem.MyRoleDataMini.MaxLifeV; GameManager.MapGridMgr.DictGrids[toMapCode].MoveObject(oldX, oldY, toMapX, toMapY, fakeRoleItem); } } }
public static void ProcessDelFakeRole(int FakeRoleID, bool bBroadcastDelMsg = false) { FakeRoleItem FakeRoleItem = FakeRoleManager.FindFakeRoleByID(FakeRoleID); if (null != FakeRoleItem) { FakeRoleManager.RemoveFakeRole(FakeRoleID); GameManager.MapGridMgr.DictGrids[FakeRoleItem.MyRoleDataMini.MapCode].RemoveObject(FakeRoleItem); if (bBroadcastDelMsg) { GameManager.ClientMgr.NotifyAllDelFakeRole(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, FakeRoleItem); } } }
public static void NotifyInjured(SocketListener sl, TCPOutPacketPool pool, GameClient client, int roleID, int enemy, int enemyX, int enemyY, int burst, int injure, double attackPercent, int addAttack, double baseRate = 1.0, int addVlue = 0, int nHitFlyDistance = 0) { object obj = FakeRoleManager.FindFakeRoleByID(enemy); if (null != obj) { if ((obj as FakeRoleItem).CurrentLifeV > 0) { injure = 10000; (obj as FakeRoleItem).CurrentLifeV -= injure; (obj as FakeRoleItem).CurrentLifeV = Global.GMax((obj as FakeRoleItem).CurrentLifeV, 0); int enemyLife = (obj as FakeRoleItem).CurrentLifeV; (obj as FakeRoleItem).AttackedRoleID = client.ClientData.RoleID; GameManager.ClientMgr.SpriteInjure2Blood(sl, pool, client, injure); GameManager.SystemServerEvents.AddEvent(string.Format("假人减血, Injure={0}, Life={1}", injure, enemyLife), EventLevels.Debug); if ((obj as FakeRoleItem).CurrentLifeV <= 0) { GameManager.SystemServerEvents.AddEvent(string.Format("假人死亡, roleID={0}", (obj as FakeRoleItem).FakeRoleID), EventLevels.Debug); FakeRoleManager.ProcessFakeRoleDead(sl, pool, client, obj as FakeRoleItem); } int ownerRoleID = (obj as FakeRoleItem).GetAttackerFromList(); if (ownerRoleID >= 0 && ownerRoleID != client.ClientData.RoleID) { GameClient findClient = GameManager.ClientMgr.FindClient(ownerRoleID); if (null != findClient) { GameManager.ClientMgr.NotifySpriteInjured(sl, pool, findClient, findClient.ClientData.MapCode, findClient.ClientData.RoleID, (obj as FakeRoleItem).FakeRoleID, 0, 0, (double)enemyLife, findClient.ClientData.Level, new Point(-1.0, -1.0), 0, EMerlinSecretAttrType.EMSAT_None, 0); ClientManager.NotifySelfEnemyInjured(sl, pool, findClient, findClient.ClientData.RoleID, (obj as FakeRoleItem).FakeRoleID, 0, 0, (double)enemyLife, 0L, 0, EMerlinSecretAttrType.EMSAT_None, 0); } } GameManager.ClientMgr.NotifySpriteInjured(sl, pool, client, client.ClientData.MapCode, client.ClientData.RoleID, (obj as FakeRoleItem).FakeRoleID, burst, injure, (double)enemyLife, client.ClientData.Level, new Point(-1.0, -1.0), 0, EMerlinSecretAttrType.EMSAT_None, 0); ClientManager.NotifySelfEnemyInjured(sl, pool, client, client.ClientData.RoleID, (obj as FakeRoleItem).FakeRoleID, burst, injure, (double)enemyLife, 0L, 0, EMerlinSecretAttrType.EMSAT_None, 0); if (!client.ClientData.DisableChangeRolePurpleName) { GameManager.ClientMgr.ForceChangeRolePurpleName2(sl, pool, client); } } } }