AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Invalid Player id (https://forums.alliedmods.net/showthread.php?t=333755)

Id0x. 08-02-2021 21:08

Invalid Player id
 
Code:

L 08/02/2021 - 22:41:48: Invalid Player id (13)
L 08/02/2021 - 22:41:48: [AMXX] Displaying debug trace (plugin "prefix.amxx", version "1.1")
L 08/02/2021 - 22:41:48: [AMXX] Run time error 10: native error (native "get_user_level")
L 08/02/2021 - 22:41:48: [AMXX]    [0] prefix.sma::hook_say (line 77)

line 77 :
PHP Code:

format(strName191"%s^4[LEVEL %d] ^3%s"aliveget_user_level(id), g_name

full sma :
PHP Code:

#include <amxmodx>

native get_user_level(id)

new 
message[192],g_name[32],alive[11],strName[191],strText[191],temp_cvar[2]
new 
g_AdminListenFlag,g_AdminListen,maxPlayers

new teamInfo,sayText

public plugin_init()
{
    
register_plugin("Prefix""1.1""Nothing")
    
    
register_clcmd("say""hook_say")
    
register_clcmd("say_team""hook_teamsay")
        
    
maxPlayers get_maxplayers()
    
g_AdminListenFlag register_cvar("amx_listen_flag""c")
    
g_AdminListen register_cvar("amx_listen""1")
    
    
sayText get_user_msgid("SayText")
    
teamInfo get_user_msgid("TeamInfo")
    
register_message(sayText"avoid_duplicated")
}

new const 
szTag[][] = {
       
"",
       
"OWNER",
       
"HEAD-ADMIN",
       
"ADMIN"


public 
avoid_duplicated(msgIdmsgDestreceiver)
{
    return 
PLUGIN_HANDLED
}

public 
hook_say(id)
{
   
read_args(message191)
   
remove_quotes(message)

   if(
message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message""))
      return 
PLUGIN_CONTINUE
      

   get_user_name
(idg_namecharsmax(g_name))

   new 
isAlive   
   
new admin 0iFlags get_user_flags(id)
   if(
iFlags ADMIN_IMMUNITYadmin 1
   
else if(iFlags ADMIN_BANadmin 2
   
else if(iFlags ADMIN_KICKadmin 3
      
   
if(is_user_alive(id))
   {
      
isAlive 1
      alive 
"^x01"
   
}
   else
   {
      
isAlive 0
      alive 
"^x01*DEAD* "
   
}

   static  
color[10]
   if(
admin)
   {
      
get_user_team(idcolor9)
      
format(strName191"%s^3[%s]^4[LEVEL %d] ^3%s"aliveszTag[admin],get_user_level(id), g_name)
      
format(strText191"^4%s"message)
   }
   else    
   {
      
get_user_name(idg_name32)
      
get_user_team(idcolor9)
      
format(strName191"%s^4[LEVEL %d] ^3%s"aliveget_user_level(id), g_name)
      
format(strText191"%s"message)

   }

   
format(message191"%s ^x01: %s"strNamestrText)

   
sendMessage(colorisAlive)// Sends the colored message
   
return PLUGIN_CONTINUE;
}

public 
hook_teamsay(id)
{
   
read_args(message191)
   
remove_quotes(message)

   if(
message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message"")) // Ignores Admin Hud Messages, Admin Slash commands
      
return PLUGIN_CONTINUE

   
new playerTeam get_user_team(id)
   new 
playerTeamName[19]

   switch(
playerTeam// Team names which appear on team-only messages
   
{
      case 
1copy(playerTeamName11"Furien")
      case 
2copy(playerTeamName18"AntiFurien")
      default: 
copy(playerTeamName9"Spec")
   }

   
get_user_name(idg_namecharsmax(g_name))
   new 
isAlive   
   
new admin 0iFlags get_user_flags(id)
   if(
iFlags ADMIN_IMMUNITYadmin 1
   
else if(iFlags ADMIN_BANadmin 2
   
else if(iFlags ADMIN_KICKadmin 3

   
if(is_user_alive(id))
   {
      
isAlive 1
      alive 
"^x01"
   
}
   else
   {
      
isAlive 0
      alive 
"^x01*DEAD* "
   
}

   static  
color[10]
   if(
admin)
   {
      
get_user_team(idcolor9)
      
format(strName191"%s^4(%s) ^3[%s]^4[LEVEL %d] ^3%s"aliveplayerTeamName,szTag[admin],get_user_level(id), g_name)
      
format(strText191"^4%s"message)
   }
   else
   {
      
get_user_name(idg_name32)
      
get_user_team(idcolor9);
      
format(strName191"%s^3(%s) ^4[LEVEL %d] ^3%s"aliveplayerTeamName,get_user_level(id), g_name)
      
format(strText191"%s"message)
   }

   
format(message191"%s ^x01: %s"strNamestrText)
   
sendTeamMessage(colorisAliveplayerTeam)
   return 
PLUGIN_CONTINUE
}

public 
sendMessage(color[], alive)
{
   new 
teamName[10]
   
   for(new 
player 1player maxPlayersplayer++)
   {
      if(!
is_user_connected(player))
         continue

      
get_pcvar_string(g_AdminListenFlagtemp_cvarcharsmax(temp_cvar))
      if(
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
      {
         
get_user_team(playerteamName9)// Stores user's team name to change back after sending the message
         
changeTeamInfo(playercolor)// Changes user's team according to color choosen
         
writeMessage(playermessage)// Writes the message on player's chat
         
changeTeamInfo(playerteamName)// Changes user's team back to original
      
}
   }
}

public 
sendTeamMessage(color[], aliveplayerTeam)
{
   new 
teamName[10]

   for(new 
player 1player maxPlayersplayer++)
   {
      if(!
is_user_connected(player))
         continue

      
get_pcvar_string(g_AdminListenFlagtemp_cvarcharsmax(temp_cvar))
      if(
get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
      {
         if(
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
         {
            
get_user_team(playerteamName9)// Stores user's team name to change back after sending the message
            
changeTeamInfo(playercolor)// Changes user's team according to color choosen
            
writeMessage(playermessage)// Writes the message on player's chat
            
changeTeamInfo(playerteamName)// Changes user's team back to original
         
}
      }
   }
}

public 
changeTeamInfo(playerteam[])
{
    
message_begin(MSG_ONEteamInfo_player)    // Tells to to modify teamInfo(Which is responsable for which time player is)
    
write_byte(player)                // Write byte needed
    
write_string(team)                // Changes player's team
    
message_end()                    // Also Needed
}

public 
writeMessage(playerszArgs[])
{
    
message_begin(MSG_ONEsayText, {000}, player)    // Tells to modify sayText(Which is responsable for writing colored messages)
    
write_byte(player)                    // Write byte needed
    
write_string(szArgs)                    // Effectively write the message, finally, afterall
    
message_end()                        // Needed as always



Supremache 08-02-2021 22:09

Re: Invalid Player id
 
Try this, untested!.

Code:
#include <amxmodx> #include <amxmisc> #include <cstrike> new const PLUGIN_NAME[ ]    = "UserPrefix" new const VERSION[ ]    = "1.0" new const AUTHOR[ ] = "Supremache" native get_user_level(id) new g_iSayText; public plugin_init() {     register_plugin     (         .plugin_name    = PLUGIN_NAME,         .version    = VERSION,         .author     = AUTHOR     )         register_cvar( PLUGIN_NAME, VERSION, FCVAR_SERVER|FCVAR_SPONLY);     set_cvar_string( PLUGIN_NAME, VERSION);         g_iSayText = get_user_msgid( "SayText" );     register_clcmd("say ", "GlobalChat");     register_clcmd("say_team ", "TeamChat"); } public GlobalChat(iPlayer) {     SetPrefix( iPlayer , true ); } public TeamChat(iPlayer) {     SetPrefix( iPlayer , false ); } SetPrefix( iPlayer , bool:bTeam ) {     if(!is_user_connected(iPlayer))     {         return PLUGIN_HANDLED_MAIN;     }         static iAlive,         szMessage[ 192 ],         iPlayers[ 32 ],         iNum,         szName[ 32 ],         szData[ 256 ],         iTarget     iAlive = is_user_alive( iPlayer );     new CsTeams:iTeam = CsTeams:( ( _:cs_get_user_team( iPlayer ) ) % 3 );         new const Say[2][ CsTeams ][] =     {         { "*SPEC* ", "*DEAD* ", "*DEAD* ", "*DEAD* " },         { "", "", "", ""}     }     new const SayTeam[2][ CsTeams ][] =     {         {"(Spectator) ", "*DEAD*(Terrorist) ", "*DEAD*(Counter-Terrorist) ", ""},         {"(Spectator) ", "(Terrorist) ", "(Counter-Terrorist) ", ""}     };         enum eTags     {         Prefix[ 32 ],         iFlag     }         new const szTag[ ][ eTags ] =     {         { "OWNER", ADMIN_IMMUNITY },         { "HEAD-ADMIN", ADMIN_BAN },         { "ADMIN", ADMIN_KICK }     }     if( !IsValidMessage( true, szMessage, charsmax( szMessage ) ) )     {         return PLUGIN_HANDLED_MAIN;     }         get_user_name( iPlayer, szName, charsmax(szName));     get_players( iPlayers, iNum );         for( new i ; i < sizeof ( szTag ) ; i++ )     {         if( get_user_flags( iPlayer ) & szTag[ i ][ iFlag ] )         {             formatex( szData , charsmax( szData), "^1%s^4[%s^1-^4 Lv.%d] %s^3: %s", bTeam ? Say[ iAlive ][ iTeam ] : SayTeam[ iAlive ][ iTeam ], szTag[ i ][ Prefix ], get_user_level(iPlayer), szName, szMessage );         }         else         {             formatex( szData , charsmax( szData), "^1%s^4 [Lv.%d]^3 %s^3: %s", bTeam ? Say[ iAlive ][ iTeam ] : SayTeam[ iAlive ][ iTeam ], get_user_level(iPlayer), szName, szMessage );         }     }         for( new i = 0; i < iNum; i++ )     {         iTarget = iPlayers[ i ];                 if( iTarget == iPlayer || ( iAlive || is_user_connected( iTarget ) ) && is_user_alive( iTarget ) == iAlive )         {             message_begin( MSG_ONE, g_iSayText, {0, 0, 0}, iTarget );             write_byte( iPlayer );             write_string( szData );             message_end( );         }     }       return PLUGIN_HANDLED_MAIN; } bool:IsValidMessage( bool:bTeamSay, szMessage[ ], iLen ) {     read_args( szMessage, iLen );     remove_quotes( szMessage );         if( !szMessage[ 0 ] )     {         return false;     }       new iPos, cChar, i;     while( ( cChar = szMessage[ iPos ] ) == '@' )     {         i++;         iPos++;     }         if( i > 0 )     {         return ( !( bTeamSay ? ( i == 1 ) : ( 1 <= i <= 3 ) ) );     }         while( 0 < ( cChar = szMessage[ iPos++ ] ) <= 255 )     {         if( cChar != ' ' && cChar != '%' )         {             return true;         }     }         return false; }

fysiks 08-02-2021 23:10

Re: Invalid Player id
 
@Id0x., it looks like the value of id should be valid (assuming that the get_user_name and get_user_team worked successfully). The only thing that I can think of is something in the code for get_user_level() so you should provide that code.

Quote:

Originally Posted by Supremache (Post 2754402)
Try this, untested!.

What did you change? This is Scripting Help, explain what you changed and why.

Supremache 08-02-2021 23:28

Re: Invalid Player id
 
Quote:

Originally Posted by fysiks (Post 2754408)
What did you change? This is Scripting Help, explain what you changed and why.

Code optimized

@Id0x, if you still have the same issue then check get_user_level code.

Natsheh 08-03-2021 03:19

Re: Invalid Player id
 
PHP Code:

public sendTeamMessage(color[], aliveplayerTeam

Don't you already have a global string variable called alive?

My advice is to change the alive string to something more unique and deal with the string variables how you properly should do with using copy/formatex functions

diegodarknes 08-03-2021 22:26

Re: Invalid Player id
 
3 Attachment(s)
hola una pregunta alguiem puede decopilarme estos tres archivos de .sma a .amxx por favor soy nuevo me gustaria que me den unos tipos de tips por favor me alegraria mucho si me lo copilan asi como estan se los agradeceria un monon pero yo lo trate de copilar pero me marcan errores de seguro algunos de ustedes no les salfdran ningun error por favor el me me pueda pasar estos archivos sma a amxx se lo agradeceria un monton


All times are GMT -4. The time now is 02:38.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.