SHOW:
|
|
- or go back to the newest paste.
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 | } |