Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Проблема с Таймером

Статус
В этой теме нельзя размещать новые ответы.

Ben_Lovejoy

Компетентный
Добрый вечер уважаемые форумчане, столкнулся с такой проблемой. Проверил мод на crashdetect и вот что он мне показал:
PHP:
[21:14:35] [debug] Run time error 4: "Array index out of bounds"
[21:14:35] [debug]  Accessing element at index 412 past array upper bound 2
[21:14:35] [debug] AMX backtrace:
[21:14:35] [debug] #0 001cea28 in ?? () from gamemode.amx
[21:14:35] [debug] #1 001ce720 in ?? () from gamemode.amx
[21:14:35] [debug] #2 001c1ec4 in public MainTimer () from gamemode.amx
[21:14:36] [debug] Run time error 4: "Array index out of bounds"
Как Вы уже заметили ошибка произошла от паблика public MainTimer ()

Что бы это могло значить? Кто подскажет как исправить проблему, плюсом не обделю.

Сам паблик:
PHP:
public MainTimer()
{
	if(FrakCD > 0 && IsCapture == 0) FrakCD--;
	WHDataUpdate();
	for(new i;i<6;i++) if(gGunWorkTime[i]) gGunWorkTime[i]--;
	for(new i2;i2<2;i2++)
	{
		new text[256];
		strcat(text,"{"#cLIGHTBLUE"}  Очередь на загрузку:{"#cWHITE"}");
		for(new i;i<10;i++)
		{
			if(gTruckLoadTurn[i2][i] != INVALID_PLAYER_ID && !IsPlayerConnected(gTruckLoadTurn[i2][i])) gTruckLoadTurn[i2][i] = INVALID_PLAYER_ID;
			if(i != 9 && gTruckLoadTurn[i2][i] == INVALID_PLAYER_ID && gTruckLoadTurn[i2][i+1] != INVALID_PLAYER_ID) {gTruckLoadTurn[i2][i] = gTruckLoadTurn[i2][i+1]; gTruckLoadTurn[i2][i+1] = INVALID_PLAYER_ID;}
			if(gTruckLoadTurn[i2][i] != INVALID_PLAYER_ID) format(text,sizeof(text),"%s\n%d. %s",text,i+1,pData[gTruckLoadTurn[i2][i]][pNickname]);
			else format(text,sizeof(text),"%s\n%d. Свободно",text,i+1);
		}
		UpdateDynamic3DTextLabelText(gTruckLoadTurnText[i2], CWHITE, text);
		if(gTruckLoadTurn[i2][0] != INVALID_PLAYER_ID)
		{
			new playerid = gTruckLoadTurn[i2][0];
			new amount = GetPVarInt(playerid,"truckamount");
			if(IsPlayerConnected(playerid))
			{
				if(pTemp[playerid][pTruckWagonID] != INVALID_VEHICLE_ID)
				{
					if(amount - pTemp[playerid][pTruckWeight] == 100)
					{
						pTemp[playerid][pTruckWeight] += 100;
						if(!i2) gCoalWH -= 100;
						else gWoodWH -= 100;
						pTemp[playerid][pTruckWagonTime] = 60;
						SendClientMessage(playerid,CGREEN,"Ваша фура загружена. У Вас есть 1 минута чтобы прицепить её");
						SendClientMessage(playerid,CGREEN,"Если не успеете заказ будет аннулирован. Деньги не возвращаются");
					}
					else if(pTemp[playerid][pTruckWeight] < amount)
					{
						pTemp[playerid][pTruckWeight] += 100;
						if(!i2) gCoalWH -= 100;
						else gWoodWH -= 100;
					}
					else if(pTemp[playerid][pTruckWagonTime] && GetPVarInt(playerid,"waitgruz") == 2) pTemp[playerid][pTruckWagonTime]--;
					if(pTemp[playerid][pTruckWagonTime] < 1 && GetPVarInt(playerid,"waitgruz") == 2)
					{
						if(IsValid3DTextLabel(pTemp[playerid][pTruckWagonText])) DestroyDynamic3DTextLabelEx(pTemp[playerid][pTruckWagonText]);
						DestroyVehicle(pTemp[playerid][pTruckWagonID]);
						pTemp[playerid][pTruckWagonText] = Text3D:INVALID_3DTEXT_ID;
						pTemp[playerid][pTruckWagonID] = INVALID_VEHICLE_ID;
						pTemp[playerid][pTruckWeight] = 0;
						pTemp[playerid][pTruckWagonTime] = 0;
						gTruckLoadTurn[i2][0] = INVALID_PLAYER_ID;
						SendClientMessage(playerid,CRED,"Вы не успели. Заказ аннулирован");
					}
					if(pTemp[playerid][pTruckWagonText] != Text3D:INVALID_3DTEXT_ID)
					{
						new mes[128];
						if(i2 == 0) format(mes,sizeof(mes),"{"#cGREEN"}Угля в фуре: {"#cWHITE"}%d/%d",pTemp[playerid][pTruckWeight],amount);
						if(i2 == 1) format(mes,sizeof(mes),"{"#cGREEN"}Древесины в фуре: {"#cWHITE"}%d/%d",pTemp[playerid][pTruckWeight],amount);
						UpdateDynamic3DTextLabelText(pTemp[playerid][pTruckWagonText],CWHITE,mes);
					}
				}
				else
				{
					SendClientMessage(playerid,CWHITE,"Подошла очередь загрузки вашей фуры");
					SendClientMessage(playerid,CWHITE,"После загрузки у Вас будет всего минута, чтобы прицепить её.");
					SetPVarInt(playerid,"waitgruz",2);
					pTemp[playerid][pTruckWagonTime] = 60;
					if(!i2) pTemp[playerid][pTruckWagonID] = CreateVehicle(450,384.9763,902.6101,20.2163,82.9793,1,1,-1);
					else pTemp[playerid][pTruckWagonID] = CreateVehicle(450,-2003.7578,-2421.1641,31.6471,134.4641,1,1,-1);
					if(pTemp[playerid][pTruckWagonText] != Text3D:INVALID_3DTEXT_ID) DestroyDynamic3DTextLabelEx(pTemp[playerid][pTruckWagonText]);
					pTemp[playerid][pTruckWagonText] = CreateDynamic3DTextLabel("_",CWHITE,0.0,0.0,2.0,20.0,INVALID_PLAYER_ID,pTemp[playerid][pTruckWagonID]);
				}
				if(!IsPlayerInDynamicArea(playerid,gAreas[arTruckWagonCoal]) && !IsPlayerInDynamicArea(playerid,gAreas[arTruckWagonWood]) && (gTruckLoadTurn[0][0] == playerid || gTruckLoadTurn[1][0] == playerid))
				{
					new vehicleid = GetPlayerVehicleID(playerid);
					if(IsTrailerAttachedToVehicle(vehicleid))
					{
						new trailerid = GetVehicleTrailer(vehicleid);
						if(pTemp[playerid][pTruckWagonID] == trailerid)
						{
							new loadid = GetPVarInt(playerid,"loadid");
							pTemp[playerid][pTruckLoadID] = loadid;
							DeletePVar(playerid,"loadid");
							SetPVarInt(playerid,"truckonroad",1);
							gTruckLoadTurn[loadid][0] = INVALID_PLAYER_ID;
							SendClientMessage(playerid,CWHITE,"Теперь можете спокойно ехать к оружейному заводу. (( /gps => Дальнобойщики => Оружейный завод ))");
						}
						else
						{
							SendClientMessage(playerid,CGRAY,"Данную фуру уже арендуют");
							RemovePlayerFromVehicle(playerid);
						}
					}
				}
			}
		}
	}
	new text[256];
	strcat(text,"{"#cINFO"}  Очередь на экзамен:{"#cWHITE"}");
	for(new i;i<20;i++)
	{
		if(gDSTurn[i] != INVALID_PLAYER_ID && !IsPlayerConnected(gDSTurn[i]) || (gDSTurn[i] != INVALID_PLAYER_ID && !pTemp[gDSTurn[i]][pWaitingExam])) gDSTurn[i] = INVALID_PLAYER_ID;
		if(i != 19 && gDSTurn[i] == INVALID_PLAYER_ID && gDSTurn[i+1] != INVALID_PLAYER_ID)
		{
			gDSTurn[i] = gDSTurn[i+1];
			gDSTurn[i+1] = INVALID_PLAYER_ID;
			if(!i)
			{
				new mes[128];
				format(mes,sizeof(mes),"%s ожидает вызова на практический экзамен по вождению",pData[gDSTurn[0]][pNickname]);
				for(new j;j<MAX_PLAYERS;j++)
				{
					if(!IsPlayerConnected(j) || !pTemp[j][pLogined]) continue;
					else if(pData[j][pFraction] == 1)
					{
						SendClientMessage(j,CINFO,mes);
					}
				}
			}
		}
		if(gDSTurn[i] != INVALID_PLAYER_ID) format(text,sizeof(text),"%s\n%d. %s",text,i+1,pData[gDSTurn[i]][pNickname]);
	}
	UpdateDynamic3DTextLabelText(gDSTurnText,CWHITE,text);
	if(gGangRespawnCar) gGangRespawnCar--;
	if(RestartTime)
	{
		RestartTime--;
		new mes[36];
		format(mes,sizeof(mes),"~w~RESTART %d SEC",RestartTime);
		GameTextForAll(mes,2000,3);
		if(!RestartTime)
		{
			SendRconCommand("gmx");
			RestartTime = 0;
		}
	}
	for(new i;i<MAX_PLAYERS;i++)
	{
		if(gReconnectTime[i]) gReconnectTime[i]--;
		pTemp[i][pKick2] = 0;
		/*pTemp[i][pOff] = 0;*/
		/*		if(!pTemp[i][pLogined])
		{
			pTemp[i][pLoginTime]--;
			if(pTemp[i][pLoginTime] <= 0)
			{
				SendClientMessage(i,CRED,"Время на регистрацию / вход ограничено");
				NewKick(i);
			}
		}*/
		pTemp[i][pAFK] ++;
		if(pTemp[i][pAFK] >= 3)
		{
			new mes[128];
			format(mes,sizeof(mes),"{"#cRED"}На паузе %s сек.",Converts(pTemp[i][pAFK]));
			SetPlayerChatBubble(i,mes,CWHITE,10.0,1600);
			pTemp[i][pIsAFK] = true;
		}
		if(pData[i][pAdmin] < 3 && (pTemp[i][pAFK] > 900 || pTemp[i][pDarkAFK] > 900))
		{
			SendClientMessage(i,CGRAY,"Вы были кикнуты за простой в АФК");
			NewKick(i);
		}
		if(pTemp[i][pFillGoing])
		{
			new vehicleid = GetPlayerVehicleID(i);
			if(vehicleid && pTemp[i][pFillingAmount] > gVehicles[vehicleid-1][vFuel] + 1.0) gVehicles[vehicleid-1][vFuel] += 1.0;
			else if(vehicleid)
			{
				gVehicles[vehicleid-1][vFuel] = pTemp[i][pFillingAmount];
				TogglePlayerControllable(i,1);
				SendClientMessage(i,CGREEN,"Транспорт заправлен, можете ехать");
				pTemp[i][pFilling] = false;
				pTemp[i][pFillGoing] = false;
				pTemp[i][pFillingAmount] = 0.0;
				pTemp[i][pFillingSpeed] = 0.0;
				pTemp[i][pFillingAccel] = 0.0;
				pTemp[i][pFillingID] = 0;
				pTemp[i][pFillingPrice] = 0;
			}
		}
		if(GetPlayerSurfingVehicleID(i) != INVALID_VEHICLE_ID)
		{
			new cid = GetPlayerSurfingVehicleID(i);
			new cm = GetVehicleModel(cid); // получаем модель авто
			switch(cm)
			{
			case 430,446,452,453,454,472,473,484,493,595:{return 1;} // если это лодка, скидывать ненадо)
			default:{}
			}
			new Float:x, Float:y, Float:z;
			GetPlayerPos(i,x,y,z);
			x -= 1.5;
			SetPlayerPos(i,x,y,z);
		}
		if(pTemp[i][pWork] == 2 && IsPlayerInDynamicArea(i,gAreas[arAntiCleo]))
		{
			new Float:x, Float:y, Float:z;
			GetPlayerPos(i,x,y,z);
			if(z < -100.0)
			{
				SFCM(i,CGRAY,"Вы были кикнуты по подозрению в читерстве (Спидхак / ТП / Флай 7 ) (%.2f)",RandomEx(10,15) + RandomEx(0,100)/100 + 0.0);
				//NewKick(i);
			}
		}
		if(pTemp[i][pTazer])
		{
			pTemp[i][pTazer]--;
			if(!pTemp[i][pTazer])
			{
				SetPlayerSpecialAction(i,SPECIAL_ACTION_NONE);
				TogglePlayerControllable(i,1);
			}
		}
		if(GetPlayerVirtualWorld(i) != pTemp[i][pWorld]) pTemp[i][pWorldKick]++;
		/*	if(logFreez && pTemp[i][pWorldKick] == 3 && IsPlayerConnected(i))
		{
			new mes[128];
			format(mes,sizeof(mes),"%s [%d] подозревается во фризе виртуального мира",pData[i][pNickname],i);
			AdminChat(CRED,mes);
			pTemp[i][pWorldKick] = 0;
		}*/
		if(pTemp[i][pAdvertTime] > 0) pTemp[i][pAdvertTime]--;
	}
	new h, m;
	gettime(h,m);
	if(gCurMinutes != m)
	{
		gCurMinutes = m;
		if(gCurHour != h)
		{
			gCurHour = h;
			if(h == 5 && m == 0) SendClientMessageToAll(CRED,"Внимание, через 3 минуты произойдёт автоматический рестарт сервера!");
		}
		else if(m == 2 && h == 5) hbminus();
		else if(m == 3 && h == 5)
		{
			SendClientMessageToAll(CRED,"Авторестарт сервера... (#8)");
			GameModeExit();
		}
	}
	//Объявления
	if(gAdvertTime > 0) gAdvertTime--;
	for(new i;i<MAX_ADVERT_COUNT;i++)
	{
		if(gAdvert[i][adTime]) gAdvert[i][adTime]--;
		if(gAdvert[i][adCheked] && !gAdvert[i][adTime])
		{
			//		gNewsMoney += gAdvert[i][adMoney];
			//		SaveNewsMoney();
			new mes[168];
			format(mes,sizeof(mes),"%s Отправитель: %s (тел. %d)",gAdvert[i][adText],gAdvert[i][adSender],gAdvert[i][adPhone]);
			SendClientMessageToAll(0x00FF00FF,mes);
			format(mes,sizeof(mes),"  Объявление проверил: %s %s",gAdvert[i][adRang], gAdvert[i][adCheker]);
			SendClientMessageToAll(CGREEN,mes);
			strdel(gAdvert[i][adSender],0,24);
			gAdvert[i][adPhone] = 0;
			strdel(gAdvert[i][adText],0,100);
			strdel(gAdvert[i][adCheker],0,24);
			gAdvert[i][adBusy] = false;
			gAdvert[i][adCheked] = false;
			gAdvert[i][adCheking] = false;
			gAdvert[i][adTime] = 0;
			if(gAdvertCount > 0) gAdvertCount--;
		}
	}
	return 1;
}
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу