SHOW:
|
|
- or go back to the newest paste.
1 | /* __ __ | |
2 | /\ \/\ \ | |
3 | ____\ \ \_\ \ ___ __ __ ____ __ | |
4 | /',__\\ \ _ \ / __`\/\ \/\ \ /',__\ /'__`\ | |
5 | /\__, `\\ \ \ \ \/\ \ \ \ \ \_\ \/\__, `\/\ __/ | |
6 | \/\____/ \ \_\ \_\ \____/\ \____/\/\____/\ \____\ | |
7 | \/___/ \/_/\/_/\/___/ \/___/ \/___/ \/____/ | |
8 | ||
9 | */ | |
10 | /* | |
11 | ============[ChangeLog]==========// | |
12 | 8/01/2011 [1.0.0] - Initial Release | |
13 | 9/01/2011 [1.0.1] - Fixed 3D Text Labels | |
14 | - Fixed bugged when you destroy a house | |
15 | - Added 3 more interiors | |
16 | - Fixed a bug with Virtual worlds | |
17 | */ | |
18 | //==========[Includes]==========// | |
19 | #include <a_samp>//by SA-MP Team | |
20 | #include <zcmd>//by Zeex | |
21 | #include <sscanf2>//by Y_Less | |
22 | #include <mysql>//by StrickenKid | |
23 | #include <seif_text>//by Seif | |
24 | #include <streamer>//by Incognito | |
25 | //==========[Database]==========// | |
26 | #define SQL_HOST "localhost"// Your MySQL Host | |
27 | #define SQL_USER "root"// Your MySQL username(usually root) | |
28 | #define SQL_PASS ""// Your MySQL Password | |
29 | #define SQL_DB "samp"// Your MySQL database (default samp) | |
30 | //==========[Shit]==========// | |
31 | #define function%0(%1) forward%0(%1); public%0(%1) | |
32 | #define MAX_HOUSES 50 | |
33 | #define SCRIPT_VERSION "1.0.1" | |
34 | #define SCRIPT_AUTHOR "Souvlaki" | |
35 | //-------------------------------------------------------------------------------------// | |
36 | #define GREEN 0x007C00AA | |
37 | #define ORANGE 0xF68B00AA | |
38 | //-------------------------------------------------------------------------------------// | |
39 | new Text3D:HouseText[MAX_HOUSES]; | |
40 | new sArray[5]; | |
41 | //-------------------------------------------------------------------------------------// | |
42 | enum hInfo | |
43 | { | |
44 | hID, | |
45 | hOwned, | |
46 | hOwner[24], | |
47 | Float:hEntranceX, | |
48 | Float:hEntranceY, | |
49 | Float:hEntranceZ, | |
50 | Float:hExitX, | |
51 | Float:hExitY, | |
52 | Float:hExitZ, | |
53 | hInterior, | |
54 | hOpen, | |
55 | hPickup, | |
56 | hPrice | |
57 | }; | |
58 | new HouseInfo[MAX_HOUSES][hInfo]; | |
59 | //-------------------------------------------------------------------------------------// | |
60 | public OnFilterScriptInit() | |
61 | { | |
62 | print("--------------------------------------\n"); | |
63 | print("sHouse version 1.0.1 Loaded"); | |
64 | print("\n--------------------------------------"); | |
65 | mysql_init(LOG_ALL, 1); | |
66 | mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB); | |
67 | LoadSHouses(); | |
68 | return 1; | |
69 | } | |
70 | //-------------------------------------------------------------------------------------// | |
71 | public OnFilterScriptExit() | |
72 | { | |
73 | print("--------------------------------------\n"); | |
74 | print("sHouse version 1.0.1 Unloaded"); | |
75 | print("\n--------------------------------------"); | |
76 | for(new id; id < MAX_HOUSES; id++) | |
77 | { | |
78 | SaveSHouse(id); | |
79 | } | |
80 | return 1; | |
81 | } | |
82 | //-------------------------------------------------------------------------------------// | |
83 | public OnPlayerConnect(playerid) | |
84 | { | |
85 | DisplayTextForPlayer(playerid, "sHouse", 5, 3, 3); | |
86 | return 1; | |
87 | } | |
88 | //-------------------------------------------------------------------------------------// | |
89 | function OnPlayerPickUpDynamicPickup(playerid, pickupid) | |
90 | { | |
91 | new string[128]; | |
92 | for(new id = 0; id < sizeof(HouseInfo); id++) | |
93 | { | |
94 | if(IsPlayerInRangeOfPoint(playerid, 2.0, HouseInfo[id][hEntranceX], HouseInfo[id][hEntranceY], HouseInfo[id][hEntranceZ])) | |
95 | { | |
96 | if(HouseInfo[id][hOwned] == 0) | |
97 | { | |
98 | format(string,sizeof(string),"~r~Property~n~~w~For Sale~n~~y~~h~Price:~w~ %d",HouseInfo[id][hPrice]); | |
99 | DisplayTextForPlayer(playerid, string, 5, 3, 3); | |
100 | } | |
101 | else if(HouseInfo[id][hOwned] == 1) | |
102 | { | |
103 | format(string,sizeof(string),"~r~Property~n~~y~~h~Owner:~w~ %s",HouseInfo[id][hOwner], HouseInfo[id][hPrice]); | |
104 | DisplayTextForPlayer(playerid, string, 5, 3, 3); | |
105 | } | |
106 | } | |
107 | } | |
108 | return 1; | |
109 | } | |
110 | //-------------------------------------------------------------------------------------// | |
111 | COMMAND:enter(playerid, params[]) | |
112 | { | |
113 | #pragma unused params | |
114 | for(new id = 0; id < sizeof(HouseInfo); id++) | |
115 | { | |
116 | if(IsPlayerInRangeOfPoint(playerid, 2.0, HouseInfo[id][hEntranceX], HouseInfo[id][hEntranceY], HouseInfo[id][hEntranceZ])) | |
117 | { | |
118 | if(HouseInfo[id][hOpen] == 0) | |
119 | { | |
120 | DisplayTextForPlayer(playerid,"~r~Locked",2, 1, 1); | |
121 | } | |
122 | else | |
123 | { | |
124 | SetPlayerPos(playerid, HouseInfo[id][hExitX], HouseInfo[id][hExitY], HouseInfo[id][hExitZ]); | |
125 | SetPlayerInterior(playerid, HouseInfo[id][hInterior]); | |
126 | SetPlayerVirtualWorld(playerid, id); | |
127 | } | |
128 | } | |
129 | } | |
130 | return 1; | |
131 | } | |
132 | //-------------------------------------------------------------------------------------// | |
133 | COMMAND:exit(playerid, params[]) | |
134 | { | |
135 | #pragma unused params | |
136 | for(new id = 0; id < sizeof(HouseInfo); id++) | |
137 | { | |
138 | if(IsPlayerInRangeOfPoint(playerid, 5.0, HouseInfo[id][hExitX], HouseInfo[id][hExitY], HouseInfo[id][hExitZ])) | |
139 | { | |
140 | SetPlayerPos(playerid, HouseInfo[id][hEntranceX], HouseInfo[id][hEntranceY], HouseInfo[id][hEntranceZ]); | |
141 | SetPlayerInterior(playerid, 0); | |
142 | SetPlayerVirtualWorld(playerid, 0); | |
143 | } | |
144 | } | |
145 | return 1; | |
146 | } | |
147 | //-------------------------------------------------------------------------------------// | |
148 | COMMAND:createhouse(playerid, params[]) | |
149 | { | |
150 | if(sscanf(params, "ii", sArray[0], sArray[1])) | |
151 | { | |
152 | SendClientMessage(playerid, GREEN, "[SYNTAX]: /createhouse [Price] [Interior (1-3)]"); | |
153 | SendClientMessage(playerid, ORANGE, "[Interiors]: Large/2 story/3 bedrooms (1) | Medium/1 story/1 bedroom (2) | Small/1 story/1 bedroom (3)"); | |
154 | SendClientMessage(playerid, ORANGE, "[Interiors]: VERY Large/2 story/4 bedrooms (4) | Small/1 story/2 bedrooms (5) | Small/1 story/2 bedrooms (6)"); | |
155 | return 1; | |
156 | } | |
157 | if(IsPlayerAdmin(playerid)) | |
158 | { | |
159 | if(sArray[1] > 3 && sArray[1] < 1) return SendClientMessage(playerid, ORANGE, "[Interiors]: House Large 1 (1) | House Medium (2) | House Small (3)"); | |
160 | new Float:PlayerPos[3]; | |
161 | GetPlayerPos(playerid, PlayerPos[0], PlayerPos[1], PlayerPos[2]); | |
162 | CreateSHouse(PlayerPos[0], PlayerPos[1], PlayerPos[2], sArray[0], sArray[1]); | |
163 | } | |
164 | else | |
165 | { | |
166 | SendClientMessage(playerid, ORANGE, "[ERROR]: You ain't no RCON admin, you piece of shit motherfucker."); | |
167 | } | |
168 | return 1; | |
169 | } | |
170 | //-------------------------------------------------------------------------------------// | |
171 | COMMAND:movehouse(playerid, params[]) | |
172 | { | |
173 | if(sscanf(params, "i", sArray[0])) return SendClientMessage(playerid, GREEN, "[SYNTAX]: /movehouse [HouseID]"); | |
174 | if(IsPlayerAdmin(playerid)) | |
175 | { | |
176 | new Float:PlayerPos[3]; | |
177 | GetPlayerPos(playerid, PlayerPos[0], PlayerPos[1], PlayerPos[2]); | |
178 | Delete3DTextLabel(HouseText[sArray[0]]); | |
179 | DestroyDynamicPickup(HouseInfo[sArray[0]][hPickup]); | |
180 | HouseInfo[sArray[0]][hEntranceX] = PlayerPos[0]; | |
181 | HouseInfo[sArray[0]][hEntranceY] = PlayerPos[1]; | |
182 | HouseInfo[sArray[0]][hEntranceZ] = PlayerPos[2]; | |
183 | SaveSHouse(sArray[0]); | |
184 | if(HouseInfo[sArray[0]][hOwned] == 0) | |
185 | { | |
186 | HouseInfo[sArray[0]][hPickup] = CreateDynamicPickup(1273, 1, HouseInfo[sArray[0]][hEntranceX], HouseInfo[sArray[0]][hEntranceY], HouseInfo[sArray[0]][hEntranceZ]); | |
187 | } | |
188 | else if(HouseInfo[sArray[0]][hOwned] == 1) | |
189 | { | |
190 | HouseInfo[sArray[0]][hPickup] = CreateDynamicPickup(1239, 1, HouseInfo[sArray[0]][hEntranceX], HouseInfo[sArray[0]][hEntranceY], HouseInfo[sArray[0]][hEntranceZ]); | |
191 | } | |
192 | } | |
193 | else | |
194 | { | |
195 | SendClientMessage(playerid, ORANGE, "[ERROR]: You ain't no RCON admin, you piece of shit motherfucker."); | |
196 | } | |
197 | return 1; | |
198 | } | |
199 | //-------------------------------------------------------------------------------------// | |
200 | COMMAND:destroyhouse(playerid, params[]) | |
201 | { | |
202 | new string[256]; | |
203 | if(sscanf(params, "i", sArray[0])) return SendClientMessage(playerid, GREEN, "[SYNTAX]: /destroyhouse [id]"); | |
204 | if(IsPlayerAdmin(playerid)) | |
205 | { | |
206 | format(string, sizeof(string), "DELETE FROM Houses WHERE id = %i", sArray[0]); | |
207 | mysql_query(string); | |
208 | DestroyDynamic3DTextLabel(HouseText[sArray[0]]); | |
209 | DestroyDynamicPickup(HouseInfo[sArray[0]][hPickup]); | |
210 | mysql_query("SELECT MAX(id) FROM Houses"); | |
211 | mysql_store_result(); | |
212 | new SQL[20]; | |
213 | mysql_fetch_row(SQL, "|"); | |
214 | new SQLID = strval(SQL); | |
215 | mysql_free_result(); | |
216 | format(string, sizeof(string), "ALTER TABLE `Houses` AUTO_INCREMENT =%i", SQLID); | |
217 | mysql_query(string); | |
218 | //SaveSHouse([sArray[0]]); | |
219 | } | |
220 | else | |
221 | { | |
222 | SendClientMessage(playerid, ORANGE, "[ERROR]: You ain't no RCON admin, you piece of shit motherfucker."); | |
223 | } | |
224 | return 1; | |
225 | } | |
226 | //-------------------------------------------------------------------------------------// | |
227 | COMMAND:shouse(playerid, params[]) | |
228 | { | |
229 | if(IsPlayerAdmin(playerid)) | |
230 | { | |
231 | SendClientMessage(playerid, GREEN, "[HELP]: /createhouse [Price] [Interior (1-3)][Will create a house at your position]."); | |
232 | SendClientMessage(playerid, GREEN, "[HELP]: /movehouse [HouseID] [Will move a house to your position]."); | |
233 | SendClientMessage(playerid, GREEN, "[HELP]: /destroyhouse [HouseID] [Will move a house with the selected ID]."); | |
234 | SendClientMessage(playerid, GREEN, "[HELP]: /househelp [Player Commands for houses]."); | |
235 | } | |
236 | else | |
237 | { | |
238 | SendClientMessage(playerid, ORANGE, "[ERROR]: You ain't no RCON admin, you piece of shit motherfucker."); | |
239 | } | |
240 | return 1; | |
241 | }// | |
242 | //-------------------------------------------------------------------------------------// | |
243 | COMMAND:househelp(playerid, params[]) | |
244 | { | |
245 | SendClientMessage(playerid, GREEN, "[HELP]: /buyhouse [You can buy a house]."); | |
246 | SendClientMessage(playerid, GREEN, "[HELP]: /sellhouse [You will sell your house]."); | |
247 | SendClientMessage(playerid, GREEN, "[HELP]: /lock [You will lock/unlock your house]."); | |
248 | return 1; | |
249 | } | |
250 | //-------------------------------------------------------------------------------------// | |
251 | COMMAND:buyhouse(playerid, params[]) | |
252 | { | |
253 | new id = IsPlayerNearByHouse(playerid); | |
254 | if(HouseInfo[id][hOwned] == 1) return SendClientMessage(playerid, ORANGE, "[ERROR]This house is already owned!"); | |
255 | if(GetPlayerMoney(playerid) >= HouseInfo[id][hPrice]) | |
256 | { | |
257 | GivePlayerMoney(playerid, -HouseInfo[id][hPrice]); | |
258 | HouseInfo[id][hOwned] = 1; | |
259 | strmid(HouseInfo[id][hOwner], GetPlayerNameRP(playerid), 0, strlen(GetPlayerNameRP(playerid)), 255); | |
260 | DestroyDynamicPickup(HouseInfo[id][hPickup]); | |
261 | HouseInfo[id][hPickup] = CreateDynamicPickup(1239, 1, HouseInfo[id][hEntranceX], HouseInfo[id][hEntranceY], HouseInfo[id][hEntranceZ]); | |
262 | Update3DTextLabels(); | |
263 | SaveSHouse(id); | |
264 | } | |
265 | else return SendClientMessage(playerid, ORANGE, "[ERROR]You don't have enought money to buy this house!"); | |
266 | return 1; | |
267 | } | |
268 | //-------------------------------------------------------------------------------------// | |
269 | COMMAND:sellhouse(playerid, params[]) | |
270 | { | |
271 | new id = IsPlayerNearByHouse(playerid); | |
272 | if(HouseInfo[id][hOwned] == 0) return SendClientMessage(playerid, ORANGE, "[ERROR]This house is already for sale!"); | |
273 | if(!strcmp(GetPlayerNameRP(playerid), HouseInfo[id][hOwner], true)) | |
274 | { | |
275 | GivePlayerMoney(playerid, HouseInfo[id][hPrice]); | |
276 | HouseInfo[id][hOwned] = 0; | |
277 | strmid(HouseInfo[id][hOwner], "None", 0, strlen("None"), 255); | |
278 | DestroyDynamicPickup(HouseInfo[id][hPickup]); | |
279 | HouseInfo[id][hPickup] = CreateDynamicPickup(1273, 1, HouseInfo[id][hEntranceX], HouseInfo[id][hEntranceY], HouseInfo[id][hEntranceZ]); | |
280 | Update3DTextLabels(); | |
281 | SaveSHouse(id); | |
282 | } | |
283 | else return SendClientMessage(playerid, ORANGE, "[ERROR]You don't own this house!"); | |
284 | return 1; | |
285 | } | |
286 | //-------------------------------------------------------------------------------------// | |
287 | COMMAND:lock(playerid, params[]) | |
288 | { | |
289 | new id = IsPlayerNearByHouse(playerid); | |
290 | if(id != -1) | |
291 | { | |
292 | if(!strcmp(GetPlayerNameRP(playerid), HouseInfo[id][hOwner], true)) | |
293 | { | |
294 | if(HouseInfo[id][hOpen] == 0) | |
295 | { | |
296 | SendClientMessage(playerid, ORANGE, "[INFO]Door Unlocked!"); | |
297 | HouseInfo[id][hOpen] = 1; | |
298 | SaveSHouse(id); | |
299 | } | |
300 | else | |
301 | { | |
302 | HouseInfo[id][hOpen] = 0; | |
303 | SendClientMessage(playerid, ORANGE, "[INFO]Door locked!"); | |
304 | SaveSHouse(id); | |
305 | } | |
306 | } | |
307 | } | |
308 | return 1; | |
309 | } | |
310 | //-------------------------------------------------------------------------------------// | |
311 | function LoadSHouses() | |
312 | { | |
313 | for(new id; id < MAX_HOUSES; id++) | |
314 | { | |
315 | new DataString[128], Query[128]; | |
316 | format( Query, sizeof( Query ), "SELECT * FROM Houses WHERE id= '%d'", id); | |
317 | mysql_query(Query); | |
318 | mysql_store_result(); | |
319 | if(mysql_num_rows()) | |
320 | if(mysql_fetch_row(Query,"|")) | |
321 | { | |
322 | ||
323 | mysql_fetch_field("id", DataString); | |
324 | HouseInfo[id][hID] = strval(DataString); | |
325 | ||
326 | mysql_fetch_field("Owned", DataString); | |
327 | HouseInfo[id][hOwned] = strval(DataString); | |
328 | ||
329 | mysql_fetch_field("Owner", DataString); | |
330 | HouseInfo[id][hOwner] = strval(DataString); | |
331 | ||
332 | mysql_fetch_field("EntranceX", DataString); | |
333 | HouseInfo[id][hEntranceX] = floatstr(DataString); | |
334 | ||
335 | mysql_fetch_field("EntranceY", DataString); | |
336 | HouseInfo[id][hEntranceY] = floatstr(DataString); | |
337 | ||
338 | mysql_fetch_field("EntranceZ", DataString); | |
339 | HouseInfo[id][hEntranceZ] = floatstr(DataString); | |
340 | ||
341 | mysql_fetch_field("ExitX", DataString); | |
342 | HouseInfo[id][hExitX] = floatstr(DataString); | |
343 | ||
344 | mysql_fetch_field("ExitY", DataString); | |
345 | HouseInfo[id][hExitY] = floatstr(DataString); | |
346 | ||
347 | mysql_fetch_field("ExitZ", DataString); | |
348 | HouseInfo[id][hExitZ] = floatstr(DataString); | |
349 | ||
350 | mysql_fetch_field("Interior", DataString); | |
351 | HouseInfo[id][hInterior] = strval(DataString); | |
352 | ||
353 | mysql_fetch_field("Open", DataString); | |
354 | HouseInfo[id][hOpen] = strval(DataString); | |
355 | ||
356 | mysql_fetch_field("Pickup", DataString); | |
357 | HouseInfo[id][hPickup] = strval(DataString); | |
358 | ||
359 | ||
360 | mysql_fetch_field("Price", DataString); | |
361 | HouseInfo[id][hPrice] = strval(DataString); | |
362 | mysql_free_result(); | |
363 | if(HouseInfo[id][hOwned] == 0) | |
364 | { | |
365 | HouseText[id] = CreateDynamic3DTextLabel("[HOUSE FOR SALE]", GREEN, HouseInfo[id][hEntranceX], HouseInfo[id][hEntranceY], HouseInfo[id][hEntranceZ]+0.75, 75.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 75.0); | |
366 | HouseInfo[id][hPickup] = CreateDynamicPickup(1273, 1, HouseInfo[id][hEntranceX], HouseInfo[id][hEntranceY], HouseInfo[id][hEntranceZ]); | |
367 | } | |
368 | else if(HouseInfo[id][hOwned] == 1) | |
369 | { | |
370 | HouseText[id] = CreateDynamic3DTextLabel("[HOUSE]", GREEN, HouseInfo[id][hEntranceX], HouseInfo[id][hEntranceY], HouseInfo[id][hEntranceZ]+0.75, 75.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 75.0); | |
371 | HouseInfo[id][hPickup] = CreateDynamicPickup(1239, 1, HouseInfo[id][hEntranceX], HouseInfo[id][hEntranceY], HouseInfo[id][hEntranceZ]); | |
372 | } | |
373 | } | |
374 | } | |
375 | return 1; | |
376 | } | |
377 | //-------------------------------------------------------------------------------------// | |
378 | function Update3DTextLabels() | |
379 | { | |
380 | new string[64]; | |
381 | for(new id = 0; id < sizeof(HouseInfo); id++) | |
382 | { | |
383 | if(HouseInfo[id][hOwned] == 0) | |
384 | { | |
385 | format(string,sizeof(string), "[HOUSE FOR SALE]"); | |
386 | } | |
387 | else if(HouseInfo[id][hOwned] == 1) | |
388 | { | |
389 | format(string,sizeof(string), "[HOUSE]"); | |
390 | } | |
391 | UpdateDynamic3DTextLabelText(HouseText[id], GREEN,string); | |
392 | } | |
393 | return 1; | |
394 | } | |
395 | //-------------------------------------------------------------------------------------// | |
396 | function CreateSHouse(Float:X, Float:Y, Float:Z, price, interior) | |
397 | { | |
398 | new string[256]; | |
399 | format(string, sizeof(string), "INSERT INTO Houses (EntranceX, EntranceY, EntranceZ, Price, Owner) VALUES('%f', '%f', '%f', %i , 'None')", | |
400 | X, Y, Z, price); | |
401 | mysql_query(string); | |
402 | mysql_query("SELECT MAX(id) FROM Houses"); | |
403 | mysql_store_result(); | |
404 | new SQL[20]; | |
405 | mysql_fetch_row(SQL, "|"); | |
406 | new id = strval(SQL); | |
407 | HouseInfo[id][hPrice] = price; | |
408 | HouseInfo[id][hEntranceX] = X; | |
409 | HouseInfo[id][hEntranceY] = Y; | |
410 | HouseInfo[id][hEntranceZ] = Z; | |
411 | strmid(HouseInfo[id][hOwner], "None", 0, strlen("None"), 255); | |
412 | switch(interior) | |
413 | { | |
414 | case 1: | |
415 | { //Large/2 story/3 bedrooms/ | |
416 | SetHouseDetails(id, 3 ,235.508994, 1189.169897 ,1080.339966); | |
417 | } | |
418 | case 2: | |
419 | { //Medium/1 story/1 bedroom | |
420 | SetHouseDetails(id,2, 225.756989, 1240.000000, 1082.149902); | |
421 | } | |
422 | case 3: | |
423 | { //Small/1 story/1 bedroom | |
424 | SetHouseDetails(id, 1, 223.043991 , 1289.259888, 1082.199951); | |
425 | } | |
426 | case 4: | |
427 | { //VERY Large/2 story/4 bedrooms | |
428 | SetHouseDetails(id, 7, 225.630997, 1022.479980, 1084.069946 ); | |
429 | } | |
430 | case 5: | |
431 | { //Small/1 story/2 bedrooms | |
432 | SetHouseDetails(id, 15, 295.138977, 1474.469971, 1080.519897); | |
433 | } | |
434 | case 6: | |
435 | { //Small/1 story/2 bedrooms | |
436 | SetHouseDetails(id, 15, 328.493988, 1480.589966, 1084.449951 ); | |
437 | } | |
438 | } | |
439 | SaveSHouse(id); | |
440 | HouseInfo[id][hPickup] = CreateDynamicPickup(1273, 1, HouseInfo[id][hEntranceX], HouseInfo[id][hEntranceY], HouseInfo[id][hEntranceZ]); | |
441 | HouseText[id] = CreateDynamic3DTextLabel("[HOUSE FOR SALE]", GREEN, HouseInfo[id][hEntranceX], HouseInfo[id][hEntranceY], HouseInfo[id][hEntranceZ]+0.75, 75.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 75.0); | |
442 | return 1; | |
443 | } | |
444 | //-------------------------------------------------------------------------------------// | |
445 | function SetHouseDetails(id, interiorid, Float:X, Float:Y, Float:Z) | |
446 | { | |
447 | HouseInfo[id][hInterior] = interiorid; | |
448 | HouseInfo[id][hExitX] = X; | |
449 | HouseInfo[id][hExitY] = Y; | |
450 | HouseInfo[id][hExitZ] = Z; | |
451 | SaveSHouse(id); | |
452 | } | |
453 | //-------------------------------------------------------------------------------------// | |
454 | function SaveSHouse(id) | |
455 | { | |
456 | new string[256]; | |
457 | format(string, sizeof(string), "UPDATE Houses SET EntranceX='%f',EntranceY='%f',EntranceZ='%f', \ | |
458 | Interior= %i,ExitX='%f',ExitY='%f',ExitZ='%f', Price= %i,Owner='%s',Owned= %i ,Open= %i WHERE id = %i ", | |
459 | HouseInfo[id][hEntranceX],HouseInfo[id][hEntranceY],HouseInfo[id][hEntranceZ], | |
460 | HouseInfo[id][hInterior],HouseInfo[id][hExitX],HouseInfo[id][hExitY], | |
461 | HouseInfo[id][hExitZ],HouseInfo[id][hPrice],HouseInfo[id][hOwner], | |
462 | HouseInfo[id][hOwned], HouseInfo[id][hOpen], id); | |
463 | mysql_query(string); | |
464 | } | |
465 | //-------------------------------------------------------------------------------------// | |
466 | function IsPlayerNearByHouse(playerid) | |
467 | { | |
468 | for(new id = 0; id < sizeof(HouseInfo); id++) | |
469 | { | |
470 | if(IsPlayerInRangeOfPoint(playerid, 5.0, HouseInfo[id][hEntranceX], HouseInfo[id][hEntranceY], HouseInfo[id][hEntranceZ])) | |
471 | { | |
472 | return id; | |
473 | } | |
474 | } | |
475 | return -1; | |
476 | } | |
477 | //-------------------------------------------------------------------------------------// | |
478 | stock GetPlayerNameRP(playerid) | |
479 | { | |
480 | new player[MAX_PLAYER_NAME]; | |
481 | GetPlayerName(playerid, player, sizeof(player)); | |
482 | for(new i = 0; i < MAX_PLAYER_NAME; i++) | |
483 | { | |
484 | if (player[i] == '_') player[i] = ' '; | |
485 | } | |
486 | return player; | |
487 | } |