2015-08-19 6 views
0

Прошу вас, пожалуйста, со мной, я очень смущен, и у меня, возможно, нет никакого смысла. Я играю в игру, у которой есть источник, который закодирован в C#, и я пытаюсь сделать команду, которую я использую в игре, которая играет звук.Невозможно преобразовать строку [] в строку

Я получил это:

string[] Strings = new string[2]; 
Strings[0] = "sound/1.mp3"; 
Strings[1] = "1"; 
SendPacket(General.MyPackets.String(MyChar.UID, 20, Strings)); 

На струнных в SendPacket, он говорит, что не может преобразовать строку [] строку.

Я знаю, что делаю это неправильно, и в примере, который я видел, кто-то другой, он содержал «split ('')», но я не уверен, как это сделать.

Вот этот пример я видел (ЭТО НЕ МОЙ КОД, НО ССЫЛКА Я пытался использовать и недееспособных)

{ 
    string[] Strings = new string[2]; 
    string[] sound = param.Split(' '); 

    Strings[0] = sound[1]; 
    Strings[1] = "1"; 
    string todo = sound[0]; 
    string media = sound[1]; 

    if (todo == "play") 
    { 
     CSocket.Send(CoPacket.String(Strings, 0, (Struct.StringType)(20), 2)); 
    } 
    else if (todo == "broadcast") 
    { 
     foreach (ClientSocket CS in World.ClientPool.Values) 
     { 
      CSocket.Send(CoPacket.String(Strings, 0, (Struct.StringType)(20), 2)); 
     } 
    } 
    break; 
} 

Я хотел бы знать, как сделать мой код работает, но отправка строк (1 и 2). Спасибо за любую помощь, и мне очень жаль, если я вас смутил.

public void SendPacket(byte[] Dat) 
    { 
     try 
     { 
      if (ListenSock != null) 
       if (ListenSock.WinSock.Connected) 
       { 
        int Len = Dat[0] + (Dat[1] << 8); 
        if (Dat.Length != Len) 
         return; 

        System.Threading.Monitor.TryEnter(this, new TimeSpan(0, 0, 0, 8, 0)); 

        byte[] Data = new byte[Dat.Length]; 
        Dat.CopyTo(Data, 0); 

        Crypto.Encrypt(ref Data); 
        ListenSock.WinSock.Send(Data); 

        System.Threading.Monitor.Exit(this); 
       } 
     } 
     catch { } 
    } 


public byte[] String(long CharId, byte Type, string name) 
    { 
     ushort PacketType = 1015; 
     byte[] Packet = new byte[13 + name.Length]; 

     fixed (byte* p = Packet) 
     { 
      *((ushort*)p) = (ushort)Packet.Length; 
      *((ushort*)(p + 2)) = (ushort)PacketType; 
      *((uint*)(p + 4)) = (uint)CharId; 

      *(p + 8) = Type; 
      *(p + 9) = 1; 
      *(p + 10) = (byte)name.Length; 

      for (int i = 0; i < name.Length; i++) 
      { 
       *(p + 11 + i) = Convert.ToByte(name[i]); 
      } 
     } 

     return Packet; 
    } 
+2

Что такое прототип функции 'General.MyPackets.String()'? –

+0

Что такое подпись SendPacket? –

+0

@mybirthname нет, он не работал. im не совсем уверен, что не так. – Donavon

ответ

0

Попробуйте один

string[] Strings = new string[2]; 
Strings[0] = "sound/1.mp3"; 
Strings[1] = "1"; 
SendPacket(General.MyPackets.String(MyChar.UID, 20, String.Join(' ', Strings))); 
+0

Все еще не работает. Я не уверен, правильно ли мы делаем строки. Посмотрите, как парень сделал это по ссылке. Я не слишком разбираюсь в C#, так что, возможно, вы увидите решение. Благодаря – Donavon

+0

он каким-то образом использовал Split ('') и называл Strings, даже не преобразовывая его в строку []. поэтому я смущен – Donavon

0

Ваша ошибка:

cannot convert string[] in string

просто означает, что вам он tryi ng, чтобы преобразовать массив/список строки типа в одну строку, но C# не может сделать это по умолчанию, поэтому вам нужно сделать это самостоятельно.

Теперь к вашему примеру кода.
Он использует другой метод, то вы
он использовал String(string[] ?? , ??, ??, ??)
и вы String(long CharId, byte Type, string name)

это основаны на предположении, что его CoPacket и ваш MyPackets является тем же классом

0

попробовать это:

string[] Strings = new string[2]; 
string[] sound = param.Split(' '); 

Strings[0] = sound[1]; 
Strings[1] = "1"; 
string todo = sound[0]; 
string media = sound[1]; 
string concatString = Strings[0] + Strings[1]; 
if (todo == "play") 
{ 
    CSocket.Send(CoPacket.String(concatString , 0, (Struct.StringType)(20), 2)); 
} 
Смежные вопросы