Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
        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);
                }
            }
        }
Esempio n. 3
0
        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);
                    }
                }
            }
        }