Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include < a_samp >
- #include < a_mysql >
- #include < foreach >
- #include < Pawn.CMD >
- #include < sscanf2 >
- #define MYSQL_HOST "127.0.0.1"
- #define MYSQL_USER "root"
- #define MYSQL_PASSWORD ""
- #define MYSQL_DATABASE "rentcars"
- #define MAX_RENTCARS 500
- enum {
- DIALOG_RENT
- }
- enum RENT_INFO {
- Float:rentX,
- Float:rentY,
- Float:rentZ,
- Float:rentA,
- rentBoja1,
- rentBoja2,
- rentPare,
- bool:rentZauzet,
- rentVehID,
- Text3D:rentLabel,
- rentID,
- rSqlID
- }
- new MySQL:g_SQL, RentInfo[ MAX_RENTCARS ][ RENT_INFO ], Iterator:ServerRents<MAX_RENTCARS>, TipVozila[ MAX_VEHICLES ],
- IznajmioVozilo[ MAX_PLAYERS ], TimerRent[ MAX_PLAYERS ], VremeRenta[ MAX_PLAYERS ], bool:TraziRent[ MAX_PLAYERS ];
- public OnFilterScriptInit() {
- new MySQLOpt: option_id = mysql_init_options();
- g_SQL = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, option_id);
- if (g_SQL == MYSQL_INVALID_HANDLE || mysql_errno(g_SQL) != 0)
- {
- print("MySQL konekcija neuspesna. Proverite podatke i databazu");
- SendRconCommand("exit");
- return 1;
- }
- print("MySQL konekcija, uspesna");
- mysql_tquery(g_SQL, "SELECT * FROM `rentovi`", "LoadRents", "");
- mysql_tquery(g_SQL, "CREATE TABLE IF NOT EXISTS `rentovi` (`id` int(11), `Veh_ID` int(3) NOT NULL, `X` float NOT NULL,`Y` float NOT NULL,`Z` float NOT NULL, `A` float NOT NULL, `Boja_1` int(3) NOT NULL, `Boja_2` int(3) NOT NULL, `Iznos_Novca_Po_Minuti` int(5) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`))");
- return 1;
- }
- public OnPlayerConnect(playerid) {
- IznajmioVozilo[ playerid ] = -1;
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
- switch(dialogid) {
- case DIALOG_RENT: {
- if(!response) {
- TogglePlayerControllable(playerid, true);
- RemovePlayerFromVehicle(playerid);
- return 1;
- }
- if(GetPlayerMoney(playerid) < RentInfo[ RentInfo[ GetPlayerVehicleID(playerid) ][ rSqlID ] ][ rentPare ]*strval(inputtext)) {
- new str[ 45 ];
- SendClientMessage(playerid, 0xFF1414FF, "[GRESKA] {FFFFFF}Nemate toliko novca.");
- format(str, sizeof(str), "Unesite vreme iznamljivanja.\n1 minut = %d$", RentInfo[ GetPlayerVehicleID(playerid) ][ rentPare ]);
- ShowPlayerDialog(playerid, DIALOG_RENT, DIALOG_STYLE_INPUT, "{0077C7}Rent Vozila", str, "U redu", "Izlaz");
- return 1;
- }
- IznajmioVozilo[ playerid ] = GetPlayerVehicleID(playerid);
- RentInfo[ RentInfo[ GetPlayerVehicleID(playerid) ][ rSqlID ] ][ rentZauzet ] = true;
- Update3DTextLabelText(RentInfo[ RentInfo[ GetPlayerVehicleID(playerid) ][ rSqlID ] ][ rentLabel ], 0xFFFFFFFF, "[ RENT ]\n{FF1414}<< ZAUZETO >>");
- TogglePlayerControllable(playerid, true);
- GivePlayerMoney(playerid, -RentInfo[ RentInfo[ GetPlayerVehicleID(playerid) ][ rSqlID ] ][ rentPare ]*strval(inputtext));
- VremeRenta[ playerid ] = strval(inputtext);
- TimerRent[ playerid ] = SetTimerEx("RentTimer", 60000, true, "i", playerid);
- SendClientMessage(playerid, 0x0077C7FF, "Uspesno ste iznajmili vozilo.");
- SendClientMessage(playerid, 0x0077C7FF, "Da pronadjete svoje vozilo, kucajte /findrent.");
- }
- }
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate) {
- if(newstate == PLAYER_STATE_DRIVER && TipVozila[ GetPlayerVehicleID(playerid) ] == 1) {
- if(RentInfo[ GetPlayerVehicleID(playerid) ][ rentZauzet ] && IznajmioVozilo[ playerid ] != GetPlayerVehicleID(playerid)) {
- RemovePlayerFromVehicle(playerid);
- SendClientMessage(playerid, 0xFF1414FF, "[GRESKA] {FFFFFF}To vozilo je neko iznajmio.");
- return 1;
- }
- else if(!RentInfo[ GetPlayerVehicleID(playerid) ][ rentZauzet ] && IznajmioVozilo[ playerid ] != GetPlayerVehicleID(playerid) && IznajmioVozilo[ playerid ] != -1) {
- RemovePlayerFromVehicle(playerid);
- SendClientMessage(playerid, 0xFF1414FF, "[GRESKA] {FFFFFF}Vec ste iznajmili vozilo.");
- return 1;
- }
- else if(!RentInfo[ GetPlayerVehicleID(playerid) ][ rentZauzet ] && IznajmioVozilo[ playerid ] == -1) {
- TogglePlayerControllable(playerid, false);
- SendClientMessage(playerid, 0x0077C7FF, "Da iznajmite vozilo, kucajte /rent");
- SendClientMessage(playerid, 0x0077C7FF, "Da izadjete iz vozila, pritisnite ENTER.");
- return 1;
- }
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
- if(newkeys == KEY_SECONDARY_ATTACK && TipVozila[ GetPlayerVehicleID(playerid) ] == 1 && IznajmioVozilo[ playerid ] == -1) {
- RemovePlayerFromVehicle(playerid);
- TogglePlayerControllable(playerid, true);
- return 1;
- }
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid) {
- if(TraziRent[ playerid ]) {
- DisablePlayerCheckpoint(playerid);
- TraziRent[ playerid ] = false;
- }
- return 1;
- }
- forward LoadRents();
- public LoadRents() {
- new rows = cache_num_rows();
- if(rows) {
- for(new i; i < rows; i++) {
- new id = Iter_Free(ServerRents);
- cache_get_value_name_float(i, "X", RentInfo[ id ][ rentX ]);
- cache_get_value_name_float(i, "Y", RentInfo[ id ][ rentY ]);
- cache_get_value_name_float(i, "Z", RentInfo[ id ][ rentZ ]);
- cache_get_value_name_float(i, "A", RentInfo[ id ][ rentA ]);
- cache_get_value_name_int(i, "Veh_ID", RentInfo[ id ][ rentVehID ]);
- cache_get_value_name_int(i, "Boja_1", RentInfo[ id ][ rentBoja1 ]);
- cache_get_value_name_int(i, "Boja_2", RentInfo[ id ][ rentBoja2 ]);
- cache_get_value_name_int(i, "Iznos_Novca_Po_Minuti", RentInfo[ id ][ rentPare ]);
- cache_get_value_name_int(i, "id", RentInfo[ id ][ rSqlID ]);
- RentInfo[ id ][ rentID ] = CreateVehicle(RentInfo[ id ][ rentVehID ], RentInfo[ id ][ rentX ], RentInfo[ id ][ rentY ], RentInfo[ id ][ rentZ ], RentInfo[ id ][ rentA ], RentInfo[ id ][ rentBoja1 ], RentInfo[ id ][ rentBoja2 ], -1);
- RentInfo[ id ][ rentLabel ] = Create3DTextLabel("[ RENT ]\n{1AEA00}>> SLOBODNO <<", 0xFFFFFFFF, 0.0, 0.0, 0.0, 10.0, 0);
- Attach3DTextLabelToVehicle(RentInfo[ id ][ rentLabel ], RentInfo[ id ][ rentID ], 0.0, 0.0, 0.0);
- TipVozila[ RentInfo[ id ][ rentID ] ] = 1;
- Iter_Add(ServerRents, id);
- }
- }
- return 1;
- }
- forward RentTimer(playerid);
- public RentTimer(playerid) {
- VremeRenta[ playerid ]--;
- if(VremeRenta[ playerid ] == 0) {
- SetVehicleToRespawn(IznajmioVozilo[ playerid ]);
- Update3DTextLabelText(RentInfo[ IznajmioVozilo[ playerid ] ][ rentLabel ], 0xFFFFFFFF, "[ RENT ]\n{1AEA00}>> SLOBODNO <<");
- RentInfo[ IznajmioVozilo[ playerid ] ][ rentZauzet ] = false;
- IznajmioVozilo[ playerid ] = -1;
- SendClientMessage(playerid, 0x0077C7FF, "Isteklo Vam je vreme iznamljivanja vozila.");
- TraziRent[ playerid ] = false;
- DisablePlayerCheckpoint(playerid);
- KillTimer(TimerRent[ playerid ]);
- }
- return 1;
- }
- CMD:kreirajrent(playerid, params[]) {
- new boja1, boja2, pare, i = Iter_Free(ServerRents), query[ 500 ], vid, Float:X, Float:Y, Float:Z, Float:A;
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF1414FF, "[GRESKA] {FFFFFF}Niste RCON admin.");
- if(sscanf(params, "dddd", boja1, boja2, pare, vid)) return SendClientMessage(playerid, 0x0077C7FF, "[UPOTREBA] {FFFFFF}/kreirajrent [Boja 1] [Boja 2] [Iznos novca po minuti iznamljivanja] [Veh ID]");
- GetPlayerPos(playerid, X,Y,Z);
- GetPlayerFacingAngle(playerid, A);
- RentInfo[ i ][ rentBoja1 ] = boja1;
- RentInfo[ i ][ rentBoja2 ] = boja2;
- RentInfo[ i ][ rentPare ] = pare;
- RentInfo[ i ][ rentVehID ] = vid;
- RentInfo[ i ][ rentX ] = X;
- RentInfo[ i ][ rentY ] = Y;
- RentInfo[ i ][ rentZ ] = Z;
- RentInfo[ i ][ rentA ] = A;
- RentInfo[ i ][ rSqlID ] = i;
- RentInfo[ i ][ rentID ] = CreateVehicle(vid, X, Y, Z, A, boja1, boja2, -1);
- RentInfo[ i ][ rentLabel ] = Create3DTextLabel("[ RENT ]\n{1AEA00}>> SLOBODNO <<", 0xFFFFFFFF, X, Y, Z, 10.0, 0);
- printf("[Debug 3] ID: %d", i);
- Attach3DTextLabelToVehicle(RentInfo[ i ][ rentLabel ], RentInfo[ i ][ rentID ], 0.0, 0.0, 0.0);
- PutPlayerInVehicle(playerid, RentInfo[ i ][ rentID ], 1);
- TipVozila[ RentInfo[ i ][ rentID ] ] = 1;
- mysql_format(g_SQL, query, sizeof query, "INSERT INTO `rentovi` (`id`, `X`, `Y`, `Z`, `A`, `Boja_1`, `Boja_2`, `Veh_ID`, `Iznos_Novca_Po_Minuti`) VALUES ('%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d', '%d')", i, X, Y, Z, A, boja1, boja2, vid, pare);
- mysql_tquery(g_SQL, query);
- Iter_Add(ServerRents, i);
- printf("[Debug 2] Pare: %d", pare);
- printf("[Debug 4] ID: %d", i);
- return 1;
- }
- CMD:izbrisirent(playerid, params[]) {
- if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFF1414FF, "[GRESKA] {FFFFFF}Niste u vozilu.");
- if(TipVozila[ GetPlayerVehicleID(playerid) ] != 1) return SendClientMessage(playerid, 0xFF1414FF, "[GRESKA] {FFFFFF}To vozilo nije za iznamljivanje.");
- new query[ 140 ];
- RentInfo[ GetPlayerVehicleID(playerid) ][ rentX ] = 0.0;
- RentInfo[ GetPlayerVehicleID(playerid) ][ rentY ] = 0.0;
- RentInfo[ GetPlayerVehicleID(playerid) ][ rentZ ] = 0.0;
- RentInfo[ GetPlayerVehicleID(playerid) ][ rentA ] = 0.0;
- mysql_format(g_SQL, query, sizeof query,"DELETE FROM `rentovi` WHERE `id` = %d", RentInfo[ GetPlayerVehicleID(playerid) ][ rSqlID ]);
- mysql_tquery(g_SQL, query);
- DestroyVehicle(GetPlayerVehicleID(playerid));
- Delete3DTextLabel(RentInfo[ GetPlayerVehicleID(playerid) ][ rentLabel ]);
- Iter_Remove(ServerRents, RentInfo[ GetPlayerVehicleID(playerid) ][ rSqlID ]);
- return 1;
- }
- CMD:rent(playerid, params[]) {
- if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFF1414FF, "[GRESKA] {FFFFFF}Niste u vozilu.");
- if(TipVozila[ GetPlayerVehicleID(playerid) ] != 1) return SendClientMessage(playerid, 0xFF1414FF, "[GRESKA] {FFFFFF}To vozilo nije za iznamljivanje.");
- if(RentInfo[ GetPlayerVehicleID(playerid) ][ rentZauzet ]) return SendClientMessage(playerid, 0xFF1414FF, "[GRESKA] {FFFFFF}To vozilo je vec iznamljeno.");
- if(IznajmioVozilo[ playerid ] != -1) return SendClientMessage(playerid, 0xFF1414FF, "[GRESKA] {FFFFFF}Vec ste iznajmili vozilo, koristite /unrent");
- new str[ 45 ];
- format(str, sizeof(str), "Unesite vreme iznamljivanja.\n1 minut = %d$", RentInfo[ RentInfo[ GetPlayerVehicleID(playerid) ][ rSqlID ] ][ rentPare ]);
- ShowPlayerDialog(playerid, DIALOG_RENT, DIALOG_STYLE_INPUT, "{0077C7}Rent Vozila", str, "U redu", "Izlaz");
- printf("[Debug 1] Pare: %d", RentInfo[ GetPlayerVehicleID(playerid) ][ rentPare ]);
- printf("[Debug 5] ID: %d", GetPlayerVehicleID(playerid));
- return 1;
- }
- CMD:unrent(playerid, params[]) {
- if(IznajmioVozilo[ playerid ] == -1) return SendClientMessage(playerid, 0xFF1414FF, "[GRESKA] {FFFFFF}Niste iznajmili vozilo.");
- new str[ 55 ];
- SetVehicleToRespawn(IznajmioVozilo[ playerid ]);
- Update3DTextLabelText(RentInfo[ IznajmioVozilo[ playerid ] ][ rentLabel ], 0xFFFFFFFF, "[ RENT ]\n{1AEA00}>> SLOBODNO <<");
- RentInfo[ IznajmioVozilo[ playerid ] ][ rentZauzet ] = false;
- format(str, sizeof(str), "Vratili ste iznamljeno vozilo te Vam je vraceno %d$", VremeRenta[ playerid ]*RentInfo[ RentInfo[ GetPlayerVehicleID(playerid) ][ rSqlID ] ][ rentPare ]);
- SendClientMessage(playerid, 0x0077C7FF, str);
- TraziRent[ playerid ] = false;
- DisablePlayerCheckpoint(playerid);
- GivePlayerMoney(playerid, VremeRenta[ playerid ]*RentInfo[ RentInfo[ GetPlayerVehicleID(playerid) ][ rSqlID ] ][ rentPare ]);
- VremeRenta[ playerid ] = 0;
- IznajmioVozilo[ playerid ] = -1;
- KillTimer(TimerRent[ playerid ]);
- return 1;
- }
- CMD:findrent(playerid, params[]) {
- if(IznajmioVozilo[ playerid ] == -1) return SendClientMessage(playerid, 0xFF1414FF, "[GRESKA] {FFFFFF}Niste iznajmili vozilo.");
- new Float:X, Float:Y, Float:Z;
- GetVehiclePos(IznajmioVozilo[ playerid ], X,Y,Z);
- SetPlayerCheckpoint(playerid, X,Y,Z, 3.0);
- TraziRent[ playerid ] = true;
- SendClientMessage(playerid, 0x0077C7FF, "Vase rent vozilo Vam je oznaceno crveno na mapi.");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement