Exemplo n.º 1
0
        /// <summary>
        /// Send the specified player to jail.
        /// </summary>
        /// <param name="aName">The name of the player to send to jail.</param>
        /// <returns>True on success, false otherwise.</returns>
        public static Boolean SendPlayerToJail(String aName)
        {
            bool success = false;

            GameMap map = null;

            if (!MapManager.TryGetMap(MapManager.PRISON_MAP_UID, out map))
            {
                return(false);
            }

            using (var connection = sDefaultPool.GetConnection())
            {
                using (var command = connection.CreateCommand())
                {
                    command.CommandText = (
                        "UPDATE `user` SET `record_map` = @record_map, `record_x` = @record_x, `record_y` = @record_y, " +
                        "`jail` = `jail` + 1 WHERE `name` = @name");
                    command.Parameters.AddWithValue("@name", aName);
                    command.Parameters.AddWithValue("@record_map", map.Id);
                    command.Parameters.AddWithValue("@record_x", map.PortalX);
                    command.Parameters.AddWithValue("@record_y", map.PortalY);
                    command.Prepare();

                    sLogger.Debug("Executing SQL: {0}", GetSqlCommand(command));

                    try
                    {
                        int count = command.ExecuteNonQuery();
                        success = count == 1;
                    }
                    catch (MySqlException exc)
                    {
                        sLogger.Error("Failed to execute the following cmd : \"{0}\"\nError {1}: {2}",
                                      GetSqlCommand(command), exc.Number, exc.Message);
                    }
                }
            }

            if (success)
            {
                Player player = null;
                if (World.AllPlayerNames.TryGetValue(aName, out player))
                {
                    player.Move(map.Id, map.PortalX, map.PortalY);
                    ++player.JailC;
                }

                World.BroadcastMsg(new MsgTalk("SYSTEM", "ALLUSERS", aName + " has been sent to jail!", Channel.GM, Color.White));
            }

            return(success);
        }
Exemplo n.º 2
0
        public bool Destroy()
        {
            lock (World.AllSyndicates)
            {
                if (World.AllSyndicates.ContainsKey(Id))
                {
                    Msg msg = null;

                    msg = new MsgTalk(
                        "SYSTEM", "ALLUSERS",
                        String.Format(StrRes.STR_SYN_DISBAND, Name),
                        Channel.GM, Color.White);
                    World.BroadcastMsg(msg);

                    msg = new MsgSyndicate((UInt16)Id, MsgSyndicate.Action.DestroySyn);
                    World.BroadcastMsg(msg);

                    Syndicate master = GetMasterSyn();
                    Player    player = null;

                    lock (mMembers)
                    {
                        List <Syndicate.Member> members = new List <Syndicate.Member>(mMembers.Values);
                        members.Add(mLeader);

                        foreach (Syndicate.Member member in members)
                        {
                            if (master == this)
                            {
                                if (World.AllPlayers.TryGetValue(member.Id, out player))
                                {
                                    LeaveSyn(player, false, true);
                                }
                                else
                                {
                                    Database.LeaveSyn(member.Name);
                                }
                            }
                            else
                            {
                                master.AddMember(player);
                            }
                        }
                    }

                    foreach (UInt16 allyId in Allies)
                    {
                        Syndicate ally = null;
                        if (World.AllSyndicates.TryGetValue(allyId, out ally))
                        {
                            if (ally.Allies.Contains(Id))
                            {
                                var allies = ally.Allies;
                                allies[allies.IndexOf(Id)] = 0;
                                ally.Allies = allies;

                                msg = new MsgSyndicate(Id, MsgSyndicate.Action.ClearAlly);
                                World.BroadcastSynMsg(ally, msg);
                            }
                        }
                    }

                    World.AllSyndicates.Remove(Id);
                    return(Database.Delete(this));
                }
            }

            return(false);
        }