PDA

Просмотр полной версии : [Вопрос] Пропадают диалоги.



Bady
16.08.2015, 20:09
Добрый вечер.Столкнулся с такой проблеммой.
При конекте появляется диалог авторизации, я ввожу пароль, и все диалоги пропадают и не спавнится, а если я при это не был зарегистрирован, то при конекте вообще диалога не появится.
Поставил crashdetect, он выявил:

19:09:26] [debug] Run time error 4: "Array index out of bounds"
[19:09:26] [debug] Accessing element at index 65535 past array upper bound 1999
[19:09:26] [debug] AMX backtrace:
[19:09:26] [debug] #0 00015fac in public OnPlayerLogin (playerid=0, password[]=@001b3b74 "123321") at C:\Users\Никита\Desktop\Somp-RP\gamemodes\new.pwn:937
[19:09:28] [debug] Run time error 4: "Array index out of bounds"
[19:09:28] [debug] Accessing element at index 65535 past array upper bound 1999
[19:09:28] [debug] AMX backtrace:
[19:09:28] [debug] #0 0001c890 in public Itter_OnPlayerDisconnect (playerid=0, reason=1) at C:\Users\Никита\Desktop\Somp-RP\gamemodes\new.pwn:1278
[19:09:28] [debug] #1 native CallLocalFunction () from samp-server.exe
[19:09:28] [debug] #2 0000d8f0 in public SSCANF_OnPlayerDisconnect (playerid=0, reason=1) at C:\Users\Никита\Desktop\Somp-RP\pawno\include\foreach.inc:787
[19:09:28] [debug] #3 native CallLocalFunction () from samp-server.exe
[19:09:28] [debug] #4 00000e58 in public OnPlayerDisconnect (playerid=0, reason=1) at C:\Users\Никита\Desktop\Somp-RP\pawno\include\sscanf2.inc:223

if(pData[playerid][pHousekey] != 999)
{
CarHouse[playerid] = AddStaticVehicleEx(pData[playerid][pCar], HouseInfo[pData[playerid][pHousekey]][hCarx],HouseInfo[pData[playerid][pHousekey]][hCary],HouseInfo[pData[playerid][pHousekey]][hCarz], HouseInfo[pData[playerid][pHousekey]][hCarc], pData[playerid][pColor][0], pData[playerid][pColor][1], 86400);
if(pData[playerid][pCar] == 462) CarFuel[CarHouse[playerid]] = 200;
else CarFuel[CarHouse[playerid]] = pData[playerid][FuelCar]; //Строка 937
Doors(CarHouse[playerid],true);
Engine(CarHouse[playerid],false);
IsEngineBroken[CarHouse[playerid]] = false;
}

if(CarHouse[playerid])
{
pData[playerid][FuelCar] = CarFuel[CarHouse[playerid]];//Строка 1278
DestroyVehicle(CarHouse[playerid]);
IsEngineBroken[CarHouse[playerid]] = false;
CarHouse[playerid] = 0;
}

$continue$
16.08.2015, 22:19
Инициализацию CarFuel в студию.

Daniel_Cortez
16.08.2015, 22:37
19:09:26] [debug] Run time error 4: "Array index out of bounds"
[19:09:26] [debug] Accessing element at index 65535 past array upper bound 1999
[19:09:26] [debug] AMX backtrace:
[19:09:26] [debug] #0 00015fac in public OnPlayerLogin (playerid=0, password[]=@001b3b74 "123321") at C:\Users\Никита\Desktop\Somp-RP\gamemodes\new.pwn:937
Имеем выход за пределы массива. В массиве 2000 ячеек (от 0 до 1999 - в логах крашдетекта указывается верхняя граница, а не кол-во элементов). Индекс: 65535 (в массиве из 2000 ячеек 65535-й ячейки точно нет).


else CarFuel[CarHouse[playerid]] = pData[playerid][FuelCar]; //Строка 937
Вы правильно мыслите, ошибка возникает здесь.
Но откуда могло взяться значение 65535? Скорее всего, это значение из CarHouse[playerid].
Есть ещё вариант, что такое значение записано в playerid (INVALID_PLAYER_ID), но эта переменная используется для индексирования и до 937 строки, никаких ошибок там не вознкает.

В другой ошибке, видимо, то же самое.

Bady
17.08.2015, 01:03
Проблема в CarHouse, а именно при создании авто. Ну вот я не могу понять что именно я не правильно делаю.

new CarHouse[MAX_PLAYERS];

new house = pData[playerid][pHousekey];
CarHouse[playerid] = AddStaticVehicleEx(pData[playerid][pCar], HouseInfo[house][hCarx],HouseInfo[house][hCary],HouseInfo[house][hCarz], HouseInfo[house][hCarc], pData[playerid][pColor][0], pData[playerid][pColor][1], 86400);

wAx
17.08.2015, 01:06
Проблема в CarHouse, а именно при создании авто. Ну вот я не могу понять что именно я не правильно делаю.

new CarHouse[MAX_PLAYERS];

new house = pData[playerid][pHousekey];
CarHouse[playerid] = AddStaticVehicleEx(pData[playerid][pCar], HouseInfo[house][hCarx],HouseInfo[house][hCary],HouseInfo[house][hCarz], HouseInfo[house][hCarc], pData[playerid][pColor][0], pData[playerid][pColor][1], 86400);

AddStaticVehicle/Ex - можно использовать только в OnGameModeInit, это так к слову. Попробуй заменить на CreateVehicle

Daniel_Cortez
17.08.2015, 01:09
Значит функция AddStaticVehicleEx не может создать транспорт и возвращает INVALID_VEHICLE_ID (65535). Либо слишком много машин на сервере, либо дело в параметрах функции (например, неправильный ID модели транспорта).


AddStaticVehicle/Ex - можно использовать только в OnGameModeInit, это так к слову. Попробуй заменить на CreateVehicle
Я раньше пробовал создавать поезда через AddStaticVehicle (через CreateVehicle они не создаются) из команды - работало.

Bady
17.08.2015, 01:11
Значит функция AddStaticVehicleEx не может создать транспорт и возвращает INVALID_VEHICLE_ID (65535). Либо слишком много машин на сервере, либо дело в параметрах функции (например, неправильный ID модели транспорта).

Я раньше пробовал создавать поезда через AddStaticVehicle (через CreateVehicle они не создаются) из команды - работало.
Спасибо, не верный ид транспорта был!
Закройте тему.