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

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

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

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

Краш сервера

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

MiHaZzZ

Дебютант
Здравствуйте уважаемые пользователи, при игре на сервере возникают краши которые пишутся в логи.

PHP:
[22:31:08] [debug] Run time error 4: "Array index out of bounds" 
[22:31:08] [debug] Accessing element at index 5 past array upper bound 4 
[22:31:08] [debug] AMX backtrace: 
[22:31:08] [debug] #0 00693808 in public Itter_OnPlayerDisconnect (0, 1) from JRP_UPD_T.amx 
[22:31:08] [debug] #1 00015800 in public SSCANF_OnPlayerDisconnect (0, 1) from JRP_UPD_T.amx 
[22:31:08] [debug] #2 0000d6d4 in public OnPlayerDisconnect (0, 1) from JRP_UPD_T.amx
public OnPlayerDisconnect(playerid, reason)
{
new message[30], totalstring[128];
switch(reason)
{
case 0: format(message,sizeof(message), "Обрыв связи", message);
case 1: format(message,sizeof(message), "Вышел", message);
case 2: format(message,sizeof(message), "Кикнут", message);
}

if(PI[playerid][pAdmin] != 0)
{
Itter_Remove(Admins, playerid);

if(!IsPlayerGrandAdmin(playerid))
{
static const Admin_Names[6][32] = {"Модератор","Ст. Модератор","Администратор","Ст. Администратор","Гл. Администратор","Руководитель"};

format(message,sizeof(message), "[A] %s %s[%d] покинул игру. Причина: %s", Admin_Names[PI[playerid][pAdmin]-1], GetName(playerid), playerid, message);
SendAdminMessage(COLOR_GREY, totalstring, 1);
}
}
else
{
format(totalstring, 128, "[A] %s[%d] покинул сервер. [Причина: %s]", GetName(playerid), playerid, message);
SendAdminMessage(COLOR_GREY, totalstring, 1);
}

if(PI[playerid][pFamily])
{
new id_famyly = PI[playerid][pFamily];
if((family_info[id_famyly][f_online] -= 1) < 0) family_info[id_famyly][f_online] = 0;
else family_info[id_famyly][f_online] -= 1;
}

slotUsed{playerid} = false;
PI[playerid][pOnline] = 0;
MysqlUpdatePlayerInt(playerid, "online", PI[playerid][pOnline]);
for(new i = 17; i >= 0; i --)
{
PlayerUseList[playerid]=0;
}
KillTimer(player_timer[playerid]);
if(IsPlayerAttachedObjectSlotUsed(playerid, 0)) RemovePlayerAttachedObject(playerid, 0);
if(IsPlayerAttachedObjectSlotUsed(playerid, 1)) RemovePlayerAttachedObject(playerid, 1);
if(IsPlayerAttachedObjectSlotUsed(playerid, 2)) RemovePlayerAttachedObject(playerid, 2);
if(IsPlayerAttachedObjectSlotUsed(playerid, 3)) RemovePlayerAttachedObject(playerid, 3);
if(IsPlayerAttachedObjectSlotUsed(playerid, 4)) RemovePlayerAttachedObject(playerid, 4);
if(IsPlayerAttachedObjectSlotUsed(playerid, 5)) RemovePlayerAttachedObject(playerid, 5);

STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "UPDATE "T_ADMIN" SET timemin='%d' WHERE name='%s' LIMIT 1", AdminInfo[playerid][admTimeMin], GetName(playerid));
mysql_tquery(dbHandle, STRING_GLOBAL, "", "");

if(PI[playerid][pOwnableCar] != INVALID_VEHICLE_ID)
{
ownable_car[playerid][v_mileage] = VehMileage[PI[playerid][pOwnableCar]];
ownable_car[playerid][v_fuel] = Fuel[PI[playerid][pOwnableCar]];

STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL, sizeof STRING_GLOBAL, "UPDATE ownable_cars SET fuel=%d, mileage='%f' WHERE id=%d", ownable_car[playerid][v_fuel], ownable_car[playerid][v_mileage], ownable_car[playerid][v_sql]);
mysql_query(dbHandle, STRING_GLOBAL);

DestroyDynamic3DTextLabel(ownable_car_label[playerid]);

DestroyVehicle(PI[playerid][pOwnableCar]);

PI[playerid][pOwnableCar] = INVALID_VEHICLE_ID;

ownable_car[playerid][v_lock] =
ownable_car[playerid][v_virtual] =
ownable_car[playerid][v_sql] = 0;
format(ownable_car[playerid][v_owner], 32, "None");
ownable_car[playerid][v_model] =
ownable_car[playerid][v_color_1] =
ownable_car[playerid][v_color_2] =
ownable_car[playerid][v_fuel] =
ownable_car[playerid][v_slot] = -1;
ownable_car[playerid][v_mileage] =
ownable_car[playerid][v_pos_x] =
ownable_car[playerid][v_pos_y] =
ownable_car[playerid][v_pos_z] =
ownable_car[playerid][v_pos_r] = 0.0;
}

if(PI[playerid][PlayerCopterID] != INVALID_VEHICLE_ID)
{
DestroyVehicle(PI[playerid][PlayerCopterID]);
PI[playerid][PlayerCopterID] = INVALID_VEHICLE_ID;
}

if(InShop[playerid] > 0 || GetPVarInt(playerid, "InShop") > 0)
{
if(PI[playerid][SalonCarID] != INVALID_VEHICLE_ID) DestroyVehicle(PI[playerid][SalonCarID]);
PI[playerid][SalonCarID] = INVALID_VEHICLE_ID;
DeletePVar(playerid, "InShop");
InShop[playerid] = 0;
for(new i; i < 2; i++) PlayerTextDrawHide(playerid, JRP_TD[playerid]);
for(new i; i < 19; i++) TextDrawHideForPlayer(playerid, JRPTD);
CancelSelectTextDraw(playerid);
}
if(pCuff[playerid][pCuffee] != INVALID_PLAYER_ID && reason == 1)
{
new id = pCuff[playerid][pCuffee];
if(id == playerid)
{
new cuffer = pCuff[playerid][pCuffer];

STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "%s вышел при аресте и был посажен в тюрьму на 30 минут", GetName(playerid));
SendClientMessageToAll(COLOR_RED, STRING_GLOBAL);
PI[playerid][pJail] = 1;
PI[playerid][pJailTime] = 1800;
PI[playerid][pWanted] = 0;
pCuff[cuffer][pCuffer] = INVALID_PLAYER_ID;
pCuff[cuffer][pCuffee] = INVALID_PLAYER_ID;
pCuff[playerid][pCuffee] = INVALID_PLAYER_ID;
pCuff[playerid][pCuffer] = INVALID_PLAYER_ID;
MysqlUpdatePlayerInt(playerid, "jail", PI[playerid][pJail]);
MysqlUpdatePlayerInt(playerid, "jailtime", PI[playerid][pJailTime]);
MysqlUpdatePlayerInt(playerid, "wanted", PI[playerid][pWanted]);
}
else if(!IsPlayerConnected(id))
{
SetPlayerSpecialAction(id, SPECIAL_ACTION_NONE);
RemovePlayerAttachedObject(id, 0);
pCuff[id][pCuffer] = INVALID_PLAYER_ID;
pCuff[id][pCuffee] = INVALID_PLAYER_ID;
pCuff[playerid][pCuffee] = INVALID_PLAYER_ID;
pCuff[playerid][pCuffer] = INVALID_PLAYER_ID;
SendClientMessage(playerid, COLOR_LIME, "Офицер, надевший на Вас наручники, вышел из игры. Наручники сняты.");
}
}
if(GetPVarInt(playerid, "arendkey") != -1)
{
new v = GetPVarInt(playerid, "arendkey");
if(ArendInfo[v][aPlayerID] == playerid)
{
ArendInfo[v][aPlayerID] = INVALID_PLAYER_ID;
SetVehicleToRespawn(ArendInfo[v][aID]);
CarDoorsEx(ArendInfo[v][aID], 0);
}
}
if(GetPVarInt(playerid,"objectcop"))
{
DestroyObject(GetPVarInt(playerid,"objectcop"));
DestroyDynamicArea(Ships[playerid]);
}
PI[playerid][pBed] = 0;
MysqlUpdatePlayerInt(playerid, "bed", PI[playerid][pBed]);
PlayerDied[playerid] = false;
drawcapt[playerid] = false;
SetPlayerSkills(playerid);
if(PlayerUseMask[playerid])
{
PlayerUseMask[playerid] = false;
KillTimer(MaskTimer[playerid]);
}
if(UseGPS[playerid])
{
DisablePlayerRaceCheckpoint(playerid);
UseGPS[playerid] = false;
for(new i; i < 3; i++) TextDrawHideForPlayer(playerid, GPSEnabled);
}
PlayerTextDrawHide(playerid,VehNazv[playerid]);
PlayerTextDrawHide(playerid,VehCost[playerid]);
if(GetPVarInt(playerid, "PriceBus") > 0)
{
PI[playerid][pPayCheck] += GetPVarInt(playerid, "BusMoney");
if(IsValidDynamic3DTextLabel(BusText3D[playerid])) DestroyDynamic3DTextLabel(BusText3D[playerid]);
SetVehicleToRespawn(PI[playerid][BusCarID]);
MysqlUpdatePlayerInt(playerid, "paycheck", PI[playerid][pPayCheck]);
}
if(GetPVarInt(playerid, "PriceTaxi") > 0)
{
PI[playerid][pPayCheck] += GetPVarInt(playerid, "TaxiMoney");
if(IsValidDynamic3DTextLabel(TaxiText3D[playerid])) DestroyDynamic3DTextLabel(TaxiText3D[playerid]);
SetVehicleToRespawn(PI[playerid][TaxiCarID]);
MysqlUpdatePlayerInt(playerid, "paycheck", PI[playerid][pPayCheck]);
}
if(PI[playerid][MechanicCarID] != INVALID_VEHICLE_ID) SetVehicleToRespawn(PI[playerid][MechanicCarID]);
if(PI[playerid][TruckerCarID] != INVALID_VEHICLE_ID) SetVehicleToRespawn(PI[playerid][TruckerCarID]);
if(UseWork[playerid] == 2)
{
DeletePVar(playerid, "OldLessSkin");
UseWork[playerid] = 0;
DeletePVar(playerid, "LessProgress");
DeletePVar(playerid, "Derevo");
DeletePVar(playerid, "LessStatus");
if(IsPlayerAttachedObjectSlotUsed(playerid, 3)) RemovePlayerAttachedObject(playerid, 3);
if(IsPlayerAttachedObjectSlotUsed(playerid, 4)) RemovePlayerAttachedObject(playerid, 4);
}

foreach(new i: Player)
{
if(GetPlayerState(i) == PLAYER_STATE_SPECTATING && PI[Spectating][0] == playerid)
{
GameTextForPlayer(i, "PLAYER DISCONNECTED", 3000, 3);
callcmd::specoff(i, "");
}
}
PlayerMenuExit(playerid);

for(new i = 0; i < 38; i++) TextDrawHideForPlayer(playerid, SELECT_SKIN);
for(new i = 0; i < 6; i++) TextDrawHideForPlayer(playerid, Button);
PlayerTextDrawDestroy(playerid, SelSkin[playerid]);
PlayerTextDrawDestroy(playerid, HungerProgress[playerid]);
HungerProgress[playerid] = PlayerText:INVALID_TEXT_DRAW;

for(new i = 0; i < 10; i++)
{
PlayerTextDrawDestroy(playerid, SecurityCode[playerid]);
SecurityCode[playerid] = PlayerText:INVALID_TEXT_DRAW;
}
for(new i = 0; i < 6; i++)
{
PlayerTextDrawDestroy(playerid, StatusWork[playerid]);
StatusWork[playerid] = PlayerText:INVALID_TEXT_DRAW;
}
for(new i = 0; i < 2; i++)
{
PlayerTextDrawDestroy(playerid, JRP_TD[playerid]);
JRP_TD[playerid] = PlayerText:INVALID_TEXT_DRAW;
}
for(new i = 0; i < 7; i++)
{
PlayerTextDrawDestroy(playerid, CaptureTD[playerid]);
CaptureTD[playerid] = PlayerText:INVALID_TEXT_DRAW;
}
for(new i = 0; i < sizeof TDEditor_SPEEDO_PLAYER; i++)
{
PlayerTextDrawDestroy(playerid, TDEditor_SPEEDO_PLAYER[playerid]);
TDEditor_SPEEDO_PLAYER[playerid] = PlayerText:INVALID_TEXT_DRAW;
}
for(new i = 0; i < sizeof TDEditor_BUY_BUSINESS_PLAYER; i++)
{
PlayerTextDrawDestroy(playerid, TDEditor_BUY_BUSINESS_PLAYER[playerid]);
TDEditor_BUY_BUSINESS_PLAYER[playerid] = PlayerText:INVALID_TEXT_DRAW;
}

CancelSelectTextDraw(playerid);

new gun_string[56], ammo_string[56];
format(gun_string, 56, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
PI[playerid][pGun][0], PI[playerid][pGun][1], PI[playerid][pGun][2], PI[playerid][pGun][3],
PI[playerid][pGun][4], PI[playerid][pGun][5], PI[playerid][pGun][6], PI[playerid][pGun][7],
PI[playerid][pGun][8], PI[playerid][pGun][9], PI[playerid][pGun][10], PI[playerid][pGun][11],
PI[playerid][pGun][12]);

