예제 #1
0
        private string Create(Session session, string[] parms)
        {
            bool   help       = false;
            string playerName = string.Empty;
            string tribeName  = string.Empty;

            try
            {
                var p = new OptionSet
                {
                    { "?|help|h", v => help = true },
                    { "player=", v => playerName = v.TrimMatchingQuotes() },
                    { "name=", v => tribeName = v.TrimMatchingQuotes() },
                    { "desc=", v => v.TrimMatchingQuotes() },
                };
                p.Parse(parms);
            }
            catch (Exception)
            {
                help = true;
            }

            if (help || string.IsNullOrEmpty(playerName))
            {
                return("TribeCreate --player=player [--name=tribe_name] [--desc=tribe_description]");
            }

            uint playerId;

            if (!world.FindPlayerId(playerName, out playerId))
            {
                return("Player not found");
            }

            IPlayer player;

            return(locker.Lock(playerId, out player).Do(() =>
            {
                ITribe tribe;
                Error error = tribeManager.CreateTribe(player, tribeName, out tribe);
                if (error != Error.Ok)
                {
                    return error.ToString();
                }
                tribe.SendRanksUpdate();

                return "OK!";
            }));
        }
예제 #2
0
        private void Create(Session session, Packet packet)
        {
            string name;

            try
            {
                name = packet.GetString();
            }
            catch (Exception)
            {
                ReplyError(session, packet, Error.Unexpected);
                return;
            }

            locker.Lock(session.Player).Do(() =>
            {
                if (!session.Player.GetCityList().Any(city => city.Lvl >= 5))
                {
                    ReplyError(session, packet, Error.EffectRequirementNotMet);
                    return;
                }

                ITribe tribe;
                Error error = tribeManager.CreateTribe(session.Player, name, out tribe);
                if (error == Error.Ok)
                {
                    var reply = new Packet(packet);
                    PacketHelper.AddTribeRanksToPacket(tribe, reply);
                    session.Write(reply);
                }
                else
                {
                    ReplyError(session, packet, error);
                }
            });
        }