PDA

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



Dima_Tushin
21.02.2017, 22:07
Здравствуйте подскажите может кто то делал или знает как сделать формулу вычисление например я пополнил склад у меня в машине было например 10к материалов на складе было ровно 95 как сделать чтобы при ровняло 100к материалов на склад и + 5к остаток вернулся в авто

пример разгрузки на склад LVa


if(LVaMat > 300000)
return SendClientMessage(playerid, COLOR_WHITE, "На складе недостаточно место!");
if(!IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid, COLOR_WHITE, "Вы не в машине!");
new aID = GetArmyCar(playerid);
for(new i = 0; i < sizeof(Ainfo); i++)
{
if(Ainfo[i][aLoad][aID] == 0)
return SendClientMessage(playerid, COLOR_WHITE, "Фура пуста!");
LVaMat += Ainfo[i][aLoad][aID];//Прибавили на склад
Ainfo[i][aLoad][aID] = 0;//Загрузились
new string[90];
static const army[] = "Материалов: (%i ед) | Патронов: (%i ед)";
format(string, sizeof(string), army, Ainfo[i][aLoad][aID], Ainfo[i][aPart][aID]);
SendClientMessage(playerid, COLOR_GREEN, string);
DisablePlayerCheckpoint(playerid);
DeletePVar(playerid, "LoadMat");
}

DeimoS
21.02.2017, 22:50
Эмм, математика уровня начальной школы же, не?
От 300000 отнимаешь значение LVaMat и если получившееся число меньше значения в Ainfo[i][aLoad][aID], то вместо обнуления отнимаешь от Ainfo[i][aLoad][aID] получившееся ранее значение.

То бишь:

if(LVaMat > 300000)
return SendClientMessage(playerid, COLOR_WHITE, "На складе недостаточно место!");
if(!IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid, COLOR_WHITE, "Вы не в машине!");
new aID = GetArmyCar(playerid);
for(new i = 0; i < sizeof(Ainfo); i++)
{
if(Ainfo[i][aLoad][aID] == 0)
return SendClientMessage(playerid, COLOR_WHITE, "Фура пуста!");
new surplus = 300000-LVaMat;
if(Ainfo[i][aLoad][aID] > surplus)
{
LVaMat += surplus;
Ainfo[i][aLoad][aID] -= surplus;
}
else
{
LVaMat += Ainfo[i][aLoad][aID];
Ainfo[i][aLoad][aID] = 0;
}
new string[90];
static const army[] = "Материалов: (%i ед) | Патронов: (%i ед)";
format(string, sizeof(string), army, Ainfo[i][aLoad][aID], Ainfo[i][aPart][aID]);
SendClientMessage(playerid, COLOR_GREEN, string);
DisablePlayerCheckpoint(playerid);
DeletePVar(playerid, "LoadMat");
}

Dima_Tushin
25.02.2017, 09:48
Ну да я с этим согласен но я ни знал как реализовать на коде это я лучше спрошу чем бредятину буду писать не так ли?

DeimoS
25.02.2017, 11:56
Ну да я с этим согласен но я ни знал как реализовать на коде это я лучше спрошу чем бредятину буду писать не так ли?

Не так. Лучше самому 1000 раз написать бредятину и, в итоге, 1 раз написать нормальный код, поняв как нужно делать правильно, чем просто слизать готовый код и не вникать особо.
Закрыто.