Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Dinamic rent system (MySQL)
- ──────────────────────────────────
- Datum pocetka izrade: 26/07/2021 10:24
- Datum kraja izrade: 26/07/2021 14:40
- Izradio: Bokenzi
- */
- #define FILTERSCRIPT
- #include <a_samp>
- #include <streamer>
- #include <sscanf2>
- #include <a_mysql>
- #include <Pawn.CMD>
- //=============================================================
- // Colours
- #define serverCol "{6893d9}"
- #define whiteCol "{FFFFFF}"
- //=============================================================
- // Helpers
- #define errMsg(%0,%1) \
- SendClientMessageEx(%0, 0xC03E26FF, "Greska: {FFFFFF}"%1)
- #define usgMsg(%0,%1) \
- SendClientMessageEx(%0, 0xA9A9A9FF, "Koristi: {FFFFFF}"%1)
- #define infoMsg(%0,%1) \
- SendClientMessageEx(%0, 0x2785B0FF, "Info: {FFFFFF}"%1)
- #define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
- #define sName ""serverCol"Ime servera: "whiteCol""
- //=============================================================
- // MySQL settings
- #define mysqlHost "localhost"
- #define mysqlUser "root"
- #define mysqlPass ""
- #define mysqlDatabase "begginer-server"
- new MySQL: sql;
- //=============================================================
- // Server limits
- #define maxRents 20
- //=============================================================
- // Timers
- forward rent_TickEnd(const playerid);
- //=============================================================
- // MySQL functions
- forward rent_LoadRents();
- //=============================================================
- // Rent system
- enum rent_data
- {
- Float: rent_x,
- Float: rent_y,
- Float: rent_z,
- Text3D: rent_label,
- rent_style,
- rent_id
- }
- new rentInfo[maxRents][rent_data];
- static rentedVehicle[MAX_PLAYERS];
- static rentVehID[MAX_PLAYERS];
- static rentChoose[MAX_PLAYERS];
- static rentTime[MAX_PLAYERS];
- static rentTimer[MAX_PLAYERS];
- static Text3D: rentLabel[MAX_PLAYERS];
- //=============================================================
- // Dialogs
- #define d_rentlist 901
- #define d_rentchoose 902
- #define d_renttime 903
- //=============================================================
- // Callbacks
- public OnFilterScriptInit()
- {
- /* MySQL connection */
- sql = mysql_connect(mysqlHost, mysqlUser, mysqlPass, mysqlDatabase);
- if(mysql_errno(sql) != 0)
- {
- print("Connection with database failed");
- SendRconCommand("exit");
- return 1;
- }
- mysql_tquery(sql, "SELECT rent_id, rent_style, rent_x, rent_y, rent_z FROM rents", "rent_LoadRents");
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case d_renttime:
- {
- new i = getNearestRentStyle(playerid);
- static Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x, y, z);
- if(response)
- {
- if(strval(inputtext) < 5 || strval(inputtext) > 30)
- {
- errMsg(playerid, "Rent vrijeme ne moze biti ispod 5 i iznad 30 minuta");
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- switch(i)
- {
- case 1: // Biciklovi
- {
- switch(rentChoose[playerid])
- {
- case 1:
- {
- rentTime[playerid] = strval(inputtext);
- static bikeCost = 5;
- if(GetPlayerMoney(playerid) < bikeCost * rentTime[playerid])
- {
- errMsg(playerid, "Nemate dovoljno novaca, za to vrijeme renta vam je potrebno %d$", (bikeCost * rentTime[playerid]) - GetPlayerMoney(playerid));
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- GivePlayerMoney(playerid, -(bikeCost * rentTime[playerid]));
- rentVehID[playerid] = CreateVehicle(509, x, y, z, 0, 0, 0, 0, 0);
- PutPlayerInVehicle(playerid, rentVehID[playerid], 0);
- rentedVehicle[playerid] = GetPlayerVehicleID(playerid);
- static rLabel[42];
- format(rLabel, sizeof rLabel, "Rent bicikl - "serverCol"%s", getName(playerid));
- static Float:vx, Float:vy, Float:vz;
- rentTimer[playerid] = SetTimerEx("rent_TickEnd", rentTime[playerid] * 60000, false, "d", playerid);
- GetVehiclePos(rentVehID[playerid], vx, vy, vz);
- rentLabel[playerid] = CreateDynamic3DTextLabel(rLabel, -1, vx, vy, vz, 15.0, INVALID_PLAYER_ID, rentVehID[playerid]);
- infoMsg(playerid, "Uspjesno ste iznajmili bicikl na %d minuta za %d$", rentTime[playerid], (bikeCost * rentTime[playerid]));
- }
- case 2:
- {
- rentTime[playerid] = strval(inputtext);
- static bikeCost = 10;
- if(GetPlayerMoney(playerid) < bikeCost * rentTime[playerid])
- {
- errMsg(playerid, "Nemate dovoljno novaca, za to vrijeme renta vam je potrebno %d$", (bikeCost * rentTime[playerid]) - GetPlayerMoney(playerid));
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- GivePlayerMoney(playerid, -(bikeCost * rentTime[playerid]));
- rentVehID[playerid] = CreateVehicle(510, x, y, z, 0, 0, 0, 0, 0);
- PutPlayerInVehicle(playerid, rentVehID[playerid], 0);
- rentedVehicle[playerid] = GetPlayerVehicleID(playerid);
- static rLabel[42];
- format(rLabel, sizeof rLabel, "Rent bicikl - "serverCol"%s", getName(playerid));
- static Float:vx, Float:vy, Float:vz;
- rentTime[playerid] = strval(inputtext);
- rentTimer[playerid] = SetTimerEx("rent_TickEnd", rentTime[playerid] * 60000, false, "d", playerid);
- GetVehiclePos(rentVehID[playerid], vx, vy, vz);
- rentLabel[playerid] = CreateDynamic3DTextLabel(rLabel, -1, vx, vy, vz, 15.0, INVALID_PLAYER_ID, rentVehID[playerid]);
- infoMsg(playerid, "Uspjesno ste iznajmili bicikl na %d minuta za %d$", rentTime[playerid], (bikeCost * rentTime[playerid]));
- }
- case 3:
- {
- rentTime[playerid] = strval(inputtext);
- static bikeCost = 15;
- if(GetPlayerMoney(playerid) < bikeCost * rentTime[playerid])
- {
- errMsg(playerid, "Nemate dovoljno novaca, za to vrijeme renta vam je potrebno %d$", (bikeCost * rentTime[playerid]) - GetPlayerMoney(playerid));
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- GivePlayerMoney(playerid, -(bikeCost * rentTime[playerid]));
- rentVehID[playerid] = CreateVehicle(481, x, y, z, 0, 0, 0, 0, 0);
- PutPlayerInVehicle(playerid, rentVehID[playerid], 0);
- rentedVehicle[playerid] = GetPlayerVehicleID(playerid);
- static rLabel[42];
- format(rLabel, sizeof rLabel, "Rent bicikl - "serverCol"%s", getName(playerid));
- static Float:vx, Float:vy, Float:vz;
- rentTime[playerid] = strval(inputtext);
- rentTimer[playerid] = SetTimerEx("rent_TickEnd", rentTime[playerid] * 60000, false, "d", playerid);
- GetVehiclePos(rentVehID[playerid], vx, vy, vz);
- rentLabel[playerid] = CreateDynamic3DTextLabel(rLabel, -1, vx, vy, vz, 15.0, INVALID_PLAYER_ID, rentVehID[playerid]);
- infoMsg(playerid, "Uspjesno ste iznajmili bicikl na %d minuta za %d$", rentTime[playerid], (bikeCost * rentTime[playerid]));
- }
- }
- }
- case 2: // Motori
- {
- switch(rentChoose[playerid])
- {
- case 1:
- {
- rentTime[playerid] = strval(inputtext);
- static bikeCost = 20;
- if(GetPlayerMoney(playerid) < bikeCost * rentTime[playerid])
- {
- errMsg(playerid, "Nemate dovoljno novaca, za to vrijeme renta vam je potrebno %d$", (bikeCost * rentTime[playerid]) - GetPlayerMoney(playerid));
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- GivePlayerMoney(playerid, -(bikeCost * rentTime[playerid]));
- rentVehID[playerid] = CreateVehicle(462, x, y, z, 0, 0, 0, 0, 0);
- PutPlayerInVehicle(playerid, rentVehID[playerid], 0);
- rentedVehicle[playerid] = GetPlayerVehicleID(playerid);
- static rLabel[42];
- format(rLabel, sizeof rLabel, "Rent motor - "serverCol"%s", getName(playerid));
- static Float:vx, Float:vy, Float:vz;
- rentTimer[playerid] = SetTimerEx("rent_TickEnd", rentTime[playerid] * 60000, false, "d", playerid);
- GetVehiclePos(rentVehID[playerid], vx, vy, vz);
- rentLabel[playerid] = CreateDynamic3DTextLabel(rLabel, -1, vx, vy, vz, 15.0, INVALID_PLAYER_ID, rentVehID[playerid]);
- infoMsg(playerid, "Uspjesno ste iznajmili motor na %d minuta za %d$", rentTime[playerid], (bikeCost * rentTime[playerid]));
- }
- case 2:
- {
- rentTime[playerid] = strval(inputtext);
- static bikeCost = 30;
- if(GetPlayerMoney(playerid) < bikeCost * rentTime[playerid])
- {
- errMsg(playerid, "Nemate dovoljno novaca, za to vrijeme renta vam je potrebno %d$", (bikeCost * rentTime[playerid]) - GetPlayerMoney(playerid));
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- GivePlayerMoney(playerid, -(bikeCost * rentTime[playerid]));
- rentVehID[playerid] = CreateVehicle(461, x, y, z, 0, 0, 0, 0, 0);
- PutPlayerInVehicle(playerid, rentVehID[playerid], 0);
- rentedVehicle[playerid] = GetPlayerVehicleID(playerid);
- static rLabel[42];
- format(rLabel, sizeof rLabel, "Rent motor - "serverCol"%s", getName(playerid));
- static Float:vx, Float:vy, Float:vz;
- rentTimer[playerid] = SetTimerEx("rent_TickEnd", rentTime[playerid] * 60000, false, "d", playerid);
- GetVehiclePos(rentVehID[playerid], vx, vy, vz);
- rentLabel[playerid] = CreateDynamic3DTextLabel(rLabel, -1, vx, vy, vz, 15.0, INVALID_PLAYER_ID, rentVehID[playerid]);
- infoMsg(playerid, "Uspjesno ste iznajmili motor na %d minuta za %d$", rentTime[playerid], (bikeCost * rentTime[playerid]));
- }
- case 3:
- {
- rentTime[playerid] = strval(inputtext);
- static bikeCost = 35;
- if(GetPlayerMoney(playerid) < bikeCost * rentTime[playerid])
- {
- errMsg(playerid, "Nemate dovoljno novaca, za to vrijeme renta vam je potrebno %d$", (bikeCost * rentTime[playerid]) - GetPlayerMoney(playerid));
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- GivePlayerMoney(playerid, -(bikeCost * rentTime[playerid]));
- rentVehID[playerid] = CreateVehicle(521, x, y, z, 0, 0, 0, 0, 0);
- PutPlayerInVehicle(playerid, rentVehID[playerid], 0);
- rentedVehicle[playerid] = GetPlayerVehicleID(playerid);
- static rLabel[42];
- format(rLabel, sizeof rLabel, "Rent motor - "serverCol"%s", getName(playerid));
- static Float:vx, Float:vy, Float:vz;
- rentTimer[playerid] = SetTimerEx("rent_TickEnd", rentTime[playerid] * 60000, false, "d", playerid);
- GetVehiclePos(rentVehID[playerid], vx, vy, vz);
- rentLabel[playerid] = CreateDynamic3DTextLabel(rLabel, -1, vx, vy, vz, 15.0, INVALID_PLAYER_ID, rentVehID[playerid]);
- infoMsg(playerid, "Uspjesno ste iznajmili motor na %d minuta za %d$", rentTime[playerid], (bikeCost * rentTime[playerid]));
- }
- case 4:
- {
- rentTime[playerid] = strval(inputtext);
- static bikeCost = 50;
- if(GetPlayerMoney(playerid) < bikeCost * rentTime[playerid])
- {
- errMsg(playerid, "Nemate dovoljno novaca, za to vrijeme renta vam je potrebno %d$", (bikeCost * rentTime[playerid]) - GetPlayerMoney(playerid));
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- GivePlayerMoney(playerid, -(bikeCost * rentTime[playerid]));
- rentVehID[playerid] = CreateVehicle(522, x, y, z, 0, 0, 0, 0, 0);
- PutPlayerInVehicle(playerid, rentVehID[playerid], 0);
- rentedVehicle[playerid] = GetPlayerVehicleID(playerid);
- static rLabel[42];
- format(rLabel, sizeof rLabel, "Rent motor - "serverCol"%s", getName(playerid));
- static Float:vx, Float:vy, Float:vz;
- rentTimer[playerid] = SetTimerEx("rent_TickEnd", rentTime[playerid] * 60000, false, "d", playerid);
- GetVehiclePos(rentVehID[playerid], vx, vy, vz);
- rentLabel[playerid] = CreateDynamic3DTextLabel(rLabel, -1, vx, vy, vz, 15.0, INVALID_PLAYER_ID, rentVehID[playerid]);
- infoMsg(playerid, "Uspjesno ste iznajmili motor na %d minuta za %d$", rentTime[playerid], (bikeCost * rentTime[playerid]));
- }
- }
- }
- case 3: // Auti
- {
- switch(rentChoose[playerid])
- {
- case 1:
- {
- rentTime[playerid] = strval(inputtext);
- static carCost = 50;
- if(GetPlayerMoney(playerid) < carCost * rentTime[playerid])
- {
- errMsg(playerid, "Nemate dovoljno novaca, za to vrijeme renta vam je potrebno %d$", (carCost * rentTime[playerid]) - GetPlayerMoney(playerid));
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- GivePlayerMoney(playerid, -(carCost * rentTime[playerid]));
- rentVehID[playerid] = CreateVehicle(516, x, y, z, 0, 0, 0, 0, 0);
- PutPlayerInVehicle(playerid, rentVehID[playerid], 0);
- rentedVehicle[playerid] = GetPlayerVehicleID(playerid);
- static rLabel[42];
- format(rLabel, sizeof rLabel, "Rent auto - "serverCol"%s", getName(playerid));
- static Float:vx, Float:vy, Float:vz;
- rentTimer[playerid] = SetTimerEx("rent_TickEnd", rentTime[playerid] * 60000, false, "d", playerid);
- GetVehiclePos(rentVehID[playerid], vx, vy, vz);
- rentLabel[playerid] = CreateDynamic3DTextLabel(rLabel, -1, vx, vy, vz, 15.0, INVALID_PLAYER_ID, rentVehID[playerid]);
- infoMsg(playerid, "Uspjesno ste iznajmili auto na %d minuta za %d$", rentTime[playerid], (carCost * rentTime[playerid]));
- }
- case 2:
- {
- rentTime[playerid] = strval(inputtext);
- static carCost = 60;
- if(GetPlayerMoney(playerid) < carCost * rentTime[playerid])
- {
- errMsg(playerid, "Nemate dovoljno novaca, za to vrijeme renta vam je potrebno %d$", (carCost * rentTime[playerid]) - GetPlayerMoney(playerid));
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- GivePlayerMoney(playerid, -(carCost * rentTime[playerid]));
- rentVehID[playerid] = CreateVehicle(527, x, y, z, 0, 0, 0, 0, 0);
- PutPlayerInVehicle(playerid, rentVehID[playerid], 0);
- rentedVehicle[playerid] = GetPlayerVehicleID(playerid);
- static rLabel[42];
- format(rLabel, sizeof rLabel, "Rent auto - "serverCol"%s", getName(playerid));
- static Float:vx, Float:vy, Float:vz;
- rentTimer[playerid] = SetTimerEx("rent_TickEnd", rentTime[playerid] * 60000, false, "d", playerid);
- GetVehiclePos(rentVehID[playerid], vx, vy, vz);
- rentLabel[playerid] = CreateDynamic3DTextLabel(rLabel, -1, vx, vy, vz, 15.0, INVALID_PLAYER_ID, rentVehID[playerid]);
- infoMsg(playerid, "Uspjesno ste iznajmili auto na %d minuta za %d$", rentTime[playerid], (carCost * rentTime[playerid]));
- }
- case 3:
- {
- rentTime[playerid] = strval(inputtext);
- static carCost = 70;
- if(GetPlayerMoney(playerid) < carCost * rentTime[playerid])
- {
- errMsg(playerid, "Nemate dovoljno novaca, za to vrijeme renta vam je potrebno %d$", (carCost * rentTime[playerid]) - GetPlayerMoney(playerid));
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- GivePlayerMoney(playerid, -(carCost * rentTime[playerid]));
- rentVehID[playerid] = CreateVehicle(526, x, y, z, 0, 0, 0, 0, 0);
- PutPlayerInVehicle(playerid, rentVehID[playerid], 0);
- rentedVehicle[playerid] = GetPlayerVehicleID(playerid);
- static rLabel[42];
- format(rLabel, sizeof rLabel, "Rent auto - "serverCol"%s", getName(playerid));
- static Float:vx, Float:vy, Float:vz;
- rentTimer[playerid] = SetTimerEx("rent_TickEnd", rentTime[playerid] * 60000, false, "d", playerid);
- GetVehiclePos(rentVehID[playerid], vx, vy, vz);
- rentLabel[playerid] = CreateDynamic3DTextLabel(rLabel, -1, vx, vy, vz, 15.0, INVALID_PLAYER_ID, rentVehID[playerid]);
- infoMsg(playerid, "Uspjesno ste iznajmili auto na %d minuta za %d$", rentTime[playerid], (carCost * rentTime[playerid]));
- }
- case 4:
- {
- rentTime[playerid] = strval(inputtext);
- static carCost = 80;
- if(GetPlayerMoney(playerid) < carCost * rentTime[playerid])
- {
- errMsg(playerid, "Nemate dovoljno novaca, za to vrijeme renta vam je potrebno %d$", (carCost * rentTime[playerid]) - GetPlayerMoney(playerid));
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- GivePlayerMoney(playerid, -(carCost * rentTime[playerid]));
- rentVehID[playerid] = CreateVehicle(585, x, y, z, 0, 0, 0, 0, 0);
- PutPlayerInVehicle(playerid, rentVehID[playerid], 0);
- rentedVehicle[playerid] = GetPlayerVehicleID(playerid);
- static rLabel[42];
- format(rLabel, sizeof rLabel, "Rent auto - "serverCol"%s", getName(playerid));
- static Float:vx, Float:vy, Float:vz;
- rentTimer[playerid] = SetTimerEx("rent_TickEnd", rentTime[playerid] * 60000, false, "d", playerid);
- GetVehiclePos(rentVehID[playerid], vx, vy, vz);
- rentLabel[playerid] = CreateDynamic3DTextLabel(rLabel, -1, vx, vy, vz, 15.0, INVALID_PLAYER_ID, rentVehID[playerid]);
- infoMsg(playerid, "Uspjesno ste iznajmili auto na %d minuta za %d$", rentTime[playerid], (carCost * rentTime[playerid]));
- }
- case 5:
- {
- rentTime[playerid] = strval(inputtext);
- static carCost = 100;
- if(GetPlayerMoney(playerid) < carCost * rentTime[playerid])
- {
- errMsg(playerid, "Nemate dovoljno novaca, za to vrijeme renta vam je potrebno %d$", (carCost * rentTime[playerid]) - GetPlayerMoney(playerid));
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- return 1;
- }
- GivePlayerMoney(playerid, -(carCost * rentTime[playerid]));
- rentVehID[playerid] = CreateVehicle(565, x, y, z, 0, 0, 0, 0, 0);
- PutPlayerInVehicle(playerid, rentVehID[playerid], 0);
- rentedVehicle[playerid] = GetPlayerVehicleID(playerid);
- static rLabel[42];
- format(rLabel, sizeof rLabel, "Rent auto - "serverCol"%s", getName(playerid));
- static Float:vx, Float:vy, Float:vz;
- rentTimer[playerid] = SetTimerEx("rent_TickEnd", rentTime[playerid] * 60000, false, "d", playerid);
- GetVehiclePos(rentVehID[playerid], vx, vy, vz);
- rentLabel[playerid] = CreateDynamic3DTextLabel(rLabel, -1, vx, vy, vz, 15.0, INVALID_PLAYER_ID, rentVehID[playerid]);
- infoMsg(playerid, "Uspjesno ste iznajmili auto na %d minuta za %d$", rentTime[playerid], (carCost * rentTime[playerid]));
- }
- }
- }
- }
- }
- }
- case d_rentlist:
- {
- if(response)
- {
- new i = getNearestRentStyle(playerid);
- switch(i)
- {
- case 1: // Biciklovi
- {
- switch(listitem)
- {
- case 0:
- {
- rentChoose[playerid] = 1;
- }
- case 1:
- {
- rentChoose[playerid] = 2;
- }
- case 2:
- {
- rentChoose[playerid] = 3;
- }
- }
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- }
- case 2: // Motori
- {
- switch(listitem)
- {
- case 0:
- {
- rentChoose[playerid] = 1;
- }
- case 1:
- {
- rentChoose[playerid] = 2;
- }
- case 2:
- {
- rentChoose[playerid] = 3;
- }
- case 3:
- {
- rentChoose[playerid] = 4;
- }
- }
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- }
- case 3: // Auti
- {
- switch(listitem)
- {
- case 0:
- {
- rentChoose[playerid] = 1;
- }
- case 1:
- {
- rentChoose[playerid] = 2;
- }
- case 2:
- {
- rentChoose[playerid] = 3;
- }
- case 3:
- {
- rentChoose[playerid] = 4;
- }
- case 4:
- {
- rentChoose[playerid] = 5;
- }
- }
- ShowPlayerDialog(playerid, d_renttime, DIALOG_STYLE_INPUT, ""sName"Rent vrijeme", ""whiteCol"U ovaj prazan dijalog unesite na koliko minuta zelite iznajmiti vozilo\n\
- "whiteCol"Rent vrijeme "serverCol"ne moze biti krace od 5 i duze od 30 minuta", "Unos", "X");
- }
- }
- }
- }
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(rentedVehicle[playerid] != 0)
- {
- KillTimer(rentTimer[playerid]);
- DestroyVehicle(rentVehID[playerid]);
- DestroyDynamic3DTextLabel(rentLabel[playerid]);
- rentedVehicle[playerid] = -1;
- rentTime[playerid] = 0;
- rentVehID[playerid] = -1;
- rentChoose[playerid] = 0;
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(PRESSED(KEY_SECONDARY_ATTACK))
- {
- if(findNearestRent(playerid) != -1)
- {
- if(rentedVehicle[playerid] != 0)
- return errMsg(playerid, "Vec ste iznajmili vozilo");
- new i = getNearestRentStyle(playerid);
- switch(i)
- {
- case 1:
- {
- ShowPlayerDialog(playerid, d_rentlist, DIALOG_STYLE_LIST, ""sName"Odabir biciklova", "ID 509 - Bike\nID 510 - Mountain bike\nID 481 - BMX", "Odabir", "X");
- }
- case 2:
- {
- ShowPlayerDialog(playerid, d_rentlist, DIALOG_STYLE_LIST, ""sName"Odabir motora", "ID 462 - Faggio\nID 461 - PCJ-600\nID 521 - FCR-900\nID 522 - NRG-500", "Odabir", "X");
- }
- case 3:
- {
- ShowPlayerDialog(playerid, d_rentlist, DIALOG_STYLE_LIST, ""sName"Odabir auta", "ID 516 - Nebula\nID 527 - Cadrona\nID 526 - Fortune\nID 585 - Emperor\nID 565 - Flash", "Odabir", "X");
- }
- }
- }
- }
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- if(newstate == PLAYER_STATE_DRIVER)
- {
- if(rentedVehicle[playerid] != GetPlayerVehicleID(playerid))
- {
- RemovePlayerFromVehicle(playerid);
- errMsg(playerid, "To vozilo vi niste iznajmili");
- }
- }
- return 1;
- }
- //==============================================================
- // Timers tick
- public rent_TickEnd(const playerid)
- {
- DestroyVehicle(rentVehID[playerid]);
- DestroyDynamic3DTextLabel(rentLabel[playerid]);
- rentedVehicle[playerid] = -1;
- rentTime[playerid] = 0;
- rentVehID[playerid] = -1;
- rentChoose[playerid] = 0;
- infoMsg(playerid, "Vrijeme za vase rent vozilo je isteklo");
- return 1;
- }
- //==============================================================
- // MySQL functions
- public rent_LoadRents()
- {
- if(!cache_num_rows())
- return 1;
- for(new i = 0; i < cache_num_rows(); i++)
- {
- cache_get_value_name_int(i, "rent_id", rentInfo[i][rent_id]);
- cache_get_value_name_int(i, "rent_style", rentInfo[i][rent_style]);
- cache_get_value_name_float(i, "rent_x", rentInfo[i][rent_x]);
- cache_get_value_name_float(i, "rent_y", rentInfo[i][rent_y]);
- cache_get_value_name_float(i, "rent_z", rentInfo[i][rent_z]);
- static tempStyle[10];
- if(rentInfo[i][rent_style] == 1) tempStyle = "Biciklovi";
- else if(rentInfo[i][rent_style] == 2) tempStyle = "Motori";
- else tempStyle = "Auti";
- static rentStr[110];
- format(rentStr, sizeof rentStr, ""serverCol"[ RENT - %s ]\n"whiteCol"Da iznajmite vozilo, pritisnite "serverCol"F", tempStyle);
- rentInfo[i][rent_id] = CreateDynamicPickup(19132, 1, rentInfo[i][rent_x], rentInfo[i][rent_y], rentInfo[i][rent_z], 0);
- rentInfo[i][rent_label] = CreateDynamic3DTextLabel(rentStr, -1, rentInfo[i][rent_x], rentInfo[i][rent_y], rentInfo[i][rent_z], 15.0);
- }
- printf("\nRENT SYSTEM\n===============================\nUcitano %d rent pickupova", cache_num_rows());
- return 1;
- }
- //==============================================================
- // PawnCMD commands (Player)
- CMD:unrent(playerid)
- {
- if(rentedVehicle[playerid] == 0)
- return errMsg(playerid, "Niste iznajmili vozilo");
- DestroyVehicle(rentVehID[playerid]);
- DestroyDynamic3DTextLabel(rentLabel[playerid]);
- rentedVehicle[playerid] = 0;
- rentTime[playerid] = 0;
- rentVehID[playerid] = -1;
- rentChoose[playerid] = 0;
- KillTimer(rentTimer[playerid]);
- infoMsg(playerid, "Vratili ste vase iznajmljeno vozilo");
- return 1;
- }
- //==============================================================
- // PawnCMD commands (RCON)
- CMD:rentcreate(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- return errMsg(playerid, "Samo RCON admin");
- new Float:x, Float:y, Float:z, i = nextRentID();
- static rentStyle;
- if(sscanf(params, "d", rentStyle))
- return usgMsg(playerid, "/rentcreate [Stil renta (1 - Biciklovi, 2 - Motori, 3 - Auti) ]");
- if(rentStyle < 1 || rentStyle > 3)
- return errMsg(playerid, "Pogresan odabir (1 - 3)");
- GetPlayerPos(playerid, x, y, z);
- static tempStyle[12];
- if(rentStyle == 1) tempStyle = "Biciklovi";
- else if(rentStyle == 2) tempStyle = "Motori";
- else tempStyle = "Auti";
- static rentStr[110];
- format(rentStr, sizeof rentStr, ""serverCol"[ RENT - %s ]\n"whiteCol"Da iznajmite vozilo, pritisnite "serverCol"F", tempStyle);
- rentInfo[i][rent_id] = CreateDynamicPickup(19132, 1, x, y, z, 0);
- rentInfo[i][rent_label] = CreateDynamic3DTextLabel(rentStr, -1, x, y, z, 15.0);
- rentInfo[i][rent_x] = x;
- rentInfo[i][rent_y] = y;
- rentInfo[i][rent_z] = z;
- rentInfo[i][rent_style] = rentStyle;
- static query[140];
- mysql_format(sql, query, sizeof query, "INSERT INTO rents (rent_id, rent_style, rent_x, rent_y, rent_z)\
- VALUES ('%d', '%d', '%f', '%f', '%f')",\
- rentInfo[i][rent_id], rentInfo[i][rent_style], rentInfo[i][rent_x], rentInfo[i][rent_y], rentInfo[i][rent_z]);
- mysql_tquery(sql, query);
- infoMsg(playerid, "Uspjesno ste kreirali rent pickup na trenutnoj poziciji");
- return 1;
- }
- CMD:rentremove(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- return errMsg(playerid, "Samo RCON admin");
- new i = findNearestRent(playerid);
- if(i == -1)
- return errMsg(playerid, "Morate biti blizu rent pickup-a");
- DestroyDynamicPickup(rentInfo[i][rent_id]);
- DestroyDynamic3DTextLabel(rentInfo[i][rent_label]);
- static query[128];
- mysql_format(sql, query, sizeof query, "DELETE FROM rents WHERE rent_id = '%d'", rentInfo[i][rent_id]);
- mysql_tquery(sql, query);
- rentInfo[i][rent_x] = 0.0;
- rentInfo[i][rent_y] = 0.0;
- rentInfo[i][rent_z] = 0.0;
- infoMsg(playerid, "Uspjesno ste obrisali rent pickup");
- return 1;
- }
- //==============================================================
- // Plain functions
- getNearestRentStyle(const playerid)
- {
- new i = findNearestRent(playerid);
- return rentInfo[i][rent_style];
- }
- findNearestRent(const playerid)
- {
- for(new i = 0; i < maxRents; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.5, rentInfo[i][rent_x], rentInfo[i][rent_y], rentInfo[i][rent_z]))
- return i;
- }
- return -1;
- }
- nextRentID()
- {
- new id = -1;
- for(new i = 0; i < maxRents; i++)
- {
- if(rentInfo[i][rent_x] == 0.0 && rentInfo[i][rent_y] == 0.0)
- {
- id = i;
- break;
- }
- }
- return id;
- }
- getName(const playerid)
- {
- static name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof name);
- return name;
- }
- SendClientMessageEx(playerid, color, const form[], {Float, _}: ...)
- {
- #pragma unused form
- static
- tmp[145]
- ;
- new
- t1 = playerid,
- t2 = color
- ;
- const
- n4 = -4,
- n16 = -16,
- size = sizeof tmp
- ;
- #emit stack 28
- #emit push.c size
- #emit push.c tmp
- #emit stack n4
- #emit sysreq.c format
- #emit stack n16
- return SendClientMessage(t1, t2, tmp);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement