Accessing element at negative index -1
#1

Код:
[19:58:35] [debug] Run time error 4: "Array index out of bounds"
[19:58:35] [debug]  Accessing element at negative index -1
[19:58:35] [debug] AMX backtrace:
[19:58:35] [debug] #0 00049f30 in ?? (2) from ServerFile.amx
[19:58:35] [debug] #1 0000bcfc in public OnPlayerSpawn (2) from ServerFile.amx
Код:
if(GSkin[PGang[playerid]][GangLvl[playerid]-1] > 0)
	{
		SetPlayerSkin(playerid, GSkin[PGang[playerid]][GangLvl[playerid]-1]);
	}
if i remove the -1 all players are in black color in the server? Help. REP+
Reply
#2

Remove it from the "if" too.
Reply
#3

if i remove the "if" then how do i check if player is in gang?
Reply
#4

An array cannot hold negative numbers in a cell.
Check if GangLvl[playerid] is positive 1st then subtract 1.
Reply
#5

I mean remove "-1" from the if line, not the whole line, sorry.
Reply
#6

if i remove the -1 all players are in black color in the server?
Reply
#7

Why do you want to use -1 in the first place? Show us your array and the variables you use please.
Reply
#8

Variables

Код:
new
tgang[MAX_PLAYERS],
namegs[MAX_GANGS][256],
col[MAX_GANGS][256],
gangskin[MAX_PLAYERS],
idsds[MAX_PLAYERS] = -1
;

new
GangName[MAX_GANGS][256],
Gang[MAX_GANGS],
GangLvl[MAX_PLAYERS],
GName[MAX_GANGS][256],
GColor[MAX_GANGS][10],
PGang[MAX_PLAYERS],
Float:GSpawnX[MAX_GANGS],
Float:GSpawnY[MAX_GANGS],
Float:GSpawnZ[MAX_GANGS],
GSkin[MAX_GANGS][7]
;
OnPlayerSpawn

Код:
	if(GSkin[PGang[playerid]][GangLvl[playerid]-1] > 0)
	{
		SetPlayerSkin(playerid, GSkin[PGang[playerid]][GangLvl[playerid]-1]);
	}
	new hex[MAX_PLAYERS];
	hex[playerid] = HexToInt(GColor[PGang[playerid]]);
	SetPlayerColor(playerid, hex[playerid]);
OnDialogResponse

