PDA

Просмотр полной версии : [Вопрос] как сделать штраф за повреждения



Vetalll
25.08.2014, 22:49
Здравствуйте!
Я ищу, как можно сделать, что бы при вводе команды /route - закончить работу водителя автобуса, снималось количество денег, в зависимости от повреждений(как на Ыаmp-Яр)

Вот код команды /route:

YCMD:route(playerid, params[], help)
{
if(PlayerInfo[playerid][pLogin] == 0) return true;
if(PlayerInfo[playerid][pJob] != 1) return SendClientMessage(playerid, COLOR_GREY, "Âû íå âîäèòåëü àâòîáóñà!");
if(GetPlayerState(playerid) != 2) return SendClientMessage(playerid, COLOR_GREY, "Âû äîëæíû íàõîäèòüñÿ çà ðóëåì àâòîáóñà!");
new carid = GetPlayerVehicleID(playerid);
if(carid >= buscar[0] && carid <= buscar[1])
{
if(GetPVarInt(playerid, "TypeBus") > 0)
{
format(YCMDstr, sizeof(YCMDstr), "Ðàáî÷èé äåíü çàâåðøåí. Âàìè çàðàáîòàíî: %i âèðò", GetPVarInt(playerid, "BusMoney"));
SendClientMessage(playerid, 0x6495EDFF, YCMDstr);
SendClientMessage(playerid, COLOR_WHITE, "Äåíüãè áóäóò ïåðå÷èñëåíû íà ñ÷åò âî âðåìÿ çàðïëàòû");
DeletePVar(playerid, "BusTime");
DeletePVar(playerid, "TypeBus");
DeletePVar(playerid, "BusStop");
DeletePVar(playerid, "BusMoney");
DeletePVar(playerid, "RentBus");
pPressed[playerid] = 0;
Delete3DTextLabel(BusText3D[GetPlayerVehicleID(playerid)]);
SetVehicleToRespawn(GetPlayerVehicleID(playerid));
DisablePlayerRaceCheckpoint(playerid);
return true;
}
ShowPlayerDialogEx(playerid, 163, 2, "Ìàðøðóò", "Âíóòðè-ãîðîäñêîé LS\nÂíóòðè-ãîðîäñêîé SF\nÂíóòðè-ãîðîäñêîé LV\nÀâòîÂîêçàë LS << >> Àâòîøêîëà SF\nÀâòîÂîêçàë LS << >> ÀâòîÂîêçàë LV\nÀâòîÂîêçàë LS << >> Çàâîäû", "Ïðèíÿòü", "Îòìåíà");
}
else SendClientMessage(playerid, COLOR_GREY, "Âû äîëæíû íàõîäèòüñÿ â àâòîáóñå!");
return true;
}

MaZaRHaKeR
25.08.2014, 22:59
Первая переменная при старте маршрута - кол-во первоначального ХП. Вторая переменная - кол-во ХП при завершении. Вычисляем разницу и получаем повреждение. Орудуя данными о повреждениях снимаем сумму у игрока.

dimozz
27.08.2014, 17:19
Первая переменная при старте маршрута - кол-во первоначального ХП. Вторая переменная - кол-во ХП при завершении. Вычисляем разницу и получаем повреждение. Орудуя данными о повреждениях снимаем сумму у игрока.

Либо можно использовать public OnVehicleDamageStatusUpdate

Vetalll
27.08.2014, 20:06
Первая переменная при старте маршрута - кол-во первоначального ХП. Вторая переменная - кол-во ХП при завершении. Вычисляем разницу и получаем повреждение. Орудуя данными о повреждениях снимаем сумму у игрока.
Я суть понимаю, но сделать по такому принципу, я не смогу, ибо знаний не так много. Если и выйдет, то очень примитивно. Вот я и обратился сюда.
Актуально! Жду помощи!

DeimoS
27.08.2014, 20:28
Ну если автобусы при старте 100% починены, всё просто

new Float: bus_health;
GetVehicleHealth(GetPlayerVehicleID(playerid)), bus_health);
GivePlayerMoney(playerid, -((1000-bus_health)*10)));
Это в /route как раз. Только формулу самостоятельно придумайте. "1000-bus_health" - это мы узнаём сколько дамага было нанесено транспорту.