PDA

Просмотр полной версии : [Вопрос] Помогите с таймером



Andrik851
12.04.2019, 13:49
Доброго времени суток помогите пожалуйста переписать таймер на другую команду.Этот таймер для заправки авто хочу его переделать под разгрузку авто только с обратным отсчетом



вот сам таймер


new ReFuelTimer[MAX_PLAYERS];




forward ReFill(playerid);
public ReFill(playerid)
{
new string[32];
Fuel[GetPlayerVehicleID(playerid)]++;
SetPVarInt(playerid, "Filling", GetPVarInt(playerid, "Filling") + 1);
format(string,32,"~g~HAЊO‡®•E¦C• ~w~%i ~g~‡…¦PO‹",GetPVarInt(playerid, "Filling"));
GameTextForPlayer(playerid, string, 600, 6);
if(GetPVarInt(playerid, "Refueling") <= GetPVarInt(playerid, "Filling"))
{
KillTimer(ReFuelTimer[playerid]);
DeletePVar(playerid, "Refueling");
DeletePVar(playerid, "Filling");
TogglePlayerControllable(playerid, true);
}
return true;
}



и так понимаю сам запрос вызова таймера


SendClientMessage(playerid, COLOR_YELLOW, "Транспорт заправляется, пожалуйста подождите");
SetPVarInt(playerid, "Refueling", fuel);
TogglePlayerControllable(playerid, false);
ReFuelTimer[playerid] = SetTimerEx("ReFill", 500, true, "i", playerid);



Помогите пожалуйста кто знает как это сделать для этой команды с диалогом

команда


CMD:unmatget(playerid, params[])//разгрузка материалов у полиции
{
if(!PlayerLogged[playerid]) return true;
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY, "[INFO] Вы должны быть в автомобиле!");
if(MatsVehicle[GetPlayerVehicleID(playerid)] > 0) return SendClientMessage(playerid, COLOR_GREY, "[INFO] В автомобиле нет материалов!");
if(GetPlayerVehicleSeat(playerid) == 0)
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 427)
{
if(PlayerInfo[playerid][pMember] == F_POLICE || PlayerInfo[playerid][pMember] == F_DPS || PlayerInfo[playerid][pMember] == F_FSB || PlayerInfo[playerid][pMember] == F_ARMY)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, 2542.6462, -2421.7219, 21.0440))
{
ShowPlayerDialog(playerid,D_JOB+6,1,"Склад боеприпасов ПОЛИЦИИ","{FFFFFF}Введите кол-во материалов разгрузки.\nМаксимально : 3000","Принять","Отмена");
}
}
}
else SendClientMessage(playerid, COLOR_GREY, "Вы должны быть в специализированом автомобиле для перевозки материалов!");
}
else SendClientMessage(playerid, COLOR_GREY, "[INFO] Вы должны быть на водительском сидении!");
return true;
}


и сам диалог


case D_JOB+6://============= разгрузка авто у полиции
{
if(!response) return true;
new till = 0;
if(sscanf(inputtext, "i",till)) return ShowPlayerDialog(playerid, D_JOB+6, 1, "материалы", "Введите кол-во материалов:", "Принять", "Отмена");
if(till < 1 || till > 3000)
{
SendMes(playerid, COLOR_GREY, "Кол-во материалов от 1 до 3000!");
return ShowPlayerDialog(playerid, D_JOB+6, 1, "материалы", "Введите кол-во материалов:", "Принять", "Отмена");
}
if(till > Mats[1])
{
SendClientMessage(playerid, COLOR_GREY, "В транспорте недостаточно материалов!");
return ShowPlayerDialog(playerid, D_JOB+6, 1, "материалы", "Введите кол-во материалов:", "Принять", "Отмена");
}
Mats[1] += till;
format(string, 60, "БОЕПРИПАСОВ: {FF9900}%i{ffffff} шт.", Mats[1]); //police
Update3DTextLabelText(tPickup[34], 0xFFFFFFFF, string);
SetOtherInt("lspdmats", Mats[1]);
SendMes(playerid, COLOR_LIGHTGREEN, "Вы разгрузили {ffffff}%i {9ACD32}материалов.На складе организации: {ffffff}%i {9ACD32}материалов",till,Mats[1]);
materials_Vehicle[GetPlayerVehicleID(playerid)] -= till;
return true;
}

DeimoS
12.04.2019, 14:34
SetTimerEx("@___UnloadingMaterials", 1000, false, "iii", playerid, vehicleid, till);


@___UnloadingMaterials(playerid, vehicleid, mats_amount);
@___UnloadingMaterials(playerid, vehicleid, mats_amount)
{
if(mats_amount <= 0 || !IsPlayerConnected(playerid))
return 1;

const UNLOAD_AMOUNT = 500;

if(mats_amount > UNLOAD_AMOUNT)
{
// Материалы разгружаются
mats_amount -= UNLOAD_AMOUNT;
Mats[1] += UNLOAD_AMOUNT;
materials_Vehicle[vehicleid] -= UNLOAD_AMOUNT;

SetTimerEx("@___UnloadingMaterials", 1000, false, "ii", playerid, mats_amount);
}
else
{
// Разгрузка закончена
Mats[1] += mats_amount;
materials_Vehicle[vehicleid] -= mats_amount;
}
}

Будет разгружать по 500 матов каждую секунду, пока маты не закончатся.

Andrik851
12.04.2019, 14:46
SetTimerEx("@___UnloadingMaterials", 1000, false, "iii", playerid, vehicleid, till);


@___UnloadingMaterials(playerid, vehicleid, mats_amount);
@___UnloadingMaterials(playerid, vehicleid, mats_amount)
{
if(mats_amount <= 0 || !IsPlayerConnected(playerid))
return 1;

const UNLOAD_AMOUNT = 500;

if(mats_amount > UNLOAD_AMOUNT)
{
// Материалы разгружаются
mats_amount -= UNLOAD_AMOUNT;
Mats[1] += UNLOAD_AMOUNT;
materials_Vehicle[vehicleid] -= UNLOAD_AMOUNT;

SetTimerEx("@___UnloadingMaterials", 1000, false, "ii", playerid, mats_amount);
}
else
{
// Разгрузка закончена
Mats[1] += mats_amount;
materials_Vehicle[vehicleid] -= mats_amount;
}
}

Будет разгружать по 500 матов каждую секунду, пока маты не закончатся.

Спасибо! Осталось только теперь решить вопрос по ограничению матов в авто

DeimoS
12.04.2019, 16:16
Спасибо! Осталось только теперь решить вопрос по ограничению матов в авто

В соседней теме ответил же на этот счёт. Должно помочь.

Закрыто.