Guest User

Untitled

a guest
May 12th, 2014
406
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.68 KB | None | 0 0
  1. //House System by VicetoN/SyntricT/Roee ReaZoN
  2. #include <a_samp>
  3. #include <YSI\y_va>
  4. #include <YSI\y_ini>
  5. #include <YSI\y_inline>
  6. #include <sscanf2>
  7. #include <zcmd>
  8. #define function%0(%1) forward %0(%1); public %0(%1)
  9. #define MAX_HOUSES 500
  10. enum HouseInfo
  11. {
  12. HouseID,
  13. HousePickup,
  14. Text3D:HouseText,
  15. HousePrice,
  16. HouseWorld,
  17. HouseInt,
  18. HouseOwned,
  19. HouseOwner[128],
  20. Float:HX,
  21. Float:HY,
  22. Float:HZ,
  23. Float:EHX,
  24. Float:EHY,
  25. Float:EHZ
  26. };
  27. new hInfo[MAX_HOUSES][HouseInfo], PickHouse[MAX_PLAYERS], WorldH=0, IDH=0;
  28. public OnFilterScriptInit()
  29. {
  30. new str[128];
  31. if(!fexist("Houses/Houses.ini"))
  32. {
  33. new INI:File = INI_Open("Houses/Houses.ini");
  34. INI_WriteInt(File, "ID", 0);
  35. INI_WriteInt(File, "World", 0);
  36. INI_Close(File);
  37. }
  38. for(new i=1; i<=MAX_HOUSES; i++)
  39. {
  40. if(!fexist(hFile(i)))
  41. {
  42. new INI:File = INI_Open(hFile(i));
  43. INI_WriteInt(File, "HouseID", 0);
  44. INI_WriteInt(File, "HousePrice", 0);
  45. INI_WriteInt(File, "HouseWorld", 0);
  46. INI_WriteInt(File, "HouseInt", 0);
  47. INI_WriteInt(File, "HouseOwned", 0);
  48. INI_WriteString(File, "HouseOwner", "(null)");
  49. INI_WriteFloat(File, "HX", 0);
  50. INI_WriteFloat(File, "HY", 0);
  51. INI_WriteFloat(File, "HZ", 0);
  52. INI_WriteFloat(File, "EHX", 0);
  53. INI_WriteFloat(File, "EHY", 0);
  54. INI_WriteFloat(File, "EHZ", 0);
  55. INI_Close(File);
  56. }
  57. inline LoadHouse(string:name[], string:value[])
  58. {
  59. INI_Int("HouseID", hInfo[i][HouseID]);
  60. INI_Int("HousePrice", hInfo[i][HousePrice]);
  61. INI_Int("HouseWorld", hInfo[i][HouseWorld]);
  62. INI_Int("HouseInt", hInfo[i][HouseInt]);
  63. INI_Int("HouseOwned", hInfo[i][HouseOwned]);
  64. INI_String("HouseOwner", hInfo[i][HouseOwner], 25);
  65. INI_Float("HX", hInfo[i][HX]);
  66. INI_Float("HY", hInfo[i][HY]);
  67. INI_Float("HZ", hInfo[i][HZ]);
  68. INI_Float("EHX", hInfo[i][EHX]);
  69. INI_Float("EHY", hInfo[i][EHY]);
  70. INI_Float("EHZ", hInfo[i][EHZ]);
  71. }
  72. INI_ParseFile(hFile(i), using inline "LoadHouse");
  73. hInfo[i][HousePickup] = CreatePickup(1273, 1, hInfo[i][HX], hInfo[i][HY], hInfo[i][HZ], 0);
  74. format(str, sizeof(str), "%d :îñôø áéú\n%d$ :îçéø\nôðåé ìøëéùä", i, hInfo[i][HousePrice]);
  75. hInfo[i][HouseText] = Create3DTextLabel(str, -1, hInfo[i][HX], hInfo[i][HY], hInfo[i][HZ], 50, 0, 0);
  76. if(hInfo[i][HouseOwned] == 1)
  77. {
  78. format(str, sizeof(str), "%d :îñôø áéú\n%s :áòìéí", i, hInfo[i][HouseOwner]);
  79. Update3DTextLabelText(hInfo[i][HouseText], -1, str);
  80. }
  81. }
  82. inline LoadHouseData(string:name[], string:value[])
  83. {
  84. INI_Int("ID", IDH);
  85. INI_Int("World", WorldH);
  86. }
  87. INI_ParseFile("Houses/Houses.ini", using inline "LoadHouseData");
  88. return 1;
  89. }
  90. public OnFilterScriptExit()
  91. {
  92. new INI:_File = INI_Open("Houses/Houses.ini");
  93. INI_WriteInt(_File, "ID", IDH);
  94. INI_WriteInt(_File, "World", WorldH);
  95. INI_Close(_File);
  96. for(new i=1; i<=MAX_HOUSES; i++)
  97. {
  98. new INI:File = INI_Open(hFile(i));
  99. INI_WriteInt(File, "HouseID", hInfo[i][HouseID]);
  100. INI_WriteInt(File, "HousePrice", hInfo[i][HousePrice]);
  101. INI_WriteInt(File, "HouseWorld", hInfo[i][HouseWorld]);
  102. INI_WriteInt(File, "HouseInt", hInfo[i][HouseInt]);
  103. INI_WriteInt(File, "HouseOwned", hInfo[i][HouseOwned]);
  104. INI_WriteString(File, "HouseOwner", hInfo[i][HouseOwner]);
  105. INI_WriteFloat(File, "HX", hInfo[i][HX]);
  106. INI_WriteFloat(File, "HY", hInfo[i][HY]);
  107. INI_WriteFloat(File, "HZ", hInfo[i][HZ]);
  108. INI_WriteFloat(File, "EHX", hInfo[i][EHX]);
  109. INI_WriteFloat(File, "EHY", hInfo[i][EHY]);
  110. INI_WriteFloat(File, "EHZ", hInfo[i][EHZ]);
  111. INI_Close(File);
  112. Delete3DTextLabel(hInfo[i][HouseText]);
  113. DestroyPickup(hInfo[i][HousePickup]);
  114. }
  115. return 1;
  116. }
  117. CMD:addhouse(playerid, params[])
  118. {
  119. if(!IsPlayerAdmin(playerid)) return 0;
  120. if(sscanf(params, "dd", params[0], params[1])) return SendClientMessage (playerid, -1, "/addhouse price <12/2/8/3/7/5>");
  121. //if(params[1] != 12 || params[1] != 2 || params[1] != 8 || params[1] != 3 || params[1] != 7 || params[1] != 5) return SendClientMessage(playerid, 0xFF0000FF, ".ñåâ áéú ùâåé");
  122. new Float:Pos[3], str[70];
  123. GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  124. IDH++;
  125. WorldH++;
  126. hInfo[IDH+1][HX] = Pos[0];
  127. hInfo[IDH][HY] = Pos[1];
  128. hInfo[IDH][HZ] = Pos[2];
  129. hInfo[IDH][HouseOwned] = 0;
  130. hInfo[IDH][HouseOwner] = EOS;
  131. hInfo[IDH][HouseInt] = params[1];
  132. hInfo[IDH][HouseWorld] = WorldH;
  133. hInfo[IDH][HousePrice] = params[0];
  134. hInfo[IDH][HouseID] = IDH;
  135. switch(params[1])
  136. {
  137. case 12:
  138. {
  139. hInfo[IDH][EHX] = 444.646911,
  140. hInfo[IDH][EHY] = 508.239044,
  141. hInfo[IDH][EHZ] = 1001.419494;
  142. }
  143. case 2:
  144. {
  145. hInfo[IDH][EHX] = 225.756989,
  146. hInfo[IDH][EHY] = 1240.000000,
  147. hInfo[IDH][EHZ] = 1082.149902;
  148. }
  149. case 8:
  150. {
  151. hInfo[IDH][EHX] = 2365.3000,
  152. hInfo[IDH][EHY] = -1132.9200,
  153. hInfo[IDH][EHZ] = 1050.8750;
  154. }
  155. case 3:
  156. {
  157. hInfo[IDH][EHX] = 235.508994,
  158. hInfo[IDH][EHY] = 1189.169897,
  159. hInfo[IDH][EHZ] = 1080.339966;
  160. }
  161. case 7:
  162. {
  163. hInfo[IDH][EHX] = 225.630997,
  164. hInfo[IDH][EHY] = 1022.479980,
  165. hInfo[IDH][EHZ] = 1084.069946;
  166. }
  167. case 5:
  168. {
  169. hInfo[IDH][EHX] = 1263.0800,
  170. hInfo[IDH][EHY] = -785.3090,
  171. hInfo[IDH][EHZ] = 1091.9063;
  172. }
  173. }
  174. hInfo[IDH][HousePickup] = CreatePickup(1273, 1, Pos[0], Pos[1], Pos[2], 0);
  175. format(str, sizeof(str), "%d :îñôø áéú\n%d$ :îçéø\nôðåé ìøëéùä", IDH, params[0]);
  176. hInfo[IDH][HouseText] = Create3DTextLabel(str, -1, Pos[0], Pos[1], Pos[2], 50, 0, 0);
  177. return 1;
  178. }
  179. CMD:worldh(playerid, params[])
  180. {
  181. SendFormatMessage(playerid, -1, "WORLD: %d | HID: %d", WorldH, IDH);
  182. return 1;
  183. }
  184. CMD:exithouse(playerid, params[])
  185. {
  186. if(GetPlayerInterior(playerid) != hInfo[PickHouse[playerid]][HouseInt]) return SendClientMessage(playerid, -1, ".àéðê ðîöà ááéúê");
  187. SetPlayerVirtualWorld(playerid, 0);
  188. SetPlayerInterior(playerid, 0);
  189. SpawnPlayer(playerid);
  190. SendClientMessage(playerid, -1, ".éöàú îáéúê áäöìçä");
  191. return 1;
  192. }
  193. public OnPlayerPickUpPickup(playerid, pickupid)
  194. {
  195. for(new i=1; i<=MAX_HOUSES; i++)
  196. {
  197. if(pickupid == hInfo[i][HousePickup])
  198. {
  199. ShowPlayerDialog(playerid, 28, DIALOG_STYLE_LIST, "HOUSE BY SYNTRICT WWW.GTA-IL.NET", "÷ðééú äáéú\nîëéøú äáéú\nëðéñú äáéú", "àéùåø", "áéèåì");
  200. PickHouse[playerid] = i;
  201. }
  202. }
  203. return 1;
  204. }
  205. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  206. {
  207. if(dialogid == 28)
  208. {
  209. if(!response) return true;
  210. new str[100];
  211. switch(listitem)
  212. {
  213. case 0:
  214. {
  215. if(hInfo[PickHouse[playerid]][HouseOwned] == 1) return SendFormatMessage(playerid, -1, ".%s áéú æä ëáø ááòìåúå ùì äùç÷ï", hInfo[PickHouse[playerid]][HouseOwner]);
  216. if(GetPlayerMoney(playerid) < hInfo[PickHouse[playerid]][HousePrice]) return SendFormatMessage(playerid, -1, ".[%d$] àéï áøùåúê àú ñëåí äëñó äðãøù", hInfo[PickHouse[playerid]][HousePrice]);
  217. GivePlayerMoney(playerid, -hInfo[PickHouse[playerid]][HousePrice]);
  218. hInfo[PickHouse[playerid]][HouseOwner] = GetName(playerid);
  219. hInfo[PickHouse[playerid]][HouseOwned] = 1;
  220. format(str, sizeof(str), "%d :îñôø áéú\n%s :áòìéí", PickHouse[playerid], hInfo[PickHouse[playerid]][HouseOwner]);
  221. Update3DTextLabelText(hInfo[PickHouse[playerid]][HouseText], -1, str);
  222. SendFormatMessage(-1, -1, ".÷ðä áéú %s äùç÷ï", hInfo[PickHouse[playerid]][HouseOwner]);
  223. }
  224. case 1:
  225. {
  226. if(strcmp(GetName(playerid), hInfo[PickHouse[playerid]][HouseOwner], false)) return SendClientMessage(playerid, -1, ".áéú æä àéðå ááòìåúê");
  227. if(hInfo[PickHouse[playerid]][HouseOwned] == 0) return SendClientMessage(playerid, -1, ".àéï àôùøåú ìîëåø áéú æä");
  228. GivePlayerMoney(playerid, hInfo[PickHouse[playerid]][HousePrice]/2);
  229. SendClientMessage(playerid, -1, ".îëøú àú áéúê å÷éáìú îçöéú îòøëå");
  230. hInfo[PickHouse[playerid]][HouseOwner] = EOS;
  231. hInfo[PickHouse[playerid]][HouseOwned] = 0;
  232. format(str, sizeof(str), "%d :îñôø áéú\n%d$ :îçéø\nôðåé ìøëéùä", PickHouse[playerid], hInfo[PickHouse[playerid]][HousePrice]);
  233. Update3DTextLabelText(hInfo[PickHouse[playerid]][HouseText], -1, str);
  234. }
  235. case 2:
  236. {
  237. if(strcmp(GetName(playerid), hInfo[PickHouse[playerid]][HouseOwner], false)) return SendClientMessage(playerid, 0xFF0000FF, ".áéú æä àéðå ááòìåúê");
  238. SetPlayerVirtualWorld(playerid, hInfo[PickHouse[playerid]][HouseWorld]);
  239. SetPlayerInterior(playerid, hInfo[PickHouse[playerid]][HouseInt]);
  240. SetPlayerPos(playerid, hInfo[PickHouse[playerid]][EHX], hInfo[PickHouse[playerid]][EHY], hInfo[PickHouse[playerid]][EHZ]);
  241. SendClientMessage(playerid, -1, ".ðëðñú áäöìçä ìáéúê");
  242. SendClientMessage(playerid, -1, "./ExitHouse - ìéöéàä îäáéú ä÷ù/é");
  243. }
  244. }
  245. }
  246. return 1;
  247. }
  248. stock hFile(houseid)
  249. {
  250. new file[15];
  251. format(file, sizeof(file), "Houses/%d.ini", houseid);
  252. return file;
  253. }
  254. stock GetName(playerid)
  255. {
  256. new name[128];
  257. GetPlayerName(playerid, name, sizeof(name));
  258. return name;
  259. }
  260. stock SendFormatMessage ( playerid, color, const format [ ], va_args<> ) return ( playerid == -1 )? SendClientMessageToAll ( color, va_return ( format, va_start<3> ) ) : SendClientMessage ( playerid, color, va_return ( format, va_start<3> ) );
Advertisement
Add Comment
Please, Sign In to add comment