Tremulous Forum

Mods => Modding Center => Topic started by: |MoT|Erfe555 on July 03, 2009, 10:30:22 am

Title: Problem with forcespec patch
Post by: |MoT|Erfe555 on July 03, 2009, 10:30:22 am
I use this forcespec patch: forcespec_svn966.patch on a SVN revision 966.
I patched the SVN, some hunks failed so i use the .rej file to complete the patch.
I copy the C source code of the .rej file in g_admin.c file and when i compile i have this error in msys:

Code: [Select]
SHLIB_CC src/game/g_admin.c
src/game/g_admin.c:138: `G_admin_forcespec' undeclared here (not in a function)
src/game/g_admin.c:138: initializer element is not constant
src/game/g_admin.c:138: (near initialization for `g_admin_cmds[18].handler')
src/game/g_admin.c:141: initializer element is not constant
src/game/g_admin.c:141: (near initialization for `g_admin_cmds[18]')
src/game/g_admin.c:143: `G_admin_unforcespec' undeclared here (not in a function)
src/game/g_admin.c:143: initializer element is not constant
src/game/g_admin.c:143: (near initialization for `g_admin_cmds[19].handler')
src/game/g_admin.c:146: initializer element is not constant
src/game/g_admin.c:146: (near initialization for `g_admin_cmds[19]')
src/game/g_admin.c:151: initializer element is not constant
src/game/g_admin.c:151: (near initialization for `g_admin_cmds[20]')
src/game/g_admin.c:156: initializer element is not constant
src/game/g_admin.c:156: (near initialization for `g_admin_cmds[21]')
src/game/g_admin.c:162: initializer element is not constant
src/game/g_admin.c:162: (near initialization for `g_admin_cmds[22]')
src/game/g_admin.c:167: initializer element is not constant
src/game/g_admin.c:167: (near initialization for `g_admin_cmds[23]')
src/game/g_admin.c:172: initializer element is not constant
src/game/g_admin.c:172: (near initialization for `g_admin_cmds[24]')
src/game/g_admin.c:177: initializer element is not constant
src/game/g_admin.c:177: (near initialization for `g_admin_cmds[25]')
src/game/g_admin.c:182: initializer element is not constant
src/game/g_admin.c:182: (near initialization for `g_admin_cmds[26]')
src/game/g_admin.c:187: initializer element is not constant
src/game/g_admin.c:187: (near initialization for `g_admin_cmds[27]')
src/game/g_admin.c:192: initializer element is not constant
src/game/g_admin.c:192: (near initialization for `g_admin_cmds[28]')
src/game/g_admin.c:197: initializer element is not constant
src/game/g_admin.c:197: (near initialization for `g_admin_cmds[29]')
src/game/g_admin.c:202: initializer element is not constant
src/game/g_admin.c:202: (near initialization for `g_admin_cmds[30]')
src/game/g_admin.c:207: initializer element is not constant
src/game/g_admin.c:207: (near initialization for `g_admin_cmds[31]')
src/game/g_admin.c:212: initializer element is not constant
src/game/g_admin.c:212: (near initialization for `g_admin_cmds[32]')
src/game/g_admin.c:217: initializer element is not constant
src/game/g_admin.c:217: (near initialization for `g_admin_cmds[33]')
src/game/g_admin.c:222: initializer element is not constant
src/game/g_admin.c:222: (near initialization for `g_admin_cmds[34]')
src/game/g_admin.c:227: initializer element is not constant
src/game/g_admin.c:227: (near initialization for `g_admin_cmds[35]')
src/game/g_admin.c:232: initializer element is not constant
src/game/g_admin.c:232: (near initialization for `g_admin_cmds[36]')
src/game/g_admin.c:237: initializer element is not constant
src/game/g_admin.c:237: (near initialization for `g_admin_cmds[37]')
src/game/g_admin.c:242: initializer element is not constant
src/game/g_admin.c:242: (near initialization for `g_admin_cmds[38]')
src/game/g_admin.c:247: initializer element is not constant
src/game/g_admin.c:247: (near initialization for `g_admin_cmds[39]')
src/game/g_admin.c:252: initializer element is not constant
src/game/g_admin.c:252: (near initialization for `g_admin_cmds[40]')
src/game/g_admin.c:258: initializer element is not constant
src/game/g_admin.c:258: (near initialization for `g_admin_cmds[41]')
src/game/g_admin.c:263: initializer element is not constant
src/game/g_admin.c:263: (near initialization for `g_admin_cmds[42]')
src/game/g_admin.c:268: initializer element is not constant
src/game/g_admin.c:268: (near initialization for `g_admin_cmds[43]')
src/game/g_admin.c:273: initializer element is not constant
src/game/g_admin.c:273: (near initialization for `g_admin_cmds[44]')
src/game/g_admin.c:278: initializer element is not constant
src/game/g_admin.c:278: (near initialization for `g_admin_cmds[45]')
src/game/g_admin.c:284: initializer element is not constant
src/game/g_admin.c:284: (near initialization for `g_admin_cmds[46]')
src/game/g_admin.c:289: initializer element is not constant
src/game/g_admin.c:289: (near initialization for `g_admin_cmds[47]')
src/game/g_admin.c:294: initializer element is not constant
src/game/g_admin.c:294: (near initialization for `g_admin_cmds[48]')
src/game/g_admin.c:299: initializer element is not constant
src/game/g_admin.c:299: (near initialization for `g_admin_cmds[49]')
src/game/g_admin.c:304: initializer element is not constant
src/game/g_admin.c:304: (near initialization for `g_admin_cmds[50]')
src/game/g_admin.c:308: initializer element is not constant
src/game/g_admin.c:308: (near initialization for `g_admin_cmds[51]')
src/game/g_admin.c:315: initializer element is not constant
src/game/g_admin.c:315: (near initialization for `g_admin_cmds[52]')
src/game/g_admin.c:324: initializer element is not constant
src/game/g_admin.c:324: (near initialization for `g_admin_cmds[53]')
src/game/g_admin.c:328: initializer element is not constant
src/game/g_admin.c:328: (near initialization for `g_admin_cmds[54]')
src/game/g_admin.c:333: initializer element is not constant
src/game/g_admin.c:333: (near initialization for `g_admin_cmds[55]')
src/game/g_admin.c:338: initializer element is not constant
src/game/g_admin.c:338: (near initialization for `g_admin_cmds[56]')
src/game/g_admin.c:343: initializer element is not constant
src/game/g_admin.c:343: (near initialization for `g_admin_cmds[57]')
src/game/g_admin.c:348: initializer element is not constant
src/game/g_admin.c:348: (near initialization for `g_admin_cmds[58]')
src/game/g_admin.c:354: initializer element is not constant
src/game/g_admin.c:354: (near initialization for `g_admin_cmds[59]')
src/game/g_admin.c: In function `G_admin_bubble':
src/game/g_admin.c:6018: warning: unused variable `command'
make[2]: *** [build/release-mingw32-x86/base/game/g_admin.o] Error 1
make[2]: Leaving directory `/c/msys/1.0/home/mot_qvm_rej/trunk'
make[1]: *** [targets] Error 2
make[1]: Leaving directory `/c/msys/1.0/home/mot_qvm_rej/trunk'
make: *** [release] Error 2

Where is the error? And what can i do to resolve it?
I tried to found it, but losing.
Pls a little help... :'(
Title: Re: Problem with forcespec patch
Post by: |MoT|Erfe555 on July 03, 2009, 10:50:52 am
I think that the error is the qboolean variable, maybe is a syntax error:

Code: [Select]
qboolean G_admin_forcespec( gentity_t *ent, int skiparg )
 {
   int pids[ MAX_CLIENTS ];
   char name[ MAX_NAME_LENGTH ], err[ MAX_STRING_CHARS ];
   int minargc;
   gentity_t *vic;


     minargc = 2 + skiparg;

   if( G_SayArgc() < minargc )
   {
     ADMP( "^3!forcespec: ^7usage: !forcespec [name|slot#]\n" );
     return qfalse;
   }
   G_SayArgv( 1 + skiparg, name, sizeof( name ) );

   if( G_ClientNumbersFromString( name, pids ) != 1 )
   {
     G_MatchOnePlayer( pids, err, sizeof( err ) );
     ADMP( va( "^3!forcespec: ^7%s\n", err ) );
     return qfalse;
   }

   vic = &g_entities[ pids[ 0 ] ];

  if ( vic->client->pers.specd == qtrue )
  {
  ADMP( "^3!forcespec: ^7player already forcespeced\n" );

  return qfalse;
  }

 //push them to the spec team
 G_ChangeTeam( vic, PTE_NONE );
 //tell g_cmds that they cannot join teams
 vic->client->pers.specd = qtrue;
 //tell the person they cant join teams
 CPx( pids[ 0 ], "cp \"^1you can no longer join teams\"" );
 //tell everyone that you cant join teams
 AP( va( "print \"^3!forcespec: ^7%s^7 has disallowed joining of teams for ^7%s\n\"", ( ent ) ? ent->client->pers.netname : "console", vic->client->pers.netname ) );
 //tell g_cmds to save their creds
 vic->client->pers.saved = qtrue;

 
   return qtrue;

 }

 qboolean G_admin_unforcespec( gentity_t *ent, int skiparg )
 {
   int pids[ MAX_CLIENTS ];
   char name[ MAX_NAME_LENGTH ], err[ MAX_STRING_CHARS ];
   int minargc;
   gentity_t *vic;


     minargc = 2 + skiparg;

   if( G_SayArgc() < minargc )
   {
     ADMP( "^3!unforcespec: ^7usage: !unforcespec [name|slot#]\n" );
     return qfalse;
   }
   G_SayArgv( 1 + skiparg, name, sizeof( name ) );

   if( G_ClientNumbersFromString( name, pids ) != 1 )
   {
     G_MatchOnePlayer( pids, err, sizeof( err ) );
     ADMP( va( "^3!unforcespec: ^7%s\n", err ) );
     return qfalse;
   }

   vic = &g_entities[ pids[ 0 ] ];

  if ( vic->client->pers.specd == qfalse )
  {
  ADMP( "^3!unforcespec: ^7player is not forcespeced\n" );

  return qfalse;
  }



 //remove the limitation
 vic->client->pers.specd = qfalse;
 //tell them it was removed
 CPx( pids[ 0 ], "cp \"^1you can now join teams\"" );
 //tell everyone that it was removed
 AP( va( "print \"^3!unforcespec: ^7%s^7 has allowed joining of teams for ^7%s\n\"", ( ent ) ? ent->client->pers.netname : "console", vic->client->pers.netname ) );
  return qtrue;

 }



These are the two qboolean variables of the forcespac and unforcespec.
I think that the error is here but i don't know where...
Because the
Code: [Select]
src/game/g_admin.c:138: `G_admin_forcespec' undeclared here (not in a function)
src/game/g_admin.c:138: initializer element is not constant
src/game/g_admin.c:138: (near initialization for `g_admin_cmds[18].handler')
src/game/g_admin.c:141: initializer element is not constant
src/game/g_admin.c:141: (near initialization for `g_admin_cmds[18]')
src/game/g_admin.c:143: `G_admin_unforcespec'  undeclared here (not in a function)
src/game/g_admin.c:143: initializer element is not constant

G_admin_forcespec and G_admin_unforcespec are not declared (for the compiler).
Tell me if i say bullshit.
Help requested! ???
Title: Re: Problem with forcespec patch
Post by: gimhael on July 03, 2009, 12:39:40 pm
Probably your patch is missing the prototypes for these functions. In the patch tracker there is a comment by spidey that explains how to fix it:

Quote
i don't know if he updated the patch
but the one i have is missing 2 lines
in g_admin.h, here they are

qboolean G_admin_forcespec( gentity_t *ent, int skiparg );
qboolean G_admin_unforcespec( gentity_t *ent, int skiparg );

put them under // ! command functions
Title: Re: Problem with forcespec patch
Post by: |MoT|Erfe555 on July 03, 2009, 12:44:32 pm
Gimhael FOR PRESIDENT!
 ;D ;D ;D
Title: Re: Problem with votelog patch
Post by: |MoT|Erfe555 on July 03, 2009, 05:45:15 pm
Another problem i patched the SVN 966 with the votelog_svn35.patch i take some .rej i copy the source code into various files but when i compiled i had an error:

Code: [Select]
src/game/g_main.c: In function `CheckVote':
src/game/g_main.c:2475: `result' undeclared (first use in this function)
src/game/g_main.c:2475: (Each undeclared identifier is reported only once
src/game/g_main.c:2475: for each function it appears in.)
src/game/g_main.c: In function `CheckTeamVote':
src/game/g_main.c:2542: `result' undeclared (first use in this function)
src/game/g_main.c:2542: `voteYesPercent' undeclared (first use in this function)

Can someone help me?
Or the SUPER GIMHAEL is still here to help me? lol
Title: Re: Problem with forcespec patch
Post by: gimhael on July 04, 2009, 07:20:34 am
Could you post that piece of the code ?
Title: Re: Problem with forcespec patch
Post by: |MoT|Erfe555 on July 04, 2009, 10:27:55 am
Here is it:

Code: [Select]
/*
==================
CheckTeamVote
==================
*/
void CheckTeamVote( int team )
{
  int cs_offset;

  if ( team == PTE_HUMANS )
    cs_offset = 0;
  else if ( team == PTE_ALIENS )
    cs_offset = 1;
  else
    return;

  if( !level.teamVoteTime[ cs_offset ] )
    return;

  if( level.time - level.teamVoteTime[ cs_offset ] >= VOTE_TIME )
  {
    if( level.teamVoteYes[ cs_offset ] > level.teamVoteNo[ cs_offset ] && level.teamVoteYes[ cs_offset ] >= 2 )
    {
      // execute the command, then remove the vote
      trap_SendServerCommand( -1, va("print \"Team vote passed  (%d - %d)\n\"", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] ) );
      trap_SendConsoleCommand( EXEC_APPEND, va( "%s\n", level.teamVoteString[ cs_offset ] ) );
    }
    else
    {
      trap_SendServerCommand( -1, va("print \"Team vote failed  (%d - %d)\n\"", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] ) );
      G_LogPrintf( "Teamvote: Team vote failed (%d - %d)\n", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] );
    }
  }
  else
  {
    if( level.teamVoteYes[ cs_offset ] > level.numteamVotingClients[ cs_offset ] / 2 )
    {
      // execute the command, then remove the vote
      trap_SendServerCommand( -1, va("print \"Team vote passed  (%d - %d)\n\"", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] ) );
      G_LogPrintf( "Teamvote: Team vote passed (%d - %d)\n", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] );
      //
      trap_SendConsoleCommand( EXEC_APPEND, va( "%s\n", level.teamVoteString[ cs_offset ] ) );
    }
    else if( level.teamVoteNo[ cs_offset ] >= level.numteamVotingClients[ cs_offset ] / 2 )
    {
      // same behavior as a timeout
      trap_SendServerCommand( -1, va("print \"Team vote failed  (%d - %d)\n\"", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] ) );
      G_LogPrintf( "Teamvote: Team vote failed (%d - %d)\n", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] );
    }
    else
    {
      // still waiting for a majority
      return;
    }
  }

  G_admin_adminlog_log( NULL, "teamvote",
    va( "%s^7 (^2Y:%d^7-^1N:%d^7, %d percent)",
      result, level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ], voteYesPercent ),
    0, ( strstr( result, "pass" ) != NULL ) );

  level.teamVoteTime[ cs_offset ] = 0;
  trap_SetConfigstring( CS_TEAMVOTE_TIME + cs_offset, "" );
  trap_SetConfigstring( CS_TEAMVOTE_STRING + cs_offset, "" );
}

Or maybe is this the right string but i don't know...

Code: [Select]
/*
==================
CheckMsgTimer
==================
*/
void CheckMsgTimer( void )
{
  if( !g_msgTime.integer )
    return;

  if( level.time - level.lastMsgTime < abs( g_msgTime.integer ) * 60000 )
    return;

  // negative settings only print once per map
  if( ( level.lastMsgTime ) && g_msgTime.integer < 0 )
    return;

  level.lastMsgTime = level.time;

  if( g_msg.string[0] )
  {
    char buffer[ MAX_STRING_CHARS ];

    Q_strncpyz( buffer, g_msg.string, sizeof( buffer ) );
    G_ParseEscapedString( buffer );
    trap_SendServerCommand( -1, va( "cp \"%s\"", buffer ) );
    trap_SendServerCommand( -1, va( "print \"%s\n\"", buffer ) );
  }
}

/*
==================
CheckCountdown
==================

If you want i can post all g_main.c in pastebin or somthing.
Title: Re: Problem with forcespec patch
Post by: gimhael on July 04, 2009, 10:53:16 am
That patch seems to be based on the p-g-qvm, which is a bit different here than the default qvm. Try the following (untested):

Code: [Select]
/*
==================
CheckTeamVote
==================
*/
void CheckTeamVote( int team )
{
  int cs_offset;
  char *result;

  if ( team == PTE_HUMANS )
    cs_offset = 0;
  else if ( team == PTE_ALIENS )
    cs_offset = 1;
  else
    return;

  if( !level.teamVoteTime[ cs_offset ] )
    return;

  if( level.time - level.teamVoteTime[ cs_offset ] >= VOTE_TIME )
  {
    if( level.teamVoteYes[ cs_offset ] > level.teamVoteNo[ cs_offset ] && level.teamVoteYes[ cs_offset ] >= 2 )
    {
      // execute the command, then remove the vote
      trap_SendServerCommand( -1, va("print \"Team vote passed  (%d - %d)\n\"", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] ) );
      trap_SendConsoleCommand( EXEC_APPEND, va( "%s\n", level.teamVoteString[ cs_offset ] ) );
      result = "passed";
    }
    else
    {
      trap_SendServerCommand( -1, va("print \"Team vote failed  (%d - %d)\n\"", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] ) );
      G_LogPrintf( "Teamvote: Team vote failed (%d - %d)\n", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] );
      result = "failed";
    }
  }
  else
  {
    if( level.teamVoteYes[ cs_offset ] > level.numteamVotingClients[ cs_offset ] / 2 )
    {
      // execute the command, then remove the vote
      trap_SendServerCommand( -1, va("print \"Team vote passed  (%d - %d)\n\"", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] ) );
      G_LogPrintf( "Teamvote: Team vote passed (%d - %d)\n", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] );
      //
      trap_SendConsoleCommand( EXEC_APPEND, va( "%s\n", level.teamVoteString[ cs_offset ] ) );
      result = "passed";
    }
    else if( level.teamVoteNo[ cs_offset ] >= level.numteamVotingClients[ cs_offset ] / 2 )
    {
      // same behavior as a timeout
      trap_SendServerCommand( -1, va("print \"Team vote failed  (%d - %d)\n\"", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] ) );
      G_LogPrintf( "Teamvote: Team vote failed (%d - %d)\n", level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ] );
      result = "failed";
    }
    else
    {
      // still waiting for a majority
      return;
    }
  }

  G_admin_adminlog_log( NULL, "teamvote",
    va( "%s^7 (^2Y:%d^7-^1N:%d^7, %d percent)",
      result, level.teamVoteYes[ cs_offset ], level.teamVoteNo[ cs_offset ], voteYesPercent ),
    0, ( strstr( result, "pass" ) != NULL ) );

  level.teamVoteTime[ cs_offset ] = 0;
  trap_SetConfigstring( CS_TEAMVOTE_TIME + cs_offset, "" );
  trap_SetConfigstring( CS_TEAMVOTE_STRING + cs_offset, "" );
}
Title: Re: Problem with forcespec patch
Post by: |MoT|Erfe555 on July 04, 2009, 02:37:14 pm
The error now is partially resolved but i still have an error, this:

Code: [Select]
SHLIB_CC src/game/g_main.c
src/game/g_main.c: In function `CheckVote':
src/game/g_main.c:2475: `result' undeclared (first use in this function)
src/game/g_main.c:2475: (Each undeclared identifier is reported only once
src/game/g_main.c:2475: for each function it appears in.)
src/game/g_main.c: In function `CheckTeamVote':
src/game/g_main.c:2546: `voteYesPercent' undeclared (first use in this function)
make[2]: *** [build/release-mingw32-x86/base/game/g_main.o] Error 1
make[2]: Leaving directory `/c/msys/1.0/home/mot_qvm_rej/trunk'
make[1]: *** [targets] Error 2
make[1]: Leaving directory `/c/msys/1.0/home/mot_qvm_rej/trunk'
make: *** [release] Error 2

How can i resolve this last part?
Title: Re: Problem with forcespec patch
Post by: gimhael on July 04, 2009, 03:02:26 pm
You could try to take the CheckVote and CheckTeamVote functions directly from p-g-qvm (http://code.google.com/p/p-g-qvm/source/browse/trunk/src/game/g_main.c#2452).
But this may fail because other variables are missing.
Title: Re: Problem with forcespec patch
Post by: |MoT|Erfe555 on July 04, 2009, 03:57:33 pm
And so what can i do? I do a fusion of Invasion2.1-L5.5 with p-g qvm...is really difficult...
Title: Re: Problem with forcespec patch
Post by: |MoT|Erfe555 on July 04, 2009, 04:09:42 pm
I try to apply the code of p-g qvm but fail for a little!
The error is very short, here it is:

Code: [Select]
SHLIB_CC src/game/g_main.c
src/game/g_main.c: In function `CheckVote':
src/game/g_main.c:2383: structure has no member named `votePercentToPass'
src/game/g_main.c: In function `CheckTeamVote':
src/game/g_main.c:2491: structure has no member named `teamVotePercentToPass'
make[2]: *** [build/release-mingw32-x86/base/game/g_main.o] Error 1
make[2]: Leaving directory `/c/msys/1.0/home/mot_qvm_rej/trunk'
make[1]: *** [targets] Error 2
make[1]: Leaving directory `/c/msys/1.0/home/mot_qvm_rej/trunk'
make: *** [release] Error 2

Maybe you can correct it...
Title: Re: Problem with forcespec patch
Post by: gimhael on July 04, 2009, 05:41:58 pm
A quick fix would be to replace
Code: [Select]
  int votePercentToPass=level.votePercentToPass;
by
Code: [Select]
  int votePercentToPass=50;
and
Code: [Select]
  votePercentToPass = level.teamVotePercentToPass[ cs_offset ];
by
Code: [Select]
  votePercentToPass = 50;
Title: Re: Problem with forcespec patch
Post by: |MoT|Erfe555 on July 04, 2009, 07:34:03 pm
Now is perfect problem solved!!!!
Gimhael when this qvm will be release i put you into credits.
Thx! ;D
Title: Re: Problem with immunity patch
Post by: |MoT|Erfe555 on July 04, 2009, 09:40:36 pm
Ah...gim i need u another time.

An error occured in immunity patch:

Code: [Select]
src/game/g_admin.c: In function `G_admin_immunity':
src/game/g_admin.c:6858: `ADMF_BANIMMUNITY' undeclared (first use in this function)
src/game/g_admin.c:6858: (Each undeclared identifier is reported only once
src/game/g_admin.c:6858: for each function it appears in.)
make[2]: *** [build/release-mingw32-x86/base/game/g_admin.o] Error 1
make[2]: Leaving directory `/c/msys/1.0/home/mot_qvm_rej/trunk'
make[1]: *** [targets] Error 2
make[1]: Leaving directory `/c/msys/1.0/home/mot_qvm_rej/trunk'
make: *** [release] Error 2

I think that the error is here:

Code: [Select]
if( *action != '+' && *action != '-' )
  {
    ADMP( va( "^3immunity:^7 ban immunity for %s^7 is %s, prepend + or - to the slot number to change.\n",
      adminname,
      ( strchr( g_admin_admins[ id ]->flags, ADMF_BANIMMUNITY ) != NULL ) ? "on" : "off" ) );
    return qfalse;
  }

  result = G_admin_user_flag( id, ADMF_BANIMMUNITY, qtrue, ( *action != '+' ) );
  if( result )
  {
    ADMP( va( "^3!immunity: ^7an error occured setting flag, %s\n", result ) );
    return qfalse;
  }

But i don't know (as usual  ::) )how to resolve it.
Thx for help.
Title: Re: Problem with forcespec patch
Post by: gimhael on July 05, 2009, 08:00:36 am
Check that you have the line
Code: [Select]
#define ADMF_BANIMMUNITY '&'
in your src/game/g_admin.h file, it is probably missing.
Title: Re: Problem with forcespec patch
Post by: |MoT|Erfe555 on July 05, 2009, 07:18:10 pm
Thx as usual gim! :D
Listen maybe is better if u give me your msn/skype contact on PM...
Title: Re: Problem with forcespec patch
Post by: |MoT|Erfe555 on July 05, 2009, 09:17:38 pm
Another error with tklog patch! I become crazy now...
Fusing two qvms is an hard work...

Code: [Select]
src/game/g_admin.c: In function `G_admin_tklog':
src/game/g_admin.c:3322: warning: implicit declaration of function `G_SanitiseName'

The error is probably here:

Code: [Select]
G_SanitiseName( g_admin_tklog[ index ]->name, n1 );
      if( strstr( n1, search_name ) )
        match = qtrue;

And listen gim, i don't want to use too much for these problem the forum, maybe isn't the better think...if u want contact me with PM and tell me your MSN/skype contect, or answer here if u like.