PDA

Просмотр полной версии : [Вопрос] [debug] Run time error 4: "Array index out of bounds"



Mesto
08.12.2016, 01:11
Подскажите пожалуйста как исправить

21:36:07] [debug] Run time error 4: "Array index out of bounds"
[21:36:07] [debug] Attempted to read/write array element at negative index -400
[21:36:07] [debug] AMX backtrace:
[21:36:07] [debug] #0 0019c2ac in public UpdateTimer () at D:\server\gamemodes\new.pwn:23017


if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new vehid = GetPlayerVehicleID(playerid);
new string[80];
new Float:X, Float:Y, Float:Z, Float:X2, Float:Y2, Float:Z2;
new Float:veloc, modelid = GetVehicleModel(vehid)-400;
X2 = gVehicles[vehid][vX];
Y2 = gVehicles[vehid][vY];
Z2 = gVehicles[vehid][vZ];
GetVehiclePos(vehid, X, Y, Z);
veloc = PointToPoint3D(X2, Y2, Z2, X, Y, Z)/1000;
if(gVehicles[vehid][vEngine] == true && gTransport[modelid][trFuelable] == 1 && gVehicles[vehid][vFuel] > 0.0) // СТРОЧКА 23017
{
gVehicles[vehid][vFuel] -= (veloc/100)*gTransport[modelid][trConsumption]*2;
if(gVehicles[vehid][vFuel] <= 0.0)
{
gVehicles[vehid][vFuel] = 0.0;
ToggleEngine(vehid);
SendClientMessage(playerid, CGRAY, "Двигатель заглох.");
if((StartDerby == 3 || StartDerby == 2) && iDerby[playerid] != 0)
{
PlayerDerby--;
iDerby[playerid] = 0;
UpdateDerby();
DestroyVehicle(DerbyCar[1][playerid]);
DerbyCar[0][playerid] = -1;
DerbyCar[1][playerid] = -1;
SetPlayerPos(playerid, 827.0083,5.8989,1004.1870);
SetPlayerFacingAngle(playerid, 269.6992);
SetPlayerInterior(playerid, 3);
SetPlayerVirtualWorld(playerid, 300);
SendClientMessage(playerid, COLOR_GREY, "Вы были дисквалифицированы.");
}
}
else if(gVehicles[vehid][vHealth] <= 300.0)
{
gVehicles[vehid][vHealth] = 300.0;
ToggleEngine(vehid);
SendClientMessage(playerid, CGRAY, "Двигатель заглох");
if((StartDerby == 3 || StartDerby == 2) && iDerby[playerid] != 0)
{
PlayerDerby--;
iDerby[playerid] = 0;
UpdateDerby();
DestroyVehicle(DerbyCar[1][playerid]);
DerbyCar[0][playerid] = -1;
DerbyCar[1][playerid] = -1;
SetPlayerPos(playerid, 827.0083,5.8989,1004.1870);
SetPlayerFacingAngle(playerid, 269.6992);
SetPlayerInterior(playerid, 3);
SetPlayerVirtualWorld(playerid, 300);
SendClientMessage(playerid, COLOR_GREY, "Вы были дисквалифицированы.");
}
}
}

