Advertisement
Isigar

HouseSystem / IHouse 1.0

Apr 17th, 2014
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.02 KB | None | 0 0
  1. /*
  2. =================================================
  3.         HOUSE SYSTEM BY ISIGAR
  4.     Autor: Isigar
  5.     Skype: beaconcraft.cz / isigarcz@gmail.com
  6. =================================================
  7. */
  8.  
  9. #if defined _ihouse_included
  10.   #endinput
  11. #endif
  12. #define _ihouse_included
  13.  
  14. #define MAX_HOUSES 1000
  15. #define IsPlayerInSphere(%0,%1,%2,%3,%4) IsPlayerInRangeOfPoint(%0,%4,%1,%2,%3)
  16.  
  17. #include DOF2
  18. #include streamer
  19.  
  20. /*
  21. Chata 7 tisíc
  22. Byt 30 000
  23. Luxusní byt 50 000
  24. Dům 100 000
  25. Vila 300 000
  26. */
  27. stock TypeOfHouse(cost)
  28. {
  29.     new _str[100];
  30.     switch(cost)
  31.     {
  32.         case 7000: format(_str,sizeof(_str),"Chatka");
  33.         case 30000: format(_str,sizeof(_str),"Byt");
  34.         case 50000: format(_str,sizeof(_str),"Luxusní byt");
  35.         case 100000: format(_str,sizeof(_str),"Dům");
  36.         case 300000: format(_str,sizeof(_str),"Vila");
  37.     }
  38.     return _str;
  39. }
  40.  
  41. enum HouseWeapons
  42. {
  43.     hWep1,
  44.     hWep2,
  45.     hWep3,
  46.     hAmmo1,
  47.     hAmmo2,
  48.     hAmmo3,
  49. }
  50. enum HouseVehicle
  51. {
  52.     hSpoiler,
  53.     hHood,
  54.     hRoof,
  55.     hSideskirt,
  56.     hLamps,
  57.     hNitro,
  58.     hExhaust,
  59.     hWheels,
  60.     hStereo,
  61.     hHydraulics,
  62.     hFrontDumper,
  63.     hRearDumper,
  64.     hVentRight,
  65.     hVentLeft
  66. }
  67.  
  68. enum DataHouse
  69. {
  70.     Float:hX,
  71.     Float:hY,
  72.     Float:hZ,
  73.     hCost,
  74.     hWeapons[HouseWeapons],
  75.     hVehicle[HouseVehicle],
  76.     hInterior,
  77.     hLock,
  78. }
  79. new DHouse[MAX_HOUSES][DataHouse];
  80. new HOwner[MAX_HOUSES][MAX_PLAYER_NAME];
  81. new HPickup[MAX_HOUSES];
  82. new Text3D:HText[MAX_HOUSES];
  83.  
  84. new PlayerText:HouseInfoTD;
  85.  
  86. new bool:PlayerIsInHouse[MAX_PLAYERS];
  87. new Float:HPLAYERPOS[3][MAX_PLAYERS];
  88.  
  89. stock HousePath()
  90. {
  91.     new path[100];
  92.     format(path,100,"RP/Houses/Houses.ini");
  93.     return path;
  94. }
  95.  
  96. forward CreateHouse(id,Float:X,Float:Y,Float:Z,cost);
  97. forward GetHouseIDNearPlayer(playerid);
  98. forward OnPlayerPickPickupEx(playerid);
  99. forward HouseInfoHide(playerid);
  100. forward SellHouse(houseid,playerid);
  101. forward LoadHouse(houseid);
  102. forward ShowHouse(id,Float:X,Float:Y,Float:Z);
  103. forward TeleportPlayerBack(playerid);
  104. forward SetPlayerPosByInterier(playerid,interior);
  105.  
  106. stock GetNameEx(playerid)
  107. {
  108.     new name[MAX_PLAYER_NAME];
  109.     GetPlayerName(playerid,name,sizeof(name));
  110.     return name;
  111. }
  112.  
  113. public ShowHouse(id,Float:X,Float:Y,Float:Z)
  114. {
  115.     DestroyDynamicPickup(HPickup[id]);
  116.     DestroyDynamic3DTextLabel(HText[id]);
  117.    
  118.     LoadHouse(id);
  119.     new textik[300];
  120.     format(textik,200,"{035EB2}Typ domu: {FFFFFF}%s\n{035EB2}Číslo domu:{FFFFFF} %i\n{035EB2}Majitel: {FFFFFF}%s\n{035EB2}Cena: {FFFFFF}%i",TypeOfHouse(DHouse[id][hCost]),id,HOwner[id],DHouse[id][hCost]);
  121.     if(strcmp(HOwner[id],"Mesto") == 0)
  122.     {
  123.         HPickup[id] = CreateDynamicPickup(1273,1,X,Y,Z);
  124.     }
  125.     else
  126.     {
  127.         HPickup[id] = CreateDynamicPickup(1272,1,X,Y,Z);
  128.     }
  129.     CreateDynamic3DTextLabel(textik,-1,X,Y,Z,25.0);
  130.     return 1;
  131. }
  132.  
  133. public CreateHouse(id,Float:X,Float:Y,Float:Z,cost)
  134. {
  135.     DHouse[id][hX] = X;
  136.     DHouse[id][hY] = Y;
  137.     DHouse[id][hZ] = Z;
  138.     LoadHouse(id);
  139.    
  140.     new sid[40];
  141.     format(sid,40,"%i",id);
  142.    
  143.     if(!DOF2_FileExists(HousePath()))
  144.     {
  145.         DOF2_CreateFile(HousePath());
  146.         DOF2_SetString(HousePath(),"Owner",HOwner[id],sid);
  147.         DOF2_SetInt(HousePath(),"Interior",GetInteriorFromCost(cost),sid);
  148.         DOF2_SetInt(HousePath(),"Cost",cost,sid);
  149.         DOF2_SetInt(HousePath(),"Lock",1,sid);
  150.         DOF2_SaveFile();
  151.     }
  152.     else
  153.     {
  154.         DOF2_SetString(HousePath(),"Owner",HOwner[id],sid);
  155.         DOF2_SetInt(HousePath(),"Interior",GetInteriorFromCost(cost),sid);
  156.         DOF2_SetInt(HousePath(),"Cost",cost,sid);
  157.         DOF2_SetInt(HousePath(),"Lock",1,sid);
  158.         DOF2_SaveFile();
  159.     }
  160.  
  161.     ShowHouse(id,X,Y,Z);
  162.     return 1;
  163. }
  164.  
  165. public SellHouse(houseid,playerid)
  166. {
  167.     if(strcmp(HOwner[houseid],"Mesto") != 0) return SendClientMessage(playerid,-1,"* Tento dům nemůžeš koupit už ho vlastní někdo jiný! Můžeš kupovat jen ty domy, které vlastní Mesto.");
  168.  
  169.     new sid[40];
  170.     format(sid,40,"%i",houseid);
  171.    
  172.     if(playerid == -1)
  173.     {
  174.         strdel(HOwner[houseid],0,MAX_PLAYER_NAME);
  175.         strcat(HOwner[houseid],"Mesto");
  176.  
  177.         DOF2_SetString(HousePath(),"Owner","Mesto",sid);
  178.        
  179.         GivePlayerMoney(playerid,DHouse[houseid][hCost]);
  180.     }
  181.     else
  182.     {
  183.         GivePlayerMoney(playerid,-DHouse[houseid][hCost]);
  184.  
  185.         strdel(HOwner[houseid],0,MAX_PLAYER_NAME);
  186.         strcat(HOwner[houseid],GetNameEx(playerid));
  187.  
  188.         DOF2_SetString(HousePath(),"Owner",GetNameEx(playerid),sid);
  189.     }
  190.  
  191.     new str[200];
  192.     format(str,200,"* Právě jsi koupil dům číslo %i za %i $",GetHouseIDNearPlayer(playerid),DHouse[houseid][hCost]);
  193.     SendClientMessage(playerid,-1,str);
  194.     return 1;
  195. }
  196. stock GetInteriorFromCost(cost)
  197. {
  198.     new interior;
  199.     switch(cost)
  200.     {
  201.         case 7000:
  202.         {
  203.        
  204.         }
  205.         case 30000:
  206.         {
  207.             interior = 1;//2527.654052, -1679.388305,1015.498596
  208.         }
  209.         case 50000:
  210.         {
  211.             interior = 5; //318.564971,1118.209960,1083.882812
  212.         }
  213.         case 100000:
  214.         {
  215.             interior = 8;//2807.619873, -1171.899902,1025.570312
  216.         }
  217.         case 300000:
  218.         {
  219.             interior = 12; //2324.419921,-1145.568359,1050.710083
  220.         }
  221.     }
  222.     return interior;
  223. }
  224. public TeleportPlayerBack(playerid)
  225. {
  226.     if(PlayerIsInHouse[playerid] != true) return SendClientMessage(playerid,0xFF0000,"< Chyba > Pro použití tohoto příkazu musíš být v domě!");
  227.     SetPlayerInterior(playerid, 0);
  228.     SetPlayerPos(playerid,HPLAYERPOS[0][playerid],HPLAYERPOS[1][playerid],HPLAYERPOS[2][playerid]);
  229.     return 1;
  230. }
  231. public SetPlayerPosByInterier(playerid,interior)
  232. {
  233.     GetPlayerPos(playerid,HPLAYERPOS[0][playerid],HPLAYERPOS[1][playerid],HPLAYERPOS[2][playerid]);
  234.     switch(interior)
  235.     {
  236.         case 1:
  237.         {
  238.             SetPlayerInterior(playerid,1);
  239.             SetPlayerPos(playerid,2527.654052, -1679.388305,1015.498596);
  240.             PlayerIsInHouse[playerid] = true;
  241.         }
  242.         case 5:
  243.         {
  244.             SetPlayerInterior(playerid,5);
  245.             SetPlayerPos(playerid,318.564971,1118.209960,1083.882812);
  246.             PlayerIsInHouse[playerid] = true;
  247.         }
  248.         case 8:
  249.         {
  250.             SetPlayerInterior(playerid,8);
  251.             SetPlayerPos(playerid,2807.619873, -1171.899902,1025.570312);
  252.             PlayerIsInHouse[playerid] = true;
  253.         }
  254.         case 12:
  255.         {
  256.             SetPlayerInterior(playerid,12);
  257.             SetPlayerPos(playerid,2324.419921,-1145.568359,1050.710083);
  258.             PlayerIsInHouse[playerid] = true;
  259.         }
  260.     }
  261.     return 1;
  262. }
  263. public GetHouseIDNearPlayer(playerid)
  264. {
  265.     for(new i=0;i<MAX_HOUSES;i++)
  266.     {
  267.         if(IsPlayerInSphere(playerid,DHouse[i][hX],DHouse[i][hY],DHouse[i][hZ],5))
  268.         {
  269.             return i;
  270.         }
  271.         else
  272.         {
  273.             continue;
  274.         }
  275.     }
  276.     return 0;
  277. }
  278. public OnPlayerPickPickupEx(playerid)
  279. {
  280.     if(GetHouseIDNearPlayer(playerid) != 0)
  281.     {
  282.         new Float:X,Float:Y,Float:Z;
  283.         GetPlayerPos(playerid,X,Y,Z);
  284.         PlayerTextDrawShow(playerid,HouseInfoTD);
  285.         SetTimerEx("HouseInfoHide",3000,false,"i",playerid);
  286.     }
  287.     return 1;
  288. }
  289. public HouseInfoHide(playerid)
  290. {
  291.     PlayerTextDrawHide(playerid,HouseInfoTD);
  292.     return 1;
  293. }
  294. stock IHouse_PlayerInit(playerid)
  295. {
  296.     HouseInfoTD = CreatePlayerTextDraw(playerid,499.000000, 121.000000, "Pro zobrazeni menu dej Y.");
  297.     PlayerTextDrawBackgroundColor(playerid,HouseInfoTD, 255);
  298.     PlayerTextDrawFont(playerid,HouseInfoTD, 2);
  299.     PlayerTextDrawLetterSize(playerid,HouseInfoTD, 0.400000, 1.000000);
  300.     PlayerTextDrawColor(playerid,HouseInfoTD, -513);
  301.     PlayerTextDrawSetOutline(playerid,HouseInfoTD, 0);
  302.     PlayerTextDrawSetProportional(playerid,HouseInfoTD, 1);
  303.     PlayerTextDrawSetShadow(playerid,HouseInfoTD, 1);
  304.     PlayerTextDrawUseBox(playerid,HouseInfoTD, 1);
  305.     PlayerTextDrawBoxColor(playerid,HouseInfoTD, 100);
  306.     PlayerTextDrawTextSize(playerid,HouseInfoTD, 638.000000, -10.000000);
  307.     PlayerTextDrawSetSelectable(playerid,HouseInfoTD, 0);
  308.     return 1;
  309. }
  310. stock IHouse_PlayerExit(playerid)
  311. {
  312.     PlayerTextDrawDestroy(playerid,HouseInfoTD);
  313.     return 1;
  314. }
  315. public LoadHouse(houseid)
  316. {
  317.     new sid[40];
  318.     format(sid,40,"%i",houseid);
  319.    
  320.     strdel(HOwner[houseid],0,MAX_PLAYER_NAME);
  321.    
  322.     DHouse[houseid][hCost] = DOF2_GetInt(HousePath(),"Cost",sid);
  323.     strcat(HOwner[houseid],DOF2_GetString(HousePath(),"Owner",sid));
  324.     DHouse[houseid][hInterior] = DOF2_GetInt(HousePath(),"Interior",sid);
  325.     DHouse[houseid][hLock] = DOF2_GetInt(HousePath(),"Lock",sid);
  326.     return 1;
  327. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement