PDA

Просмотр полной версии : [Вопрос] сажусь в машину выдаёт ошибку



Unknown
20.08.2014, 21:58
сажусь в машину

получаю
20/08/2014 22:55:20] [debug] Run time error 4: "Array index out of bounds"
[20/08/2014 22:55:20] [debug] Accessing element at index 672 past array upper bound 39
[20/08/2014 22:55:20] [debug] AMX backtrace:
[debug] #0 0004beec in public OnPlayerStateChange (playerid=0, newstate=2, oldstate=1) at C:\Users\игорь\Desktop\serv\gamemodes\mod.pwn:4437


строка

if(RentCar[GetPlayerVehicleID(playerid)][ROwned] == 0 && IsRentableVehicle[GetPlayerVehicleID(playerid)])

DeimoS
20.08.2014, 22:15
Объявление массива RentCar покажите

Daniel_Cortez
20.08.2014, 22:21
Объявление массива RentCar покажите
и массива(?) IsRentableVehicle тоже

Unknown
20.08.2014, 22:37
Вот короче)
все что есть)


new count;
for(new R=1; R<TotalVehicles(); R++)
{
if(IsRentableVehicle[R] == 1)
{
count++;
if(RentCar[count][ROwned] == GetPlayerName(playerid, OwnedName, sizeof(OwnedName)))
{
SetVehicleToRespawn(count);
RentCar[count][ROwned] = 0;
}
}
}



if(newstate == PLAYER_STATE_DRIVER)
{
if(PlayerUseRentCar[playerid] == 1)
{
SendClientMessage(playerid,-1,"Вы уже арендовали автомобиль в этой компании.");
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid,1);
return true;
}
new rcs[205];
if(RentCar[GetPlayerVehicleID(playerid)][ROwned] == 0 && IsRentableVehicle[GetPlayerVehicleID(playerid)])
{
format(rcs, sizeof(rcs), "{ffffff}Здравствуйте! Этот автомобиль сдаётся в аренду!\n Порядковый номер - [{00ceff}%d{ffffff}]\n Цена аренды [{5da130}$%d{ffffff}]\n\nВы хотите арендовать данный автомобиль?",RentCar[GetPlayerVehicleID(playerid)][Rcarid],RentCar[GetPlayerVehicleID(playerid)][Rprice]);
Dialog(playerid,1212,DIALOG_STYLE_MSGBOX,"Аренда",rcs,"Арендовать","Отмена");
}
if(RentCar[GetPlayerVehicleID(playerid)][ROwned] != 0 && IsRentableVehicle[GetPlayerVehicleID(playerid)])
{
if(RentCar[GetPlayerVehicleID(playerid)][ROwned] == GetPlayerName(playerid, OwnedName, sizeof(OwnedName)))
{
GetPlayerName(playerid, OwnedName, sizeof(OwnedName));
format(rcs, sizeof(rcs), "Это транспортное средство арендовано на Вас, {ff8700}%s{ffffff}.",OwnedName);
SendClientMessage(playerid,-1,rcs);
}
if(RentCar[GetPlayerVehicleID(playerid)][ROwned] != GetPlayerName(playerid, OwnedName, sizeof(OwnedName)))
{
SendClientMessage(playerid,-1,"Это транспортное средство уже арендовано другим игроком.");
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid,1);
}
}
}

if(dialogid == 1212)
{
if(response)
{
new carprice = RentCar[GetPlayerVehicleID(playerid)][Rprice];
if(GetPlayerMoney(playerid) < carprice)
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid,1);
SendClientMessage(playerid,COLOR_WHITE,"У вас недостаточно средств для аренды транспорта.");
return 1;
}
format(string, sizeof(string), "Вы арендовали это транспортное средство за - {5da130}$%d{ffffff}.", carprice);
SendClientMessage(playerid,COLOR_WHITE,string);
TogglePlayerControllable(playerid,1);
GivePlayerMoney(playerid,-carprice);
PlayerUseRentCar[playerid] = 1;
RentCar[GetPlayerVehicleID(playerid)][ROwned] = GetPlayerName(playerid, OwnedName, sizeof(OwnedName));
SetVehicleNumberPlate(GetPlayerVehicleID(playerid),"RENTED");
}
else
{
RemovePlayerFromVehicle(playerid);
PlayerUseRentCar[playerid] = 0;
TogglePlayerControllable(playerid,1);
}
}

stock AddRentVehicle(id ,model, Float:X, Float:Y, Float:Z, Float:Angle, color1, color2, price)
{
new newvid;
newvid = AddStaticVehicle(model, X, Y, Z, Angle, color1, color2);
RentCar[newvid][Rprice] = price;
RentCar[newvid][Rcarid] = id;
RentCar[newvid][ROwned] = 0;
IsRentableVehicle[newvid] = 1;
SetVehicleNumberPlate(newvid,"RENT");
}

TotalVehicles()
{
new vid;
vid = CreateVehicle(411, 0, 0, 0, 0, -1, -1, 10);
DestroyVehicle(vid);
vid--;
return vid;
}
forward CountRentedVehicles();
public CountRentedVehicles()
{
new count;
for(new R=1; R<TotalVehicles(); R++)
{
if(IsRentableVehicle[R] == 1)
{
count++;
}
}
}

DeimoS
22.08.2014, 10:35
Вам же сказали объявление показать, а не использование =\
new RentCar...