Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by MaV3r1cK · Mar 17, 2012 at 01:41 PM · multiplayernamechat

Multiplayer Chat Script (Problem : mixed names)

Hello :)

I have problem with chat script. I watched tutorial and I have same script as on the tutorial. But I have problem.

The problem is it won't show the right name. Exaple. I start the game. Enter name and when I start game the name is not showed. Next time I start the game and ENTER DIFFERENT name and when I run the game it showes me the name I typed in from last time I run the game. I hope you get it :/

Here is the full script :/ (the guy from tutorial doesn't respon so I ask you for help ok ! )

using UnityEngine; using System.Collections;

public class Chat2 : MonoBehaviour { bool usingChat = false; bool showChat = false;

 string inputField = "";


 Vector2 scrollposition;
 int width = 500;
 int height = 100;
 string playerName;
 float lastUnfocusTime = 0;
 Rect window;


 ArrayList playerList = new ArrayList();
 class PlayerNode
 {
     
     public string playerName;
       public NetworkPlayer player;
 }

 ArrayList chatEntries = new ArrayList();
 class ChatEntry
 {
     public string name = "";
     public string text = "";
 }
 
 // Use this for initialization
 void Start ()
 {
     window = new Rect(Screen.width / 2 - width / 2, Screen.height - height + 5, width, height);
     playerName = PlayerPrefs.GetString("playerName", "");

     if (playerName == "") playerName = "RandomName" + Random.Range(1, 999);
     if (playerName == "playerName") playerName = "playerName";
 }

 void OnConnectedToServer()
 {
     ShowChatWindow();
     networkView.RPC("TellServerOurName", RPCMode.Server, playerName);
     addGameChatMessage(playerName + "has just joined the chat!");
 }

 void OnServerInitialized()
 {
     ShowChatWindow();
     PlayerNode newEntry = new PlayerNode();
     newEntry.playerName = playerName;
     newEntry.player = Network.player;
     playerList.Add(newEntry);
     addGameChatMessage(playerName + "has just joined the chat!");
 }
 PlayerNode GetPlayerNode(NetworkPlayer netPlay)
 {
     foreach(PlayerNode entry in playerList)
     {
         if (entry.player == netPlay)
             return entry;
     }
     Debug.LogError("GetPlayerNode: Requested a playernode of non-existing player!");
     return null;
 }
 void OnPlayerDisconnected(NetworkPlayer netPlayer)
 {
     addGameChatMessage("A Player has disconnected");
     playerList.Remove(GetPlayerNode(netPlayer));


 }
 void OnDisconnectedFromServer()
 {
     CloseChatWindow();
 }
 

[RPC] void TellServerOurName(string name, NetworkMessageInfo info) { PlayerNode newEntry = new PlayerNode(); newEntry.playerName = playerName; newEntry.player = Network.player; playerList.Add(newEntry); addGameChatMessage(playerName + " has just joined the chat!");

 }
 void CloseChatWindow()
 {
     showChat = false;
     inputField = "";
     chatEntries = new ArrayList();


 }
 void ShowChatWindow()
 {
     showChat = true;
     inputField = "";
     chatEntries = new ArrayList();
 }
 
 void OnGUI()
 {
     if(!showChat) return;

     if(Event.current.type == EventType.keyDown && Event.current.character == '\n' & inputField.Length <= 0)
     {
         if(lastUnfocusTime + .25f < Time.time)
         {
             usingChat = true;
             GUI.FocusWindow(5);
             GUI.FocusControl("Chat input field");
         }
     }

 window = GUI.Window(5, window, GlobalChatWindow, "");
 }

 void GlobalChatWindow(int id)
 {
     GUILayout.BeginVertical();
     GUILayout.Space(10);
     GUILayout.EndVertical();

     scrollposition = GUILayout.BeginScrollView(scrollposition);

     foreach (ChatEntry entry in chatEntries)
     {
         GUILayout.BeginHorizontal();
         if (entry.name == " - ")
             GUILayout.Label(entry.name + entry.text);

         GUILayout.EndHorizontal();
         GUILayout.Space(2);
     }

     GUILayout.EndScrollView();

     if(Event.current.type == EventType.keyDown && Event.current.character == '\n' & inputField.Length > 0)
         HitEnter(inputField);
     GUI.SetNextControlName("Chat input field");
        inputField = GUILayout.TextField(inputField);

     if (Input.GetKeyDown("mouse 0"))
     {
             if( usingChat)
             {
                     usingChat = false;
                 GUI.UnfocusWindow();
                 lastUnfocusTime = Time.time;
             }
     }
   }   
 void HitEnter(string msg)
 {
         msg = msg.Replace('\n', ' ');
         networkView.RPC("ApplayGlobalChatTexT", RPCMode.All, playerName, msg);
 }
 [RPC]
 void ApplayGlobalChatText(string name, string msg)
 {
         ChatEntry entry = new ChatEntry();
     entry.name = name;
     entry.text = msg;

     chatEntries.Add(entry);

     if(chatEntries.Count > 4)
         chatEntries.RemoveAt(0);

     scrollposition.y = 1000000;
     inputField = "";
 }
 void addGameChatMessage(string str)
 {
     ApplayGlobalChatText(" - ", str);
     if(Network.connections.Length > 0)
         networkView.RPC("ApplayGlobalChatTexT", RPCMode.Others, " - ", str);
 }

}

Also I figure it out that this line is responsible for displaying the name

void Start () { window = new Rect(Screen.width / 2 - width / 2, Screen.height - height + 5, width, height); playerName = PlayerPrefs.GetString("playerName", "");

 if (playerName == "") playerName = "RandomName" + Random.Range(1, 999);
 if (playerName == "playerName") playerName = "playerName";

}

I hope you understand my problem and that you can help me. :D

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by Pixelblock Games · Nov 23, 2012 at 11:43 AM

You should learn some more C# scripting before coming and asking people for help. I recommend you don't Copy/Paste other peoples scripts from video becuase they will get you no where in developing games. To learn Javascript and or C# programming, I would go ann read the free tutorials on the Unity3D website, their very helpful.

In your case, this is just a simple error, I don't know enough of C# scripting to go into detail, but I would change this:

void Start window = GUI.Label (new Rect(x,y,width,height), "PlayerName");); playerName = PlayerPrefs.GetString("playerName", "");

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

RPC isn't called on objects with another name, even though they have the same script. 1 Answer

problem with raycasts and tags 1 Answer

Need help with AI in multiplayer 1 Answer

ngui health bar in multiplayer game? 0 Answers

Audio Script doesn't work 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges