Mit strlen oder sizeof kommst du nicht weiter.
Also am schnellsten und einfachsten wäre es, wenn du es statisch machst z.B. einfach so:
stock GetLen(x) return ((x)==0)?7:6;
//Nutzen kannst du das dann so:
const frakid = 0;
printf("%d",GetLen(frakid)); //Gibt dir dann halt 7 zurück da der 0te index in deinem Array 7 Einträge hat, alle anderen 6
Wenn du es dynamischer haben willst, musst du mit einem End-Byte arbeiten, z.B. so:
//Dann schreib das Array so:
stock const FrakSkinM[][] =
{
{1,2,7,15,21,22,26,-1},
{265,267,266,281,282,283,-1},
{265,267,266,281,282,283,-1},
{265,267,266,281,282,283,-1}
};
//Und die Funktion:
stock GetLen(const str[])
{
new idx;
for(new i=str[0]; i!=-1; i=str[++idx]){}
return idx;
}
//und nutzung:
const frakid=0;
printf("%d",GetLen(FrakSkinM[frakid])); //Gibt 7 aus
Da jede Zeile die gleiche Größe haben muss
Das stimmt nicht.
stock const FrakSkinM[][] =
{
{1,2,3},
{1,2,3,4}
};
Kann man gut machen, da funktioniert aber das sizeof(FrakSkinM[]) nicht 
mfg. 