Troubleshoting with Debug On Gamemode -
Kushovu - 12.12.2016
Hi there!
well i had some troubles when made some fixes on my serv but didn't notice the problem until it was so late and so many fixes was added so i don't have a point to start with so i instaled the debug for pawno so i can see the error
The trouble start when i bought a car, then some minutes after that i got server crash
Well when i installed the debugger it start showing me some errors but they seems to be diferent errors
Error #1
When i use one particular command (didn't see if others have the same issue) the server print me on screen:
Код:
sscanf warning: String buffer overflow.
im sure that isn't causing the crash because when i start with this Downloaded GM the error was there but no crash
Error #2
When i start the server (the new one and the fixed one) i got this error by time to time
Код:
[debug] Accessing element at index 250 past array upper bound 249
[debug] AMX backtrace:
[debug] #0 0003e6f8 in public CargarHora () at path\to\GM.pwn:2336
Also here is the public "CargarHora" on my GM
Код:
forward CargarHora();
public CargarHora()
{
gettime(Hora, Minuto);
for(new i; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
SetPlayerTime(i,Hora,Minuto);
}
if(PlayerInfo[i][pSed] == 0)
{
new Float:vida;
GetPlayerHealth(i,vida);
SetPlayerHealth(i,vida-2);
}
if(PlayerInfo[i][pHambre] == 0)
{
new Float:vida;
GetPlayerHealth(i,vida);
SetPlayerHealth(i,vida-2);
}
}
}
Also im sure this isn't causing the crash but it would be nice to fix that error
Error #3
When i log-in to my serv i get this error
Код:
[debug] Accessing element at index 682 past array upper bound 681
[debug] AMX backtrace:
[debug] #0 00003490 in Bar:CreateProgressBar (Float:x=548.50000, Float:y=20.00000, Float:width=55.00000, Float:height=5.00000, color=-9830145, Float:max=100.00000) at Path\to\Server\pawno\include\progress.inc:71
[debug] #1 00098c54 in public CargarTodo () atPath\to\GM.pwn:9214
Here is my Progress.inc with the line 71 highlighted
Код:
/**
* Progress Bar 1.3.1.0
* Copyright 2007-2010 Infernus' Group,
* Flбvio Toribio (flavio_toibio@hotmail.com)
*/
#if defined _progress_included
#endinput
#endif
#if !defined _samp_included
#tryinclude <a_samp>
#if !defined _samp_included
#error could not locate a_samp.inc file, please check your server includes
#endif
#endif
#tryinclude <foreach>
#define _progress_included
#define _progress_version 0x1310
#define MAX_BARS (MAX_TEXT_DRAWS / 3)
#define INVALID_BAR_VALUE (Float:0xFFFFFFFF)
#define INVALID_BAR_ID (Bar:-1)
#define pb_percent(%1,%2,%3,%4) ((%1 - 6.0) + ((((%1 + 6.0 + %2 - 2.0) - %1) / %3) * %4))
//pb_percent(x, width, max, value)
/* Pawno/Infernus Pawn Editor function list
native Bar:CreateProgressBar(Float:x, Float:y, Float:width=55.5, Float:height=3.2, color, Float:max=100.0);
native DestroyProgressBar(Bar:barid);
native ShowProgressBarForPlayer(playerid, Bar:barid);
native HideProgressBarForPlayer(playerid, Bar:barid);
native ShowProgressBarForAll(Bar:barid);
native HideProgressBarForAll(Bar:barid);
native SetProgressBarValue(Bar:barid, Float:value);
native Float:GetProgressBarValue(Bar:barid);
native SetProgressBarMaxValue(Bar:barid, Float:max);
native SetProgressBarColor(Bar:barid, color);
native UpdateProgressBar(Bar:barid, playerid=INVALID_PLAYER_ID);
*/
forward Bar:CreateProgressBar(Float:x, Float:y, Float:width=55.5, Float:height=3.2, color, Float:max=100.0);
forward Float:GetProgressBarValue(Bar:barid);
enum e_bar
{
Float:pb_x,
Float:pb_y,
Float:pb_w,
Float:pb_h,
Float:pb_m,
Float:pb_v,
Text:pb_t1,
Text:pb_t2,
Text:pb_t3,
pb_color,
bool:pb_created
}
static Bars[MAX_BARS][e_bar];
stock Bar:CreateProgressBar(Float:x, Float:y, Float:width=55.5, Float:height=3.2, color, Float:max=100.0)
{
new
barid;
for(barid = 0; barid < sizeof Bars; ++barid)
if(!Bars[barid][pb_created]) break;
if(Bars[barid][pb_created] || barid == sizeof Bars)
return INVALID_BAR_ID;
new Text:in_t = Bars[barid][pb_t1] = TextDrawCreate(x, y, "_");
TextDrawUseBox (in_t, 1);
TextDrawTextSize (in_t, x + width, 0.0);
TextDrawLetterSize (in_t, 1.0, height / 10);
TextDrawBoxColor (in_t, 0x00000000 | (color & 0x000000FF));
in_t = Bars[barid][pb_t2] = TextDrawCreate(x + 1.2, y + 2.15, "_");
TextDrawUseBox (in_t, 1);
TextDrawTextSize (in_t, x + width - 2.0, 0.0);
TextDrawLetterSize (in_t, 1.0, height / 10 - 0.35);
TextDrawBoxColor (in_t, (color & 0xFFFFFF00) | (0x66 & ((color & 0x000000FF) / 2)));
in_t = Bars[barid][pb_t3] = TextDrawCreate(x + 1.2, y + 2.15, "_");
TextDrawTextSize (in_t, pb_percent(x, width, max, 1.0), 0.0);
TextDrawLetterSize (in_t, 1.0, height / 10 - 0.35);
TextDrawBoxColor (in_t, color);
Bars[barid][pb_x] = x;
Bars[barid][pb_y] = y;
Bars[barid][pb_w] = width;
Bars[barid][pb_h] = height;
Bars[barid][pb_m] = max;
Bars[barid][pb_color] = color;
Bars[barid][pb_created] = true;
return Bar:barid;
}
stock DestroyProgressBar(Bar:barid)
{
if(barid != INVALID_BAR_ID && Bar:-1 < barid < Bar:MAX_BARS)
{
if(!Bars[_:barid][pb_created])
return 0;
TextDrawDestroy(Bars[_:barid][pb_t1]);
TextDrawDestroy(Bars[_:barid][pb_t2]);
TextDrawDestroy(Bars[_:barid][pb_t3]);
Bars[_:barid][pb_t1] = Text:0;
Bars[_:barid][pb_t2] = Text:0;
Bars[_:barid][pb_t3] = Text:0;
Bars[_:barid][pb_x] = 0.0;
Bars[_:barid][pb_y] = 0.0;
Bars[_:barid][pb_w] = 0.0;
Bars[_:barid][pb_h] = 0.0;
Bars[_:barid][pb_m] = 0.0;
Bars[_:barid][pb_v] = 0.0;
Bars[_:barid][pb_color] = 0;
Bars[_:barid][pb_created] = false;
return 1;
}
return 0;
}
stock ShowProgressBarForPlayer(playerid, Bar:barid)
{
if(IsPlayerConnected(playerid) && barid != INVALID_BAR_ID && Bar:-1 < barid < Bar:MAX_BARS)
{
if(!Bars[_:barid][pb_created])
return 0;
TextDrawShowForPlayer(playerid, Bars[_:barid][pb_t1]);
TextDrawShowForPlayer(playerid, Bars[_:barid][pb_t2]);
TextDrawShowForPlayer(playerid, Bars[_:barid][pb_t3]);
return 1;
}
return 0;
}
stock HideProgressBarForPlayer(playerid, Bar:barid)
{
if(IsPlayerConnected(playerid) && barid != INVALID_BAR_ID && Bar:-1 < barid < Bar:MAX_BARS)
{
if(!Bars[_:barid][pb_created])
return 0;
TextDrawHideForPlayer(playerid, Bars[_:barid][pb_t1]);
TextDrawHideForPlayer(playerid, Bars[_:barid][pb_t2]);
TextDrawHideForPlayer(playerid, Bars[_:barid][pb_t3]);
return 1;
}
return 0;
}
stock SetProgressBarValue(Bar:barid, Float:value)
{
if(barid == INVALID_BAR_ID || Bar:MAX_BARS < barid < Bar:-1)
return 0;
if(Bars[_:barid][pb_created])
{
value =
(value < 0.0) ? (0.0) : (value > Bars[_:barid][pb_m]) ? (Bars[_:barid][pb_m]) : (value);
TextDrawUseBox(Bars[_:barid][pb_t3], value > 0.0);
Bars[_:barid][pb_v] = value;
TextDrawTextSize(Bars[_:barid][pb_t3],
pb_percent(Bars[_:barid][pb_x], Bars[_:barid][pb_w], Bars[_:barid][pb_m], value), 0.0);
return 1;
}
return 0;
}
stock Float:GetProgressBarValue(Bar:barid)
{
if(barid == INVALID_BAR_ID || Bar:MAX_BARS < barid < Bar:-1)
return INVALID_BAR_VALUE;
if(Bars[_:barid][pb_created])
return Bars[_:barid][pb_v];
return INVALID_BAR_VALUE;
}
stock SetProgressBarMaxValue(Bar:barid, Float:max)
{
if(barid == INVALID_BAR_ID || Bar:MAX_BARS < barid < Bar:-1)
return 0;
if(Bars[_:barid][pb_created])
{
Bars[_:barid][pb_m] = max;
SetProgressBarValue(barid, Bars[_:barid][pb_v]);
return 1;
}
return 0;
}
stock SetProgressBarColor(Bar:barid, color)
{
if(barid == INVALID_BAR_ID || Bar:MAX_BARS < barid < Bar:-1)
return 0;
if(Bars[_:barid][pb_created])
{
Bars[_:barid][pb_color] = color;
TextDrawBoxColor(Bars[_:barid][pb_t1], 0x00000000 | (color & 0x000000FF));
TextDrawBoxColor(Bars[_:barid][pb_t2],
(color & 0xFFFFFF00) | (0x66 & ((color & 0x000000FF) / 2)));
TextDrawBoxColor(Bars[_:barid][pb_t3], color);
return 1;
}
return 0;
}
stock ShowProgressBarForAll(Bar:barid)
{
#if defined _foreach_included
foreach(Player, i)
#else
for(new i = 0; i < MAX_PLAYERS; ++i)
if(IsPlayerConnected(i))
#endif
#if defined IsPlayerNPC
if(!IsPlayerNPC(i))
#endif
{
ShowProgressBarForPlayer(i, barid);
}
return 1;
}
stock HideProgressBarForAll(Bar:barid)
{
#if defined _foreach_included
foreach(Player, i)
#else
for(new i = 0; i < MAX_PLAYERS; ++i)
if(IsPlayerConnected(i))
#endif
#if defined IsPlayerNPC
if(!IsPlayerNPC(i))
#endif
{
HideProgressBarForPlayer(i, barid);
}
return 1;
}
stock UpdateProgressBar(Bar:barid, playerid=INVALID_PLAYER_ID)
{
if(playerid == INVALID_PLAYER_ID)
{
return ShowProgressBarForAll(barid);
} else {
return ShowProgressBarForPlayer(playerid, barid);
}
}
And Here is my line 9214 from my GM
Код:
Barrahambre[i] = CreateProgressBar(548.50, 20.00, 55.0, 5.0, -9830145, 100.0);
And the Real Problem is that when server crashes there is no report on the console!!
Anyone can help me on this? i had changed so many things since the firs GM (with no crashes) and this so i don't want to start again, any suggestion?