Rei_Ayanami

Sistema de casa

Jun 7th, 2023
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //============ Sistema Criar Casa ======================||
  2. #define MAX_CASAS 600
  3.  
  4. enum Casas
  5. {
  6. Float:X,
  7. Float:Y,
  8. Float:Z,
  9. Float:Xp,
  10. Float:Yp,
  11. Float:Zp,
  12. Pickup,
  13. Text3D:TextLabel,
  14. pInterior
  15. };
  16. new pCasa[MAX_PLAYERS][Casas];
  17.  
  18. enum Inters
  19. {
  20. Float:XI,
  21. Float:YI,
  22. Float:ZI,
  23. Float:AI,
  24. pID
  25. };
  26. new Interiores[][Inters] =
  27. {
  28. {2196.84, -1204.36, 1049.02, 94.0010, 6},
  29. {2259.38, -1135.89, 1050.64, 275.3992, 10},
  30. {2282.99, -1140.28, 1050.89, 358.4660, 11},
  31. {2233.69, -1115.26, 1050.88, 358.4660, 5},
  32. {2218.39, -1076.21, 1050.48, 95.2635, 1},
  33. {2496.00, -1692.08, 1014.74, 177.8159, 3},
  34. {2365.25, -1135.58, 1050.88, 359.0367, 8},
  35. {2317.77, -1026.76, 1050.21, 359.0367, 9},
  36. {2324.41, -1149.54, 1050.71, 359.0367, 12},
  37. {1260.6603, -785.4005, 1091.9063, 270.9891, 5},
  38. {140.28, 1365.92, 1083.85, 9.6901, 5}
  39. };
  40.  
  41. new CasaDentro[MAX_PLAYERS];
  42.  
  43. public OnGameModeInit()
  44. {
  45. for(new i = 0; i < MAX_CASAS; i++) CarregarCasa(i);
  46. return 1;
  47. }
  48.  
  49. CMD:criarcasa(playerid, params[])
  50. {
  51. new idcasa, str[120], valor, interior, Float:Pos[3], strmsg[150];
  52. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, Vermelho, "Voce nao tem permissao");
  53. if(sscanf(params, "ddd", idcasa, valor, interior)) return SendClientMessage(playerid, Vermelho, "/criarcasa [Numero] [Valor] [Interior]");
  54. format(str, 120, "Casas/%d.ini", idcasa);
  55. if(dini_Exists(str)) return SendClientMessage(playerid, Vermelho, "Esta casa ja existe");
  56. pCasa[idcasa][pInterior] = interior;
  57. GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  58. pCasa[idcasa][X] = Pos[0];
  59. pCasa[idcasa][Y] = Pos[1];
  60. pCasa[idcasa][Z] = Pos[2];
  61. pCasa[idcasa][Xp] = Interiores[interior][XI];
  62. pCasa[idcasa][Yp] = Interiores[interior][YI];
  63. pCasa[idcasa][Zp] = Interiores[interior][ZI];
  64. dini_Create(str);
  65. dini_IntSet(str, "DonoCasa", 0);
  66. dini_IntSet(str, "CasaTrancada", 0);
  67. dini_IntSet(str, "Valor", valor);
  68. dini_IntSet(str, "Interior", Interiores[interior][pID]);
  69. dini_IntSet(str, "MundoVirtual", idcasa);
  70. dini_FloatSet(str, "CasaX", Pos[0]);
  71. dini_FloatSet(str, "CasaY", Pos[1]);
  72. dini_FloatSet(str, "CasaZ", Pos[2]);
  73. dini_FloatSet(str, "InterX", pCasa[idcasa][Xp]);
  74. dini_FloatSet(str, "InterY", pCasa[idcasa][Yp]);
  75. dini_FloatSet(str, "InterZ", pCasa[idcasa][Zp]);
  76. format(strmsg, 150, "Voce criou a casa %d pelo valor de %d com o interior %d", idcasa, valor, interior);
  77. SendClientMessage(playerid, -1, strmsg);
  78. CarregarCasa(idcasa);
  79. return 1;
  80. }
  81. CMD:apagarcasa(playerid, params[])
  82. {
  83. new string[120], idcasa;
  84. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, Vermelho, "Voce nao tem permissao");
  85. if(sscanf(params, "d", idcasa)) return SendClientMessage(playerid, Vermelho, "Use /apagarcasa [IdCasa]");
  86. format(string, 120, "Casas/%d.ini", idcasa);
  87. if(!dini_Exists(string)) return SendClientMessage(playerid, Vermelho, "Esta casa nao existe");
  88. dini_Remove(string);
  89. DestroyPickup(pCasa[idcasa][Pickup]);
  90. Delete3DTextLabel(pCasa[idcasa][TextLabel]);
  91. format(string, 120, "Voce deletou a casa %d", idcasa);
  92. SendClientMessage(playerid, -1, string);
  93. return 1;
  94. }
  95. CMD:comprarcasa(playerid)
  96. {
  97. new string[125], string2[125];
  98. for(new c = 0; c < MAX_CASAS; c++)
  99. {
  100. format(string, 125, "Casas/%d.ini", c);
  101. if(dini_Exists(string))
  102. {
  103. new Float:Pos[3];
  104. Pos[0] = dini_Float(string, "CasaX");
  105. Pos[1] = dini_Float(string, "CasaY");
  106. Pos[2] = dini_Float(string, "CasaZ");
  107. if(IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2]))
  108. {
  109. if(Player[playerid][pChave] > 0) return SendClientMessage(playerid, Vermelho, "Voce ja tem uma casa");
  110. if(dini_Int(string, "DonoCasa") == 1) return SendClientMessage(playerid, Vermelho, "Esta casa ja tem um dono");
  111. if(GetPlayerMoney(playerid) < dini_Int(string, "Valor")) return SendClientMessage(playerid, Vermelho, "Voce nao tem dinheiro suficiente");
  112. dini_IntSet(string, "DonoCasa", 1);
  113. dini_Set(string, "NomeProprietario", pName(playerid));
  114. Player[playerid][pChave] = c;
  115. GivePlayerMoney(playerid, -dini_Int(string, "Valor"));
  116. format(string2, 125, "Voce comprou a casa numero %d por R$ %d", c, dini_Int(string, "Valor"));
  117. SendClientMessage(playerid, -1, string2);
  118. DestroyPickup(pCasa[c][Pickup]);
  119. Delete3DTextLabel(pCasa[c][TextLabel]);
  120. CarregarCasa(c);
  121. }
  122. }
  123. }
  124. return 1;
  125. }
  126. CMD:vendercasa(playerid)
  127. {
  128. new string[125];
  129. for(new c = 0; c < MAX_CASAS; c++)
  130. {
  131. format(string, 125, "Casas/%d.ini", c);
  132. if(dini_Exists(string))
  133. {
  134. new Float:Pos[3];
  135. Pos[0] = dini_Float(string, "CasaX");
  136. Pos[1] = dini_Float(string, "CasaY");
  137. Pos[2] = dini_Float(string, "CasaZ");
  138. if(IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2]))
  139. {
  140. if(Player[playerid][pChave] == 0) return SendClientMessage(playerid, Vermelho, "Voce nao tem uma casa");
  141. if(Player[playerid][pChave] != c) return SendClientMessage(playerid, Vermelho, "Esta casa nao e sua");
  142. new casaid = Player[playerid][pChave];
  143. dini_IntSet(string, "DonoCasa", 0);
  144. GivePlayerMoney(playerid, dini_Int(string, "Valor") / 2);
  145. DestroyPickup(pCasa[casaid][Pickup]);
  146. Delete3DTextLabel(pCasa[casaid][TextLabel]);
  147. CarregarCasa(casaid);
  148. Player[playerid][pChave] = 0;
  149. SendClientMessage(playerid, -1, "Voce vendeu sua casa, e recebeu metade do valor");
  150. }
  151. }
  152. }
  153. return 1;
  154. }
  155. CMD:entrarcasa(playerid)
  156. {
  157. new string[125];
  158. for(new c = 0; c < MAX_CASAS; c++)
  159. {
  160. format(string, 125, "Casas/%d.ini", c);
  161. if(dini_Exists(string))
  162. {
  163. new Float:Pos[3];
  164. Pos[0] = dini_Float(string, "CasaX");
  165. Pos[1] = dini_Float(string, "CasaY");
  166. Pos[2] = dini_Float(string, "CasaZ");
  167. if(IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2]))
  168. {
  169. if(dini_Int(string, "CasaTrancada") == 1) return SendClientMessage(playerid, Vermelho, "Esta casa esta trancada");
  170. CasaDentro[playerid] = c;
  171. SetPlayerInterior(playerid, dini_Int(string, "Interior"));
  172. SetPlayerPos(playerid, dini_Float(string, "InterX"), dini_Float(string, "InterY"), dini_Float(string, "InterZ"));
  173. SetPlayerVirtualWorld(playerid, dini_Int(string, "MundoVirtual"));
  174. }
  175. }
  176. }
  177. return 1;
  178. }
  179. CMD:saircasa(playerid)
  180. {
  181. new string[125];
  182. format(string, 125, "Casas/%d.ini", CasaDentro[playerid]);
  183. if(dini_Exists(string))
  184. {
  185. new Float:Pos[3];
  186. Pos[0] = dini_Float(string, "InterX");
  187. Pos[1] = dini_Float(string, "InterY");
  188. Pos[2] = dini_Float(string, "InterZ");
  189. if(IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2]))
  190. {
  191. CasaDentro[playerid] = -1;
  192. SetPlayerInterior(playerid,0);
  193. SetPlayerPos(playerid, dini_Float(string, "CasaX"), dini_Float(string, "CasaY"), dini_Float(string, "CasaZ"));
  194. SetPlayerVirtualWorld(playerid, 0);
  195. }
  196. }
  197. return 1;
  198. }
  199.  
  200. CMD:trancarcasa(playerid)
  201. {
  202. new string[125];
  203. for(new c = 0; c < MAX_CASAS; c++)
  204. {
  205. format(string, 125, "Casas/%d.ini", c);
  206. if(dini_Exists(string))
  207. {
  208. new Float:Pos[3];
  209. Pos[0] = dini_Float(string, "CasaX");
  210. Pos[1] = dini_Float(string, "CasaY");
  211. Pos[2] = dini_Float(string, "CasaZ");
  212. if(IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2]))
  213. {
  214. if(Player[playerid][pChave] == 0) return SendClientMessage(playerid, Vermelho, "Voce nao tem uma casa");
  215. if(Player[playerid][pChave] != c) return SendClientMessage(playerid, Vermelho, "Esta casa nao e sua");
  216. if(dini_Int(string, "CasaTrancada") == 1) return SendClientMessage(playerid, Vermelho, "Esta casa ja esta trancada");
  217. SendClientMessage(playerid, -1, "Voce trancou a sua casa");
  218. dini_IntSet(string, "CasaTrancada", 1);
  219. }
  220. }
  221. }
  222. return 1;
  223. }
  224.  
  225. CMD:destrancarcasa(playerid)
  226. {
  227. new string[125];
  228. for(new c = 0; c < MAX_CASAS; c++)
  229. {
  230. format(string, 125, "Casas/%d.ini", c);
  231. if(dini_Exists(string))
  232. {
  233. new Float:Pos[3];
  234. Pos[0] = dini_Float(string, "CasaX");
  235. Pos[1] = dini_Float(string, "CasaY");
  236. Pos[2] = dini_Float(string, "CasaZ");
  237. if(IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2]))
  238. {
  239. if(Player[playerid][pChave] == 0) return SendClientMessage(playerid, Vermelho, "Voce nao tem uma casa");
  240. if(Player[playerid][pChave] != c) return SendClientMessage(playerid, Vermelho, "Esta casa nao e sua");
  241. if(dini_Int(string, "CasaTrancada") == 0) return SendClientMessage(playerid, Vermelho, "Esta casa ja esta destrancada");
  242. SendClientMessage(playerid, -1, "Voce destrancou a sua casa");
  243. dini_IntSet(string, "CasaTrancada", 0);
  244. }
  245. }
  246. }
  247. return 1;
  248. }
  249.  
  250. stock CarregarCasa(casaid)
  251. {
  252. new str[250], strpasta[50];
  253. format(strpasta, 50, "Casas/%d.ini", casaid);
  254. if(dini_Exists(strpasta))
  255. {
  256. if(dini_Int(strpasta, "DonoCasa") == 0)
  257. {
  258. format(str, 250, "Numero: %d\nValor: %d\nUse /comprarcasa", casaid, dini_Int(strpasta, "Valor"));
  259. pCasa[casaid][TextLabel] = Create3DTextLabel(str, -1, dini_Float(strpasta, "CasaX"), dini_Float(strpasta, "CasaY"), dini_Float(strpasta, "CasaZ"), 20.0, 0);
  260. pCasa[casaid][Pickup] = CreatePickup(1273, 1, dini_Float(strpasta, "CasaX"), dini_Float(strpasta, "CasaY"), dini_Float(strpasta, "CasaZ"));
  261. }
  262. if(dini_Int(strpasta, "DonoCasa") == 1)
  263. {
  264. format(str, 250, "Numero: %d\nProprietario: %s\nUse /entrarcasa", casaid, dini_Get(strpasta, "NomeProprietario"));
  265. pCasa[casaid][TextLabel] = Create3DTextLabel(str, -1, dini_Float(strpasta, "CasaX"), dini_Float(strpasta, "CasaY"), dini_Float(strpasta, "CasaZ"), 20.0, 0);
  266. pCasa[casaid][Pickup] = CreatePickup(19522, 1, dini_Float(strpasta, "CasaX"), dini_Float(strpasta, "CasaY"), dini_Float(strpasta, "CasaZ"));
  267. }
  268. }
  269. return 1;
  270. }
Add Comment
Please, Sign In to add comment