PDA

Просмотр полной версии : [Вопрос] Зависает процесс заправки авто



Andrik851
23.01.2019, 15:14
Подскажи пожалуйста почему во время заправки авто заправка завистает ввожу заново команду пишет что вы уже заправляетес и в итоге не машину не завести не выйти из нее могу только включить или выключить свет или же просто оттуда телепортироваться

диалог заправки


case D_JOB+128:
{
if(!response) return true;
new fuel;
new bizz = BizzInfo[GetPVarInt(playerid, "FuelBizzID")][bTill] / 3;
if(sscanf(inputtext, "i",fuel)) return ShowPlayerDialog(playerid, D_JOB+128, DIALOG_STYLE_INPUT, "{FFCC00}Топливо", "{FFFFFF}Введите количество литров топлива:", "Принять", "Отмена");
if(fuel < 1 || fuel > 100)
{
SendClientMessage(playerid, COLOR_DARKORANGE, "Топлива от 1 до 100 литров!");
return ShowPlayerDialog(playerid, D_JOB+128, DIALOG_STYLE_INPUT, "{FFCC00}Топливо", "{FFFFFF}Введите количество литров топлива:", "Принять", "Отмена");
}
if(fuel+Fuel[GetPlayerVehicleID(playerid)] > 100)
{
SendMes(playerid, COLOR_DARKORANGE, "Слишком много топлива. Рекомендуем: %i литров", 100-Fuel[GetPlayerVehicleID(playerid)]);
return ShowPlayerDialog(playerid, D_JOB+128, DIALOG_STYLE_INPUT, "{FFCC00}Топливо", "{FFFFFF}Введите количество литров топлива:", "Принять", "Отмена");
}
if(fuel*bizz > GetMoney(playerid))
{
SendClientMessage(playerid, COLOR_DARKORANGE, "Недостаточно средств!");
return ShowPlayerDialog(playerid, D_JOB+128, DIALOG_STYLE_INPUT, "{FFCC00}Топливо", "{FFFFFF}Введите количество литров топлива:", "Принять", "Отмена");
}
new price = fuel*bizz;
TransferMoney(playerid, -1, price);
if(BizzInfo[GetPVarInt(playerid, "FuelBizzID")][bProduct] > 0)
{
BizzPay[GetPVarInt(playerid, "FuelBizzID")] += price/2;
BizzInfo[GetPVarInt(playerid, "FuelBizzID")][bMoney] += price/2;
BizzInfo[GetPVarInt(playerid, "FuelBizzID")][bProduct] -= fuel;
MysqlUpdateBizzInt(BizzInfo[GetPVarInt(playerid, "FuelBizzID")][bID], "product", BizzInfo[GetPVarInt(playerid, "FuelBizzID")][bProduct]);
}
DeletePVar(playerid, "FuelBizzID");
SendClientMessage(playerid, COLOR_BLUE, "Ваш транспорт заправлен");
SetPVarInt(playerid, "Refueling", fuel);
TogglePlayerControllable(playerid, false);

Fuel[GetPlayerVehicleID(playerid)] ++;

SetPVarInt(playerid, "Filling", GetPVarInt(playerid, "Filling") + 1);
if(GetPVarInt(playerid, "Refueling") <= GetPVarInt(playerid, "Filling"))
{
DeletePVar(playerid, "Refueling");
DeletePVar(playerid, "Filling");
TogglePlayerControllable(playerid, true);
}

SaveAcc();
return true;
}


и вот сама команда



CMD:fill(playerid, params[])
{
if(GetPlayerState(playerid) != 2) return SendClientMessage(playerid, COLOR_DARKORANGE, "Вы должны находится за рулем!");
if(Fuel[GetPlayerVehicleID(playerid)] >= 100) return SendClientMessage(playerid, COLOR_DARKORANGE, "Ваш бак полон!");
if(GetPVarInt(playerid, "Refueling") > 0) return SendClientMessage(playerid, COLOR_DARKORANGE, "Вы уже заправляетесь!");
new full;
for(new i = 1; i <= TOTALBIZZ; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, BizzInfo[i][bEntrx], BizzInfo[i][bEntry], BizzInfo[i][bEntrz])
&& BizzInfo[i][bType] == 2)
{
ShowPlayerDialog(playerid, D_JOB+128, 1,"{FFCC00}Заправка", "{ffffff}Введите количество литров для заправки транспорта.", "Далее", "Отмена");
full++;
SetPVarInt(playerid, "FuelBizzID", i);
}
}
if(full == 0) return SendClientMessage(playerid, COLOR_GREY, "Вы должны находится у заправки!");
return true;
}

Сергей
23.01.2019, 21:58
TogglePlayerControllable
Убери, и блокировать игрока не будет


Fuel[GetPlayerVehicleID(playerid)] ++; смени на


Fuel[GetPlayerVehicleID(playerid)] += fuel;

Andrik851
24.01.2019, 15:57
Ну да тепер не зависает пишет что автомобиль заправлен но когда заезжаешь на другую запровку вводишь команду в ответ пишет что вы уже заправляетесь. Может там просто стоит какойто таймер?

Сергей
24.01.2019, 23:34
Ну да тепер не зависает пишет что автомобиль заправлен но когда заезжаешь на другую запровку вводишь команду в ответ пишет что вы уже заправляетесь. Может там просто стоит какойто таймер?

Вместо


SetPVarInt(playerid, "Filling", GetPVarInt(playerid, "Filling") + 1);
if(GetPVarInt(playerid, "Refueling") <= GetPVarInt(playerid, "Filling"))
{
DeletePVar(playerid, "Refueling");
DeletePVar(playerid, "Filling");
TogglePlayerControllable(playerid, true);
}
Сделай


DeletePVar(playerid, "Refueling");
DeletePVar(playerid, "Filling");
Вообще, Пвар "Filling" - бесполезный