Guest User

Untitled

a guest
Oct 1st, 2023
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.77 KB | None | 0 0
  1. char proxy_realip[MAX_CLIENTS][16] = {0};
  2. extern dvar_t *g_password;
  3. const char* ClientConnect(unsigned int clientNum, unsigned int scriptPersId)
  4. {
  5.     XAnimTree_s *tree;
  6.     clientInfo_t *ci;
  7.     gentity_s *ent;
  8.     char userinfo[1024];
  9.     char realIP[16];
  10.     gclient_s *gclient;
  11.     const char *password;
  12.     uint16_t id;
  13.  
  14.     id = scriptPersId;
  15.     ent = &g_entities[clientNum];
  16.     gclient = &level.clients[clientNum];
  17.     memset(gclient, 0, sizeof(gclient_s));
  18.     ci = &level_bgs.clientinfo[clientNum];
  19.     tree = level_bgs.clientinfo[clientNum].pXAnimTree;
  20.     memset(ci, 0, sizeof(clientInfo_t));
  21.     ci->pXAnimTree = tree;
  22.     ci->infoValid = 1;
  23.     ci->nextValid = 1;
  24.     gclient->sess.connected = CS_ZOMBIE;
  25.     gclient->sess.pers = id;
  26.     gclient->sess.state.team = 3;
  27.     gclient->sess.sessionState = STATE_SPECTATOR;
  28.     gclient->spectatorClient = -1;
  29.     gclient->sess.forceSpectatorClient = -1;
  30.     G_InitGentity(ent);
  31.     ent->handler = 0;
  32.     ent->client = gclient;
  33.     gclient->useHoldEntity = 1023;
  34.     gclient->sess.state.clientIndex = clientNum;
  35.     gclient->ps.clientNum = clientNum;
  36.     ClientUserinfoChanged(clientNum);
  37.     SV_GetUserinfo(clientNum, userinfo, 1024);
  38.     if ( gclient->sess.localClient
  39.             || (password = Info_ValueForKey(userinfo, "password"), !*g_password->current.string)
  40.             || !I_stricmp(g_password->current.string, "none")
  41.             || !strcmp(g_password->current.string, password) )
  42.     {
  43.         strncpy(realIP, Info_ValueForKey(userinfo, "ip"), sizeof(proxy_realip[clientNum]) - 1);
  44.         if (strlen(realIP) != 0)
  45.         {
  46.             strncpy(proxy_realip[clientNum], realIP, sizeof(proxy_realip[clientNum]) - 1);
  47.             printf("realip = %s\n", proxy_realip[clientNum]);
  48.         }
  49.  
  50.         Scr_PlayerConnect(ent);
  51.         CalculateRanks();
  52.         return 0;
  53.     }
  54.     else
  55.     {
  56.         G_FreeEntity(ent);
  57.         return "GAME_INVALIDPASSWORD";
  58.     }
  59.  
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment