Question by
iGetty1 · Apr 13, 2017 at 03:12 PM ·
multiplayersystemchat
Global variable
How can I get this to display to EVERYBODY connected to the server?
When I send a message, it only sends to the player who sent it, nobody else..
It is MP connected, all that works - just the message doesn't.
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System;
using UnityEngine;
using UnityEngine.Networking;
public class ServerChat : NetworkBehaviour {
public string MessageOne = null;
public string MessageTwo = null;
public string MessageThree = null;
public string MessageFour = null;
public string MessageFive = null;
public int lastMsg = 0;
[SyncVar] public bool isChatting = false;
[SyncVar] public string _toSend = null;
void Start()
{
}
void OnGUI()
{
if (!isLocalPlayer)
return;
GUI.contentColor = Color.red;
if (MessageOne != null)
GUI.Label (new Rect (30, Screen.height / 2, (MessageOne.Length * 10), 25), MessageOne);
if (MessageTwo != null)
GUI.Label (new Rect (30, Screen.height / 2 + 20, (MessageTwo.Length * 10), 25), MessageTwo);
if (MessageThree != null)
GUI.Label (new Rect (30, Screen.height / 2 + 40, (MessageThree.Length * 10), 25), MessageThree);
if (MessageFour != null)
GUI.Label (new Rect (30, Screen.height / 2 + 60, (MessageFour.Length * 10), 25), MessageFour);
if (MessageFive != null)
GUI.Label (new Rect (30, Screen.height / 2 + 80, (MessageFive.Length * 10), 25), MessageFive);
if(isLocalPlayer){
if (isChatting) {
_toSend = GUI.TextField (new Rect (30, Screen.height / 2 + 100, 150, 25), _toSend);
if (GUI.Button (new Rect (200, Screen.height / 2 + 100, 50, 25), "Send")) {
OrganizeNewMessage (_toSend);
}
}
Event e = Event.current;
if (e.keyCode == KeyCode.Return) {
OrganizeNewMessage (_toSend);
}
}
}
[Command]
void CmdStopChatting()
{
isChatting = false;
}
[Command]
void CmdStartChatting()
{
isChatting = true;
}
void LogText(string section, string message)
{
DateTime dt = DateTime.Today;
string documents = System.Environment.GetFolderPath (System.Environment.SpecialFolder.MyDocuments).Replace("\\", "/") + "/Game/";
string files = documents + section + "_" + String.Format ("{0:d_M_yyyy}", dt) + ".txt";
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@files, true))
{
file.WriteLine(message);
}
}
void OrganizeNewMessage(string message)
{
string name = GetComponent<LocalPlayerManage> ().PlayerName;
LogText ("ChatLog", name + ": " + message);
if (message.Length == 0) {
CmdStopChatting ();
_toSend = "";
return;
}
lastMsg ++;
if (lastMsg == 0)
lastMsg = 1;
if (lastMsg > 5) {
MessageOne = MessageTwo;
MessageTwo = MessageThree;
MessageThree = MessageFour;
MessageFour = MessageFive;
lastMsg = 5;
}
switch (lastMsg)
{
case 1:
MessageOne = name + ": " + message;
break;
case 2:
MessageTwo = name + ": " + message;
break;
case 3:
MessageThree = name + ": " + message;
break;
case 4:
MessageFour = name + ": " + message;
break;
case 5:
MessageFive = name + ": " + message;
break;
}
CmdStopChatting ();
_toSend = "";
}
void Update()
{
if (!isLocalPlayer)
return;
if (!isChatting && Input.GetKeyDown (KeyCode.T)) {
CmdStartChatting ();
}
}
}
Comment