debug problem - Printable Version
+- SA-MP Forums Archive (
https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (
https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (
https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: debug problem (
/showthread.php?tid=491954)
debug problem -
Walkie - 01.02.2014
pawn Код:
[00:03:41] [debug] AMX backtrace:
[00:03:41] [debug] #0 0012351c in public IsLaw (playerid=0) at C:\Users\Filip\Desktop\SAMP 0.3Z\TRUNK\payphone\rp.pwn:22291
[00:03:41] [debug] #1 000cf3a0 in public OPJV_OnPlayerKeyStateChange (playerid=0, newkeys=0, oldkeys=4) at C:\Users\Filip\Desktop\SAMP 0.3Z\TRUNK\payphone\rp.pwn:12857
[00:03:41] [debug] #2 0000d454 in public OnPlayerKeyStateChange (playerid=0, newkeys=0, oldkeys=4) at C:\Users\Filip\Desktop\SAMP 0.3Z\pawno\include\opjv.inc:85
[00:03:43] [debug] Run time error 4: "Array index out of bounds"
pawn Код:
public IsLaw(playerid)
{
//22291 new slot = GetFactionSlot(CharacterInfo[playerid][active_character[playerid]][cFaction]);
if(slot > -1)
{
if(FactionInfo[slot][fType] == FAC_TYPE_LAW) { return true; } else { return false; }
}
return false;
}
pawn Код:
public GetFactionSlot(factionid)
{
for(new i = 0; i < MAX_FACTIONS; i ++)
{
if(FactionInfo[i][fID] == factionid) { return i; }
}
return -1;
}
Re: debug problem -
Konstantinos - 01.02.2014
It's caused because of active_character[playerid].
pawn Код:
new slot = GetFactionSlot(CharacterInfo[playerid][active_character[playerid]][cFaction]);
Let's say, you declared it as:
pawn Код:
new CharacterInfo[MAX_PLAYERS][25][some_enum_here];
You need to check if active_character[playerid] is between 0-24. Change accordingly to the value of the dimension.
pawn Код:
public IsLaw(playerid)
{
if (0 <= active_character[playerid] < 25)
{
new slot = GetFactionSlot(CharacterInfo[playerid][active_character[playerid]][cFaction]);
if(slot > -1 && FactionInfo[slot][fType] == FAC_TYPE_LAW) return true;
}
return false;
}
If IsLaw is not called by a timer or Call Remote/Local Function, then just use stock instead of forward/public.
Re: debug problem -
Walkie - 01.02.2014
pawn Код:
new active_character[MAX_PLAYERS];
it's defined like this ... i have character system ..
Re: debug problem -
Konstantinos - 01.02.2014
Quote:
Originally Posted by Walkie
pawn Код:
new active_character[MAX_PLAYERS];
it's defined like this ... i have character system ..
|
I asked the declaration of CharacterInfo, not active_character. If the valid index are for example (as we said above) 0-24 because it has size of 25 and active_character[playerid] is not between 0-24, a run time error: Array index out of bounds will be caused.
Re: debug problem -
Walkie - 02.02.2014
aaaa... yes
new CharacterInfo[MAX_PLAYERS][25][cInfo];
here's . how to fix?
Re: debug problem -
Konstantinos - 02.02.2014
It's already above!
pawn Код:
public IsLaw(playerid)
{
if (0 <= active_character[playerid] < 25)
{
new slot = GetFactionSlot(CharacterInfo[playerid][active_character[playerid]][cFaction]);
if(slot > -1 && FactionInfo[slot][fType] == FAC_TYPE_LAW) return true;
}
return false;
}
Re: debug problem -
Misiur - 02.02.2014
@OP:
I remember thread in scripting help not so long ago about similar runtime errors - there were _lots_ of them, all around the code. You have to find all active_character[X] occurances and fix them (or make sure active_character[X] always has correct value)