/* ================ SV_ConnectClient Initializes a client_t for a new net connection. This will only be called once for a player each game, not once for each level change. ================ */ void SV_ConnectClient(int clientnum) { edict_t *ent; client_t *client; int edictnum; struct qsocket_s *netconnection; int i; float spawn_parms[NUM_SPAWN_PARMS]; client = svs.clients + clientnum; Con_DPrintf("Client %s connected\n", client->netconnection->address); edictnum = clientnum+1; ent = EDICT_NUM(edictnum); // set up the client_t netconnection = client->netconnection; if (sv.loadgame) { memcpy(spawn_parms, client->spawn_parms, sizeof(spawn_parms)); } memset(client, 0, sizeof(*client)); client->netconnection = netconnection; strcpy(client->name, "unconnected"); client->active = true; client->spawned = false; client->edict = ent; client->message.data = client->msgbuf; client->message.maxsize = sizeof(client->msgbuf); client->message.allowoverflow = true; // we can catch it #ifdef IDGODS client->privileged = IsID(&client->netconnection->addr); #else client->privileged = false; #endif if (sv.loadgame) { memcpy(client->spawn_parms, spawn_parms, sizeof(spawn_parms)); } else { // call the progs to get default spawn parms for the new client PR_ExecuteProgram(pr_global_struct->SetNewParms); for (i=0 ; i<NUM_SPAWN_PARMS ; i++) { client->spawn_parms[i] = (&pr_global_struct->parm1)[i]; } } SV_SendServerinfo(client); }
void CParser::ParseDataType(int nTabs) { CString sToken = m_oToken.GetCurrentToken(); m_sProgress = m_sProgress + GetTabs(nTabs) + "ParseDataType " + sToken; if(sToken == "Boolean" || sToken == "Byte" || sToken == "Currency" || sToken == "Date" || sToken == "Double" || sToken == "Integer" || sToken == "Long" || sToken == "Object" || sToken == "Single" || sToken == "String" || sToken == "Variant" || IsID() == true) { sToken = m_oToken.GetNextToken(); if(sToken == ".") { sToken = m_oToken.GetNextToken(); if(IsID() == false) m_sProgress = m_sProgress + GetTabs(nTabs+1) + GetErrorString(); else m_sProgress = m_sProgress + "." + sToken; m_oToken.GetNextToken(); } //return; } else if(sToken == "," || sToken == ")") { m_sProgress = m_sProgress + GetTabs(nTabs+1) + GetErrorString(); //return; } else { m_sProgress = m_sProgress + GetTabs(nTabs+1) + GetErrorString(); m_oToken.GetNextToken(); //return; } m_sProgress = m_sProgress + "\r\n"; }
void CParser::ParseID(int nTabs) { CString sToken = m_oToken.GetCurrentToken(); m_sProgress = m_sProgress + GetTabs(nTabs) + "ParseID " + sToken + "\r\n"; //ETokenType tt = m_oToken.GetCurrentTokenType(); //CString stt = m_oToken.GetCurrentTokenTypeInString(); if(IsID() == false) m_sProgress = m_sProgress + GetTabs(nTabs+1) + GetErrorString(); //if(tt != ttFunction) //else //m_sProgress = m_sProgress + "\t\t\t\t\tNOT function\r\n"; m_oToken.GetNextToken(); }
void CParser::ParseExpressionFactor(int nTabs) { CString sToken = m_oToken.GetCurrentToken(); ETokenType tt = m_oToken.GetCurrentTokenType(); m_sProgress = m_sProgress + GetTabs(nTabs) + "ParseExpressionFactor " + sToken + "\r\n"; if(IsID() == true) ParseID(nTabs+1); else if(tt == ttNumber) ParseNumber(nTabs+1); else if(tt == ttFunctionStartBracket) { m_sProgress = m_sProgress + GetTabs(nTabs+1) + "ParseStartBarcket " + sToken + "\r\n"; m_oToken.GetNextToken(); ParseExpression(nTabs+1); sToken = m_oToken.GetCurrentToken(); m_sProgress = m_sProgress + GetTabs(nTabs+1) + "ParseEndBarcket " + sToken + "\r\n"; if(sToken != ")") m_sProgress = m_sProgress + GetTabs(nTabs+1) + GetErrorString(); m_oToken.GetNextToken(); } //else if(tt == ttFunctionEndBracket) //{ //m_oToken.GetNextToken(); //return; //} else { m_sProgress = m_sProgress + GetTabs(nTabs+1) + GetErrorString(); m_oToken.GetNextToken(); } }
void CParser::ParseArgumentScope() { int nTabs = 7; CString sToken = m_oToken.GetCurrentToken(); m_sProgress = m_sProgress + GetTabs(nTabs) + "ParseArgumentScope " + sToken + "\r\n"; if(sToken == "ByRef" || sToken == "ByVal") { m_oToken.GetNextToken(); return; } if(IsID() == false) { m_sProgress = m_sProgress + GetTabs(nTabs+1) + GetErrorString(); m_oToken.GetNextToken(); } }