Exemplo n.º 1
0
        public bool AddCredits(string login, string gameRefID, string characterID, int credits)
        {
            if (credits < 0)
            {
                log.Info("AddCredits(): credits must be >= 0");
                return(false);
            }

            var store = GetOrCreatePlayerStore(login, gameRefID, characterID);

            if (store == null)
            {
                log.InfoFormat("AddCredits(): store for character not found");
                return(false);
            }

            credits = store.AddCredits(credits);

            SelectCharacterClientPeer peer;

            if (mApplication.Clients.TryGetPeerForGameRefId(gameRefID, out peer))
            {
                peer.SendCreditsReceived(credits);
            }

            //invoke rpc for credits achievment
            mApplication.AddAchievmentVariable(gameRefID, "player_credits", credits);
            return(true);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Create guild for character, if guild already exists return false and link to existing guild. If guild don't exists,
        /// create new guild, initialize it and return reference to newly created guild
        /// </summary>
        public bool CreateGuild(GuildMember owner, string name, string description, out Guild newGuild)
        {
            newGuild = GetGuild(owner.characterId);
            if (newGuild != null)
            {
                log.Info("Such guild already exists");
                return(false);
            }

            var player = mApplication.Players.GetExistingPlayer(owner.gameRefId);

            if (player == null)
            {
                log.Info("error creating guild, player don't exists");
                return(false);
            }

            var playerCharacter = player.Data.GetCharacter(owner.characterId);

            if (playerCharacter == null)
            {
                log.Info("error creating guild, player character don't exists ");
                return(false);
            }

            //if character guild setted and exist such guild than return error
            //else this is some error and reset character guild to empty
            if (!string.IsNullOrEmpty(playerCharacter.guildID))
            {
                if (HasGuild(playerCharacter.guildID))
                {
                    log.Info("player character already in guild");
                    return(false);
                }
                else
                {
                    log.InfoFormat("reset character guild to (empty), reason: guild from character don't exists");
                    playerCharacter.SetGuild(string.Empty);
                }
            }

            int playerLevel = mApplication.leveling.LevelForExp(playerCharacter.Exp);

            if (playerLevel < 5)
            {
                log.Info("player level less than 5");
                return(false);
            }

            newGuild = new Guild {
                ownerCharacterId = owner.characterId,
                rating           = 0,
                members          = new Dictionary <string, GuildMember> {
                    { owner.characterId, owner }
                },
                description        = description,
                guildRace          = playerCharacter.Race,
                name               = name,
                depositedPvpPoints = 0,
                depositedCredits   = 0
            };
            mCache.SetGuild(newGuild);
            mApplication.Players.SetGuild(owner.gameRefId, owner.characterId, newGuild.ownerCharacterId);
            mApplication.DB.Guilds.Save(newGuild);

            mApplication.AddAchievmentVariable(owner.gameRefId, "coalition_member", 1);
            //send guild update
            SendGuildUpdateEvent(owner.characterId, newGuild.GetInfo(mApplication));

            return(true);
        }