Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <dini>
- #define MAX_HOUSES 50
- //-------------------------------------|
- enum HOUSE_DATA
- {
- Float:p_X,
- Float:p_Y,
- Float:p_Z,
- Float:i_X,
- Float:i_Y,
- Float:i_Z,
- iin,
- Cena,
- Vlastnik[MAX_PLAYER_NAME],
- Dialog,
- Text3D:Text,
- Pickup,
- Zamek
- }
- new HouseInfo[MAX_HOUSES][HOUSE_DATA];
- new InHouse[MAX_PLAYERS] = {-1,...};
- new HouseCount = -1;
- //------------------------------------|
- forward GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z);
- forward IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius);
- forward AddHouse(Float:pX, Float:pY, Float:pZ, Float:iX, Float:iY, Float:iZ, ii, Cenik, iddialogu);
- //------------------------------------|
- public AddHouse(Float:pX, Float:pY, Float:pZ, Float:iX, Float:iY, Float:iZ, ii, Cenik, iddialogu)
- {
- HouseCount ++;
- if(HouseCount < MAX_HOUSES)
- {
- HouseInfo[HouseCount][p_X] = pX;
- HouseInfo[HouseCount][p_Y] = pY;
- HouseInfo[HouseCount][p_Z] = pZ;
- HouseInfo[HouseCount][i_X] = iX;
- HouseInfo[HouseCount][i_Y] = iY;
- HouseInfo[HouseCount][i_Z] = iZ;
- HouseInfo[HouseCount][iin] = ii;
- HouseInfo[HouseCount][Cena] = Cenik;
- HouseInfo[HouseCount][Vlastnik] = 0;
- HouseInfo[HouseCount][Zamek] = 0;
- HouseInfo[HouseCount][Dialog] = iddialogu;
- new s[128];
- format(s,128,"Houses/%d.txt",HouseCount);
- if(!fexist(s)){
- dini_Create(s);
- dini_Set(s,"Owner","none");
- dini_IntSet(s,"Locked",0);
- }
- new sx[100];
- if(strcmp(dini_Get(s,"Owner"),"none",true) == 0){
- format(HouseInfo[HouseCount][Vlastnik],MAX_PLAYER_NAME,"Nikto");
- HouseInfo[HouseCount][Zamek] = 0;
- HouseInfo[HouseCount][Pickup] = CreatePickup(1273,1,pX, pY, pZ);
- format(sx,100,"Dom č.%d\r\nMajiteľ: Nikto\r\nCena: %d",HouseCount,Cenik);
- HouseInfo[HouseCount][Text] = Create3DTextLabel(sx,0xFF0000FF,pX,pY,pZ+1,50,0);
- }else{
- HouseInfo[HouseCount][Pickup] = CreatePickup(1272,1,pX, pY, pZ);
- format(HouseInfo[HouseCount][Vlastnik],MAX_PLAYER_NAME,"%s",dini_Get(s,"Owner"));
- HouseInfo[HouseCount][Zamek] = dini_Int(s,"Locked");
- format(sx,100,"Dom č.%d\r\nMajiteľ: %s",HouseCount,dini_Get(s,"Owner"));
- HouseInfo[HouseCount][Text] = Create3DTextLabel(sx,0xFF0000FF,pX,pY,pZ+1,50,0);
- }
- printf("Dom %d Vytvorený",HouseCount);
- }else{
- print("<!-- Kapacita AddHouse prekrocena, dum nebyl vytvoren !-->");
- }
- return 1;
- }
- //------------------------------------|
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- for(new h=0;h<HouseCount+1;h++)
- {
- if(IsPlayerInRangeOfPoint(playerid,2,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z]))
- {
- ShowPlayerDialog(playerid,HouseInfo[h][Dialog],DIALOG_STYLE_LIST,"Dům","Koupit\nProdat\nZamknout\nOdemknout\nInformace o domu\nVstoupit","Použít","Nic");
- }
- }
- return 1;
- }
- //------------------------------------|
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys == KEY_WALK)
- {
- if(InHouse[playerid] != -1){
- new HouseId = InHouse[playerid];
- if(IsPlayerInRangeOfPoint(playerid,10,HouseInfo[HouseId][i_X],HouseInfo[HouseId][i_Y],HouseInfo[HouseId][i_Z]))
- {
- SetPlayerPos(playerid,HouseInfo[HouseId][p_X],HouseInfo[HouseId][p_Y],HouseInfo[HouseId][p_Z]);
- SetPlayerInterior(playerid,0);
- InHouse[playerid] = -1;
- }
- }
- }
- return 1;
- }
- //------------------------------------|
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- for(new h=0;h<HouseCount+1;h++)
- {
- if(dialogid == HouseInfo[h][Dialog])
- {
- if(response == 1)
- {
- if(listitem == 0)
- {
- if(GetPlayerMoney(playerid) < HouseInfo[h][Cena]) return SendClientMessage(playerid, 0xFFFFFFFF, "Máš málo peněz !");
- if(!IsHouseForSale(h)) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům již někdo vlastní !");
- new s[128];
- format(s,128,"Houses/%d.txt",h);
- dini_Set(s,"Owner",HousePlayerName(playerid));
- GivePlayerMoney(playerid, -HouseInfo[h][Cena]);
- SendClientMessage(playerid, 0xFFFFFFFF, "Pořidil jsi si dům !");
- new sx[100];
- format(sx,100,"Dom č.%d\r\nMajiteľ: %s",h,dini_Get(s,"Owner"));
- Update3DTextLabelText(HouseInfo[h][Text],0xFF0000FF,sx);
- DestroyPickup(HouseInfo[h][Pickup]);
- HouseInfo[h][Pickup] = CreatePickup(1272,1,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z]);
- }
- else if(listitem == 1)
- {
- if(!IsPlayerHouseOwner(playerid,h)) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům není tvůj !");
- new s[128];
- format(s,128,"Houses/%d.txt",h);
- dini_Set(s,"Owner","none");
- GivePlayerMoney(playerid, HouseInfo[h][Cena]/2);
- SendClientMessage(playerid, 0xFFFFFFFF, "Dům prodán, byla ti vrácena cena !");
- new sx[100];
- format(sx,100,"Dom č.%d\r\nMajiteľ: Nikto\r\nCena: %d",h,HouseInfo[h][Cena]);
- Update3DTextLabelText(HouseInfo[h][Text],0xFF0000FF,sx);
- DestroyPickup(HouseInfo[h][Pickup]);
- HouseInfo[h][Pickup] = CreatePickup(1273,1,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z]);
- }
- else if(listitem == 2)
- {
- if(!IsPlayerHouseOwner(playerid,h)) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům není tvůj !");
- new s[128];
- format(s,128,"Houses/%d.txt",h);
- dini_IntSet(s,"Locked",1);
- HouseInfo[h][Zamek] = 0;
- SendClientMessage(playerid, 0xFFFFFFFF, "Dům zamknut !");
- }
- else if(listitem == 3)
- {
- if(!IsPlayerHouseOwner(playerid,h)) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům není tvůj !");
- SendClientMessage(playerid, 0xFFFFFFFF, "Dům odemknut !");
- new s[128];
- format(s,128,"Houses/%d.txt",h);
- dini_IntSet(s,"Locked",0);
- HouseInfo[h][Zamek] = 1;
- }
- else if(listitem == 4)
- {
- SendClientMessage(playerid, 0xFFFFFFFF, "Informace o domu:");
- if(HouseInfo[h][Zamek] == 0)
- {
- SendClientMessage(playerid,0xFFFFFFFF,"Zámek: Zamknutý.");
- }else{
- SendClientMessage(playerid,0xFFFFFFFF,"Zámek: Odemknutý.");
- }
- if (IsHouseForSale(h))
- {
- SendClientMessage(playerid,0xFFFFFFFF,"K Prodeji: Ano");
- }else{
- SendClientMessage(playerid,0xFFFFFFFF,"K Prodeji: Ne");
- }
- }
- else if(listitem == 5)
- {
- if(HouseInfo[h][Zamek] == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům je zamknut !");
- SetPlayerPos(playerid, HouseInfo[h][i_X],HouseInfo[h][i_Y],HouseInfo[h][i_Z]);
- SetPlayerInterior(playerid, HouseInfo[h][iin]);
- InHouse[playerid] = h;
- SendClientMessage(playerid, 0xFFFFFFFF, "Dům opustíš L.ALT !");
- }
- }
- }
- }
- return 1;
- }
- //------------------------------------|
- stock HousePlayerName(playerid){
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid,name,MAX_PLAYER_NAME);
- return name;
- }
- stock IsPlayerHouseOwner(playerid,houseid)
- {
- new cesta[50];
- format(cesta,150,"Houses/%d.txt",houseid);
- if(strcmp(HousePlayerName(playerid),dini_Get(cesta,"Owner"), false) == 0) return true;
- return false;
- }
- stock IsHouseForSale(houseid)
- {
- new cesta[50];
- format(cesta,150,"Houses/%d.txt",houseid);
- if(strcmp("none",dini_Get(cesta,"Owner"), false) == 0) return true;
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement