AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Run time error 5: memory access (https://forums.alliedmods.net/showthread.php?t=85620)

Owyn 02-13-2009 17:09

Run time error 5: memory access
 
L 02/14/2009 - 00:29:20: [AMXX] Displaying debug trace (plugin "high_ping_kicker.amxx")
L 02/14/2009 - 00:29:20: [AMXX] Run time error 5: memory access
L 02/14/2009 - 00:29:20: [AMXX] [0] high_ping_kicker.sma::checkPing (line 75)
L 02/14/2009 - 00:29:21: [AMXX] Displaying debug trace (plugin "public_rules.amxx")
L 02/14/2009 - 00:29:21: [AMXX] Run time error 5: memory access
L 02/14/2009 - 00:29:21: [AMXX] [0] public_rules.sma::printrules (line 124)
L 02/14/2009 - 00:29:22: [AMXX] Displaying debug trace (plugin "public_rules.amxx")
L 02/14/2009 - 00:29:22: [AMXX] Run time error 5: memory access
L 02/14/2009 - 00:29:22: [AMXX] [0] public_rules.sma::showrules (line 102)

help me fix that errors plz ^_^

i think that is caused cuz of params[0] but i don't know how to fix it properly
here are both codes:
Code:

/* AMX Mod script.
*
* (c) 2002-2003, OLO
* modified by shadow
* This file is provided as is (no warranties).
*
* Players with immunity won't be checked
*/

#include <amxmodx>
#include <amxmisc>

new g_Ping[33]
new g_Samples[33]

public plugin_init()
{
  register_plugin("High Ping Kicker (Steam)","0.16.2","OLO/shadow")
  register_concmd("amx_hpk","cmdHpk",ADMIN_KICK,"- configures high_ping_kicker plugin")
  register_cvar("amx_hpk_ping","99")
  register_cvar("amx_hpk_check","10")
  register_cvar("amx_hpk_tests","5")
  register_cvar("amx_hpk_delay","60")

 
  if ( get_cvar_num( "amx_hpk_check" ) < 5 ) set_cvar_num( "amx_hpk_check" , 5 )
  if ( get_cvar_num( "amx_hpk_tests" ) < 3 ) set_cvar_num( "amx_hpk_tests" , 3 )
}

public client_disconnect(id)
  remove_task( id )

public client_putinserver(id)
{   
  g_Ping[id] = 0
  g_Samples[id] = 0

  if ( !is_user_bot(id) )
  {
    new param[1]
    param[0] = id
    set_task( 10.0 , "showWarn" , id , param , 1 )
   
    if (get_cvar_num("amx_hpk_tests") != 0) {
        set_task( float(get_cvar_num("amx_hpk_delay")), "taskSetting", id, param , 1)
    }
    else {       
        set_task( float(get_cvar_num( "amx_hpk_tests" )) , "checkPing" , id , param , 1 , "b" )
    }
   
  }
}

public showWarn(param[])
  client_print( param[0] ,print_chat,"* Igroki s pingom bolwe %d budut udoleni s servera!", get_cvar_num( "amx_hpk_ping" ) )

public taskSetting(param[]) {
    new name[32]
    get_user_name(param[0],name,31)
    set_task( float(get_cvar_num( "amx_hpk_tests" )) , "checkPing" , param[0] , param , 1 , "b" )
}

kickPlayer( id )
{
  new name[32],authid[32]
  get_user_name(id,name,31)
  get_user_authid(id,authid,31)
  client_print(0,print_chat,"** %s bil udoljen s servera po pri4ine bolwogo pinga!",name)
  server_cmd("kick #%d ^"Sorry but you have too high ping, try later...^"",get_user_userid(id))
  log_amx("Highpingkick: ^"%s<%d><%s>^" kiknut za bolwoy ping! (sredniy Ping ^"%d^")", name,get_user_userid(id),authid,(g_Ping[id] / g_Samples[id]))
}

public checkPing(param[])
{
  new id = param[ 0 ]

  if ( get_user_flags(id) & ADMIN_BAN ) return

  new p, l

  get_user_ping( id , p , l )

  g_Ping[ id ] += p
  ++g_Samples[ id ]

  if ( (g_Samples[ id ] > get_cvar_num( "amx_hpk_tests" )) && (g_Ping[id] / g_Samples[id] > get_cvar_num( "amx_hpk_ping" ))  )   
    kickPlayer(id)
}

 
public cmdHpk(id,level,cid){
  if (!cmd_access(id,level,cid,1))
    return PLUGIN_HANDLED
   
  new ping[5]
  new check_arr[5]
  new tests_arr[5]
  new delay_arr[5]
  read_argv(1,ping,4)
  read_argv(2,check_arr,4)
  read_argv(3,tests_arr,4)
  read_argv(4,delay_arr,4)
 
  new check = str_to_num(check_arr)
  new tests = str_to_num(tests_arr)
  new delay = str_to_num(delay_arr)
 
 
  if ( check < 5 ) check = 5
  if ( tests < 3 ) tests = 3
 

  if (read_argc() > 1){
    set_cvar_string("amx_hpk_ping",ping)
  }
  if (read_argc() > 2) {
    set_cvar_num("amx_hpk_check",check)
  }
  if (read_argc() > 3) {
    set_cvar_num("amx_hpk_tests",tests)
  }
  if (read_argc() > 4) {
      set_cvar_num("amx_hpk_delay",delay)
 }

  console_print(id,"Syntax: amx_hpk <ping to get kicked> <checks before kicks> <time between checks> <delay before first check in sec.>")
  console_print(id,"Current High_Ping_Kicker Settings:")
  console_print(id,"Maxping: %d  Time between checks: %d Checkcount: %d Delay: %d",get_cvar_num("amx_hpk_ping"),get_cvar_num("amx_hpk_check"),get_cvar_num("amx_hpk_tests"),get_cvar_num("amx_hpk_delay"))
  return PLUGIN_HANDLED   
}

Code:

/*
PUBLIC SERVER RULES 1.20 ( 2005-08-18 )

Plugin by Priski

Usage :
Put rules in rules.txt file in cstrike folder
and set rules_speed and rules_interval whatever you like

Commands :
rules_show    - shows rules listed in rules.txt
rules_enable    - set this to 0 to disable automatic rules display
say /rules    - displays rules to normal user

CVARS :
rules_interval        - interval between automatic rules display
rules_admin_only    - disables say /rules command from regular users
rules_join        - if set 1 displays rules after player have joined server
rules_hudmessage_time    - time how long hudmessage is displayed
rules_join_timeout    - delay to show rules when joining to the server

Changelog :

1.20 / 2005-08-18
- removed client chat rules
- fixed major bugs

1.11 / 2005-08-15
- fixed some bugs

1.10 / 2005-08-14
- new CVARs : rules_hudmessage, rules_hudmessage_time
rules_join_timeout
- Rules in hudmessage mode also

1.03 / 2005-08-12
- rules_enable command fix.
- new CVAR "rules_join" set 1 to show rules
to players when they join server

1.02 / 2005-08-11
- optimized code
- rules_enable is now a command   
- default interval is now 10 minutes

1.01 / 2005-08-11
- added rules_admin_only & say /rules command
- variables are global now

1.0 / 2005-08-11
- first release

*/

#include <amxmodx>
#include <amxmisc>

new base[] = "rules.txt"

new i, num, text[127], hudmsg[440] //max hudmessage length was 439 chars (?)

public plugin_init()
{
   
    register_plugin("AMXX Public server rules", "1.20", "Priski")
   
    // register command
   
    register_concmd("rules_show", "rules", ADMIN_KICK, "- show rules to everybody")
    register_concmd("rules_enable", "r_enable", ADMIN_KICK, "- <1|0> set automessagin on/off")
    register_cvar("rules_admin_only", "0")
    register_cvar("rules_join", "1")
    register_cvar("rules_join_timeout", "5")
    register_cvar("rules_hudmessage_time", "20")
    register_cvar("rules_interval", "600")
}

public plugin_cfg() {
   
    if (!file_exists(base)) {
        write_file(base, "; This is the public rules file, put your rules below")
        write_file(base, "; Remember, max amount of characters is 439")
        console_print(0, "%s file not found. creating new ...", base)
    }
   
}

public client_authorized ( id ) {
    // on join display rules
   
    if (get_cvar_num("rules_join")) {
        new tmp[1]
        tmp[0] = id
        set_task(1.0, "showrules",id,tmp,1)
    }
   
    return PLUGIN_HANDLED
}


public showrules (pid[]) {
    new id = pid[0]
   
    if ( get_user_team(id) != 1 && get_user_team(id) != 2 ) {
        if (id) {
            new tmp[1]
            tmp[0] = id
            set_task(2.0, "showrules",id,tmp,1)  // not yet in server
        }
        return PLUGIN_HANDLED
    }
   
    new tmp[1]
    tmp[0] = id
   

    set_task(get_cvar_float("rules_join_timeout"), "printrules", id, tmp, 1)  // not yet in server
   
    return PLUGIN_HANDLED
}

public printrules(pid[])
{
    new id = pid[0]
    if (file_exists(base))
        {
       
       
        set_hudmessage ( 200, 150, 0, 0.02, 0.25, 2, 0.1, get_cvar_float("rules_hudmessage_time"), 0.005, 1.0, 1)
        format(hudmsg, 439, "")
       
        // read all the rules
        for(i=0; read_file(base, i, text, 127, num); i++) {
            if (num > 0 && text[0] != ';') {
                // display with predefined delay
                add(hudmsg,439,text)
                add(hudmsg,439,"^n")
            }
        }
       
        // show hudmessages
        show_hudmessage(id, hudmsg)

       
    }
   
    return PLUGIN_HANDLED
}


public r_enable(id, level, cid)
{
    if (!cmd_access(id, level, cid, 0)) {  // NOT ADMIN
        return PLUGIN_HANDLED
    }
   
    new arg[3]
   
    read_argv(1, arg, 2)
    new value = str_to_num(arg)
   
    if (!isalnum(arg[0]))
        value = -1
   
    if (value == 0) {
       
        if (task_exists(2)) // close task
            remove_task(2)   
       
        console_print(id, "You have disabled automatic messages")
        return PLUGIN_HANDLED
       
    }
    if (value == 1) {
        // activate task, reload if already exist
        if (task_exists(2)) {
            change_task(2, get_cvar_float("rules_interval"))
            } else {
            set_task(get_cvar_float("rules_interval"), "rules", 2, "", 0, "b")
        }   
        console_print(id, "You have enabled automatic messages")
        return PLUGIN_HANDLED       
    }
    if (task_exists(2)) {
        console_print(id, "automessages is ON.")
        } else {
        console_print(id, "automessages is OFF.")
    }
    console_print(id, "rules_enable <1|0> (1 = ON, 0 = OFF)")
    return PLUGIN_HANDLED       
   
}

public clientrules(id, level, cid) {
    new pID[1]
    pID[0] = id
   
    console_print(0,"[user %d]Print rules for me only",pID[0])
    printrules(pID[0])
}

public rules(id, level, cid)
{
    new pID[1]
    pID[0] = id
           
    if (!cmd_access(id, level, cid, 0)) {  // NOT ADMIN
        return PLUGIN_HANDLED
    }
   
    // read file to all users
    pID[0] = 0
    console_print(0,"[user %d]Print rules for all",id)
    printrules(pID[0])
   
    // Reset scheduled task after display
    if (get_cvar_float("rules_interval") > 0) {
        if (task_exists(2)) {
            change_task(2, get_cvar_float("rules_interval"))
            } else {
            set_task(get_cvar_float("rules_interval"), "rules", 200, "", 0, "b")
        }
    }
   
    return PLUGIN_HANDLED
}


anakin_cstrike 02-13-2009 19:51

Re: Run time error 5: memory access
 
Try this without arrays
PHP Code:

/* AMX Mod script. 

* (c) 2002-2003, OLO 
* modified by shadow
* This file is provided as is (no warranties). 

* Players with immunity won't be checked 
*/ 

#include <amxmodx> 
#include <amxmisc>

new g_Ping[33]
new 
g_Samples[33]

public 
plugin_init()
{
  
register_plugin("High Ping Kicker (Steam)","0.16.2","OLO/shadow")
  
register_concmd("amx_hpk","cmdHpk",ADMIN_KICK,"- configures high_ping_kicker plugin")
  
register_cvar("amx_hpk_ping","99")
  
register_cvar("amx_hpk_check","10")
  
register_cvar("amx_hpk_tests","5")
  
register_cvar("amx_hpk_delay","60")

  
  if ( 
get_cvar_num"amx_hpk_check" ) < set_cvar_num"amx_hpk_check" )
  if ( 
get_cvar_num"amx_hpk_tests" ) < set_cvar_num"amx_hpk_tests" )
}

