Добро пожаловать на Pawno-Info.Ru - Портал о программировании v2.0

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. После регистрации и входа в систему вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию своим коллегам, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?

Реклама

Вы можете заказать рекламу для вашего сообщества, или проекта на нашем портале. Реклама - двигатель торговли.

Что нового?

Хотите в один клик узнать что нового пишут наши пользователи? Тогда Вам сюда.

Связь с Администрацией

Если у Вас есть вопрос по работе портала, который Вы не в силах решить сами? Тогда напишите нам об это тут.

[Вопрос] Проблема при нажатии любых клавиш в игре.

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

VLeone

• Зарегистрированный •
Регистрация
18 Авг 2019
Сообщения
10
Реакции
0
Доброго времени суток, уважаемые пользователи форума.
Хотел задать вопрос: почему у меня при нажатии каких-либо клавиш в моде в консоли сервера возникают следующие сообщения:
PHP:
[23:06:17] [debug] AMX backtrace:
[23:06:17] [debug] #0 00c8d0c4 in public OnPlayerKeyStateChange (playerid=0, newkeys=1024, oldkeys=0) at C:\Users\rom-v\OneDrive\Рабочий стол\fffffff\gamemodes\virginia.pwn:26951
[23:06:25] [debug] Run time error 4: "Array index out of bounds"
[23:06:25] [debug]  Accessing element at negative index -1
Вот фрагмент того самого паблика и тех самых строк:
PHP:
	if(PRESSED(KEY_WALK) && !IsPlayerInAnyVehicle(playerid))
	{
	    new house = PlayerInfo[playerid][pHouseKey];
		new veh_id = GetPlayerVehicleID(playerid);
		if(GarageEntered[playerid] == -1)
		{
			for(new i = 0; i < MAX_HOUSES; i++)
			{
				if(IsPlayerInRangeOfPoint(playerid, 3.5, HouseInfo[house][hGarage_X], HouseInfo[house][hGarage_Y], HouseInfo[house][hGarage_Z])) // 26951 строка с ошибкой.
				{
				    if(!GetString(HouseInfo[house][hOwner],Name(playerid))) return SendClientMessage(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Это не ваш гараж!");
					if(veh_id != 0)
					{
						J_SetVehiclePos(veh_id,GaragesInteriors[HouseInfo[house][hIntGarage]][e_GARAGE_INTERIOR_X],GaragesInteriors[HouseInfo[house][hIntGarage]][e_GARAGE_INTERIOR_Y],GaragesInteriors[HouseInfo[house][hIntGarage]][e_GARAGE_INTERIOR_Z]);
						SetVehicleZAngle(veh_id,GaragesInteriors[HouseInfo[house][hIntGarage]][e_GARAGE_INTERIOR_A]);
		  				LinkVehicleToInterior(veh_id, GaragesInteriors[HouseInfo[house][hIntGarage]][e_GARAGE_INTERIOR_INT]);
						SetVehicleVirtualWorld(veh_id, house+50);
						f_TogglePlayerControllable(playerid, false);
						SetTimerEx("UnFreez",10000, 0, "d", playerid);
				 	}
					J_SetPlayerPosFreeze(playerid,GaragesInteriors[HouseInfo[house][hIntGarage]][e_GARAGE_INTERIOR_X],GaragesInteriors[HouseInfo[house][hIntGarage]][e_GARAGE_INTERIOR_Y],GaragesInteriors[HouseInfo[house][hIntGarage]][e_GARAGE_INTERIOR_Z]);
					J_SetPlayerFacingAngle(playerid,GaragesInteriors[HouseInfo[house][hIntGarage]][e_GARAGE_INTERIOR_A]);
					SetPlayerInterior(playerid, GaragesInteriors[HouseInfo[house][hIntGarage]][e_GARAGE_INTERIOR_INT]);
					SetPlayerVirtualWorld(playerid, house+50);
					if(veh_id != 0) PutPlayerInVehicle(playerid, veh_id, 0);
					GarageEntered[playerid] = house;
					return 1;
				}
В инклудe nex-ac просто идет ссылка на этот паблик, поэтому прикреплять не стал. Помогите, пожалуйста, разобраться с проблемой.
 

execution

Участник форума
Пользователь
Регистрация
23 Июн 2017
Сообщения
384
Реакции
57
Если б ты перевёл ошибку, то ты понял, что получаемое значение выходит за пределы массива.
Тобишь, если у игрока нет дома, то значение будет -1
PHP:
new house = PlayerInfo[playerid][pHouseKey];
Поэтому тут мы получаем выход за пределы массива
PHP:
if(IsPlayerInRangeOfPoint(playerid, 3.5, HouseInfo[house][hGarage_X], HouseInfo[house][hGarage_Y], HouseInfo[house][hGarage_Z]))
Следовательно тебе просто необходимо сделать проверку, есть ли у него дом или нет.
 
Последнее редактирование:

VLeone

• Зарегистрированный •
Регистрация
18 Авг 2019
Сообщения
10
Реакции
0
Если б ты перевёл ошибку, то ты понял, что получаемое значение выходит за пределы массива.
Тобишь, если у игрока нет дома, то значение будет -1
PHP:
new house = PlayerInfo[playerid][pHouseKey];
Поэтому тут мы получаем выход за пределы массива
PHP:
if(IsPlayerInRangeOfPoint(playerid, 3.5, HouseInfo[house][hGarage_X], HouseInfo[house][hGarage_Y], HouseInfo[house][hGarage_Z]))
Следовательно тебе просто необходимо сделать проверку, есть ли у него дом или нет.
Большое спасибо, проблему решил.
 

Serg_Brain

• Администратор •
Команда форума
Administrator
Регистрация
15 Янв 2012
Сообщения
3,954
Реакции
479
  • Герой PI
  • Верность PI
  • Web-разработчик
Закрыто, проблема решена.
 
Статус
В этой теме нельзя размещать новые ответы.

Команда форума онлайн

Реклама

shape1
shape2
shape3
shape4
shape7
shape8
Сверху