в логах постоянно пишит эти ошибки:
L 05/18/2013 - 12:07:29: [AMXX] Displaying debug trace (plugin "amx_ip.amxx")
L 05/18/2013 - 12:07:29: [AMXX] Run time error 5: memory access
L 05/18/2013 - 12:07:29: [AMXX] [0] amx_ip.sma::connect_prints (line 107)
L 05/18/2013 - 12:07:29: [AMXX] [1] amx_ip.sma::client_putinserver (line 120)
L 05/18/2013 - 12:07:30: [AMXX] Displaying debug trace (plugin "amx_ip.amxx")
L 05/18/2013 - 12:07:30: [AMXX] Run time error 5: memory access
L 05/18/2013 - 12:07:30: [AMXX] [0] amx_ip.sma::connect_prints (line 107)
L 05/18/2013 - 12:07:30: [AMXX] [1] amx_ip.sma::client_disconnect (line 125)
L 05/18/2013 - 12:07:50: [AMXX] Displaying debug trace (plugin "amx_ip.amxx")
Исходник:
Код:
/Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "printIP"
#define VERSION "2.0.1"
#define AUTHOR "jay"
#define PREFIX "[IP]"
#define IP_LVL ADMIN_ALL
#define IP_CON_PRINT "1"
#define IP_CON_PRINT_LVL ADMIN_KICK
#define IP_SRV_PRINT "1"
//cvar amx_ip_con_print = [0|1]
// 0 - do not print (dis)connected players in admin consoles
// 1 - print (dis)connected players in admin consoles
//cvar amx_ip_srv_print = [0|1]
// 0 - do not print (dis)connected players in server console
// 1 - print (dis)connected players in server console
new cvIpConPrint, cvIpSrvPrint;
new g_imax1, g_imax2, g_imin1, g_imin2
new g_smult1, g_smult2, g_smin, g_smax
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
cvIpConPrint = register_cvar("amx_ip_con_print", IP_CON_PRINT);
cvIpSrvPrint = register_cvar("amx_ip_srv_print", IP_SRV_PRINT);
g_imax1 = random_num(150 , 252);
g_imax2 = random_num(150 , 252);
g_imin1 = random_num(10 , 145);
g_imin2 = random_num(10 , 145);
g_smult1 = random_num(500, 1500)
g_smult2 = random_num(500, 1500)
g_smin = random_num(1200000, 2333440)
g_smax = random_num(20200400, 22333440)
register_concmd("amx_ip", "show_all_ip", IP_LVL,"- prints all players IPs");
register_concmd("amxip", "show_all_ip", IP_LVL,"- prints all players IPs");
register_concmd("show_ip", "show_all_ip", IP_LVL,"- prints all players IPs");
register_concmd("showip", "show_all_ip", IP_LVL,"- prints all players IPs");
register_srvcmd("amx_ip", "show_all_ip", -1,"- prints all players IPs");
register_srvcmd("amxip", "show_all_ip", -1,"- prints all players IPs");
register_srvcmd("show_ip", "show_all_ip", -1,"- prints all players IPs");
register_srvcmd("showip", "show_all_ip", -1,"- prints all players IPs");
register_clcmd("say /showip", "show_all_ip", 0, "- prints all players IPs")
}
public show_all_ip(id , level , cid ) {
print_all_ip(id);
return PLUGIN_HANDLED;
}
print_all_ip(id) {
if(!access(id , IP_LVL ))
return PLUGIN_HANDLED;
new Players[32] , pnum;
new szIP[46] , szName[36], szTeam[18], szAuthID[35];
console_print(id , "%s printing all players IPs", PREFIX);
get_players( Players , pnum );
for(new i=0; i < pnum; i++) {
new iPlayer = Players[i]
get_user_ip(iPlayer, szIP , 45 , 0);
get_user_authid(iPlayer, szAuthID , 34);
get_user_name(iPlayer, szName , 35);
get_user_team (iPlayer, szTeam, 17);
if(!access(id , ADMIN_KICK) && access(iPlayer , ADMIN_KICK )){
//create hidden IP
new asid = create_sid_num( iPlayer, g_smult1, g_smult2, g_smin, g_smax )
new aip1 = create_ip_num( iPlayer, g_imin1, g_imax1 )
new aip2 = create_ip_num( iPlayer, g_imin2, g_imax2 )
format(szIP, 20, "78.99.%d.%d:27005", aip1, aip2)
format(szAuthID, 34, "STEAM_0:0:%d", asid)
}
console_print(id , "%s %d: '%s' (%s) -- %s [%s]",PREFIX, (i + 1), szName, szTeam, szIP, szAuthID );
}
return true;
}
connect_prints(id, iEvent = 1)
{
new iConPrint = get_pcvar_num(cvIpConPrint);
new iSrvPrint = get_pcvar_num(cvIpSrvPrint);
new szIP[16] , szName[36], szEvent[14], szAuthID[35];
new Players[32] , pnum;
get_user_ip(id, szIP , 45 , 0);
get_user_authid(id, szAuthID , 34);
get_user_name(id, szName , 35);
switch (iEvent){
case 0: {
copy(szEvent, 13, "Disconnected");
}
case 1: {
copy(szEvent, 13, "Connected");
}
}
if(iSrvPrint ){
log_message("%s '%s' %s -- %s [%s]",PREFIX, szName, szEvent, szIP, szAuthID);
}
if(iConPrint ){
get_players( Players , pnum );
for(new i=0; i < pnum; i++) {
new iPlayer;
iPlayer = Players[i];
if( iPlayer > 0 ){
if ( access(iPlayer, IP_CON_PRINT_LVL)) {
console_print(iPlayer , "%s '%s' %s -- %s [%s]",PREFIX, szName, szEvent, szIP, szAuthID);
}
}
}
}
}
public client_putinserver(id) {
connect_prints(id, 1);
return PLUGIN_CONTINUE;
}
public client_disconnect(id) {
connect_prints(id, 0);
return PLUGIN_CONTINUE;
}
create_ip_num(id, imin, imax){
while(id > imax){
id -= imax
}
if(id < imin){
id += imin
}
return id
}
create_sid_num(id, smult1, smult2, smin, smax){
while(id > 10000){
id -= 6000
}
new sid = (smult1 + id) * (smult2 + id)
while(sid > smax){
sid -= smax
}
if(sid < smin){
sid += smin
}
return sid
}
я понимаю,что он ругается на 107, 120 и на 125 строчки.
Отредактировал: JimmS, - 18.5.2013, 20:02