none
C# Argument `#1' cannot convert `PlayerSession' expression to type `string' RRS feed

  • Вопрос

  • Не могу никак разобраться с этой ошибкой.Помогите и объясните)

            private void Executing(PlayerSession Player, string response, int code)
            {
                switch (code)
                {
                    case 0:
                        Debug.LogError("Api does not responded to a request");
                        break;
                    case 200:
                        Dictionary<string, object> Response = JsonConvert.DeserializeObject<Dictionary<string, object>>(response, new KeyValuesConverter());
                        if (Response != null)
                        {
                            switch (Convert.ToInt32(Response["code"]))
                            {
                                case 100:
                                    int i = 0;
                                    List<object> data = Response["data"] as List<object>;
                                    foreach (object pair in data) 
                                    {
                                        if (i >= 14)
                                        {
                                            hurt.SendChatMessage(Player, $"Вы не можете получить больше 14 предметов за раз.");
                                            return;
                                        }
    
                                        Dictionary<string, object> iteminfo = pair as Dictionary<string, object>;
    
                                        if(iteminfo.ContainsKey("command"))
                                        {
                                            string command = iteminfo["command"].ToString().Replace('\n', '|').ToLower().Trim('\"').Replace("%steamid%", Player.SteamId.m_SteamID.ToString()).Replace("%username%", Player.Name);
                                            String[] CommandArray = command.Split('|');
                                            foreach (var substring in CommandArray)
                                            {
                                                ConsoleManager.Instance.ExecuteCommand(substring);
                                            }
                                            hurt.SendChatMessage(Player, $"Получен товар из магазина: <color=lime>\"{iteminfo["name"]}\"</color>.");
                                            SendGived(new Dictionary<string, string>() { { "gived", "true" }, { "id", $"{iteminfo["id"]}" } }, Player);
                                            return;
                                        }
    
                                        int ItemID = Convert.ToInt32(iteminfo["item_id"]);
                                        int Amount = Convert.ToInt32(iteminfo["amount"]);
                                        ItemInstance Item = new ItemInstance(GlobalItemManager.Instance.GetItem(ItemID), Amount);
    
                                        if (Player.WorldPlayerEntity.GetComponent<Inventory>().GiveItemServer(Item))
                                        {
    										Singleton<AlertManager>.Instance.GenericTextNotificationServer(Player, $"2Получен товар из магазина: \"{iteminfo["name"]}\" в количестве {Amount}.");
    										SendGived(new Dictionary<string, string>() { {"gived", "true"}, {"id", $"{iteminfo["id"]}"} }, Player);
                                        } else {
                                            hurt.SendChatMessage(Player, $"asdasd");
                                            return;
                                        }
                                        i++;  
                                    }
                                    break;
                                case 104:
                                    hurt.SendChatMessage(Player, $"sda!");
                                    break;
                            }
                        }
                        else
                            Debug.LogWarning(response);
                        break;
                    case 404:
                        Debug.LogError("ывф");
                        break;
                }
            }

    Ошибка в этой строке " Singleton<AlertManager>.Instance.GenericTextNotificationServer(Player, $"2Получен товар из магазина: \"{iteminfo["name"]}\" в количестве {Amount}."); " .

    Ошибка " Argument `#1' cannot convert `PlayerSession' expression to type `string' "

    29 июня 2017 г. 8:43

Ответы

  • Вот это достаточно:

    public void GenericTextNotificationServer(string text, NetworkPlayer player)

    Теперь внимательно читайте эту строку...

    Вопрос: какой тип у первого аргумента? 

    Теперь к месту ошибку, внимательно читаем строку там.

    Вопрос: какой тип у первого аргумента при вызове?

    Теперь ошибка должна быть очевидна. 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    30 июня 2017 г. 3:10
    Модератор

Все ответы

  • Покажите сигнатуру GenericTextNotificationServer()

    This posting is provided "AS IS" with no warranties, and confers no rights.

    29 июня 2017 г. 15:30
    Модератор
  • using Assets.Scripts.Core;
    using System;
    using uLink;

    public class AlertManager : Singleton<AlertManager>
    {
        public void GenericTextNotificationServer(string text, NetworkPlayer player)
        {
            if (player == NetworkPlayer.server)
            {
                return;
            }
            base.RPC("GenericTextClient", player, new object[]
            {
                text
            });
        }

        public void GenericTextNotificationServer(string text)
        {
            base.RPC("GenericTextClient", RPCMode.Others, new object[]
            {
                text
            });
        }

        public void ItemReceivedServer(IItem item, int count, NetworkPlayer player)
        {
            base.RPC("ItemReceivedClient", player, new object[]
            {
                item.ItemId,
                count
            });
        }

        [uLink.RPC]
        public void GenericTextClient(string text)
        {
            if (Network.isServer)
            {
                return;
            }
            Singleton<AlertPanelManager>.Instance.GenericTextAlert(text);
        }

        [uLink.RPC]
        public void ItemReceivedClient(int itemId, int count)
        {
            IItem item = Singleton<GlobalItemManager>.Instance.GetItem(itemId);
            Singleton<AlertPanelManager>.Instance.ItemReceivedAlert(item, count);
        }

        public void ParameterisedAlertServer(string key, string parameter, NetworkPlayer player)
        {
            if (player == NetworkPlayer.server)
            {
                return;
            }
            base.RPC("RPCParameterisedAlertServer", player, new object[]
            {
                key,
                parameter
            });
        }

        [uLink.RPC]
        public void RPCParameterisedAlertServer(string key, string parameter)
        {
            if (Network.isServer)
            {
                return;
            }
            string format = LocalizationUtilities.TryTranslation(key);
            Singleton<AlertPanelManager>.Instance.GenericTextAlert(string.Format(format, parameter));
        }
    }
    Вот это?
    • Изменено Kaido_Z 30 июня 2017 г. 1:04
    30 июня 2017 г. 0:46
  • Вот это достаточно:

    public void GenericTextNotificationServer(string text, NetworkPlayer player)

    Теперь внимательно читайте эту строку...

    Вопрос: какой тип у первого аргумента? 

    Теперь к месту ошибку, внимательно читаем строку там.

    Вопрос: какой тип у первого аргумента при вызове?

    Теперь ошибка должна быть очевидна. 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    30 июня 2017 г. 3:10
    Модератор
  • " Argument `#2' cannot convert `PlayerSession' expression to type `uLink.NetworkPlayer' ".  Строчка вот так выглядит " Singleton<AlertManager>.Instance.GenericTextNotificationServer($"2Получен товар из магазина: \"{iteminfo["name"]}\" в количестве {Amount}.",Player); "
  • Что-то не так с Player. Когда я убираю эту строку,то скрипт включается без ошибок,но проблема в том,что данное сообщение видят все пользователи подключенные к серверу,а не кроме получателя.
  • Ну еще одна аналогичная ошибка - тип параметра не совпадает с типом аргумента. 

    This posting is provided "AS IS" with no warranties, and confers no rights.

    Модератор