Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /////////////////////////////////////
- // //
- // Quis Dynamic Houses System //
- // Dynamiczny system domów by Quis //
- // Wersja 1.1 z ikonkami //
- // //
- /////////////////////////////////////
- /*
- Poniższy skrypt jest efektem mojej kilkugodzinnej pracy. Proszę Cię drogi użytkowniku tego skryptu żebyś o mnie pamiętał, gdy
- będziesz go komukolwiek udostępniać. Nie zmieniaj autora.
- */
- #define FILTERSCRIPT
- //Biblioteki
- #include <a_samp>
- #include <sscanf2>
- #include <streamer>
- #include <zcmd>
- //Definicje ID okienek GUI
- #define DIALOG_HOUSE_HELP 7777
- #define DIALOG_HOUSE_OWNER 7778
- #define DIALOG_HOUSE_BUY 7779
- #define DIALOG_HOUSE_SELL 7780
- //Definicje kolorów
- #define RED 0xFF0000FF
- #define LIGHTGREEN 0x80FF00FF
- #define LIGHTBLUE 0x00FFFFFF
- #define WHITE_E "{FFFFFF}"
- //Inne definicje
- #define PRESSED(%0) \
- (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
- #define INVALID_HOUSE_ID 0
- #define MAX_HOUSES 200
- new hPickup[MAX_HOUSES];
- new Text3D:hLabel[MAX_HOUSES];
- new bool:hLocked[MAX_HOUSES];
- new hIcon[MAX_HOUSES];
- //Zmienne
- new DB:housesDB;
- //Callbacki
- public OnFilterScriptInit()
- {
- DisableInteriorEnterExits();
- housesDB = db_open("QuisHouses.db");
- db_query(housesDB, "CREATE TABLE IF NOT EXISTS `houses` (`HouseID` INT(20), `Name` VARCHAR(100), `Price` INT(20), `Owner` VARCHAR(30), `Interior` SMALLINT(3), `PosX` DECIMAL(10,6), `PosY` DECIMAL(10,6), `PosZ` DECIMAL(10,6))");
- LoadHouses();
- print(" Quis House System v1.1 (z ikonkami) zostal zaladowany!");
- return 1;
- }
- public OnFilterScriptExit()
- {
- db_close(housesDB);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- SetPVarInt(playerid, "InHouse", INVALID_HOUSE_ID);
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(PRESSED(KEY_SPRINT) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
- {
- if(GetPVarInt(playerid, "InHouse") == INVALID_HOUSE_ID)
- {
- new houseid = GetHouse(playerid);
- if(houseid == INVALID_HOUSE_ID)
- return 1;
- new houseOwner[30], playerName[MAX_PLAYER_NAME];
- GetHouseOwner(houseid, houseOwner);
- GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);
- if(houseOwner[0] == '0')
- {
- SendClientMessage(playerid, RED, "Kup ten dom, aby uzyskać do niego dostęp.");
- return 1;
- }
- if(strcmp(playerName, houseOwner) != 0 && hLocked[houseid])
- {
- SendClientMessage(playerid, RED, "Drzwi do domu są zamknięte.");
- return 1;
- }
- new interior = GetHouseInterior(houseid);
- if(!interior)
- return 1;
- new Float:insidePos[4];
- GetInteriorInsidePos(interior, insidePos[0], insidePos[1], insidePos[2], insidePos[3]);
- SetPlayerVirtualWorld(playerid, playerid+1);
- SetPlayerInterior(playerid, interior);
- SetPlayerPos(playerid, insidePos[0], insidePos[1], insidePos[2]);
- SetPlayerFacingAngle(playerid, insidePos[3]);
- SetPVarInt(playerid, "InHouse", houseid);
- }
- else
- {
- new houseid = GetPVarInt(playerid, "InHouse");
- new interior = GetHouseInterior(houseid);
- if(GetPlayerInterior(playerid) != interior)
- {
- SetPVarInt(playerid, "InHouse", INVALID_HOUSE_ID);
- return 1;
- }
- new Float:insidePos[4];
- GetInteriorInsidePos(interior, insidePos[0], insidePos[1], insidePos[2], insidePos[3]);
- if(!IsPlayerInRangeOfPoint(playerid, 2.5, insidePos[0], insidePos[1], insidePos[2]))
- return 1;
- new Float:housePos[3];
- GetHousePos(houseid, housePos[0], housePos[1], housePos[2]);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- SetPlayerPos(playerid, housePos[0], housePos[1], housePos[2]);
- SetCameraBehindPlayer(playerid);
- }
- }
- return 1;
- }
- CMD:dompomoc(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_MSGBOX, "House System by Quis", WHITE_E"Na serwerze znajduje się wiele domów, które możesz kupić.\nWystarczy że podejdziesz pod takim dom i użyjesz komendy /dom.\nWtedy z Twojego konta automatycznie zostanie pobrana odpowiednia kwota,\na Ty staniesz się właścicielem domu. W późniejszym czasie możesz go także\nsprzedać, jednakże otrzymasz tylko połowę wydanych wcześniej pieniędzy.\nSłuży do tego komenda ta sama komenda, co do kupna.", "OK", "");
- else
- ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_MSGBOX, "House System by Quis", WHITE_E"Komendy administratora systemu domów:\n/addhouse - tworzy nowy dom\n/removehouse - usuwa utworzony dom\n/housename - zmienia nazwę domu\n/houseprice - zmienia cenę domu\n/houseinterior - zmienia interior domu\n/housepos - zmienia pozycję wejścia do domu\n/houseteleport - umożlwia Ci przeniesienie się do domu", "OK", "");
- return 1;
- }
- CMD:addhouse(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- {
- SendClientMessage(playerid, RED, "Nie masz uprawnień do tworzenia domów.");
- return 1;
- }
- if(CountHouses() >= (MAX_HOUSES-1))
- {
- SendClientMessage(playerid, RED, "Został osiągnięty limit domów. Zwiększ wartość 'MAX_HOUSES' w skrypcie, żeby go zdjąć.");
- return 1;
- }
- new price, interior, name[100];
- if(sscanf(params, "dds[100]", price, interior, name))
- {
- SendClientMessage(playerid, RED, "Prawidłowe użycie: /addhouse [Cena] [Interior] [Nazwa]");
- return 1;
- }
- if(!IsValidInterior(interior))
- {
- SendClientMessage(playerid, RED, "Podany interior jest nieprawidłowy.");
- SendClientMessage(playerid, LIGHTGREEN, "Prawidłowe ID interiorów: 1, 2, 3, 7, 8, 10");
- return 1;
- }
- new houseid = GetFreeHouseID();
- if(houseid == -1)
- {
- SendClientMessage(playerid, RED, "Wystąpił nieoczekiwany błąd.");
- return 1;
- }
- new Float:playerPos[3];
- GetPlayerPos(playerid, playerPos[0], playerPos[1], playerPos[2]);
- new query[256];
- format(query, sizeof query, "INSERT INTO `houses` VALUES('%d', '%s', '%d', '0', '%d', '%f', '%f', '%f')", houseid, name, price, interior, playerPos[0], playerPos[1], playerPos[2]);
- db_query(housesDB, query);
- new str[128];
- format(str, sizeof str, "%s\nCena: $%d\n(Użyj /dom aby kupić)", name, price);
- hLabel[houseid] = CreateDynamic3DTextLabel(str, LIGHTGREEN, playerPos[0], playerPos[1], playerPos[2]+0.5, 50.0);
- hPickup[houseid] = CreateDynamicPickup(1273, 1, playerPos[0], playerPos[1], playerPos[2], 0);
- hIcon[houseid] = CreateDynamicMapIcon(playerPos[0], playerPos[1], playerPos[2], 31, RED);
- hLocked[houseid] = false;
- new msg[128];
- format(msg, sizeof msg, "Numer ID utworzonego domu to %d.", houseid);
- SendClientMessage(playerid, LIGHTBLUE, msg);
- return 1;
- }
- CMD:removehouse(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- {
- SendClientMessage(playerid, RED, "Nie masz uprawnień do usuwania domów.");
- return 1;
- }
- new houseid;
- if(sscanf(params, "d", houseid))
- {
- SendClientMessage(playerid, RED, "Prawidłowe użycie: /removehouse [ID domu]");
- return 1;
- }
- if(!IsValidHouse(houseid))
- {
- SendClientMessage(playerid, RED, "Nie znaleziono takiego domu.");
- return 1;
- }
- new houseName[100];
- GetHouseName(houseid, houseName);
- new query[128];
- format(query, sizeof query, "DELETE FROM `houses` WHERE `HouseID`='%d'", houseid);
- db_query(housesDB, query);
- DestroyDynamic3DTextLabel(hLabel[houseid]);
- DestroyDynamicPickup(hPickup[houseid]);
- DestroyDynamicMapIcon(hIcon[houseid]);
- new msg[128];
- format(msg, sizeof msg, "Dom %s (ID %d) został usunięty!", houseName, houseid);
- SendClientMessage(playerid, LIGHTBLUE, msg);
- return 1;
- }
- CMD:housename(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- {
- SendClientMessage(playerid, RED, "Nie masz uprawnień do zmieniania nazw domów.");
- return 1;
- }
- new houseid, name[100];
- if(sscanf(params, "ds[100]", houseid, name))
- {
- SendClientMessage(playerid, RED, "Prawidłowe użycie: /housename [ID domu] [Nowa nazwa]");
- return 1;
- }
- if(!IsValidHouse(houseid))
- {
- SendClientMessage(playerid, RED, "Nie znaleziono takiego domu.");
- return 1;
- }
- new query[128];
- format(query, sizeof query, "UPDATE `houses` SET `Name`='%s' WHERE `HouseID`='%d'", name, houseid);
- db_query(housesDB, query);
- new houseOwner[30];
- GetHouseOwner(houseid, houseOwner);
- new str[128];
- if(houseOwner[0] == '0')
- format(str, sizeof str, "%s\nCena: $%d\n(Użyj /dom aby kupić)", name, GetHousePrice(houseid));
- else
- format(str, sizeof str, "%s\nWłaściciel: %s\n(Wciśnij spację aby wejść)", name, houseOwner);
- UpdateDynamic3DTextLabelText(hLabel[houseid], LIGHTGREEN, str);
- new msg[128];
- format(msg, sizeof msg, "Nazwa domu o ID %d została zmieniona! Nowa nazwa: %s", houseid, name);
- SendClientMessage(playerid, LIGHTBLUE, msg);
- return 1;
- }
- CMD:houseprice(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- {
- SendClientMessage(playerid, RED, "Nie masz uprawnień do zmieniania cen domów.");
- return 1;
- }
- new houseid, price;
- if(sscanf(params, "dd", houseid, price))
- {
- SendClientMessage(playerid, RED, "Prawidłowe użycie: /houseprice [ID domu] [Nowa cena]");
- return 1;
- }
- if(!IsValidHouse(houseid))
- {
- SendClientMessage(playerid, RED, "Nie znaleziono takiego domu.");
- return 1;
- }
- new query[128];
- format(query, sizeof query, "UPDATE `houses` SET `Price`='%d' WHERE `HouseID`='%d'", price, houseid);
- db_query(housesDB, query);
- new houseName[100], houseOwner[30];
- GetHouseName(houseid, houseName);
- GetHouseOwner(houseid, houseOwner);
- if(houseOwner[0] == '0')
- {
- new str[128];
- format(str, sizeof str, "%s\nCena: $%d\n(Użyj /dom aby kupić)", houseName, price);
- UpdateDynamic3DTextLabelText(hLabel[houseid], LIGHTGREEN, str);
- }
- new msg[128];
- format(msg, sizeof msg, "Cena domu %s (ID %d) została zmieniona! Nowa cena: $%d", houseName, houseid, price);
- SendClientMessage(playerid, LIGHTBLUE, msg);
- return 1;
- }
- CMD:houseinterior(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- {
- SendClientMessage(playerid, RED, "Nie masz uprawnień do zmieniania interiorów domów.");
- return 1;
- }
- new houseid, interior;
- if(sscanf(params, "dd", houseid, interior))
- {
- SendClientMessage(playerid, RED, "Prawidłowe użycie: /houseinterior [ID domu] [Nowy interior]");
- return 1;
- }
- if(!IsValidHouse(houseid))
- {
- SendClientMessage(playerid, RED, "Nie znaleziono takiego domu.");
- return 1;
- }
- if(!IsValidInterior(interior))
- {
- SendClientMessage(playerid, RED, "Podany interior jest nieprawidłowy.");
- SendClientMessage(playerid, LIGHTGREEN, "Prawidłowe ID interiorów: 1, 2, 3, 7, 8, 10");
- return 1;
- }
- new query[128];
- format(query, sizeof query, "UPDATE `houses` SET `Interior`='%d' WHERE `HouseID`='%d'", interior, houseid);
- db_query(housesDB, query);
- new houseName[100];
- GetHouseName(houseid, houseName);
- new msg[128];
- format(msg, sizeof msg, "Interior domu %s (ID %d) został zmieniony! Nowy interior: %d", houseName, houseid, interior);
- SendClientMessage(playerid, LIGHTBLUE, msg);
- return 1;
- }
- CMD:housepos(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- {
- SendClientMessage(playerid, RED, "Nie masz uprawnień do zmieniania interiorów domów.");
- return 1;
- }
- new houseid;
- if(sscanf(params, "d", houseid))
- {
- SendClientMessage(playerid, RED, "Prawidłowe użycie: /housepos [ID domu]");
- return 1;
- }
- if(!IsValidHouse(houseid))
- {
- SendClientMessage(playerid, RED, "Nie znaleziono takiego domu.");
- return 1;
- }
- new Float:playerPos[3];
- GetPlayerPos(playerid, playerPos[0], playerPos[1], playerPos[2]);
- new query[128];
- format(query, sizeof query, "UPDATE `houses` SET `PosX`='%f', `PosY`='%f', `PosZ`='%f' WHERE `HouseID`='%d'", playerPos[0], playerPos[1], playerPos[2], houseid);
- db_query(housesDB, query);
- new houseName[100], houseOwner[30];
- GetHouseName(houseid, houseName);
- GetHouseOwner(houseid, houseOwner);
- DestroyDynamic3DTextLabel(hLabel[houseid]);
- DestroyDynamicPickup(hPickup[houseid]);
- DestroyDynamicMapIcon(hIcon[houseid]);
- new str[128];
- if(houseOwner[0] == '0')
- {
- format(str, sizeof str, "%s\nCena: $%d\n(Użyj /dom aby kupić)", houseName, GetHousePrice(houseid));
- hIcon[houseid] = CreateDynamicMapIcon(playerPos[0], playerPos[1], playerPos[2], 31, RED);
- }
- else
- {
- format(str, sizeof str, "%s\nWłaściciel: %s\n(Wciśnij spację aby wejść)", houseName, houseOwner);
- hIcon[houseid] = CreateDynamicMapIcon(playerPos[0], playerPos[1], playerPos[2], 32, RED);
- }
- hLabel[houseid] = CreateDynamic3DTextLabel(str, LIGHTGREEN, playerPos[0], playerPos[1], playerPos[2]+0.5, 50.0);
- hPickup[houseid] = CreateDynamicPickup(1273, 1, playerPos[0], playerPos[1], playerPos[2], 0);
- new msg[128];
- format(msg, sizeof msg, "Pozycja domu %s (ID %d) została zmieniona!", houseName, houseid);
- SendClientMessage(playerid, LIGHTBLUE, msg);
- return 1;
- }
- CMD:houseteleport(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- {
- SendClientMessage(playerid, RED, "Nie masz uprawnień do teleportowania się do domów.");
- return 1;
- }
- new houseid;
- if(sscanf(params, "d", houseid))
- {
- SendClientMessage(playerid, RED, "Prawidłowe użycie: /houseteleport [ID domu]");
- return 1;
- }
- if(!IsValidHouse(houseid))
- {
- SendClientMessage(playerid, RED, "Nie znaleziono takiego domu.");
- return 1;
- }
- new query[128], houseName[100], housePos[3][20];
- format(query, sizeof query, "SELECT Name, PosX, PosY, PosZ FROM `houses` WHERE `HouseID`='%d'", houseid);
- new DBResult:result = db_query(housesDB, query);
- db_get_field(result, 0, houseName, sizeof houseName);
- db_get_field(result, 1, housePos[0], 20);
- db_get_field(result, 2, housePos[1], 20);
- db_get_field(result, 3, housePos[2], 20);
- db_free_result(result);
- SetPlayerPos(playerid, floatstr(housePos[0]), floatstr(housePos[1]), floatstr(housePos[2]));
- new msg[128];
- format(msg, sizeof msg, "Pomyślnie przeniesiono do domu %s (ID %d).", houseName, houseid);
- SendClientMessage(playerid, LIGHTBLUE, msg);
- return 1;
- }
- CMD:dom(playerid, params[])
- {
- new houseid = GetHouse(playerid);
- if(houseid == INVALID_HOUSE_ID)
- {
- SendClientMessage(playerid, RED, "Nie znajdujesz się przed domem.");
- return 1;
- }
- new msg[128], houseName[100], houseOwner[30], playerName[MAX_PLAYER_NAME];
- GetHouseName(houseid, houseName);
- GetHouseOwner(houseid, houseOwner);
- GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);
- if(houseOwner[0] == '0')
- {
- new housePrice = GetHousePrice(houseid);
- if(housePrice > GetPlayerMoney(playerid))
- SendClientMessage(playerid, RED, "Nie masz wystarczającej ilości gotówki aby zakupić ten dom.");
- else
- {
- format(msg, sizeof msg, WHITE_E"Czy chcesz kupić dom %s za $%d?", houseName, housePrice);
- ShowPlayerDialog(playerid, DIALOG_HOUSE_BUY, DIALOG_STYLE_MSGBOX, "Kupno domu", msg, "Tak", "Nie");
- }
- }
- else if(!strcmp(houseOwner, playerName))
- {
- new title[128];
- format(title, sizeof title, "Twój dom %s", houseName);
- if(hLocked[houseid])
- strcat(msg, WHITE_E"Otwórz drzwi domu\n");
- else
- strcat(msg, WHITE_E"Zamknij drzwi domu\n");
- strcat(msg, WHITE_E"Sprzedaj dom");
- ShowPlayerDialog(playerid, DIALOG_HOUSE_OWNER, DIALOG_STYLE_LIST, title, msg, "Wybierz", "Anuluj");
- }
- else
- SendClientMessage(playerid, RED, "Ten dom nie należy do Ciebie.");
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == DIALOG_HOUSE_OWNER && response)
- {
- new houseid = GetHouse(playerid);
- if(houseid == INVALID_HOUSE_ID)
- return 1;
- switch(listitem)
- {
- case 0:
- {
- if(hLocked[houseid])
- {
- hLocked[houseid] = false;
- SendClientMessage(playerid, LIGHTBLUE, "Dom został otwarty. Teraz każdy może do niego wejść.");
- }
- else
- {
- hLocked[houseid] = true;
- SendClientMessage(playerid, LIGHTBLUE, "Dom został zamknięty.");
- }
- cmd_dom(playerid, "");
- }
- case 1:
- {
- new housePrice = GetHousePrice(houseid), msg[128], houseName[100];
- GetHouseName(houseid, houseName);
- format(msg, sizeof msg, WHITE_E"Czy na pewno chcesz sprzedać dom %s za $%d?", houseName, floatround(housePrice/2, floatround_floor));
- ShowPlayerDialog(playerid, DIALOG_HOUSE_SELL, DIALOG_STYLE_MSGBOX, "Potwierdzenie sprzedaży domu", msg, "Tak", "Nie");
- }
- }
- return 1;
- }
- else if(dialogid == DIALOG_HOUSE_BUY && response)
- {
- new houseid = GetHouse(playerid);
- if(houseid == INVALID_HOUSE_ID)
- return 1;
- new houseOwner[30];
- GetHouseOwner(houseid, houseOwner);
- if(houseOwner[0] != '0')
- {
- SendClientMessage(playerid, RED, "Ten dom został już kupiony przez kogoś innego.");
- return 1;
- }
- new housePrice = GetHousePrice(houseid);
- if(GetPlayerMoney(playerid) < housePrice)
- {
- SendClientMessage(playerid, RED, "Nie masz wystarczającej ilości gotówki aby zakupić ten dom.");
- return 1;
- }
- new playerName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);
- new query[128];
- format(query, sizeof query, "UPDATE `houses` SET `Owner`='%s' WHERE `HouseID`='%d'", playerName, houseid);
- db_query(housesDB, query);
- GivePlayerMoney(playerid, -housePrice);
- new houseName[100];
- GetHouseName(houseid, houseName);
- new str[128];
- format(str, sizeof str, "%s\nWłaściciel: %s\n(Wciśnij spację aby wejść)", houseName, playerName);
- UpdateDynamic3DTextLabelText(hLabel[houseid], LIGHTGREEN, str);
- new Float:Pos[3];
- GetHousePos(houseid, Pos[0], Pos[1], Pos[2]);
- DestroyDynamicMapIcon(hIcon[houseid]);
- hIcon[houseid] = CreateDynamicMapIcon(Pos[0], Pos[1], Pos[2], 32, RED);
- new msg[128];
- format(msg, sizeof msg, "Dom %s został kupiony za $%d.", houseName, housePrice);
- SendClientMessage(playerid, LIGHTBLUE, msg);
- SendClientMessage(playerid, LIGHTBLUE, "Aby otworzyć menu domu, użyj komendy /dom");
- return 1;
- }
- else if(dialogid == DIALOG_HOUSE_SELL)
- {
- if(!response)
- {
- cmd_dom(playerid, "");
- return 1;
- }
- new houseid = GetHouse(playerid);
- if(houseid == INVALID_HOUSE_ID)
- return 1;
- new playerName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);
- new query[128];
- format(query, sizeof query, "UPDATE `houses` SET `Owner`='0' WHERE `HouseID`='%d'", houseid);
- db_query(housesDB, query);
- new housePrice = GetHousePrice(houseid),
- earn = floatround(housePrice/2, floatround_floor);
- GivePlayerMoney(playerid, earn);
- new houseName[100];
- GetHouseName(houseid, houseName);
- new str[128];
- format(str, sizeof str, "%s\nCena: $%d\n(Użyj /dom aby kupić)", houseName, housePrice);
- UpdateDynamic3DTextLabelText(hLabel[houseid], LIGHTGREEN, str);
- new Float:Pos[3];
- GetHousePos(houseid, Pos[0], Pos[1], Pos[2]);
- DestroyDynamicMapIcon(hIcon[houseid]);
- hIcon[houseid] = CreateDynamicMapIcon(Pos[0], Pos[1], Pos[2], 31, RED);
- new msg[128];
- format(msg, sizeof msg, "Dom %s został sprzedany za $%d.", houseName, earn);
- SendClientMessage(playerid, LIGHTBLUE, msg);
- return 1;
- }
- return 0;
- }
- //Własne funkcje
- stock GetFreeHouseID()
- {
- new houseid = INVALID_HOUSE_ID, counter = 0, query[128];
- while(houseid == INVALID_HOUSE_ID)
- {
- counter++;
- format(query, sizeof query, "SELECT * FROM `houses` WHERE `HouseID`='%d'", counter);
- new DBResult:result = db_query(housesDB, query);
- if(!db_num_rows(result))
- houseid = counter;
- db_free_result(result);
- }
- return houseid;
- }
- stock IsValidHouse(houseid)
- {
- new query[128];
- format(query, sizeof query, "SELECT * FROM `houses` WHERE `HouseID`='%d'", houseid);
- new DBResult:result = db_query(housesDB, query);
- new numRows = db_num_rows(result);
- db_free_result(result);
- if(!numRows)
- return 0;
- return 1;
- }
- stock GetHouseName(houseid, name[])
- {
- new query[128];
- format(query, sizeof query, "SELECT Name FROM `houses` WHERE `HouseID`='%d'", houseid);
- new DBResult:result = db_query(housesDB, query);
- if(!db_num_rows(result))
- {
- db_free_result(result);
- return 0;
- }
- db_get_field(result, 0, name, 100);
- db_free_result(result);
- return 1;
- }
- stock GetHouseOwner(houseid, owner[])
- {
- new query[128];
- format(query, sizeof query, "SELECT Owner FROM `houses` WHERE `HouseID`='%d'", houseid);
- new DBResult:result = db_query(housesDB, query);
- if(!db_num_rows(result))
- {
- db_free_result(result);
- return 0;
- }
- db_get_field(result, 0, owner, 100);
- db_free_result(result);
- return 1;
- }
- stock GetHousePrice(houseid)
- {
- new query[128];
- format(query, sizeof query, "SELECT Price FROM `houses` WHERE `HouseID`='%d'", houseid);
- new DBResult:result = db_query(housesDB, query);
- if(!db_num_rows(result))
- {
- db_free_result(result);
- return -1;
- }
- new priceStr[20];
- db_get_field(result, 0, priceStr, sizeof priceStr);
- db_free_result(result);
- new price = strval(priceStr);
- return price;
- }
- stock GetHouseInterior(houseid)
- {
- new query[128];
- format(query, sizeof query, "SELECT Interior FROM `houses` WHERE `HouseID`='%d'", houseid);
- new DBResult:result = db_query(housesDB, query);
- if(!db_num_rows(result))
- {
- db_free_result(result);
- return 0;
- }
- new interiorStr[3];
- db_get_field(result, 0, interiorStr, sizeof interiorStr);
- db_free_result(result);
- new interior = strval(interiorStr);
- return interior;
- }
- stock GetHousePos(houseid, &Float:X, &Float:Y, &Float:Z)
- {
- new query[128];
- format(query, sizeof query, "SELECT PosX, PosY, PosZ FROM `houses` WHERE `HouseID`='%d'", houseid);
- new DBResult:result = db_query(housesDB, query);
- if(!db_num_rows(result))
- {
- db_free_result(result);
- return 0;
- }
- new pos[3][20];
- db_get_field(result, 0, pos[0], 20);
- db_get_field(result, 1, pos[1], 20);
- db_get_field(result, 2, pos[2], 20);
- db_free_result(result);
- X = floatstr(pos[0]);
- Y = floatstr(pos[1]);
- Z = floatstr(pos[2]);
- return 1;
- }
- stock IsValidInterior(interiorid)
- {
- switch(interiorid)
- {
- case 1..3, 7, 8, 10: return true;
- }
- return false;
- }
- stock GetInteriorInsidePos(interior, &Float:X, &Float:Y, &Float:Z, &Float:A)
- {
- switch(interior)
- {
- case 1:
- {
- X = 223.1425;
- Y = 1287.2781;
- Z = 1082.1406;
- A = 1.0427;
- }
- case 2:
- {
- X = 226.005401;
- Y = 1240.039062;
- Z = 1082.140625;
- A= 88.782501;
- }
- case 3:
- {
- X = 235.3299;
- Y = 1187.1647;
- Z = 1080.2578;
- A = 3.4573;
- }
- case 7:
- {
- X = 225.7482;
- Y = 1022.0986;
- Z = 1084.0159;
- A = 352.2242;
- }
- case 8:
- {
- X = 2365.3176;
- Y = -1134.9512;
- Z = 1050.8750;
- A = 357.0461;
- }
- case 10:
- {
- X = 2269.7822;
- Y = -1210.4670;
- Z = 1047.5625;
- A = 90.8462;
- }
- }
- return 1;
- }
- stock LoadHouses()
- {
- print(" Rozpoczeto ladowanie domow...");
- new startTime = GetTickCount();
- new DBResult:result = db_query(housesDB, "SELECT HouseID, Name, Price, Owner, PosX, PosY, PosZ FROM `houses`");
- new numRows = db_num_rows(result);
- new count = 0;
- for(new i=0; i<numRows; i++)
- {
- new idstr[20], name[100], price[20], owner[30], posx[20], posy[20], posz[20];
- db_get_field(result, 0, idstr, sizeof idstr);
- db_get_field(result, 1, name, sizeof name);
- db_get_field(result, 2, price, sizeof price);
- db_get_field(result, 3, owner, sizeof owner);
- db_get_field(result, 4, posx, sizeof posx);
- db_get_field(result, 5, posy, sizeof posy);
- db_get_field(result, 6, posz, sizeof posz);
- new houseid, Float:Pos[3];
- houseid = strval(idstr);
- Pos[0] = floatstr(posx);
- Pos[1] = floatstr(posy);
- Pos[2] = floatstr(posz);
- new str[128];
- if(owner[0] == '0')
- {
- format(str, sizeof str, "%s\nCena: $%s\n(Użyj /dom aby kupić)", name, price);
- hIcon[houseid] = CreateDynamicMapIcon(Pos[0], Pos[1], Pos[2], 31, RED);
- hLocked[houseid] = false;
- }
- else
- {
- format(str, sizeof str, "%s\nWłaściciel: %s\n(Wciśnij spację aby wejść)", name, owner);
- hIcon[houseid] = CreateDynamicMapIcon(Pos[0], Pos[1], Pos[2], 32, RED);
- hLocked[houseid] = true;
- }
- hLabel[houseid] = CreateDynamic3DTextLabel(str, LIGHTGREEN, Pos[0], Pos[1], Pos[2]+0.5, 50.0);
- hPickup[houseid] = CreateDynamicPickup(1273, 1, Pos[0], Pos[1], Pos[2], 0);
- count++;
- db_next_row(result);
- }
- db_free_result(result);
- printf(" Zaladowano %d domow. Czas ladowania: %d ms", count, (GetTickCount()-startTime));
- return 1;
- }
- stock GetHouse(playerid)
- {
- new houseid = INVALID_HOUSE_ID;
- new Float:playerPos[3];
- GetPlayerPos(playerid, playerPos[0], playerPos[1], playerPos[2]);
- new DBResult:result = db_query(housesDB, "SELECT HouseID, PosX, PosY, PosZ FROM `houses`");
- new numRows = db_num_rows(result);
- for(new i=0; i<numRows; i++)
- {
- new pos[3][20];
- db_get_field(result, 1, pos[0], 20);
- db_get_field(result, 2, pos[1], 20);
- db_get_field(result, 3, pos[2], 20);
- if(IsPlayerInRangeOfPoint(playerid, 2.5, floatstr(pos[0]), floatstr(pos[1]), floatstr(pos[2])))
- {
- new idstr[20];
- db_get_field(result, 0, idstr, 20);
- houseid = strval(idstr);
- break;
- }
- db_next_row(result);
- }
- db_free_result(result);
- return houseid;
- }
- stock CountHouses()
- {
- new DBResult:result = db_query(housesDB, "SELECT HouseID FROM `houses`"),
- numRows = db_num_rows(result);
- db_free_result(result);
- return numRows;
- }
Advertisement
Add Comment
Please, Sign In to add comment