示例#1
0
    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);
        }
    }
示例#4
0
    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);
            }
        }
    }
示例#5
0
    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
    }
示例#6
0
    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();
    }