Kirill_Stepanov
Дебютант
Все доброго времени суток!Гуляя сегодня по форумам искав сис-ку аренды автомобилей ни чего не нашёл вот и решил выложит:bq:
В самый верх добавляем:
В public OnFilterScriptInit добавляем:
В public OnPlayerDisconnect Добавляем:
В public OnPlayerStateChange добавляем:
В OnDialogResponse добавляем:
В самый низ:
В public CountRentedVehicles добавляем:
В public CheckRentedTime добавляем:
Автор: Spirit
В самый верх добавляем:
Код:
#define R_F 943//Ид диалога
#define R_G_V 944
#define COLOR_WHITE 0xFFFFFFA
#define MAX_RENT_VEH 40
enum RInfo
{
Rcarid,
Rprice,
ROwned
};
new RentCar[MAX_RENT_VEH][RInfo];
new IsRentableVehicle[MAX_VEHICLES];
new OwnedName[MAX_PLAYER_NAME];
new RentedTime[MAX_PLAYERS];
new PlayerUseRentCar[MAX_PLAYERS];
new RentTimer;[LIST=1]
[/LIST]
Код:
SetTimer("CountRentedVehicles", 1000, 0);
AddRentVehicle(ид, модель, X, Y, Z, Rot, Цвет1, Цвет2, цена аренды за 1 минуту);*[/QUOTE]
[COLOR="#FF0000"]В public OnPlayerConnect добавляем:[/COLOR]
[QUOTE] RentedTime[playerid] = -1;
PlayerUseRentCar[playerid] = 0;
return 1;
}
Код:
new count;
for(new R=1; R<TotalVehicles(); R++)
{
if(IsRentableVehicle[R] == 1)
{
count++;
if(RentCar[count][ROwned] == GetPlayerName(playerid, OwnedName, sizeof(OwnedName)))
{
SetVehicleToRespawn(count);
RentCar[count][ROwned] = 0;
}
}
}
return 1;
}
Код:
new rcs[265];
if(newstate == 2)
{
if(RentCar[GetPlayerVehicleID(playerid)][ROwned] == 0 && IsRentableVehicle[GetPlayerVehicleID(playerid)])
{
if(PlayerUseRentCar[playerid] == 1) {
SendClientMessage(playerid,-1,"Вы уже арендовали транспортное средство в этой компании.");
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid,1); return 1; }
format(rcs, sizeof(rcs), "{ffffff}Здравствуйте! Этот автомобиль сдаётся в аренду!\n Порядковый номер - [{00ceff}%d{ffffff}]\n Цена аренды за 1 минуту: [{5da130}$%d{ffffff}]\n\nВведите кол-во минут,на которое хотите арендовать транспорт в окошко:",RentCar[GetPlayerVehicleID(playerid)][Rcarid],RentCar[GetPlayerVehicleID(playerid)][Rprice]);
ShowPlayerDialog(playerid,R_F,DIALOG_STYLE_INPUT,"Аренда",rcs,"Аренда","Отмена");
}
if(RentCar[GetPlayerVehicleID(playerid)][ROwned] != 0 && IsRentableVehicle[GetPlayerVehicleID(playerid)])
{
if(RentCar[GetPlayerVehicleID(playerid)][ROwned] == GetPlayerName(playerid, OwnedName, sizeof(OwnedName)))
{
GetPlayerName(playerid, OwnedName, sizeof(OwnedName));
format(rcs, sizeof(rcs), "Это транспортное средство арендовано на Вас, {ff8700}%s{ffffff}.",OwnedName);
SendClientMessage(playerid,-1,rcs);
format(rcs, sizeof(rcs), "Срок дейсвтия аренды истекает через: {ff8700}%d минут(у|ы){ffffff}.",RentedTime[playerid]);
SendClientMessage(playerid,-1,rcs);
}
if(RentCar[GetPlayerVehicleID(playerid)][ROwned] != GetPlayerName(playerid, OwnedName, sizeof(OwnedName)))
{
SendClientMessage(playerid,-1,"Это транспортное средство уже арендовано другим игроком.");
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid,1);
}
}
}
return 1;
}
Код:
if(dialogid == R_F)
{
if(response)
{
new carprice = RentCar[GetPlayerVehicleID(playerid)][Rprice] * strval(inputtext),string[120];
if(GetPlayerMoney(playerid) < carprice)
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid,1);
SendClientMessage(playerid,COLOR_WHITE,"У вас недостаточно средств для аренды транспорта.");
return 1;
}
RentedTime[playerid] = strval(inputtext);
format(string, sizeof(string), "Вы арендовали это транспортное средство на {ff8700}%d минут(ы|у){ffffff} за {5da130}$%d{ffffff}.", RentedTime[playerid],carprice);
SendClientMessage(playerid,COLOR_WHITE,string);
RentTimer = SetTimerEx("CheckRentedTime",60000,1,"i",playerid);
TogglePlayerControllable(playerid,1);
GivePlayerMoney(playerid,-carprice);
PlayerUseRentCar[playerid] = 1;
RentCar[GetPlayerVehicleID(playerid)][ROwned] = GetPlayerName(playerid, OwnedName, sizeof(OwnedName));
SetVehicleNumberPlate(GetPlayerVehicleID(playerid),"RENTED");
}
else
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid,1);
RentedTime[playerid] = -1;
PlayerUseRentCar[playerid] = 0;
KillTimer(RentTimer);
}
}
if(dialogid == R_G_V)
{
if(response)
{
new count;
for(new R=1; R<TotalVehicles(); R++)
{
if(IsRentableVehicle[R] == 1)
{
count++; new rcs[225];
format(rcs, sizeof(rcs), "{ffffff}Здравствуйте! Этот автомобиль сдаётся в аренду!\n Порядковый номер - [ {00ceff}%d{ffffff} ]\n Цена аренды за 1 минуту: [{5da130}$%d{ffffff}]\n\nВведите кол-во минут,на которое хотите арендовать транспорт в окошко:",RentCar[GetPlayerVehicleID(playerid)][Rcarid],RentCar[GetPlayerVehicleID(playerid)][Rprice]);
ShowPlayerDialog(playerid,R_F,DIALOG_STYLE_INPUT,"Аренда",rcs,"Аренда","Отмена");
}
}
}
else
{
RentCar[GetPlayerVehicleID(playerid)][ROwned] = 0;
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid,1);
RentedTime[playerid] = -1;
PlayerUseRentCar[playerid] = 0;
KillTimer(RentTimer);
}
}
return 1;
}
Код:
stock AddRentVehicle(id ,model, Float:X, Float:Y, Float:Z, Float:Angle, color1, color2, price)
{
new newvid;
newvid = AddStaticVehicle(model, X, Y, Z, Angle, color1, color2);
RentCar[newvid][Rprice] = price;
RentCar[newvid][Rcarid] = id;
RentCar[newvid][ROwned] = 0;
IsRentableVehicle[newvid] = 1;
SetVehicleNumberPlate(newvid,"RENT");
}
TotalVehicles()
{
new vid;
vid = CreateVehicle(411, 0, 0, 0, 0, -1, -1, 10);
DestroyVehicle(vid);
vid--;
return vid;
}
forward CountRentedVehicles();
Код:
new count;
for(new R=1; R<TotalVehicles(); R++)
{
if(IsRentableVehicle[R] == 1)
{
count++;
}
}
}
forward CheckRentedTime(playerid);
Код:
if(RentedTime[playerid] == -1)
{
//none
}
if(RentedTime[playerid] > 0)
{
RentedTime[playerid]--;
}
if(RentedTime[playerid] == 0 && !IsPlayerInVehicle(playerid, IsRentableVehicle[GetPlayerVehicleID(playerid)]))
{
new count;
for(new R=1; R<TotalVehicles(); R++)
{
if(IsRentableVehicle[R] == 1)
{
count++;
if(RentCar[count][ROwned] == GetPlayerName(playerid, OwnedName, sizeof(OwnedName)))
{
SendClientMessage(playerid,-1,"Срок аренды вашего ТС истек. Транспорт был возвращен на место.");
PlayerUseRentCar[playerid] = 0;
SetVehicleToRespawn(count);
RentCar[count][ROwned] = 0;
KillTimer(RentTimer);
}
}
}
}
else if(RentedTime[playerid] == 0 && IsPlayerInVehicle(playerid, IsRentableVehicle[GetPlayerVehicleID(playerid)]))
{
ShowPlayerDialog(playerid,R_G_V,DIALOG_STYLE_MSGBOX,"{ff8800}В{ffffff}нимание!","{ff8800}С{ffffff}рок действия аренды транспортного средства истек.\nВы можете повторно арендовать транспорт,или завершить контракт на аренду.\n{ff8800}Что Вы хотите сделать?","Аренда","Завершить");
}
}
Последнее редактирование:
