valencia_manager
Умник
Здравствуйте, столкнулся с такой проблемой, когда при входе игру может появляться спидометр и не исчезать. Также спидометр может появиться когда ты просто находишься на сервере. В чем может быть проблема?
В OnPlayerDisconnect и при выходе из авто KillTimer прописан.
Скрин:
Код:
В OnPlayerDisconnect и при выходе из авто KillTimer прописан.
Скрин:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Код:
PHP:
public OnPlayerStateChange:
if(!IsAVel(vehicleid))
{
@UpdateCarInfo(playerid, vehicleid, 0);
pTemp[playerid][pCarInfoTimer] = SetTimerEx("@UpdateCarInfo", 200, true, "iii", playerid, vehicleid, 0);
PlayerTextDrawShow(playerid,speed_TD[playerid][17]);
PlayerTextDrawShow(playerid,speed_TD[playerid][18]);
}
Сам таймер:
@UpdateCarInfo(playerid, vehicleid, speedonly);
@UpdateCarInfo(playerid, vehicleid, speedonly)
{
if(!IsPlayerConnected(playerid) || IsKicked(playerid) || !Iter_Contains(valid_vehicles, vehicleid))
{
if(pTemp[playerid][pCarInfoTimer] != 0)
{
HideSpeedometer(playerid);
KillTimer(pTemp[playerid][pCarInfoTimer]);
pTemp[playerid][pCarInfoTimer] = 0;
}
return 1;
}
new Float:X, Float:Y, Float:Z, Float:X2, Float:Y2, Float:Z2;
new lights, engine;
engine = GetEngineStatL(vehicleid, lights);
new model = GetVehicleModel(vehicleid);
new Float:tank = VehStats[model-400][vMaxFuel];
GetVehicleVelocity(vehicleid,X,Y,Z);
new Float:speed = floatsqroot(floatadd(floatadd(floatpower(X, 2), floatpower(Y, 2)), floatpower(Z, 2))) * 126.31;
if(VehicleInfo[vehicleid][vSLimit])
{
if(speed > 55)
{
new Float:dif = 55 / speed;
SetVehicleVelocity(vehicleid,X*dif,Y*dif,Z);
speed = 55;
}
}
if(!speedonly)
{
X2 = VehicleInfo[vehicleid][vX];
Y2 = VehicleInfo[vehicleid][vY];
Z2 = VehicleInfo[vehicleid][vZ];
GetVehiclePos(vehicleid, X, Y, Z);
if(X > 10000.0 || Y > 10000.0 || Z > 10000.0 || X < -10000.0 || Y < -10000.0 || Z < -10000.0)
{
SendClientMessage(playerid, COLOR_GREY, "Ошибка 2");
ToCheat(playerid, 9982);
SetVehicleToRespawn(vehicleid);
return 0;
}
new Float:veloc = PointToPoint3D(X2,Y2,Z2,X,Y,Z)/1000;
VehicleInfo[vehicleid][vMileage] += veloc;
if(engine == 1)
{
VehicleInfo[vehicleid][vFuel] -= (veloc/100)*tank;
if(VehicleInfo[vehicleid][vFuel] <= 0.0)
{
VehicleInfo[vehicleid][vFuel] = 0.0;
new alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, false, lights, alarm, doors, bonnet, boot, objective);
}
if(VehicleInfo[vehicleid][vHealth] <= 300.0)
{
SetVehicleHealth(vehicleid, 300.0);
new alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, false, false, alarm, doors, bonnet, boot, objective);
}
}
VehicleInfo[vehicleid][vX] = X;
VehicleInfo[vehicleid][vY] = Y;
VehicleInfo[vehicleid][vZ] = Z;
}
new fmt_speed[64];
format(fmt_speed, sizeof(fmt_speed), "%s", VehStats[model-400][vName]);
PlayerTextDrawSetString(playerid, speed_TD[playerid][20], VehStats[model-400][vName]);
format(fmt_speed, sizeof(fmt_speed), "%d", GetVehicleSpeed(playerid));
PlayerTextDrawSetString(playerid, speed_TD[playerid][31], fmt_speed);
format(fmt_speed, sizeof(fmt_speed), "%.1f_KM", VehicleInfo[vehicleid][vMileage]);
PlayerTextDrawSetString(playerid, speed_TD[playerid][55], fmt_speed);
format(fmt_speed, sizeof(fmt_speed), "FUEL:_%.0f/%.0fL", VehicleInfo[vehicleid][vFuel], tank);
PlayerTextDrawSetString(playerid, speed_TD[playerid][42], fmt_speed);
PlayerTextDrawColor(playerid, speed_TD[playerid][11], lights ? 8388863 : -2147483393);
PlayerTextDrawColor(playerid, speed_TD[playerid][43], lights ? 8388863 : -2147483393);
PlayerTextDrawColor(playerid, speed_TD[playerid][44], lights ? 8388863 : -2147483393);
PlayerTextDrawColor(playerid, speed_TD[playerid][45], lights ? 8388863 : -2147483393);
PlayerTextDrawColor(playerid, speed_TD[playerid][46], lights ? 8388863 : -2147483393);
PlayerTextDrawColor(playerid, speed_TD[playerid][12], VehicleInfo[vehicleid][vLock] ? -2147483393 : 8388863);
PlayerTextDrawColor(playerid, speed_TD[playerid][47], VehicleInfo[vehicleid][vLock] ? -2147483393 : 8388863);
PlayerTextDrawColor(playerid, speed_TD[playerid][48], VehicleInfo[vehicleid][vLock] ? -2147483393 : 8388863);
PlayerTextDrawColor(playerid, speed_TD[playerid][49], VehicleInfo[vehicleid][vLock] ? -2147483393 : 8388863);
PlayerTextDrawColor(playerid, speed_TD[playerid][9], VehicleInfo[vehicleid][vSLimit] ? 8388863 : -2147483393);
PlayerTextDrawColor(playerid, speed_TD[playerid][50], VehicleInfo[vehicleid][vSLimit] ? 8388863 : -2147483393);
PlayerTextDrawColor(playerid, speed_TD[playerid][51], VehicleInfo[vehicleid][vSLimit] ? 8388863 : -2147483393);
PlayerTextDrawColor(playerid, speed_TD[playerid][10], engine ? 8388863 : -2147483393);
PlayerTextDrawColor(playerid, speed_TD[playerid][52], engine ? 8388863 : -2147483393);
PlayerTextDrawColor(playerid, speed_TD[playerid][53], engine ? 8388863 : -2147483393);
PlayerTextDrawColor(playerid, speed_TD[playerid][54], engine ? 8388863 : -2147483393);
if(VehicleInfo[vehicleid][vPerfomance] > 0)
{
PlayerTextDrawColor(playerid, speed_TD[playerid][34], 0x99CC00FF);
}
else
{
PlayerTextDrawColor(playerid, speed_TD[playerid][34], -1);
}
for(new i; i < 56; i++)
{
if(i == 17 || i == 18) continue;
PlayerTextDrawShow(playerid,speed_TD[playerid][i]);
}
if(GetVehicleSpeed(playerid) >= 10 && GetPVarInt(playerid,"USEDIALOGID"))
{
if(pTemp[playerid][pBusID] != vehicleid && vehicleid >= aBus[0] && vehicleid <= aBus[15]
|| pTemp[playerid][pTruckID] != vehicleid && vehicleid >= aTruck[0][0] && vehicleid <= aTruck[2][1]
|| pTemp[playerid][pTaxiID] != vehicleid && vehicleid >= taxicar[0] && vehicleid <= taxicar[15]
|| pTemp[playerid][pMechID] != vehicleid && vehicleid >= mechanic[0] && vehicleid <= mechanic[16])
ToCheat(playerid, 3278);
}
if(playerCheckRepair{playerid}) playerCheckRepair{playerid}--;
else
{
new Float:vhealth;
GetVehicleHealth(vehicleid, vhealth);
if(vhealth > VehicleInfo[vehicleid][vHealth])
{
SetPVarFloat(playerid, "HealCar_Kick", vhealth);
SetVehicleHealth(vehicleid, VehicleInfo[vehicleid][vHealth]);
ToCheat(playerid, 1154);
}
else
{
VehicleInfo[vehicleid][vHealth] = vhealth;
}
}
if(GetPVarInt(playerid, "DrivingTest"))
{
if(GetVehicleSpeed(playerid) > 70 && GetPVarInt(playerid, "AntiFloodTestError") <= gettime())
{
new string[128];
format(string, sizeof(string), "Вы двигаетесь со скоростью более 70 км/ч. Сбавьте скорость. Ошибок: {ffffff}%i", GetPVarInt(playerid, "DrivingTestError") + 1);
SendClientMessage(playerid, COLOR_RED, string);
SetPVarInt(playerid, "DrivingTestError", GetPVarInt(playerid, "DrivingTestError") + 1);
SetPVarInt(playerid, "AntiFloodTestError", gettime()+7);
}
}
return 1;
}
