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 WillieZZy · Jul 06, 2010 at 01:24 AM · c#syntax-errorparsingcs8025

I can't figure why I'm getting a parsing error with my C# Code.

What is my parsing error on line 16? I can't figure out what is wrong with it, I know it's just staring me in the face but I just don't see it. Here is the the code, line 16 is the one with (public var gameName : String = "Example4";):

// Converted from UnityScript to C# at http://www.M2H.nl/files/js_to_c.php - by Mike Hergaarden // Do test the code! You usually need to change a few small bits.

using UnityEngine; using System.Collections;

public class target : MonoBehaviour { / This file is part of the Unity networking tutorial by M2H (http://www.M2H.nl) The original author of this code is Mike Hergaarden, even though some small parts are copied from the Unity tutorials/manuals. Feel free to use this code for your own projects, drop us a line if you made something exciting! /

public var gameName : String = "Example4"; public var serverPort : int = 35001;

public HostData[] hostData;

private ConnectionTesterStatus natCapable = ConnectionTesterStatus.Undetermined; public var filterNATHosts : boolean = false; private var probingPublicIP : boolean = false; private var doneTestingNAT : boolean = false; private float timer = 0.0f;

private var hideTest : boolean = false; private var testMessage : String= "Undetermined NAT capabilities";

private bool tryingToConnectPlayNow = false; public int tryingToConnectPlayNowNumber = 0;

private int[] remotePort = new int[3]; private string[] remoteIP = new string[3]; public string connectionInfo = "";

public bool lastMSConnectionAttemptForcedNat= false; private bool NAToptionWasSwitchedForTesting = false; private bool officialNATstatus = Network.useNat; public string errorMessage = ""; private float lastPlayNowConnectionTime;

public bool nowConnecting = false;

void Awake (){ sortedHostList = new Array ();

 // Start connection test
 natCapable = Network.TestConnection();

 // What kind of IP does this machine have? TestConnection also indicates this in the
 // test results
 if (Network.HavePublicAddress()){
     Debug.Log("This machine has a public IP address");
 }else{
     Debug.Log("This machine has a private IP address");
 }   

 /* //If you dont want to use the Unity masterserver..
 Network.natFacilitatorIP = myMasterServerIP;
 Network.natFacilitatorPort = 11111;//Change this
 MasterServer.ipAddress = myMasterServerIP;
 MasterServer.port = 22222;//Change this
 Network.connectionTesterIP = myMasterServerIP;
 Network.connectionTesterPort = 33333;//Change this
 */


}

void Start (){//must be in start because of coroutine

 yield return new WaitForSeconds(0.5f);
 int tries=0;
 while(tries<=10){       
     if(hostData && hostData.length>0){
         //Waiting for hostData
     }else{
         FetchHostList(true);
     }
     yield return new WaitForSeconds(0.5f);
     tries++;
 }

}

void OnFailedToConnectToMasterServer ( NetworkConnectionError info ){ //Yikes }

void OnFailedToConnect ( NetworkConnectionError info ){ Debug.Log("FailedToConnect info:"+info); FailedConnRetry(info);
}

void Connect ( string ip , int port , bool usenat ){ // Enable NAT functionality based on what the hosts if configured to do Network.useNat = usenat; lastMSConnectionAttemptForcedNat = usenat;

 Debug.Log("Connecting to "+ip+":"+port+" NAT:"+usenat);
 Network.Connect(ip, port);      
 nowConnecting=true; 

}

//This second definition of Connect can handle the ip string[] passed by the masterserver void Connect ( string[] ip , int port , bool usenat ){ // Enable NAT functionality based on what the hosts if configured to do Network.useNat = usenat; lastMSConnectionAttemptForcedNat = usenat;

 Debug.Log("Connecting to "+ip[0]+":"+port+" NAT:"+usenat);
 Network.Connect(ip, port);      
 nowConnecting=true; 

}

void StartHost ( int players , int port ){ if(players<=1){ players=1; } //Network.InitializeSecurity(); Network.InitializeServer(players, port); }

void OnConnectedToServer (){ //Stop communication until in the game Network.isMessageQueueRunning = false;

 //Save these details so we can use it in the next scene
 PlayerPrefs.SetString("connectIP", Network.connections[0].ipAddress);
 PlayerPrefs.SetInt("connectPort", Network.connections[0].port);

}

void FailedConnRetry ( NetworkConnectionError info ){ if(info == NetworkConnectionError.InvalidPassword){ mayRetry=false; }

 nowConnecting=false;

 //Quickplay
 if(tryingToConnectPlayNow){
     //Try again without NAT if we used NAT
     if(mayRetry &amp;&amp; Network.useNat &amp;&amp; lastMSConnectionAttemptForcedNat){
         Debug.Log("Failed connect 1A: retry without NAT");

         remotePort[0]=serverPort;//Fall back to default server port
         Connect(remoteIP, remotePort[0], false);
         lastPlayNowConnectionTime=Time.time;
     }else{
         //We didn't use NAT and failed
         Debug.Log("Failed connect 1B: Don't retry");

         //Reset NAT to org. value
         Network.useNat=officialNATstatus;

         //Connect to next playnow/quickplay host
         tryingToConnectPlayNowNumber++;
         tryingToConnectPlayNow=false;
     }
 }else{
     //Direct connect or via host list manually
     connectionInfo="Failed to connect!";

     if(mayRetry &amp;&amp; Network.useNat &amp;&amp; lastMSConnectionAttemptForcedNat){
         //Since the last connect forced NAT usage,
         // let's try again without NAT.     
         Network.useNat=false;
         Network.Connect(remoteIP, remotePort[0]);
         nowConnecting=true;
         lastPlayNowConnectionTime=Time.time;

     }else{
         Debug.Log("Failed 2b");

         if(info == NetworkConnectionError.InvalidPassword){
             errorMessage="Failed to connect: Wrong password supplied";
         }else if(info == NetworkConnectionError.TooManyConnectedPlayers){
             errorMessage="Failed to connect: Server is full";
         }else{
             errorMessage="Failed to connect";
         }

         //reset to default port
         remotePort[0]=serverPort;

         //Reset nat to tested value
         Network.useNat=officialNATstatus;

     }
 }   

}

public float CONNECT_TIMEOUT = 0.75f; public float CONNECT_NAT_TIMEOUT = 5.00f;

//Our quickplay function: Go trough the gameslist and try to connect to all games void PlayNow ( float timeStarted ){

     int i=0;

     foreach(var myElement in sortedHostList)
     {
         var element : int = hostData[myElement];

         // Do not try NAT enabled games if we cannot do NAT punchthrough
         // Do not try connecting to password protected games
         if ( !(filterNATHosts &amp;&amp; element.useNat) &amp;&amp; !element.passwordProtected  )
         {
             aHost=1;

             if(element.connectedPlayers&lt;element.playerLimit)
             {                   
                 if(tryingToConnectPlayNow){
                     var natText;
                     if(Network.useNat){
                         natText=" with option 1/2";
                     }else{
                         natText=" with option 2/2";
                     }
                     if((!Network.useNat &amp;&amp; lastPlayNowConnectionTime+CONNECT_TIMEOUT&lt;=Time.time) || (Network.useNat  &amp;&amp; lastPlayNowConnectionTime+CONNECT_NAT_TIMEOUT&lt;=Time.time)){
                         Debug.Log("Interrupted by timer, NAT:"+Network.useNat);
                         FailedConnRetry(NetworkConnectionError.ConnectionFailed);                           
                     }
                     return "Trying to connect to host "+(tryingToConnectPlayNowNumber+1)+"/"+sortedHostList.length+" "+natText; 
                 }       
                 if(!tryingToConnectPlayNow &amp;&amp; tryingToConnectPlayNowNumber&lt;=i){
                     Debug.Log("Trying to connect to game NR "+i+" &amp; "+tryingToConnectPlayNowNumber);
                     tryingToConnectPlayNow=true;
                     tryingToConnectPlayNowNumber=i;

                     // Enable NAT functionality based on what the hosts if configured to do
                     lastMSConnectionAttemptForcedNat=element.useNat;
                     Network.useNat = element.useNat;
                     int connectPort=element.port;
                     if (Network.useNat){
                         print("Using Nat punchthrough to connect");
                     }else{
                         //connectPort=serverPort; //bad idea!
                         print("Connecting directly to host");
                     }
                     Debug.Log("connecting to "+element.gameName+" "+element.ip+":"+connectPort);
                     Network.Connect(element.ip, connectPort);   
                     lastPlayNowConnectionTime=Time.time;
                 }
                 i++;        
             }
         }           
     }

     //If we reach this point then either we've parsed the whole list OR the list is still empty

     //Dont give up yet: Give MS 7 seconds to feed the list
     if(Time.time&lt;timeStarted+7){
         FetchHostList(true);    
         return "Waiting for masterserver..."+Mathf.Ceil((timeStarted+7)-Time.time); 
     }

     if(!tryingToConnectPlayNow){
         return "failed";
     }


}

void Update (){ // If network test is undetermined, keep running if (!doneTestingNAT) { TestConnection(); } }

void TestConnection (){ // Start/Poll the connection test, report the results in a label and react to the results accordingly natCapable = Network.TestConnection(); switch (natCapable) { case ConnectionTesterStatus.Error: testMessage = "Problem determining NAT capabilities"; doneTestingNAT = true; break;

     case ConnectionTesterStatus.Undetermined: 
         testMessage = "Undetermined NAT capabilities";
         doneTestingNAT = false;
         break;

     case ConnectionTesterStatus.PrivateIPNoNATPunchthrough: 
         testMessage = "Cannot do NAT punchthrough, filtering NAT enabled hosts for client connections, local LAN games only.";
         filterNATHosts = true;
         Network.useNat = true;
         doneTestingNAT = true;
         break;

     case ConnectionTesterStatus.PrivateIPHasNATPunchThrough:
         if (probingPublicIP)
             testMessage = "Non-connectable public IP address (port "+ serverPort +" blocked), NAT punchthrough can circumvent the firewall.";
         else
             testMessage = "NAT punchthrough capable. Enabling NAT punchthrough functionality.";
         // NAT functionality is enabled in case a server is started,
         // clients should enable this based on if the host requires it
         Network.useNat = true;
         doneTestingNAT = true;
         break;

     case ConnectionTesterStatus.PublicIPIsConnectable:
         testMessage = "Directly connectable public IP address.";
         Network.useNat = false;
         doneTestingNAT = true;
         break;

     // This case is a bit special as we now need to check if we can 
     // cicrumvent the blocking by using NAT punchthrough
     case ConnectionTesterStatus.PublicIPPortBlocked:
         testMessage = "Non-connectble public IP address (port " + serverPort +" blocked), running a server is impossible.";
         Network.useNat = false;
         // If no NAT punchthrough test has been performed on this public IP, force a test
         if (!probingPublicIP)
         {
             Debug.Log("Testing if firewall can be circumnvented");
             natCapable = Network.TestConnectionNAT();
             probingPublicIP = true;
             timer = Time.time + 10;
         }
         // NAT punchthrough test was performed but we still get blocked
         else if (Time.time &gt; timer)
         {
             probingPublicIP = false;        // reset
             Network.useNat = true;
             doneTestingNAT = true;
         }
         break;
     case ConnectionTesterStatus.PublicIPNoServerStarted:
         testMessage = "Public IP address but server not initialized, it must be started to check server accessibility. Restart connection test when ready.";
         break;
     default: 
         testMessage = "Error in test routine, got " + natCapable;
 }
 officialNATstatus=Network.useNat;
 if(doneTestingNAT){
     Debug.Log("TestConn:"+testMessage);
     Debug.Log("TestConn:"+natCapable + " " + probingPublicIP + " " + doneTestingNAT);
 }

}

private float lastHostListRequest = 0;

//Request the host limit, but we limit these requests //Max once every two minutes automatically, max once every 5 seconds when manually requested void FetchHostList ( bool manual ){ int timeout = 120; if(manual){ timeout=5; }

 if(lastHostListRequest==0 || Time.realtimeSinceStartup &gt; lastHostListRequest + timeout){
         lastHostListRequest = Time.realtimeSinceStartup;
         MasterServer.RequestHostList (gameName);            
         yield return new WaitForSeconds(1);//We gotta wait :/           
         hostData = MasterServer.PollHostList();
         yield return new WaitForSeconds(1);//We gotta wait :/   
         CreateSortedArray();
         Debug.Log("Requested new host list, got: "+hostData.length);
 }



}

//The code below is all about sorting the game list by playeramount

public Array sortedHostList;

void CreateSortedArray (){

 sortedHostList = new Array();   

 int i=0;
 HostData[] data = hostData;
 foreach(var element in data)
 {
     AddToArray(i);
     i++;        
 }           

}

void AddToArray ( int nr ){ sortedHostList.Add (nr);
SortLastItem(); }

void SortLastItem (){ if(sortedHostList.length<=1){ return; } for(var i = sortedHostList.length-1;i>0;i--){ int value1= hostData[sortedHostList[i-1]].connectedPlayers; int value2 = hostData[sortedHostList[i]].connectedPlayers; if(value1<value2){ SwapArrayItem((i-1), i); }else{ //Sorted! return; } } }

void SwapArrayItem (nr1, nr2){ var tmp=sortedHostList[nr1]; sortedHostList[nr1]=sortedHostList[nr2]; sortedHostList[nr2]=tmp; } }

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
1
Best Answer

Answer by Tetrad · Jul 06, 2010 at 01:36 AM

That's not how you declare variables in C#.

In JS it's like this

var VarName : VarType = whatever;

In C# it's like this

VarType VarName = whatever;

Also the type in C# is bool and not boolean.

More info here: http://answers.unity3d.com/questions/5507/what-are-the-syntax-differences-in-c-and-javascript

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

No one has followed this question yet.

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

Parsing error in C# 2 Answers

Parsing error. No idea what it is or what the problem is. 2 Answers

C# Errors CS1525,CS8025 2 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