public 
client_disconnect(id
  
remove_taskid )

public 
client_putinserver(id
{    
  
g_Ping[id] = 
  g_Samples
[id] = 0

  
if ( !is_user_bot(id) ) 
  {
    
set_task10.0 "showWarn" id )
    
    if (
get_cvar_num("amx_hpk_tests") != 0) {
        
set_taskfloat(get_cvar_num("amx_hpk_delay")), "taskSetting"id)
    }
    else {        
        
set_taskfloat(get_cvar_num"amx_hpk_tests" )) , "checkPing" id __"b" )
    }
    
  }


public 
showWarn(id)
  
client_printid ,print_chat,"* Igroki s pingom bolwe %d budut udoleni s servera!"get_cvar_num"amx_hpk_ping" ) )

public 
taskSetting(id) {
    new 
name[32]
    
get_user_name(id,name,31)
    
set_taskfloat(get_cvar_num"amx_hpk_tests" )) , "checkPing" id ,__"b" )
}

kickPlayerid 

  new 
name[32],authid[32]
  
get_user_name(id,name,31)
  
get_user_authid(id,authid,31)
  
client_print(0,print_chat,"** %s bil udoljen s servera po pri4ine bolwogo pinga!",name)
  
server_cmd("kick #%d ^"Sorry but you have too high ping, try later...^"",get_user_userid(id))
  
