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); }
/// <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); }