Код:
new string[256];
	if(dialogid == 3937)
	{
		if(response)
		{
			switch(listitem)
			{
				case 0:
				{
					if(PGang[playerid] == 0 && GetPlayerMoney(playerid) >= 40000000 && GetPlayerScore(playerid) >= 200 && PlayerInfo[playerid][intelekt] >= 140 && PlayerInfo[playerid][intelekt] >= 100)
					{
						ShowPlayerDialog(playerid, 3939, DIALOG_STYLE_INPUT, "{FF0000}Създаване на банда", "Въведете име на бандата:", "Задай", "Отмени");
					}else return SendClientMessage(playerid, 0xFF0000FF, "Вече имате банда или сте в банда, за да имате банда, трябва да имате 40 милиона, 200 точки, 140 точки интелект и 100 точки сила!");

				}
				case 1:
				{
					if(PGang[playerid] != 0 && GangLvl[playerid] == 6)
					{
						ShowPlayerDialog(playerid, 3936, DIALOG_STYLE_LIST, "{FF0000}Меню на бандата", "Задай скин\nЗадай ранг\nИзгони от бандата\nПромени цвета на бандата\nПромени името на бандата\nИзтрий бандата", "ОК", "Отмени"); // sled zadai skin e Задай територия на бандата
					}else return SendClientMessage(playerid, 0xFF0000FF, "Трябва да сте лидер на банда!");
				}
				case 2:
				{
					if(PGang[playerid] != 0 && GangLvl[playerid] >= 4)
					{
						ShowPlayerDialog(playerid, 3935, DIALOG_STYLE_INPUT, "{FF0000}Покани в бандата", "Въведете ID-то на играча, който искате да поканите", "Покани", "Отмени");
					}else return SendClientMessage(playerid, 0xFF0000FF, "Трябва да сте 4 ранг в банда");
				}
				case 3:
				{
					if(PGang[playerid] > 0)
					{
						ShowPlayerDialog(playerid, 3934, DIALOG_STYLE_MSGBOX, "{FF0000}Напускане на бандата", "Наистина ли искате да напуснете тази банда?", "Да", "Не");
					}else return SendClientMessage(playerid, 0xFF0000FF, "Трябва да сте в банда!");
				}
			}
		}
	}
	else if(dialogid == 3936)
	{
		if(response)
		{
			switch(listitem)
			{
				case 0:
				{
					if(PGang[playerid] != 0 && GangLvl[playerid] == 6)
					{
						ShowPlayerDialog(playerid, 3933, DIALOG_STYLE_LIST, "Gang Skin", "Ранг 1\nРанг 2\nРанг3\nРанг 4\nРанг 5\nЛидер Ранг 6", "Задай", "Отмени");
					}else return SendClientMessage(playerid, 0xFF0000FF, "Трябва да сте в банда и да имате ранг Лидер!");
				}
				case 1:
				{
					if(PGang[playerid] != 0 && GangLvl[playerid] == 6)
					{
						ShowPlayerDialog(playerid, 3932, DIALOG_STYLE_INPUT, "{FF0000}Gang Rang", "Въведете ID-то на играча, на който да зададете ранг", "Задай", "Отмени");
					}else return SendClientMessage(playerid, 0xFF0000FF, "Трябва да сте в банда и да имате ранг Лидер!");
				}
				case 2:
				{
					if(PGang[playerid] != 0 && GangLvl[playerid] >= 5)
					{
						ShowPlayerDialog(playerid, 3931, DIALOG_STYLE_INPUT, "{FF0000}Gang Kick", "Въведете ID-то на играча, който искате да изгоните", "Изгони", "Отмени");
					}else return SendClientMessage(playerid, 0xFF0000FF, "Трябва да сте в банда и да имате 5 ранг");
				}
				case 3:
				{
					if(PGang[playerid] != 0 && GangLvl[playerid] == 6)
					{
						ShowPlayerDialog(playerid, 3930, DIALOG_STYLE_INPUT, "{FF0000}Gang Color", "Въведете 6 символа във формата: RRGGBB", "Задай", "Отмени");
					}else return SendClientMessage(playerid, 0xFF0000FF, "Трябва да сте в банда и да имате ранг Лидер");
				}
				case 4:
				{
					if(PGang[playerid] != 0 && GangLvl[playerid] == 6)
					{
						ShowPlayerDialog(playerid, 10010, DIALOG_STYLE_INPUT, "{FF0000}Gang Name Change", "Въведете ново име на бандата", "Смени", "Отмени");
					}else return SendClientMessage(playerid, 0xFF0000FF, "Трябва да сте лидер на банда!");
				}
				case 5:
				{
					if(PGang[playerid] != 0 && GangLvl[playerid] == 6)
					{
						ShowPlayerDialog(playerid, 7041, DIALOG_STYLE_MSGBOX, "{FF0000}Gang Delete", "Наистина ли искате да изтриете бандата си", "Да", "Не");
					}else return SendClientMessage(playerid, 0xFF0000FF, "Трябва да сте в банда и да имате ранг Лидер");
				}
			}
		}
	}
	else if(dialogid == 3939)
	{
		if(response)
		{
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 3939, DIALOG_STYLE_INPUT, "{FF0000}Gang Create", "Въведете име на бандата", "Задай", "Отмени");
			format(GangName[playerid], 256, inputtext);
			ShowPlayerDialog(playerid, 3938, DIALOG_STYLE_INPUT, "{FF0000}Gang Create", "Въведете цвят на бандата:", "Задай", "Отмени");
		}
	}

	else if(dialogid == 3938)
	{
		if(response)
		{
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 3938, DIALOG_STYLE_INPUT, "{FF0000}Gang Create", "Въведете цвят на бандата:", "Задай", "Отмени");
			if(strlen(inputtext) != 6)
			{
				SendClientMessage(playerid, 0xFF0000, "Стойноста трябва да е 6 символна под формата: RRGGBB!");
				return ShowPlayerDialog(playerid, 3938, DIALOG_STYLE_INPUT, "{FF0000}Gang Create", "Въведете цвят на бандата", "Задай", "Отмени");
			}
			new f[256],year,month,day,lolo[128]; getdate(year, month, day);
			format(f, 256, "Gangs/%i.ini",GetFreeGang());
			new cfile = ini_createFile(f);
			if(cfile == INI_OK)
			{
				GangLvl[playerid] = 6;
				PGang[playerid] = GetFreeGang();
				format(GName[PGang[playerid]], 256, GangName[playerid]);
				format(GColor[PGang[playerid]], 10, "%sFF", inputtext);
				format(lolo, sizeof(lolo),"%d/%d/%d",day, month, year);
				new hex[MAX_PLAYERS];
				hex[playerid] = HexToInt(GColor[PGang[playerid]]);
				SetPlayerColor(playerid, hex[playerid]);
				Gang[GetFreeGang()] = 1;
				GivePlayerMoney(playerid, -50000000);
				format(string, sizeof(string), "{FFFF00}Бандата е успешно създадена!\r\n{FFFF00}Име: %s\r\n{FFFF00}Цввят: {%s}%s\r\n{FFFF00}Дата на създаване: {FFFFFF}%s", GName[PGang[playerid]], inputtext,GColor[PGang[playerid]],lolo);
				ShowPlayerDialog(playerid, 2987, DIALOG_STYLE_MSGBOX, "{FF0000}Gang Create", string, "Ok", "");
				ini_setString(cfile, "Gang name", GName[PGang[playerid]]);
				ini_setString(cfile, "Gang color", GColor[PGang[playerid]]);
				ini_setString(cfile, "founded", lolo);
				ini_setFloat(cfile, "SpawnX", 0.0);
				ini_setFloat(cfile, "SpawnY", 0.0);
				ini_setFloat(cfile, "SpawnZ", 0.0);
				ini_setInteger(cfile, "Skin1", 0);
				ini_setInteger(cfile, "Skin2", 0);
				ini_setInteger(cfile, "Skin2", 0);
				ini_setInteger(cfile, "Skin3", 0);
				ini_setInteger(cfile, "Skin4", 0);
				ini_setInteger(cfile, "Skin5", 0);
				ini_setInteger(cfile, "Skin6", 0);
				ini_closeFile(cfile);
			}
		}
	}
	else if(dialogid == 3935)
	{
		if(response)
		{
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 3935, DIALOG_STYLE_INPUT, "{FF0000}Gang Invite", "Въведете ID-то на играча, който искате да поканите:", "Покани", "Отмени");
			if(IsPlayerConnected(strval(inputtext)))
			{
				if(PGang[strval(inputtext)] == 0)
				{
					format(string, sizeof(string), "Играч %s ви изпрати покана за бандата %s", PlayerName(playerid), GName[PGang[playerid]]);
					ShowPlayerDialog(strval(inputtext), 3929, DIALOG_STYLE_MSGBOX, "Покана за банда", string, "Приеми", "Откажи");
					format(string, sizeof(string), "Лидер %s изпрати покана на играч %s", PlayerName(playerid), PlayerName(idsds[playerid]));
					for(new i; i<MAX_PLAYERS; i++)
					{
						if(PGang[i] == PGang[playerid])
						{

							SendClientMessage(i, 0xFF0000FF, string);
						}
					}
					tgang[strval(inputtext)] = PGang[playerid];
				}else return SendClientMessage(playerid, 0xFFFFFFFF, "Играча вече е в банда!");
			}else return SendClientMessage(playerid, 0xFFFFFFFF, "Играча не е в игра!");
		}
	}
	else if(dialogid == 3929)
	{
		if(response)
		{
			PGang[playerid] = tgang[playerid];
			GangLvl[playerid] = 1;
			new hex[MAX_PLAYERS];
			hex[playerid] = HexToInt(GColor[PGang[playerid]]);
			SetPlayerColor(playerid, hex[playerid]);
			format(string, sizeof(string), "Присъединихте се към бандата %s", GName[PGang[playerid]]);
			SendClientMessage(playerid, 0xFFFFFFFF, string);
			format(string, sizeof(string), "%s се присъедини към бандата!", PlayerName(playerid));
			for(new i; i<MAX_PLAYERS; i++)
			{
				if(PGang[i] == PGang[playerid])
				{
					SendClientMessage(i, 0xFFFF00FF, string);
				}
			}
		}
		else
		{
			tgang[playerid] = 0;
		}
	}
	else if(dialogid == 3931)
	{
		if(response)
		{
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 3931, DIALOG_STYLE_INPUT, "{FF0000}Gang Kick", "Въведете ID-то на играча, който искате да изгоните:", "Изгони", "Отмени");
			if(IsPlayerConnected(strval(inputtext)))
			{
				if(PGang[strval(inputtext)] == PGang[playerid])
				{
					PGang[strval(inputtext)] = 0;
					GangLvl[strval(inputtext)] = 0;
					format(string, 256, "{FF0000}Ти беше игонен от бандата от играч %s", PlayerName(playerid));
					SendClientMessage(playerid, 0xFF0000FF, string);
				}else return SendClientMessage(playerid, 0xFFFFFFFF, "Играча не е в твоята банда!");
			}else return SendClientMessage(playerid, 0xFFFFFFFF, "Играча не е в игра!");
		}
	}
	else if(dialogid == 3930)
	{
		if(response)
		{
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 3930, DIALOG_STYLE_INPUT, "{FF0000}Gang Color", "Въведете 6 символа под формата: RRGGBB", "Задай", "Отмени");
			if(strlen(inputtext) != 6)
			{
				SendClientMessage(playerid, 0xFF0000FF, "Стойността трябва да бъде 6 символна под формата на RRGGBB!");
				return ShowPlayerDialog(playerid, 3930, DIALOG_STYLE_INPUT, "{FF0000}Gang Color", "Въведете 6 символа под формата: RRGGBB", "Задай", "Отмени");
			}
			format(GColor[PGang[playerid]], 10, "%sFF", inputtext);
			new hex[MAX_PLAYERS];
			hex[playerid] = HexToInt(GColor[PGang[playerid]]);
			SetPlayerColor(playerid,hex[playerid]);
			format(string, sizeof(string), "Цвета на бандата е {%s}%s", inputtext, GColor[PGang[playerid]]);
			SendClientMessage(playerid, 0xCCFF00FF, string);
			new f[256];
			format(f, 256, "Gangs/%i.ini",PGang[playerid]);
			new file = ini_openFile(f);
			if(file == INI_OK)
			{
				ini_setString(file, "Gang color", GColor[PGang[playerid]]);
				ini_closeFile(file);
			}
		}
	}
	else if(dialogid == 3934)
	{
		if(response)
		{
			format(string,sizeof(string), "{FFFF00} %s напусна бандата!", PlayerName(playerid));
			for(new i; i<MAX_PLAYERS; i++)
			{
				if(PGang[i] == PGang[playerid] && i != playerid)
				{
					SendClientMessage(i, 0xFFFF00, string);
				}
			}
			PGang[playerid] = 0;
			GangLvl[playerid] = 0;
		}
	}
	else if(dialogid == 7001)
	{
		if(response)
		{
			new Float:x, Float:y, Float:z;
			GetPlayerPos(playerid, x, y, z);
			GSpawnX[PGang[playerid]] = x;
			GSpawnY[PGang[playerid]] = y;
			GSpawnZ[PGang[playerid]] = z;
			new f[256];
			format(f, 256, "Gangs/%i.ini",PGang[playerid]);
			new file = ini_openFile(f);
			if(file == INI_OK)
			{
				ini_setFloat(file, "SpawnX", x);
				ini_setFloat(file, "SpawnY", y);
				ini_setFloat(file, "SpawnZ", z);
				ini_closeFile(file);
			}
		}
	}
	else if(dialogid == 3928)
	{
		if(response)
		{
			if(!strlen(inputtext) && strval(inputtext) > 0) return ShowPlayerDialog(playerid, 3928, DIALOG_STYLE_INPUT, "{FF0000}Gang Skin", "Въведете ID-то на скина, който искате да зададете на бандата:", "Задай", "Отмени");
			new f[256];
			format(f, 256, "Gangs/%i.ini",PGang[playerid]);
			new file = ini_openFile(f);
			if(file == INI_OK)
			{
				format(string, 256, "Skin%i", gangskin[playerid]);
				ini_setInteger(file, string, strval(inputtext));
				ini_closeFile(file);
				format(string, sizeof(string), "Скина е успешно сменен! ID скин: %i", strval(inputtext));
				SendClientMessage(playerid, 0xFFFF00FF, string);
				GSkin[PGang[playerid]][gangskin[playerid]-1] = strval(inputtext);
				for(new i; i<MAX_PLAYERS; i++)
				{
					if(PGang[i] == PGang[playerid] && GangLvl[i] == gangskin[playerid])
					{
						SetPlayerSkin(i, strval(inputtext));
					}
				}
				gangskin[playerid] = 0;
			}
		}
	}
	else if(dialogid == 3932)
	{
		if(response)
		{
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 3932, DIALOG_STYLE_INPUT, "{FF0000}Gang Rang", "Въведете ID-то на играча, на който искате да зададете ранг", "Задай", "Отмени");
			if(PGang[strval(inputtext)] != PGang[playerid])
			{
				SendClientMessage(playerid, 0xFFFF00FF, "Играча не е във вашата банда!");
				return ShowPlayerDialog(playerid, 3932, DIALOG_STYLE_INPUT, "{FF0000}Gang Rang", "Въведете ID-то на играча, на който искате да зададете ранг", "Задай", "Отмени");
			}
			idsds[playerid] = strval(inputtext);
			ShowPlayerDialog(playerid, 3927, DIALOG_STYLE_LIST, "{FF0000}Gang Rang", "Ранг 1\nРанг 2\nРанг 3\nРанг 4\nРанг 5\nЛидер Ранг 6", "Задай", "Отмени");
		}
	}
	else if(dialogid == 3927)
	{
		if(response)
		{
			switch(listitem)
			{
				case 0: GangLvl[idsds[playerid]] = 1;
				case 1: GangLvl[idsds[playerid]] = 2;
				case 2: GangLvl[idsds[playerid]] = 3;
				case 3: GangLvl[idsds[playerid]] = 4;
				case 4: GangLvl[idsds[playerid]] = 5;
				case 5: GangLvl[idsds[playerid]] = 6;
			}
			format(string, sizeof(string), "Дадохте на играч %s ранг %i", PlayerName(idsds[playerid]), GangLvl[idsds[playerid]]);
			SendClientMessage(playerid, 0xFFFF00FF, string);
			format(string, sizeof(string), "Лидер %s ти даде ранг %i", PlayerName(playerid), GangLvl[idsds[playerid]]);
			SendClientMessage(idsds[playerid], 0xFFFF00FF, string);
			if(GSkin[PGang[playerid]][GangLvl[idsds[playerid]]] > 0) SetPlayerSkin(idsds[playerid], GSkin[PGang[playerid]][GangLvl[idsds[playerid]]-1]);
			idsds[playerid] = -1;
		}
	}
	else if(dialogid == 10010)
	{
		if(response)
		{
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 10010, DIALOG_STYLE_INPUT, "{FF0000}Gang Name Change", "Въведете ново име на бандата:", "Смени", "Отмени");
			format(GName[PGang[playerid]], 256, "%s", inputtext);
			format(string, sizeof(string), "\n{FFFF00}Името на бандата е успешно сменено!\nНовото име на бандата е: {FF0000}%s\n",inputtext);
			ShowPlayerDialog(playerid, 10011, DIALOG_STYLE_MSGBOX, "{FF0000}Gang Name Change", string, "Ok", "");
			new f[256];
			format(f, 256, "Gangs/%i.ini",PGang[playerid]);
			new file = ini_openFile(f);
			if(file == INI_OK)
			{
				ini_setString(file, "Gang name", GName[PGang[playerid]]);
				ini_closeFile(file);
			}
		}
	}
Reply
#9

Try sth like this:

Код:
if(GSkin[PGang[playerid]][GangLvl[playerid] + ((GangLvl[playerid] > 0)?(-1):(0))] > 0)
{
    SetPlayerSkin(playerid, GSkin[PGang[playerid]][GangLvl[playerid] + ((GangLvl[playerid] > 0)?(-1):(0))]);
}
Greekz
Reply
#10

it doesn't give this error, but all people are still black.
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)