http://www.quakesrc.org/forums/viewtopi ... 7407#47407
if done this:
g_local.h :
Code: Select all
clientSession_t *g_sess;
Code: Select all
/*
==================
G_WriteSessionData
==================
*/
void G_WriteSessionData( void ) {
int i;
trap_Cvar_Set( "session", va2("%i", g_gametype.integer) );
/*for ( i = 0 ; i < level.maxclients ; i++ ) {
if ( level.clients[i].pers.connected == CON_CONNECTED ) {
G_WriteClientSessionData( &level.clients[i] );
}
}*/
for( i=0; i < g_maxclients.integer; i++ ) {
g_sess[i] = level.clients[i].sess;
}
}
void G_InitSess( gclient_t *client ) {
char gsessptr[MAX_STRING_CHARS];
// bani - allocate client persistent session data
trap_Cvar_VariableStringBuffer( "gsess", gsessptr, sizeof( gsessptr ) );
if( !Q_stricmp( gsessptr, "" ) ) {
g_sess = malloc( g_maxclients.integer * sizeof( clientSession_t ) );
trap_Cvar_Set( "gsess", va2( "%p", g_sess ) );
memset( g_sess, 0, g_maxclients.integer * sizeof( clientSession_t ) );
} else {
sscanf( gsessptr, "%p", &g_sess );
}
}
void G_ReadSess( gclient_t *client ) {
client->sess = g_sess[client->ps.clientNum];
}
seems okay afaik on first load but when i go to restart or something crashes, i havent attempted to debug yet for 1 cause i dont even think im actually doing it right but i dunno.
gsess atm = 02441E18