format(ammo_string, 56, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
PI[playerid][pAmmo][0], PI[playerid][pAmmo][1], PI[playerid][pAmmo][2], PI[playerid][pAmmo][3],
PI[playerid][pAmmo][4], PI[playerid][pAmmo][5], PI[playerid][pAmmo][6], PI[playerid][pAmmo][7],
PI[playerid][pAmmo][8], PI[playerid][pAmmo][9], PI[playerid][pAmmo][10], PI[playerid][pAmmo][11],
PI[playerid][pAmmo][12]);

STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "UPDATE "T_ACCOUNTS" SET `guns` = '%s',`ammos` = '%s' WHERE `name` = '%s'", gun_string, ammo_string, GetName(playerid));
mysql_tquery(dbHandle, STRING_GLOBAL, "", "");

SetPlayerDataToDefault(playerid);
rodEnable{playerid} = 0;
rodRaised{playerid} = 0;
//-------[ Защита от Fake Disconnect ]---------
if(!isPlayerConnected[playerid]) return true;
isPlayerConnected[playerid] = false;
if(reason != 2) Kick(playerid);
//---------------------------------------------

return 1;
}

PHP:
[22:27:59] [debug] Run time error 4: "Array index out of bounds" 
[22:27:59] [debug] Accessing element at index 5 past array upper bound 4 
[22:27:59] [debug] AMX backtrace: 
[22:27:59] [debug] #0 009299ec in ?? (0) from JRP_UPD_T.amx 
[22:27:59] [debug] #1 006ad1b8 in public OnPlayerStateChange (0, 1, 8) from JRP_UPD_T.amx 

