ensiform
Joined: 30 Sep 2005 Posts: 3
|
Posted: Wed Jan 11, 2006 2:14 pm Post subject: session stuff |
|
|
hey bani would it be possible to go into more detail on how to make this work?
http://www.quakesrc.org/forums/viewtopic.php?p=47407#47407
if done this:
g_local.h :
| Code: | | clientSession_t *g_sess; |
g_session.c:
| Code: | /*
==================
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];
} |
then i called read, write, init appropriately in the spots in g_client.c
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 |
|