private void CharacterLoad_UCE_Friendlist(Player player) { #if _MYSQL && _SERVER var table = ExecuteReaderMySql("SELECT `character`, friendName, lastGifted FROM character_friends WHERE `character`=@character", new MySqlParameter("character", player.name)); if (table.Count > 0) { for (int i = 0; i < table.Count; i++) { var row = table[i]; UCE_Friend frnd = new UCE_Friend((string)row[1], (string)row[2]); player.UCE_Friends.Add(frnd); } } #elif _SQLITE && _SERVER var table = connection.Query <character_friends>("SELECT character, friendName, lastGifted FROM character_friends WHERE character=?", player.name); if (table.Count > 0) { for (int i = 0; i < table.Count; i++) { var row = table[i]; UCE_Friend frnd = new UCE_Friend(row.friendName, row.lastGifted); player.UCE_Friends.Add(frnd); } } #endif }
private void Update_UCE_Friendship() { if (Time.time < _cacheFriendship) { return; } for (int i = 0; i < UCE_Friends.Count; i++) { UCE_Friend frnd = UCE_Friends[i]; Player plyr = UCE_Tools.FindOnlinePlayerByName(frnd.name); if (plyr != null) { frnd.online = true; frnd.inParty = plyr.InParty(); frnd.level = plyr.level; frnd._class = plyr.className; frnd.guild = plyr.guild.name; } else { frnd.online = false; } UCE_Friends[i] = frnd; } _cacheFriendship = Time.time + 4.0f; }
// ----------------------------------------------------------------------------------- // UCE_AddFriend // @Server // ----------------------------------------------------------------------------------- public void UCE_AddFriend(string name) { if (string.IsNullOrWhiteSpace(name)) { return; } if (UCE_Friends.Count >= friendshipTemplate.maxFriends) { UCE_TargetAddMessage(friendshipTemplate.msgMaxFriends); return; } if (name != this.name) { if (Database.singleton.CharacterExists(name)) { if (onlinePlayers.ContainsKey(name)) { if (UCE_Friends.FindIndex(x => x.name == name) == -1) { Player pl = UCE_Tools.FindOnlinePlayerByName(name); DateTime time = DateTime.UtcNow; #if _iMMOHONORSHOP int hours = friendshipTemplate.timespanHours * -1; time = time.AddHours(hours); #endif UCE_Friend frnd = new UCE_Friend(pl.name, time.ToString("s")); UCE_Friends.Add(frnd); UCE_TargetAddMessage(string.Format(friendshipTemplate.msgIsNowFriend, name)); } else { UCE_TargetAddMessage(string.Format(friendshipTemplate.msgIsAlreadyFriend, name)); } } else { UCE_TargetAddMessage(string.Format(friendshipTemplate.msgTargetOffline, name)); } } else { UCE_TargetAddMessage(string.Format(friendshipTemplate.msgTargetNotExist, name)); } } else { UCE_TargetAddMessage(friendshipTemplate.msgCannotFriendSelf); } }
private void CharacterLoad_UCE_Friendlist(Player player) { var table = connection.Query <character_friends>( "SELECT friendName, lastGifted FROM character_friends WHERE character = ?", player.name); if (table.Count > 0) { foreach (var row in table) { UCE_Friend frnd = new UCE_Friend(row.friendName, row.lastGifted); player.UCE_Friends.Add(frnd); } } }
private void CharacterSave_UCE_Friendlist(Player player) { #if _MYSQL && _SERVER var query2 = @" INSERT INTO character_friends SET `character`=@character, friendName = @friendName, lastGifted = @lastGifted ON DUPLICATE KEY UPDATE friendName = @friendName, lastGifted = @lastGifted "; for (int i = 0; i < player.UCE_Friends.Count; i++) { UCE_Friend frnd = player.UCE_Friends[i]; ExecuteNonQueryMySql(query2, new MySqlParameter("@character", player.name), new MySqlParameter("@friendName", frnd.name), new MySqlParameter("@lastGifted", frnd.lastGifted) ); } #elif _SQLITE && _SERVER connection.Execute("DELETE FROM character_friends WHERE character=?", player.name); for (int i = 0; i < player.UCE_Friends.Count; i++) { UCE_Friend frnd = player.UCE_Friends[i]; connection.Insert(new character_friends { character = player.name, friendName = frnd.name, lastGifted = frnd.lastGifted }); } #endif }
private void CharacterSave_UCE_Friendlist(Player player) { #if _MYSQL var query2 = @" INSERT INTO character_friends SET `character`=@character, friendName = @friendName, lastGifted = @lastGifted ON DUPLICATE KEY UPDATE friendName = @friendName, lastGifted = @lastGifted "; for (int i = 0; i < player.UCE_Friends.Count; i++) { UCE_Friend frnd = player.UCE_Friends[i]; ExecuteNonQueryMySql(query2, new MySqlParameter("@character", player.name), new MySqlParameter("@friendName", frnd.name), new MySqlParameter("@lastGifted", frnd.lastGifted) ); } #elif _SQLITE ExecuteNonQuery("DELETE FROM character_friends WHERE character=@character", new SqliteParameter("@character", player.name)); for (int i = 0; i < player.UCE_Friends.Count; i++) { UCE_Friend frnd = player.UCE_Friends[i]; ExecuteNonQuery("INSERT INTO character_friends VALUES (@character, @friendName, @lastGifted)", new SqliteParameter("@character", player.name), new SqliteParameter("@friendName", frnd.name), new SqliteParameter("@lastGifted", frnd.lastGifted) ); } #endif }
public void Cmd_UCE_HugFriend(string name) { if (string.IsNullOrWhiteSpace(name)) { return; } int idx = UCE_Friends.FindIndex(x => x.name == name); if (idx != -1) { Player plyr = UCE_Tools.FindOnlinePlayerByName(name); UCE_Friend frnd = UCE_Friends[idx]; if (UCE_CanHug(frnd.lastGifted)) { // -- Other player gains Honor Currency when online if (plyr && friendshipTemplate.friendHonorCurrency && friendshipTemplate.friendAmount > 0) { plyr.UCE_AddHonorCurrency(friendshipTemplate.friendHonorCurrency, friendshipTemplate.friendAmount); } frnd.lastGifted = DateTime.UtcNow.ToString("s"); UCE_Friends[idx] = frnd; // -- Hugging Player gains Honor Currency if (friendshipTemplate.honorCurrency && friendshipTemplate.amount > 0) { UCE_AddHonorCurrency(friendshipTemplate.honorCurrency, friendshipTemplate.amount); } UCE_TargetAddMessage(string.Format(friendshipTemplate.msgTargetHugged, name, friendshipTemplate.amount.ToString(), friendshipTemplate.honorCurrency.name)); } } }
// ----------------------------------------------------------------------------------- // ´SetData // ----------------------------------------------------------------------------------- public void SetData(int friendNo) { Player player = Player.localPlayer; if (!player) { return; } UCE_Friend frnd = player.UCE_Friends[friendNo]; // -- Friend Data playerName.text = frnd.name; if (!string.IsNullOrWhiteSpace(frnd._class) && frnd.level > 0) { levelClass.text = frnd._class + " [" + frnd.level + "]"; } else { levelClass.text = ""; } // -- Friend Guild if (!string.IsNullOrWhiteSpace(frnd.guild)) { guildName.text = frnd.guild; guildName.gameObject.SetActive(true); } else { guildName.text = ""; guildName.gameObject.SetActive(false); } // -- Friend Online if (!frnd.online) { statusImage.sprite = offlineImage; } else { statusImage.sprite = onlineImage; } // -- Button: Party Invite if (frnd.online && (!player.InParty() || !player.party.IsFull()) && !frnd.inParty) { buttonPartyInvite.interactable = true; buttonPartyInvite.onClick.SetListener(() => { player.CmdPartyInvite(frnd.name); buttonPartyInvite.interactable = false; } ); } else { buttonPartyInvite.interactable = false; } // -- Button: Guild Invite if (frnd.online && player.InGuild() && string.IsNullOrWhiteSpace(frnd.guild) && player.guild.CanInvite(player.name, frnd.name)) { buttonGuildInvite.interactable = true; buttonGuildInvite.onClick.SetListener(() => { player.Cmd_UCE_GuildInvite(frnd.name); buttonGuildInvite.interactable = false; } ); } else { buttonGuildInvite.interactable = false; } // -- Button: Gift Friend #if _iMMOHONORSHOP if (player.friendshipTemplate.honorCurrency || player.friendshipTemplate.friendHonorCurrency) { buttonGiftFriend.gameObject.SetActive(true); if (player.UCE_CanHug(frnd.lastGifted)) { buttonGiftFriend.interactable = true; buttonGiftFriend.onClick.SetListener(() => { player.Cmd_UCE_HugFriend(frnd.name); buttonGiftFriend.interactable = false; } ); } else { buttonGiftFriend.interactable = false; } } else { buttonGiftFriend.gameObject.SetActive(false); } #else buttonGiftFriend.gameObject.SetActive(false); #endif // -- Button: Friend Remove bool canRemove = true; #if _iMMOHONORSHOP canRemove = player.UCE_CanHug(frnd.lastGifted); #endif if (canRemove) { buttonRemove.interactable = true; buttonRemove.onClick.SetListener(() => player.Cmd_UCE_RemoveFriend(frnd.name)); } else { buttonRemove.interactable = false; } }
// ----------------------------------------------------------------------------------- // OnUCE_FriendListChanged // ----------------------------------------------------------------------------------- private void OnUCE_FriendListChanged(SyncListUCE_Friend.Operation op, int itemIndex, UCE_Friend oldSlot, UCE_Friend newSlot) { Player player = Player.localPlayer; if (!player) { return; } if (!_instance) { _instance = FindObjectOfType <UCE_UI_FriendList>(); } _instance.Prepare(); }