[22:09:26] [debug] Run time error 4: "Array index out of bounds" 
[22:09:26] [debug] Accessing element at index 5 past array upper bound 4 
[22:09:26] [debug] AMX backtrace: 
[22:09:26] [debug] #0 0092971c in ?? (0) from JRP_UPD_T.amx 
[22:09:26] [debug] #1 006af8a4 in public OnPlayerStateChange (0, 2, 1) from JRP_UPD_T.amx
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == 2) PTick[playerid] = GetTickCount() + 150;
if(oldstate == 2)
{
if(GetTickCount() - PTick[playerid] < 150)
{
OnGuardWarningCheater(playerid, "Bike crash", 83);
}
}
if(newstate == PLAYER_STATE_DRIVER)
{
new model = GetPlayerVehicleSeat(playerid);
if(model != 128)
{
if(!model)
{
model = GetVehicleModel(GetPlayerVehicleID(playerid));
if(!(400 <= model <= 611) || Maximum_Passengers[model - 400 >>> 3] >>> ((model - 400 & 7) << 2) & 0xF == 15) return SetPVarInt(playerid,"USE_CRASHER",1), SetTimerEx("DisconnectPlayer",100,0,"i", playerid);
}
else return SetPVarInt(playerid,"USE_CRASHER",1), SetTimerEx("DisconnectPlayer",100,0,"i", playerid);
}
}
else if(newstate == PLAYER_STATE_PASSENGER)
{
new model = GetVehicleModel(GetPlayerVehicleID(playerid));
if(400 <= model <= 611)
{
model -= 400;
new seat = GetPlayerVehicleSeat(playerid);
if(seat != 128)
{
model = (Maximum_Passengers[model >>> 3] >>> ((model & 7) << 2)) & 0xF;
if(!model || model == 15) return SetPVarInt(playerid,"USE_CRASHER",1), SetTimerEx("DisconnectPlayer",100,0,"i", playerid);
}
else return SetPVarInt(playerid,"USE_CRASHER",1), SetTimerEx("DisconnectPlayer",100,0,"i", playerid);
}
}
if(newstate==oldstate)
{
OnGuardWarningCheater(playerid, "State change", 85);
return 1;
}
/*if(oldstate == PLAYER_STATE_DRIVER)
{
if(IsAPlane(EnterVehicle[playerid]))
{
HideSpeedometerCoptrer(playerid);
}
else if(!IsAMoped(EnterVehicle[playerid]) && !IsAVel(EnterVehicle[playerid]) && !IsABoat(EnterVehicle[playerid]))
{
HideSpeedometer(playerid);
}
}*/
if(oldstate == 2 || oldstate == PLAYER_STATE_PASSENGER)
{
EnterVehicle[playerid] = INVALID_VEHICLE_ID;
}
if(newstate == PLAYER_STATE_PASSENGER)
{
switch(GetPlayerWeapon(playerid))
{
case 24,31,26,28,29,30,33: SetPlayerArmedWeapon(playerid, 0);
}
}
switch(newstate)
{
case 1: //Игрок пешком (можно писать PLAYER_STATE_ONFOOT)
{
KillTimer(STimer[playerid]);
if(!InShop[playerid]) HideSpeedometer(playerid);
if(GetPVarInt(playerid, "DrivingTest"))
{
SendClientMessage(playerid, C_RED, "У вас есть 15 секунд, чтобы вернуться");
DisablePlayerRaceCheckpoint(playerid);
DrivingTestTime[playerid] = 15;
}
if(GetPVarInt(playerid, "FlyTest"))
{
SendClientMessage(playerid, C_RED, "У вас есть 15 секунд, чтобы вернуться");
DisablePlayerRaceCheckpoint(playerid);
FlyTestTime[playerid] = 15;
}
if(GetPVarInt(playerid, "WaterTest") && GetPVarInt(playerid, "WaterTestTimeOn"))
{
SendClientMessage(playerid, C_RED, "У вас есть 15 секунд, чтобы вернуться");
DisablePlayerRaceCheckpoint(playerid);
WaterTestTime[playerid] = 15;
}
if(GetPVarInt(playerid, "PriceBus"))
{
SendClientMessage(playerid, C_RED, "У вас есть 15 секунд, чтобы вернуться");
DisablePlayerRaceCheckpoint(playerid);
SetPVarInt(playerid, "BusTime", 15);
DeletePVar(playerid, "TimeBus");
}
}
case 2: //Игрок в машине, на месте водителя (можно писать PLAYER_STATE_DRIVER)
{
new cars = 0;
if(InShop[playerid] < 1 || GetPVarInt(playerid, "InShop") == 0)
{
new vehicleid = GetPlayerVehicleID(playerid);
new temp = GetVehicleModel(GetPlayerVehicleID(playerid));
BE_Play_Check[playerid] = true;
for(new i; i != sizeof(BE_Bad_Vehs); i++)
{
if(temp == BE_Bad_Vehs) cars++, BE_Play_Check[playerid] = false;
}
if(IsABoat(vehicleid))
{
if(PI[playerid][pLic][1] != 1)
{
if(GetPVarInt(playerid, "WaterTest")) { }
else
{
SendClientMessage(playerid, COLOR_GREY, "У вас нет лицензии на водный транспорт!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
if(IsAPlane(vehicleid))
{
if(PI[playerid][pLic][2] != 1)
{
if(GetPVarInt(playerid, "FlyTest")) { }
else
{
SendClientMessage(playerid, COLOR_GREY, "У вас нет лицензии на воздушный транспорт!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
if(Engine[vehicleid] == false) SendClientMessage(playerid, COLOR_WHITE, "Чтобы завести двигатель воздушного транспорта введите /engine");
if(!InShop[playerid])
{
STimer[playerid] = SetTimerEx("UpdateSpeedometrCopter", 1000, true, "i", playerid);
ShowSpeedometerCoptrer(playerid);
}
}
for(new v = TOTALVEH; v > 0; v --)
{
if(vehicleid == VehInfo[v][vVehicle])
{
if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && GetPVarInt(playerid, "DrivingTest") > 0
&& VehInfo[v][vVehicle] == vehicleid && (v >= 1 && v <= 3 || v >= 103 && v <= 105))
{
if(UseGPS[playerid])
{
DisablePlayerRaceCheckpoint(playerid);
UseGPS[playerid] = false;
for(new i; i < 3; i++) TextDrawHideForPlayer(playerid, GPSEnabled);
}
SendClientMessage(playerid, COLOR_BLUE, "Следуйте по чекпоинтам, соблюдая правила дорожного движения");
ShowPlayerDialog(playerid, D_NULL, 0, " ", "\n\n{ffffff}Ваша задача следовать по чекпоинтам. Вперед\n\n", "Закрыть", "");
new i = pPressed[playerid];
SetPlayerRaceCheckpoint(playerid,0,DrivingTest[0],DrivingTest[1],DrivingTest[2],DrivingTest[3],DrivingTest[4],DrivingTest[5],5.0);
}
else if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && GetPVarInt(playerid, "FlyTest") > 0
&& VehInfo[v][vVehicle] == vehicleid && (v >= 6 && v <= 6))
{
if(UseGPS[playerid])
{
DisablePlayerRaceCheckpoint(playerid);
UseGPS[playerid] = false;
for(new i; i < 3; i++) TextDrawHideForPlayer(playerid, GPSEnabled);
}
SendClientMessage(playerid, COLOR_BLUE, "Следуйте по чекпоинтам, соблюдая правила полёта");
ShowPlayerDialog(playerid, D_NULL, 0, " ", "\n\n{ffffff}Ваша задача следовать по чекпоинтам. Вперед\n\n", "Закрыть", "");
new i = pPressed[playerid];
SetPlayerRaceCheckpoint(playerid,3,FlyTest[0],FlyTest[1],FlyTest[2],FlyTest[3],FlyTest[4],FlyTest[5],5.0);
}
else if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && GetPVarInt(playerid, "WaterTest") > 0
&& VehInfo[v][vVehicle] == vehicleid && (v >= 4 && v <= 5))
{
if(UseGPS[playerid])
{
DisablePlayerRaceCheckpoint(playerid);
UseGPS[playerid] = false;
for(new i; i < 3; i++) TextDrawHideForPlayer(playerid, GPSEnabled);
}
SendClientMessage(playerid, COLOR_BLUE, "Следуйте по чекпоинтам, соблюдая правила движения");
ShowPlayerDialog(playerid, D_NULL, 0, " ", "\n\n{ffffff}Ваша задача следовать по чекпоинтам. Вперед\n\n", "Закрыть", "");
new i = pPressed[playerid];
if(!GetPVarInt(playerid, "WaterTestTimeOn")) SetPVarInt(playerid, "WaterTestTimeOn", 1);
SetPlayerRaceCheckpoint(playerid,0,WaterTest[0],WaterTest[1],WaterTest[2],WaterTest[3],WaterTest[4],WaterTest[5],5.0);
}
if(VehInfo[v][vFraction] != PI[playerid][pMember])
{
if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && (GetPVarInt(playerid, "DrivingTest") > 0 || GetPVarInt(playerid, "FlyTest") > 0 || GetPVarInt(playerid, "WaterTest") > 0)) { }
else
{
SendClientMessage(playerid, C_RED, "Этот транспорт вам недоступен!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
//else break;
}
}
if(cars == 0)
{
if(PI[playerid][pLic][0] == 0)
{
if(GetPVarInt(playerid, "DrivingTest") > 0) { }
else
{
if(!IsAMoped(vehicleid) && !IsAVel(vehicleid))
{
SendClientMessage(playerid, COLOR_GREY, "У вас нет водительских прав!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
if(Engine[vehicleid] == false)
{
if(IsAVel(vehicleid))
{
GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vehicleid,true,lights,alarm,doors,bonnet,boot,objective);
}
else
{
if(!InShop[playerid]) SendClientMessage(playerid, C_BLUE, "Нажмите клавишу '2', чтобы завести двигатель, меню машины (/cm)");
}
}
if(!IsAMoped(vehicleid) && !IsAVel(vehicleid) && !IsABoat(vehicleid))
{
if(!InShop[playerid])
{
//STimer[playerid] = SetTimerEx("UpdateSpeedometr", 1000, true, "i", playerid);
STimer[playerid] = SetTimerEx("UpdateSpeedometr", 500, true, "i", playerid);
ShowSpeedometer(playerid);
}
}
if(vehicleid >= mechanic[0] && vehicleid <= mechanic[1])
{
if(PI[playerid][pJob] != JOB_MECHANIC)
{
SendClientMessage(playerid, C_RED, "Вы не автомеханик!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
if((vehicleid >= trucker1lvl[0] && vehicleid <= trucker1lvl[1]) || (vehicleid >= trucker2lvl[0] && vehicleid <= trucker2lvl[1]))
{
if(PI[playerid][pJob] != JOB_TRUCKER)
{
SendClientMessage(playerid, C_RED, "Вы не дальнобойщик!");
RemovePlayerFromVehicle(playerid);
return 1;
}
new trucklevel, price;
if(vehicleid >= trucker1lvl[0] && vehicleid <= trucker1lvl[1]) { trucklevel = 1; price = 200; }
else if(vehicleid >= trucker2lvl[0] && vehicleid <= trucker2lvl[1]) { trucklevel = 2; price = 300; }
if((trucklevel == 2 && PI[playerid][pTruckSkill] < TRUCK_LEVEL_2))
{
SendClientMessage(playerid, C_RED, "Ваш опыт работы дальнобойщиком не достаточен для этого транспорта");
RemovePlayerFromVehicle(playerid);
return 1;
}
if(GetMoney(playerid) < price)
{
STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "Вам нужно %dр чтобы арендовать этот грузовик", price);
SendClientMessage(playerid, C_RED, STRING_GLOBAL);
RemovePlayerFromVehicle(playerid);
return 1;
}
SetPVarInt(playerid, "truckprice", price);
if(PI[playerid][TruckerCarID] == vehicleid) { }
else
{
SetTimerEx("CheckRentCar",8000,0,"i",playerid);

STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "{ffffff}Вы хотите арендовать данный тягач?\nСтоимость аренды: {33ccff}%iр", price);
ShowPlayerDialog(playerid, 11212, DIALOG_STYLE_MSGBOX, "Аренда", STRING_GLOBAL, "Да", "Нет");
}
}
if(PI[playerid][MechanicCarID] == vehicleid)
{
SetTimerEx("CheckRentCar",8000,0,"i",playerid);
ShowPlayerDialog(playerid, D_JOB+66, 0, "{ffffff}Аренда", "{ffffff}Вы хотите арендовать данный транспорт?\n\nСтоимость: {33CCFF}200р", "Да", "Нет");
}
if(vehicleid >= taxicar[0] && vehicleid <= taxicar[1])
{
if(PI[playerid][pJob] != JOB_TAXI)
{
SendClientMessage(playerid, C_RED, "Вы не таксист!");
RemovePlayerFromVehicle(playerid);
return 1;
}
if(GetMoney(playerid) < 200)
{
SendClientMessage(playerid, C_RED, "Вам нужно 200р чтобы арендовать это такси");
RemovePlayerFromVehicle(playerid);
return 1;
}
if(PI[playerid][TaxiCarID] == vehicleid) { }
else
{
SetTimerEx("CheckRentCar",8000,0,"i",playerid);
ShowPlayerDialog(playerid, D_JOB+59, 0, "Аренда", "{ffffff}Вы хотите арендовать данное такси?\nСтоимость аренды: {33CCFF}200р", "Да", "Нет");
}
}
if(vehicleid >= buscar[0] && vehicleid <= buscar[1])
{
if(PI[playerid][pJob] != JOB_BUS)
{
SendClientMessage(playerid, C_RED, "Вы не работаете водителем маршрутки!");
RemovePlayerFromVehicle(playerid);
return 1;
}
if(GetPVarInt(playerid, "BusTime") > 0 && GetPVarInt(playerid, "PriceBus") > 0 && PI[playerid][BusCarID] == vehicleid)
{
new i = pPressed[playerid], type = GetPVarInt(playerid, "TypeBus"), name[30], string[128];
switch(type)
{
case 1: name = "Лесопилка - Шахта - Завод", SetPlayerRaceCheckpoint(playerid,0,BusCityLS[0],BusCityLS[1],BusCityLS[2],BusCityLS[3],BusCityLS[4],BusCityLS[5],5.0);
case 2: name = "Автовокзал - Мэрия", SetPlayerRaceCheckpoint(playerid,0,BusCitySF[0],BusCitySF[1],BusCitySF[2],BusCitySF[3],BusCitySF[4],BusCitySF[5],5.0);
case 3: name = "Автовокзал - Новый район", SetPlayerRaceCheckpoint(playerid,0,BusCityLV[0],BusCityLV[1],BusCityLV[2],BusCityLV[3],BusCityLV[4],BusCityLV[5],5.0);
case 4: name = "Автовокзал - Автошкола", SetPlayerRaceCheckpoint(playerid,0,BusSchool[0],BusSchool[1],BusSchool[2],BusSchool[3],BusSchool[4],BusSchool[5],5.0);
case 5: name = "Автовокзал - Анашан", SetPlayerRaceCheckpoint(playerid,0,BusLS[0],BusLS[1],BusLS[2],BusLS[3],BusLS[4],BusLS[5],5.0);
}
format(string, sizeof(string), "%s\n{FFFFFF}Стоимость проезда: {63BD4E}%iр", name, GetPVarInt(playerid, "PriceBus"));
if(!IsValidDynamic3DTextLabel(BusText3D[playerid])) BusText3D[playerid] = CreateDynamic3DTextLabel(string, 0xffa500FF, 0.0, 0.0, 1.0, 20.0, INVALID_PLAYER_ID, vehicleid);
DeletePVar(playerid, "BusTime");
}
if(GetMoney(playerid) < 200)
{
SendClientMessage(playerid, C_RED, "Вам нужно 200р чтобы арендовать эту маршрутку");
RemovePlayerFromVehicle(playerid);
return 1;
}
if(PI[playerid][BusCarID] == vehicleid) { }
else
{
SetTimerEx("CheckRentCar",15000,0,"i",playerid);
ShowPlayerDialog(playerid, D_JOB+58, 0, "Аренда", "{ffffff}Вы хотите арендовать данную маршрутку?\n\nСтоимость: {33CCFF}200р", "Да", "Нет");
}
}
new arend_id = INVALID_PLAYER_ID;
if(GetArendCarID(vehicleid, arend_id) != (-1))
{
if(arend_id == INVALID_PLAYER_ID || !IsPlayerConnected(arend_id))
{
new rc = GetArendCarID(vehicleid);

STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL,sizeof(STRING_GLOBAL), "{FFFFFF}Транспорт для аренды!\n\n- Модель: {46ca00}%s{FFFFFF}\n- Стоимость: {46ca00}%iр{FFFFFF}\n\n{afafaf}Чтобы арендовать, нажмите `Аренда`", VehicleNames[GetVehicleModel(vehicleid)-400], ArendInfo[rc][aCost]);
ShowPlayerDialog(playerid, D_JOB+23, DIALOG_STYLE_MSGBOX, "Аренда", STRING_GLOBAL, "Аренда", "Отмена");
}
else if(arend_id != playerid)
{
SendClientMessage(playerid, C_RED, "Этот транспорт уже арендуют");
RemovePlayerFromVehicle(playerid);
}
}
if(gVehicleGun[vehicleid][vGunLoading] || gVehicleGun[vehicleid][vGunUnloading])
{
ShowPlayerDialog(playerid, D_STOPLOAD, DIALOG_STYLE_MSGBOX, "Погрузка", "{FFFFFF}Вы хотите прекратить загрузку боеприпасов в автомобиль?", "Да", "Нет");
}
}
}
}
case 3: //Игрок в машине, на месте пассажира - (можно писать PLAYER_STATE_PASSENGER)
{
new vehicleid = GetPlayerVehicleID(playerid);
foreach(new i: Player)
{
if(PlayerLogged == false) continue;
if(IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i) == 2)
{
if(GetPVarInt(i, "PriceBus") > 0)
{
if(GetMoney(playerid) < GetPVarInt(i, "PriceBus"))
{
SendClientMessage(playerid, C_RED, "У вас не хватает денег!");
RemovePlayerFromVehicle(playerid);
}
else
{
GiveMoney(playerid, -GetPVarInt(i, "PriceBus"));

STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "Вы заплатили %iр за проезд водителю %s", GetPVarInt(i, "PriceBus"), GetName(i));
SendClientMessage(playerid, COLOR_BLUE, STRING_GLOBAL);

PI[pPayCheck] += GetPVarInt(i, "PriceBus");

STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "Пассажир %s заплатил %iр за проезд", GetName(playerid), GetPVarInt(i, "PriceBus"));
SendClientMessage(i, COLOR_BLUE, STRING_GLOBAL);

new string[10];
format(string, sizeof(string), "~r~-%iр", GetPVarInt(i, "PriceBus"));
GameTextForPlayer(playerid, string, 5000, 1);
format(string, sizeof(string), "~b~+%iр", GetPVarInt(i, "PriceBus"));
GameTextForPlayer(i, string, 5000, 1);

MysqlUpdatePlayerInt(i, "paycheck", PI[pPayCheck]);
}
}
if(GetPVarInt(i, "PriceTaxi") > 0)
{
if(GetMoney(playerid) < GetPVarInt(i, "PriceTaxi"))
{
SendClientMessage(playerid, C_RED, "У вас не хватает денег!");
RemovePlayerFromVehicle(playerid);
}
else
{
GiveMoney(playerid, -GetPVarInt(i, "PriceTaxi"));

PI[pPayCheck] += GetPVarInt(i, "PriceTaxi");
MysqlUpdatePlayerInt(i, "paycheck", PI[pPayCheck]);
SetPVarInt(playerid, "TimeTaxi", 30);
SetPVarInt(playerid, "TaxiPrice",GetPVarInt(i, "PriceTaxi"));
SetPVarInt(playerid, "PlayerTaxi", i);
new string[15];
format(string, sizeof(string), "~r~-%iр", GetPVarInt(i, "PriceTaxi"));
GameTextForPlayer(playerid, string, 5000, 1);
format(string, sizeof(string), "~b~+%iр", GetPVarInt(i, "PriceTaxi"));
GameTextForPlayer(i, string, 5000, 1);
SetPVarInt(i, "TaxiMoney", GetPVarInt(i, "TaxiMoney") + GetPVarInt(i, "PriceTaxi"));
}
}
}
}
}
case 4: //Игрок вышел из машины
{
BE_Play_Check[playerid] = false;
}
case 5: //Игрок сел в машину на место водителя
{
}
case 6: //Игрок сел в машину на место пассажира
{
}
case 7: //Игрок выбирает скин (можно писать PLAYER_STATE_WASTED)
{
}
case 8: //Игрок возродился (можно писать PLAYER_STATE_SPAWNED)
{
}
case 9: //Игрок наблюдает с помощью функции SPECTATING (можно писать PLAYER_STATE_SPECTATING)
{
}
}
return 1;
}
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу