|
AMX Mod X Donor
|

07-30-2014
, 14:34
Hud causing overflow
|
#1
|
Hum, i guess the code is fine. I don't code so much as i did before but i think i didn't became so noob 
Or i am just great by making stupid bugged plugin, wich problably i am
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <sockets>
#define PLUGIN "Alternative Redirect"
#define VERSION "0.0.9"
#define AREDIRECT_PREFIX "AREDIRECT"
new show_players, hud_time, hud_red, hud_green, hud_blue
new configsdir[200], serversfile[200]
new Data[255], charnum
new Left[25], Right[50]
new g_iServers, g_iMaxPlayers
new IP[22]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, "Jhob94")
get_configsdir(configsdir, charsmax(configsdir))
format(serversfile, charsmax(serversfile), "%s/servers.cfg", configsdir)
if(!file_exists(serversfile))
{
new error[100]
formatex(error, charsmax(error), "[%s] Server Can't Load The File: %s!", AREDIRECT_PREFIX, serversfile)
set_fail_state(error)
return
}
show_players = register_cvar("ar_show_players", "0") // Turn 1 to display amount of players and maxplayers in servers menu
hud_time = register_cvar("ar_hud_delay", "60.0") // Time to show again the HUD message of servers
set_task(get_pcvar_float(hud_time), "Servers_Hud", _, _, _, "b")
/* RGB HUD COLORS */
hud_red = register_cvar("ar_hud_red", "0")
hud_green = register_cvar("ar_hud_green", "0")
hud_blue = register_cvar("ar_hud_blue", "250")
get_user_ip(0, IP, 21, false)
g_iServers = file_size(serversfile, 1)
g_iMaxPlayers = get_maxplayers()
}
public Servers_Hud()
{
new hudservers[500], players, maxplayers
formatex(hudservers, charsmax(hudservers), "%s^n", PLUGIN)
for(new i; i < g_iServers; i++)
{
read_file(serversfile, i, Data, charsmax(Data), charnum)
if(strlen(Data) < 2 || Data[0] == ';' || equali(Data, "//", 2))
continue
strbreak(Data, Left, charsmax(Left), Right, charsmax(Right))
if(get_pcvar_num(show_players) && containi(Left, IP) == -1) // I guess containi is fine. I cant remove quotes yet and i dont want to add unnecessary lines
get_data(Left, players, maxplayers)
remove_quotes(Right)
if(equali(Left, IP))
formatex(Right, charsmax(Right), "%s - (%d/%d)", Right, get_playersnum(1), g_iMaxPlayers)
else
formatex(Right, charsmax(Right), "%s - (%d/%d)", Right, players, maxplayers)
formatex(hudservers, charsmax(hudservers), "%s%s^n", hudservers, Right)
}
set_hudmessage(get_pcvar_num(hud_red), get_pcvar_num(hud_green), get_pcvar_num(hud_blue), -1.0, 0.1, 0, 6.0, 12.0)
show_hudmessage(0, hudservers)
}
stock get_data(host[], &players, &maxplayers)
{
new ip[32], port[10], err
copy(ip, charsmax(ip), host)
copy(port, charsmax(port), "27015")
if(containi(host, ":") != -1)
strtok(host, ip, charsmax(ip), port, charsmax(port), ':')
players = maxplayers = -1
new sock = socket_open(ip, str_to_num(port), SOCKET_UDP, err)
if(sock < 0 || err)
{
AR_Log("[SOCKET] Socket error")
socket_close(sock)
return
}
new buffer[1500]
copy(buffer, charsmax(buffer), "^xFF^xFF^xFF^xFF^x54Source Engine Query")
socket_send2(sock, buffer, strlen(buffer) + 1)
new r = socket_recv(sock, buffer, sizeof(buffer))
socket_close(sock)
if(r < 2)
{
AR_Log("[SOCKET] No data")
return
}
new i, j, c = 5
while(c)
{
if(buffer[c+i++] == '^0')
j++
if(j == c)
{
players = buffer[j+i]
maxplayers = buffer[++j+i]
c = 0
}
}
}
AR_Log(const message_fmt[], any:...)
{
static message[256]
vformat(message, sizeof(message) - 1, message_fmt, 2)
static filename[96]
static dir[64]
if(!dir[0])
{
get_basedir(dir, sizeof(dir) - 1)
add(dir, sizeof(dir) - 1, "/logs")
}
format_time(filename, sizeof(filename) - 1, "%m-%d-%Y")
format(filename, sizeof(filename) - 1, "%s/%s_%s.log", dir, AREDIRECT_PREFIX, filename)
log_to_file(filename, "%s", message)
}
Note: this is just one part of the plugin, i dont want to show all that is coming on next version
__________________
|
|