log_amx("Highpingkick: ^"%s<%d><%s>^" kiknut za bolwoy ping! (sredniy Ping ^"%d^")"name,get_user_userid(id),authid,(g_Ping[id] / g_Samples[id]))
}

public 
checkPing(id


  if ( 
get_user_flags(id) & ADMIN_BAN ) return

  new 
p

  get_user_ping
id 

  
g_Pingid ] += p
  
++g_Samplesid ]

  if ( (
g_Samplesid ] > get_cvar_num"amx_hpk_tests" )) && (g_Ping[id] / g_Samples[id] > get_cvar_num"amx_hpk_ping" ))  )    
    
kickPlayer(id
}

  
public 
cmdHpk(id,level,cid){
  if (!
cmd_access(id,level,cid,1))
    return 
PLUGIN_HANDLED
    
  
new ping[5]
  new 
check_arr[5]
  new 
tests_arr[5]
  new 
delay_arr[5]
  
read_argv(1,ping,4)
  
read_argv(2,check_arr,4)
  
read_argv(3,tests_arr,4)
  
read_argv(4,delay_arr,4)
  
  new 
check str_to_num(check_arr)
  new 
tests str_to_num(tests_arr)
  new 
delay str_to_num(delay_arr)
  
  
  if ( 
check check 5
  
if ( tests tests 3
  

  
if (read_argc() > 1){
    
set_cvar_string("amx_hpk_ping",ping)
  }
  if (
read_argc() > 2) {
    
set_cvar_num("amx_hpk_check",check)
  }
  if (
read_argc() > 3) {
    
set_cvar_num("amx_hpk_tests",tests)
  }
  if (
read_argc() > 4) {
      
set_cvar_num("amx_hpk_delay",delay)
 }

  
console_print(id,"Syntax: amx_hpk <ping to get kicked> <checks before kicks> <time between checks> <delay before first check in sec.>")
  
console_print(id,"Current High_Ping_Kicker Settings:")
  
console_print(id,"Maxping: %d  Time between checks: %d Checkcount: %d Delay: %d",get_cvar_num("amx_hpk_ping"),get_cvar_num("amx_hpk_check"),get_cvar_num("amx_hpk_tests"),get_cvar_num("amx_hpk_delay"))
  return 
PLUGIN_HANDLED    




All times are GMT -4. The time now is 17:05.

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