DeimoS
08.12.2016, 01:12
RTFM!!! (http://pro-pawn.ru/showthread.php?12957-%D0%9A%D0%B0%D0%BA-%D0%B1%D0%BE%D1%80%D0%BE%D1%82%D1%8C%D1%81%D1%8F-%D1%81-%D0%B2%D1%8B%D1%85%D0%BE%D0%B4%D0%B0%D0%BC%D0%B8-%D0%B7%D0%B0-%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%8B-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%B0-%28CrashDetect%29)

L0ndl3m
08.12.2016, 01:21
new vehid = GetPlayerVehicleID(playerid);
на


new vehid = GetPlayerVehicleID(playerid);
if (vehid == 0) {
return 1;
}

Но это странно, что GetPlayerState возвращало состояние PLAYER_STATE_DRIVER, так как ниже используется GetPlayerVehicleID, которая возвращало 0 (не удалось получить ID транспорта).

P.S.: GetVehicleModel тоже вернёт 0, если транспортного средства по указанному ID не существует.

Mesto
19.12.2016, 15:52
Все равно дебаги идут, помогите пожалуйста !! заплачу даже

Mesto
19.12.2016, 19:08
Я заметил, когда некоторые игроки заходят на сервер, появляется этот дебаг ! Время возникновения дебага такое же как и при заходе, у всех так почти

[16:31:52] [save] Merlin_Karta, string: 287
[16:31:52] [part] Merlin_Karta has left the server (16:1)
[16:31:52] [debug] Run time error 4: "Array index out of bounds"
[16:31:52] [debug] Attempted to read/write array element at negative index -400
[16:31:52] [debug] AMX backtrace:
[16:31:52] [debug] #0 0019d004 in public UpdateTimer () at D:\serv\gamemodes\new.pwn:23046


[18:16:32] [save] Silvester_Bring, string: 271
[18:16:32] [part] Silvester_Bring has left the server (10:1)
[18:16:32] [debug] Run time error 4: "Array index out of bounds"
[18:16:32] [debug] Attempted to read/write array element at negative index -400
[18:16:32] [debug] AMX backtrace:
[18:16:32] [debug] #0 0019d004 in public UpdateTimer () at D:\serv\gamemodes\new.pwn:23046

[17:54:46] [save] Seclo_Funo, string: 287
[17:54:46] [part] Seclo_Funo has left the server (19:1)
[17:54:46] [debug] Run time error 4: "Array index out of bounds"
[17:54:46] [debug] Attempted to read/write array element at negative index -400
[17:54:46] [debug] AMX backtrace:
[17:54:46] [debug] #0 0019d004 in public UpdateTimer () at D:\serv\gamemodes\new.pwn:23046

[ForD]
19.12.2016, 19:26
Я заметил, когда некоторые игроки заходят на сервер, появляется этот дебаг ! Время возникновения дебага такое же как и при заходе, у всех так почти

[16:31:52] [save] Merlin_Karta, string: 287
[16:31:52] [part] Merlin_Karta has left the server (16:1)
[16:31:52] [debug] Run time error 4: "Array index out of bounds"
[16:31:52] [debug] Attempted to read/write array element at negative index -400
[16:31:52] [debug] AMX backtrace:
[16:31:52] [debug] #0 0019d004 in public UpdateTimer () at D:\serv\gamemodes\new.pwn:23046


[18:16:32] [save] Silvester_Bring, string: 271
[18:16:32] [part] Silvester_Bring has left the server (10:1)
[18:16:32] [debug] Run time error 4: "Array index out of bounds"
[18:16:32] [debug] Attempted to read/write array element at negative index -400
[18:16:32] [debug] AMX backtrace:
[18:16:32] [debug] #0 0019d004 in public UpdateTimer () at D:\serv\gamemodes\new.pwn:23046

[17:54:46] [save] Seclo_Funo, string: 287
[17:54:46] [part] Seclo_Funo has left the server (19:1)
[17:54:46] [debug] Run time error 4: "Array index out of bounds"
[17:54:46] [debug] Attempted to read/write array element at negative index -400
[17:54:46] [debug] AMX backtrace:
[17:54:46] [debug] #0 0019d004 in public UpdateTimer () at D:\serv\gamemodes\new.pwn:23046

Точнее выходят с сервера

Mesto
19.12.2016, 19:32
;80158']Точнее выходят с сервера

а как решить проблему можете помочь ? я заплачу если нужно
проблема еще появляется когда гонки заканчиваются

Mesto
20.12.2016, 04:26
может так сделать if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && IsPlayerConnected(playerid))???

ziggi
20.12.2016, 08:54
new vehid = GetPlayerVehicleID(playerid);
if(vehid && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new string[80];
new Float:X, Float:Y, Float:Z, Float:X2, Float:Y2, Float:Z2;
new Float:veloc, modelid = GetVehicleModel(vehid)-400;