· 10 years ago · Sep 11, 2016, 05:58 PM
1/*
2
3-- phpMyAdmin SQL Dump
4-- version 4.0.10deb1
5-- http://www.phpmyadmin.net
6--
7-- Servidor: localhost
8-- Tiempo de generación: 11-09-2016 a las 19:06:53
9-- Versión del servidor: 5.5.50-0ubuntu0.14.04.1
10-- Versión de PHP: 5.5.9-1ubuntu4.19
11
12SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
13SET time_zone = "+00:00";
14
15
16/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
17/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
18/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
19/*!40101 SET NAMES utf8 */;
20
21--
22-- Base de datos: `zrafabcn19910`
23--
24
25-- --------------------------------------------------------
26
27--
28-- Estructura de tabla para la tabla `Vehiculos`
29--
30
31CREATE TABLE IF NOT EXISTS `Vehiculos` (
32 `ID` int(11) NOT NULL AUTO_INCREMENT,
33 `plate` varchar(45) DEFAULT NULL,
34 `model` smallint(6) DEFAULT '560',
35 `color1` smallint(6) DEFAULT '0',
36 `color2` smallint(6) DEFAULT '0',
37 `posx` float DEFAULT '0',
38 `posy` float DEFAULT '0',
39 `posz` float DEFAULT '0',
40 `posa` float DEFAULT '0',
41 `llaves1` varchar(45) NOT NULL DEFAULT 'na',
42 `llaves2` varchar(45) NOT NULL DEFAULT 'na',
43 `llaves3` varchar(45) NOT NULL DEFAULT 'na',
44 `llaves4` varchar(45) NOT NULL DEFAULT 'na',
45 `dueno` varchar(45) NOT NULL DEFAULT 'Expo',
46 `bloqueo` int(17) NOT NULL DEFAULT '0',
47 `precio` int(17) NOT NULL,
48 `venta` int(17) NOT NULL,
49 `stats` int(17) NOT NULL DEFAULT '0',
50 `expox` float DEFAULT '0',
51 `expoy` float DEFAULT '0',
52 `expoz` float DEFAULT '0',
53 `expoa` float DEFAULT '0',
54 `totalllaves` int(17) NOT NULL DEFAULT '1',
55 `a1` int(17) NOT NULL DEFAULT '0',
56 `a2` int(17) NOT NULL DEFAULT '0',
57 `a3` int(17) NOT NULL DEFAULT '0',
58 `a4` int(17) NOT NULL DEFAULT '0',
59 `a5` int(17) NOT NULL DEFAULT '0',
60 `m1` int(17) NOT NULL DEFAULT '0',
61 `m2` int(17) NOT NULL DEFAULT '0',
62 `m3` int(17) NOT NULL DEFAULT '0',
63 `m4` int(17) NOT NULL DEFAULT '0',
64 `m5` int(17) NOT NULL DEFAULT '0',
65 `vida` float NOT NULL DEFAULT '1000',
66 PRIMARY KEY (`ID`)
67) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=' ' AUTO_INCREMENT=1 ;
68
69/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
70/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
71/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
72
73
74*/
75
76#include <a_samp>
77#include <a_mysql>
78#include <zcmd>
79#include <sscanf2>
80#include <foreach>
81#include <streamer>
82
83#define COLOR_WHITE 0xFFFFFFAA
84#define COLOR_GREY 0xAFAFAFAA
85#define COLOR_LIGHTRED 0xFF6347AA
86#define COLOR_LIGHTYELLOW 0xFFFFE0FF
87#define COLOR_YELLOW 0xDABB3EAA
88#define COLOR_YELLOWG 0xFFFF00AA
89#define COLOR_LILACLARO 0xE18CFDFF
90
91#define DIALOG_COMPRA 8383
92#define DIALOG_MISCOCHES 8384
93#define DIALOG_ALERTA 8385
94
95forward OnVehiclesLoad();
96forward OnVehiclesUserLoad();
97forward OnVehicleInsert(plate[], model, color1, color2, Float:x, Float:y, Float:z, Float:a, idx, playerid, precio);
98forward OnVehicleInsertBuy(plate[], model, color1, color2, Float:x, Float:y, Float:z, Float:a, idx, playerid, precio, dueno[]);
99forward OnVehicleDelete(playerid, idx);
100forward OnVehicleDeleteFromServer(playerid, idx);
101forward AdminsBroadCast(color, string[]);
102forward EncenderMotor(playerid);
103forward ApagarMotor(playerid);
104forward EncenderLuces(playerid);
105forward ApagarLuces(playerid);
106forward AbrirMaletero(playerid);
107forward CerrarMaletero(playerid);
108forward AbrirCapo(playerid);
109forward CerrarCapo(playerid);
110forward vidaVehiculo(id);
111
112#define HOST "localhost"
113#define USER "rafabcn1991"
114#define PASS "7J2yBQNn"
115#define DATABASE "zrafabcn19910"
116
117#define DYNAMIC_MAX 1500
118
119new VehicleNames[][] =
120{
121 "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
122 "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
123 "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
124 "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
125 "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
126 "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
127 "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral",
128 "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
129 "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
130 "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
131 "Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
132 "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
133 "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
134 "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking",
135 "Blista Compact", "Police Maverick", "Boxville", "Benson", "Mesa", "RC Goblin",
136 "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT",
137 "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
138 "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
139 "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
140 "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
141 "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
142 "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
143 "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
144 "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratium",
145 "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
146 "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
147 "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
148 "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
149 "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
150 "Police Car", "Police Car", "Police Ranger", "Picador", "S.W.A.T", "Alpha",
151 "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
152 "Tiller", "Utility Trailer"
153};
154
155
156new
157 dbHandle,
158 query[1000],
159 str[100];
160
161enum Vehiculos
162{
163 ID,
164 Plate[30 char],
165 Model,
166 Color1,
167 Color2,
168 Float:PosX,
169 Float:PosY,
170 Float:PosZ,
171 Float:PosA,
172 Text3D:NameLabel,
173 VehicleID,
174 Llaves1[30 char],
175 Llaves2[30 char],
176 Llaves3[30 char],
177 Llaves4[30 char],
178 Dueno[30 char],
179 Bloqueo,
180 Precio,
181 Venta,
182 Stats,
183 Float:ExpoX,
184 Float:ExpoY,
185 Float:ExpoZ,
186 Float:ExpoA,
187 TotalLlaves,
188 A1,
189 A2,
190 A3,
191 A4,
192 A5,
193 M1,
194 M2,
195 M3,
196 M4,
197 M5,
198 Float:Vida,
199 bool:Created
200}
201
202new Vehicle[DYNAMIC_MAX][Vehiculos];
203new VehicleUser[DYNAMIC_MAX][Vehiculos];
204new Engine[DYNAMIC_MAX];
205new LlevaCinturon[MAX_PLAYERS];
206new Luces[DYNAMIC_MAX];
207new Maletero[MAX_VEHICLES];
208new Capo[MAX_VEHICLES];
209new ListaSeleccion[MAX_PLAYERS][DYNAMIC_MAX];
210
211public OnFilterScriptInit()
212{
213 dbHandle = mysql_connect(HOST, USER, DATABASE, PASS);
214 mysql_log(LOG_ERROR | LOG_WARNING);
215 LoadVehicles();
216 for(new a=0;a<DYNAMIC_MAX;a++)
217 {
218 SetTimerEx("vidaVehiculo", 1000, 1, "i", a);
219 }
220 return 1;
221}
222
223public OnFilterScriptExit()
224{
225 SaveVehicles();
226 return 1;
227}
228
229public OnPlayerDisconnect(playerid, reason)
230{
231 LlevaCinturon[playerid] = 0;
232}
233
234public OnPlayerDeath(playerid, killerid, reason)
235{
236 LlevaCinturon[playerid] = 0;
237 return 1;
238}
239
240public OnPlayerConnect(playerid)
241{
242 LlevaCinturon[playerid] = 0;
243}
244
245public OnPlayerSpawn(playerid)
246{
247 LoadUserVehicles(playerid);
248}
249
250public OnPlayerStateChange(playerid, newstate, oldstate)
251{
252 new vehicleid = GetPlayerVehicleID(playerid);
253 new string[240];
254 new enginem, lights, alarm, doors, bonnet, boot, objective;
255 new level = AdminCheck(playerid);
256 if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
257 {
258 if(strmatch(Vehicle[VehicleIDX(vehicleid)][Dueno], "Expo"))
259 {
260 if (level >= 1)
261 {
262 format(string,sizeof(string),"{E34B25}[ADM]: {FFFFFF}El coche aún no está puesto a la venta.");
263 SendClientMessage(playerid, -1, string);
264 SendClientMessage(playerid, -1, "{E34B25}[ADM]: {FFFFFF}Lleva el vehÃculo a su punto exacto de exposición y utiliza {D9EA4E}/avestacionar{FFFFFF}.");
265 if(Engine[vehicleid] == 0)
266 {
267 EncenderMotor(playerid);
268 }
269 }
270 else
271 {
272 GetVehicleParamsEx(vehicleid, enginem, lights, alarm, doors, bonnet, boot, objective);
273 SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
274 ClearAnimations(playerid);
275 RemovePlayerFromVehicle(playerid);
276 format(string,sizeof(string),"{40D3FF}[SERVIDOR]: {FFFFFF}El coche aún no está puesto a la venta, espera a que algún administrador lo exponga.");
277 SendClientMessage(playerid, -1, string);
278 }
279 }
280 else if(strmatch(Vehicle[VehicleIDX(vehicleid)][Dueno], PlayerName(playerid)))
281 {
282 if(Engine[vehicleid] == 0)
283 {
284 if(IsBicycle(vehicleid))
285 {
286 GetVehicleParamsEx(vehicleid, enginem, lights, alarm, doors, bonnet, boot, objective);
287 SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_ON, lights, alarm, doors, bonnet, boot, objective);
288 }
289 else
290 {
291 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El motor está apagado. Para encenderlo escribe {FFFF00}/motor");
292 }
293 }
294 if(Engine[vehicleid] == 1)
295 {
296 if(IsBicycle(vehicleid))
297 {
298 GetVehicleParamsEx(vehicleid, enginem, lights, alarm, doors, bonnet, boot, objective);
299 SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_ON, lights, alarm, doors, bonnet, boot, objective);
300 }
301 else
302 {
303 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El motor está encendido. Para apagarlo escribe {FFFF00}/motor");
304 }
305 }
306 }
307 else if(strmatch(Vehicle[VehicleIDX(vehicleid)][Dueno], "En venta"))
308 {
309 GetVehicleParamsEx(vehicleid, enginem, lights, alarm, doors, bonnet, boot, objective);
310 SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
311 Engine[vehicleid] = 0;
312 new compra[256];
313 format(compra, sizeof(compra), "¿Quieres comprar este vehÃculo modelo {2660DD}%s {FFFFFF}por {FAD54A}$%i{FFFFFF}?", GetVehicleName(Vehicle[VehicleIDX(vehicleid)][Model]), Vehicle[VehicleIDX(vehicleid)][Precio]);
314 ShowPlayerDialog(playerid, DIALOG_COMPRA, DIALOG_STYLE_MSGBOX, "Compra de vehÃculo", compra, "Comprar", "Cancelar");
315 }
316 if (!strmatch(Vehicle[VehicleIDX(vehicleid)][Dueno], PlayerName(playerid)))
317 {
318 if(Vehicle[VehicleIDX(vehicleid)][Bloqueo] == 1)
319 {
320 ClearAnimations(playerid);
321 RemovePlayerFromVehicle(playerid);
322 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El vehÃculo está cerrado.");
323 }
324 }
325 }
326 if(newstate == PLAYER_STATE_ONFOOT)
327 {
328 if (LlevaCinturon[playerid] == 1)
329 {
330 format(string,sizeof(string), "**%s se ha desabrochado el cinturón de seguridad.", GetName(playerid));
331 ProxDetector(17, playerid, string, COLOR_LILACLARO);
332 }
333 LlevaCinturon[playerid] = 0;
334 new Float:health;
335 GetVehicleHealth(vehicleid, health);
336 GuardarHealth(VehicleIDX(vehicleid), health);
337 }
338 if(newstate == PLAYER_STATE_PASSENGER)
339 {
340 if(Vehicle[VehicleIDX(vehicleid)][Bloqueo] == 1)
341 {
342 ClearAnimations(playerid);
343 RemovePlayerFromVehicle(playerid);
344 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El vehÃculo está cerrado.");
345 }
346 }
347 return 1;
348}
349
350public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
351{
352 if(dialogid == DIALOG_COMPRA)
353 {
354 if(response)
355 {
356 new string[256];
357 new vehicleid = GetPlayerVehicleID(playerid);
358 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás dentro de un vehÃculo.");
359 if (strmatch(Vehicle[VehicleIDX(vehicleid)][Dueno],PlayerName(playerid))) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Ya eres dueño de este vehÃculo.");
360 if (strmatch(Vehicle[VehicleIDX(vehicleid)][Dueno],"En venta"))
361 {
362 if(Vehicle[VehicleIDX(vehicleid)][Precio] > GetPlayerMoney(playerid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No tienes suficiente dinero para comprar el vehÃculo.");
363 GivePlayerMoney(playerid,-Vehicle[VehicleIDX(vehicleid)][Precio]);
364 format(string,sizeof(string), "{40D3FF}[SERVIDOR]: {FFFFFF}Compraste un vehÃculo modelo %s por $%d.", GetVehicleName(Vehicle[VehicleIDX(vehicleid)][Model]), Vehicle[VehicleIDX(vehicleid)][Precio]);
365 SendClientMessage(playerid, -1, string);
366 AddVehicleBuy(playerid, Vehicle[VehicleIDX(vehicleid)][Model], Vehicle[VehicleIDX(vehicleid)][Color1], Vehicle[VehicleIDX(vehicleid)][Color2], Vehicle[VehicleIDX(vehicleid)][ExpoX], Vehicle[VehicleIDX(vehicleid)][ExpoY], Vehicle[VehicleIDX(vehicleid)][ExpoZ], Vehicle[VehicleIDX(vehicleid)][ExpoA], Vehicle[VehicleIDX(vehicleid)][Precio]);
367 }
368 }
369 else
370 {
371 RemovePlayerFromVehicle(playerid);
372 }
373 }
374 if (dialogid == DIALOG_MISCOCHES)
375 {
376 if(response)
377 {
378 new sel[300];
379 new stats[30];
380 if (VehicleUser[ListaSeleccion[playerid][listitem]][Stats] == 0)
381 {
382 new Float:XX1, Float:YY1, Float:ZZ1;
383 GetVehiclePos(VehicleUser[ListaSeleccion[playerid][listitem]][ID], XX1, YY1, ZZ1);
384 if(IsPlayerInRangeOfPoint(playerid, 3.0, XX1, YY1, ZZ1))
385 {
386 stats = "{CAE1FF}guardado";
387 format(sel,sizeof(sel),"{FFFFFF}Has %s el vehÃculo %d.", stats, VehicleUser[ListaSeleccion[playerid][listitem]][ID]);
388 ShowPlayerDialog(playerid, DIALOG_ALERTA, DIALOG_STYLE_MSGBOX, "Mensaje de Icathia", sel, "Salir", "");
389 DeleteVehicleFromServer(playerid, VehicleIDX(VehicleUser[ListaSeleccion[playerid][listitem]][ID]));
390 GuardarStats(ListaSeleccion[playerid][listitem], 1);
391 FreeVehicleIDX();
392 LoadUserVehicles(playerid);
393 }
394 else
395 {
396 SendClientMessage(playerid,-1,"{40D3FF}[SERVIDOR]: {FFFFFF}Debes estar al menos a 3 metros de tu vehÃculo.");
397 }
398 }
399 else
400 {
401 stats = "{B2F289}spawneado";
402 format(sel,sizeof(sel),"{FFFFFF}Has %s el vehÃculo.",stats);
403 ShowPlayerDialog(playerid, DIALOG_ALERTA, DIALOG_STYLE_MSGBOX, "Mensaje de Icathia", sel, "Salir", "");
404 GuardarStats(ListaSeleccion[playerid][listitem], 0);
405 CreateUserVehicleByIDX(ListaSeleccion[playerid][listitem]);
406 SetVehicleHealth(VehicleUser[ListaSeleccion[playerid][listitem]][ID], VehicleUser[VehicleIDX(VehicleUser[ListaSeleccion[playerid][listitem]][ID])][Vida]);
407 LoadUserVehicles(playerid);
408 FreeVehicleIDX();
409 }
410 }
411 }
412 return 1;
413}
414
415public OnPlayerUpdate(playerid)
416{
417 new vehicleid = GetPlayerVehicleID(playerid);
418 if(IsPlayerInAnyVehicle(playerid))
419 {
420 if(IsPlayerConnected(GetPlayerIdFromName(Vehicle[VehicleIDX(vehicleid)][Dueno])) && GetPlayerIdFromName(Vehicle[VehicleIDX(vehicleid)][Dueno]) != playerid)
421 {
422 if(Vehicle[VehicleIDX(vehicleid)][Bloqueo] == 1)
423 {
424 ClearAnimations(playerid);
425 RemovePlayerFromVehicle(playerid);
426 }
427 }
428 }
429 return 1;
430}
431
432public OnVehicleDamageStatusUpdate(vehicleid, playerid)
433{
434 new Float:h;
435 GetVehicleHealth(vehicleid,h);
436 if(h <= 353)
437 {
438 SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_OFF, -1, -1, -1, -1, -1, -1);
439 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El motor del vehÃculo está dañado, llama un mecánico para que lo repare.");
440 Engine[vehicleid] = 0;
441
442 }
443 GuardarHealth(VehicleIDX(vehicleid), h);
444 return 1;
445}
446
447LoadVehicles()
448{
449 mysql_format(dbHandle, query, sizeof(query), "SELECT * FROM `Vehiculos` LIMIT %d", DYNAMIC_MAX);
450 mysql_tquery(dbHandle, query, "OnVehiclesLoad");
451}
452
453LoadUserVehicles(playerid)
454{
455 mysql_format(dbHandle, query, sizeof(query), "SELECT * FROM `Vehiculos` WHERE `dueno` = '%s'", PlayerName(playerid));
456 mysql_tquery(dbHandle, query, "OnVehiclesUserLoad");
457}
458
459SaveVehicles(idx = INVALID_VEHICLE_ID)
460{
461 if(idx == INVALID_VEHICLE_ID)
462 {
463 for(new i = 0; i < DYNAMIC_MAX; i++)
464 {
465 if(Vehicle[i][ID] != 0)
466 {
467 mysql_format(dbHandle, query, sizeof(query), "UPDATE `Vehiculos` SET `plate` = '%s', `model` = %d, `color1` = %d, `color2` = %d, `posx` = %f, `posy` = %f, `posz` = %f, `posa` = %f WHERE id = '%d'",
468 VehiclePlate(i), Vehicle[i][Model], Vehicle[i][Color1], Vehicle[i][Color2], Vehicle[i][PosX], Vehicle[i][PosY], Vehicle[i][PosZ], Vehicle[i][PosA], Vehicle[i][ID]);
469 mysql_tquery(dbHandle, query);
470 }
471 }
472 }
473 else
474 {
475 if(Vehicle[idx][ID] != 0)
476 {
477 mysql_format(dbHandle, query, sizeof(query), "UPDATE `Vehiculos` SET `plate` = '%s', `model` = %d, `color1` = %d, `color2` = %d, `posx` = %f, `posy` = %f, `posz` = %f, `posa` = %f WHERE id = '%d'",
478 VehiclePlate(idx), Vehicle[idx][Model], Vehicle[idx][Color1], Vehicle[idx][Color2], Vehicle[idx][PosX], Vehicle[idx][PosY], Vehicle[idx][PosZ], Vehicle[idx][PosA], Vehicle[idx][ID]);
479 mysql_tquery(dbHandle, query);
480 }
481 }
482}
483
484SaveVehiclesExpo(idx)
485{
486 if(Vehicle[idx][ID] != 0)
487 {
488 mysql_format(dbHandle, query, sizeof(query), "UPDATE `Vehiculos` SET `expox` = %f, `expoy` = %f, `expoz` = %f, `expoa` = %f, `dueno` = '%s' WHERE ID = '%d'", Vehicle[idx][ExpoX], Vehicle[idx][ExpoY], Vehicle[idx][ExpoZ], Vehicle[idx][ExpoA], Vehicle[idx][Dueno], Vehicle[idx][ID]);
489 mysql_tquery(dbHandle, query);
490 }
491}
492
493SaveVehicleParams(idx)
494{
495 if(Vehicle[idx][ID] != 0)
496 {
497 mysql_format(dbHandle, query, sizeof(query), "UPDATE `Vehiculos` SET `bloqueo` = %i, `vida` = %f, `stats` = %i WHERE ID = '%d'", Vehicle[idx][Bloqueo], Vehicle[idx][Vida], Vehicle[idx][Stats], Vehicle[idx][ID]);
498 mysql_tquery(dbHandle, query);
499 }
500}
501
502SaveVehicleStats(idx)
503{
504 if(Vehicle[idx][Stats] == 0)
505 {
506 mysql_format(dbHandle, query, sizeof(query), "UPDATE `Vehiculos` SET `stats` = '1' WHERE ID = '%d'", idx);
507 mysql_tquery(dbHandle, query);
508 Vehicle[idx][Stats] = 1;
509 }
510 else
511 {
512 mysql_format(dbHandle, query, sizeof(query), "UPDATE `Vehiculos` SET `stats` = '0' WHERE ID = '%d'", idx);
513 mysql_tquery(dbHandle, query);
514 Vehicle[idx][Stats] = 0;
515 }
516}
517
518public OnVehiclesLoad()
519{
520 for(new i = 0; i < cache_num_rows(); i++)
521 {
522 Vehicle[i][ID] = cache_get_field_content_int(i, "ID");
523 cache_get_field_content(i, "plate", str);
524 strpack(Vehicle[i][Plate], str, 30);
525 Vehicle[i][Model] = cache_get_field_content_int(i, "model");
526 Vehicle[i][Color1] = cache_get_field_content_int(i, "color1");
527 Vehicle[i][Color2] = cache_get_field_content_int(i, "color2");
528 Vehicle[i][PosX] = cache_get_field_content_float(i, "posx");
529 Vehicle[i][PosY] = cache_get_field_content_float(i, "posy");
530 Vehicle[i][PosZ] = cache_get_field_content_float(i, "posz");
531 Vehicle[i][PosA] = cache_get_field_content_float(i, "posa");
532 cache_get_field_content(i, "llaves1", str);
533 strpack(Vehicle[i][Llaves1], str, 30);
534 cache_get_field_content(i, "llaves2", str);
535 strpack(Vehicle[i][Llaves2], str, 30);
536 cache_get_field_content(i, "llaves3", str);
537 strpack(Vehicle[i][Llaves3], str, 30);
538 cache_get_field_content(i, "llaves4", str);
539 strpack(Vehicle[i][Llaves4], str, 30);
540 cache_get_field_content(i, "dueno", str);
541 strpack(Vehicle[i][Dueno], str, 30);
542 Vehicle[i][Bloqueo] = cache_get_field_content_int(i, "bloqueo");
543 Vehicle[i][Precio] = cache_get_field_content_int(i, "precio");
544 Vehicle[i][Venta] = cache_get_field_content_int(i, "venta");
545 Vehicle[i][Stats] = cache_get_field_content_int(i, "stats");
546 Vehicle[i][ExpoX] = cache_get_field_content_float(i, "expox");
547 Vehicle[i][ExpoY] = cache_get_field_content_float(i, "expoy");
548 Vehicle[i][ExpoZ] = cache_get_field_content_float(i, "expoz");
549 Vehicle[i][ExpoA] = cache_get_field_content_float(i, "expoa");
550 Vehicle[i][TotalLlaves] = cache_get_field_content_int(i, "totalllaves");
551 Vehicle[i][A1] = cache_get_field_content_int(i, "a1");
552 Vehicle[i][A2] = cache_get_field_content_int(i, "a2");
553 Vehicle[i][A3] = cache_get_field_content_int(i, "a3");
554 Vehicle[i][A4] = cache_get_field_content_int(i, "a4");
555 Vehicle[i][A5] = cache_get_field_content_int(i, "a5");
556 Vehicle[i][M1] = cache_get_field_content_int(i, "m1");
557 Vehicle[i][M2] = cache_get_field_content_int(i, "m2");
558 Vehicle[i][M3] = cache_get_field_content_int(i, "m3");
559 Vehicle[i][M4] = cache_get_field_content_int(i, "m4");
560 Vehicle[i][M5] = cache_get_field_content_int(i, "m5");
561 Vehicle[i][Vida] = cache_get_field_content_float(i, "vida");
562 Vehicle[i][Created] = false;
563 CreateVehicleByIDX(i);
564 }
565 printf(">> Cargados %d vehÃculos desde la base de datos.", cache_num_rows());
566}
567
568public OnVehiclesUserLoad()
569{
570 for(new i = 0; i < cache_num_rows(); i++)
571 {
572 VehicleUser[i][ID] = cache_get_field_content_int(i, "ID");
573 cache_get_field_content(i, "plate", str);
574 strpack(VehicleUser[i][Plate], str, 30);
575 VehicleUser[i][Model] = cache_get_field_content_int(i, "model");
576 VehicleUser[i][Color1] = cache_get_field_content_int(i, "color1");
577 VehicleUser[i][Color2] = cache_get_field_content_int(i, "color2");
578 VehicleUser[i][PosX] = cache_get_field_content_float(i, "posx");
579 VehicleUser[i][PosY] = cache_get_field_content_float(i, "posy");
580 VehicleUser[i][PosZ] = cache_get_field_content_float(i, "posz");
581 VehicleUser[i][PosA] = cache_get_field_content_float(i, "posa");
582 cache_get_field_content(i, "llaves1", str);
583 strpack(VehicleUser[i][Llaves1], str, 30);
584 cache_get_field_content(i, "llaves2", str);
585 strpack(VehicleUser[i][Llaves2], str, 30);
586 cache_get_field_content(i, "llaves3", str);
587 strpack(VehicleUser[i][Llaves3], str, 30);
588 cache_get_field_content(i, "llaves4", str);
589 strpack(VehicleUser[i][Llaves4], str, 30);
590 cache_get_field_content(i, "dueno", str);
591 strpack(VehicleUser[i][Dueno], str, 30);
592 VehicleUser[i][Bloqueo] = cache_get_field_content_int(i, "bloqueo");
593 VehicleUser[i][Precio] = cache_get_field_content_int(i, "precio");
594 VehicleUser[i][Venta] = cache_get_field_content_int(i, "venta");
595 VehicleUser[i][Stats] = cache_get_field_content_int(i, "stats");
596 VehicleUser[i][TotalLlaves] = cache_get_field_content_int(i, "totalllaves");
597 VehicleUser[i][A1] = cache_get_field_content_int(i, "a1");
598 VehicleUser[i][A2] = cache_get_field_content_int(i, "a2");
599 VehicleUser[i][A3] = cache_get_field_content_int(i, "a3");
600 VehicleUser[i][A4] = cache_get_field_content_int(i, "a4");
601 VehicleUser[i][A5] = cache_get_field_content_int(i, "a5");
602 VehicleUser[i][M1] = cache_get_field_content_int(i, "m1");
603 VehicleUser[i][M2] = cache_get_field_content_int(i, "m2");
604 VehicleUser[i][M3] = cache_get_field_content_int(i, "m3");
605 VehicleUser[i][M4] = cache_get_field_content_int(i, "m4");
606 VehicleUser[i][M5] = cache_get_field_content_int(i, "m5");
607 VehicleUser[i][Vida] = cache_get_field_content_float(i, "vida");
608 if(VehicleUser[i][Stats] == 0)
609 {
610 VehicleUser[i][Created] = true;
611 }
612 else
613 {
614 VehicleUser[i][Created] = false;
615 }
616 }
617}
618
619CreateVehicleByIDX(idx)
620{
621 if(Vehicle[idx][Created]) {
622 DestroyVehicle(Vehicle[idx][VehicleID]);
623 Delete3DTextLabel(Vehicle[idx][NameLabel]);
624 }
625 if(Vehicle[idx][Stats] == 0) {
626 Vehicle[idx][VehicleID] = CreateVehicle(Vehicle[idx][Model], Vehicle[idx][PosX], Vehicle[idx][PosY], Vehicle[idx][PosZ], Vehicle[idx][PosA], Vehicle[idx][Color1], Vehicle[idx][Color1], -1);
627 SetVehicleNumberPlate(Vehicle[idx][VehicleID], VehiclePlate(idx));
628 if (strmatch(Vehicle[idx][Dueno], "Expo") || strmatch(Vehicle[idx][Dueno], "En venta"))
629 {
630 format(str, sizeof(str), "{FFFFFF}VehÃculo de exposición:{FF3300} %s(%d)", GetVehicleName(Vehicle[idx][Model]), Vehicle[idx][ID]);
631 Vehicle[idx][NameLabel] = Create3DTextLabel(str, 0xFFFFFFFF, 0.0, 0.0, 0.0, 15.0, 0, 0);
632 Attach3DTextLabelToVehicle(Vehicle[idx][NameLabel], Vehicle[idx][VehicleID], 0.0, 0.0, 1.0);
633 }
634 else
635 {
636 format(str, sizeof(str), "{FFFFFF}VehÃculo propio:{0000FF} %s(%d)", GetVehicleName(Vehicle[idx][Model]), Vehicle[idx][ID]);
637 Vehicle[idx][NameLabel] = Create3DTextLabel(str, 0xFFFFFFFF, 0.0, 0.0, 0.0, 15.0, 0, 0);
638 Attach3DTextLabelToVehicle(Vehicle[idx][NameLabel], Vehicle[idx][VehicleID], 0.0, 0.0, 1.0);
639 }
640 SetVehicleHealth(Vehicle[idx][VehicleID], Vehicle[idx][Vida]);
641 Vehicle[idx][Created] = true;
642 }
643}
644
645CreateUserVehicleByIDX(idx)
646{
647 if(VehicleUser[idx][Created]) {
648 DestroyVehicle(VehicleUser[idx][VehicleID]);
649 }
650 if(VehicleUser[idx][Stats] == 0) {
651 VehicleUser[idx][VehicleID] = CreateVehicle(VehicleUser[idx][Model], VehicleUser[idx][PosX], VehicleUser[idx][PosY], VehicleUser[idx][PosZ], VehicleUser[idx][PosA], VehicleUser[idx][Color1], VehicleUser[idx][Color1], -1);
652 SetVehicleNumberPlate(VehicleUser[idx][VehicleID], VehiclePlate(idx));
653 SetVehicleHealth(VehicleUser[idx][VehicleID], VehicleUser[idx][Vida]);
654 VehicleUser[idx][Created] = true;
655 }
656}
657
658DeleteVehicleFromServer(playerid, idx)
659{
660 if(VehicleUser[idx][Created]) {
661 OnVehicleDeleteFromServer(playerid, idx);
662 }
663}
664
665AddVehicleToFile(playerid, model, color1, color2, Float:x, Float:y, Float:z, Float:a, precio)
666{
667 new idx = FreeVehicleIDX();
668 if(idx == -1) return 0;
669 new plate[30];
670 format(plate,sizeof(plate),"LS%i%i%i",model,playerid,idx);
671 mysql_format(dbHandle, query, sizeof(query), "INSERT INTO `Vehiculos` (plate, model, color1, color2, posx, posy, posz, posa, dueno, precio, venta) VALUES ('%s', %d, %d, %d, %f, %f, %f, %f, 'Expo', %i, %i)", plate, model, color1, color2, x, y, z, a, precio, precio);
672 mysql_tquery(dbHandle, query, "OnVehicleInsert", "siiiffffiii", plate, model, color1, color2, x, y, z, a, idx, playerid, precio);
673 return 1;
674}
675
676AddVehicleBuy(playerid, model, color1, color2, Float:x, Float:y, Float:z, Float:a, precio)
677{
678 new idx = FreeVehicleIDX();
679 if(idx == -1) return 0;
680 new plate[30];
681 format(plate,sizeof(plate),"LS%i%i%i",model,playerid,idx);
682 mysql_format(dbHandle, query, sizeof(query), "INSERT INTO `Vehiculos` (plate, model, color1, color2, posx, posy, posz, posa, dueno, precio, venta) VALUES ('%s', %d, %d, %d, %f, %f, %f, %f, '%s', %i, %i)", plate, model, color1, color2, x, y, z, a, PlayerName(playerid), precio, precio);
683 mysql_tquery(dbHandle, query, "OnVehicleInsertBuy", "siiiffffiiis", plate, model, color1, color2, x, y, z, a, idx, playerid, precio, PlayerName(playerid));
684 return 1;
685}
686
687DeleteVehicleByIDX(playerid, idx)
688{
689 mysql_format(dbHandle, query, sizeof(query), "DELETE FROM `Vehiculos` WHERE `ID` = %d", Vehicle[idx][ID]);
690 mysql_tquery(dbHandle, query, "OnVehicleDelete", "ii", playerid, idx);
691}
692
693public OnVehicleDelete(playerid, idx)
694{
695 Vehicle[idx][ID] = 0;
696 strpack(Vehicle[idx][Plate], "NONE", 30);
697 Vehicle[idx][Model] = 560;
698 Vehicle[idx][Color1] = 0;
699 Vehicle[idx][Color2] = 0;
700 Vehicle[idx][PosX] = 0.0;
701 Vehicle[idx][PosY] = 0.0;
702 Vehicle[idx][PosZ] = 0.0;
703 Vehicle[idx][PosA] = 0.0;
704 Vehicle[idx][Llaves1] = 0;
705 Vehicle[idx][Llaves2] = 0;
706 Vehicle[idx][Llaves3] = 0;
707 Vehicle[idx][Llaves4] = 0;
708 Vehicle[idx][Dueno] = 0;
709 Vehicle[idx][Bloqueo] = 0;
710 Vehicle[idx][Precio] = 0;
711 Vehicle[idx][Venta] = 0;
712 Vehicle[idx][Stats] = 0;
713 Vehicle[idx][ExpoX] = 0.0;
714 Vehicle[idx][ExpoY] = 0.0;
715 Vehicle[idx][ExpoZ] = 0.0;
716 Vehicle[idx][ExpoA] = 0.0;
717 Vehicle[idx][TotalLlaves] = 0;
718 Vehicle[idx][A1] = 0;
719 Vehicle[idx][A2] = 0;
720 Vehicle[idx][A3] = 0;
721 Vehicle[idx][A4] = 0;
722 Vehicle[idx][A5] = 0;
723 Vehicle[idx][M1] = 0;
724 Vehicle[idx][M2] = 0;
725 Vehicle[idx][M3] = 0;
726 Vehicle[idx][M4] = 0;
727 Vehicle[idx][M5] = 0;
728 Vehicle[idx][Vida] = 0;
729 Vehicle[idx][Created] = false;
730 DestroyVehicle(Vehicle[idx][VehicleID]);
731 Delete3DTextLabel(Vehicle[idx][NameLabel]);
732}
733
734public OnVehicleDeleteFromServer(playerid, idx)
735{
736 Vehicle[idx][ID] = 0;
737 strpack(Vehicle[idx][Plate], "NONE", 30);
738 Vehicle[idx][Model] = 560;
739 Vehicle[idx][Color1] = 0;
740 Vehicle[idx][Color2] = 0;
741 Vehicle[idx][PosX] = 0.0;
742 Vehicle[idx][PosY] = 0.0;
743 Vehicle[idx][PosZ] = 0.0;
744 Vehicle[idx][PosA] = 0.0;
745 Vehicle[idx][Llaves1] = 0;
746 Vehicle[idx][Llaves2] = 0;
747 Vehicle[idx][Llaves3] = 0;
748 Vehicle[idx][Llaves4] = 0;
749 Vehicle[idx][Dueno] = 0;
750 Vehicle[idx][Bloqueo] = 0;
751 Vehicle[idx][Precio] = 0;
752 Vehicle[idx][Venta] = 0;
753 Vehicle[idx][Stats] = 0;
754 Vehicle[idx][ExpoX] = 0.0;
755 Vehicle[idx][ExpoY] = 0.0;
756 Vehicle[idx][ExpoZ] = 0.0;
757 Vehicle[idx][ExpoA] = 0.0;
758 Vehicle[idx][TotalLlaves] = 0;
759 Vehicle[idx][A1] = 0;
760 Vehicle[idx][A2] = 0;
761 Vehicle[idx][A3] = 0;
762 Vehicle[idx][A4] = 0;
763 Vehicle[idx][A5] = 0;
764 Vehicle[idx][M1] = 0;
765 Vehicle[idx][M2] = 0;
766 Vehicle[idx][M3] = 0;
767 Vehicle[idx][M4] = 0;
768 Vehicle[idx][M5] = 0;
769 Vehicle[idx][Vida] = 0;
770 Vehicle[idx][Created] = false;
771 DestroyVehicle(Vehicle[idx][VehicleID]);
772 Delete3DTextLabel(Vehicle[idx][NameLabel]);
773}
774
775public OnVehicleInsert(plate[], model, color1, color2, Float:x, Float:y, Float:z, Float:a, idx, playerid, precio)
776{
777 Vehicle[idx][ID] = cache_insert_id();
778 strpack(Vehicle[idx][Plate], plate, 30);
779 Vehicle[idx][Model] = model;
780 Vehicle[idx][Color1] = color1;
781 Vehicle[idx][Color2] = color2;
782 Vehicle[idx][PosX] = x;
783 Vehicle[idx][PosY] = y;
784 Vehicle[idx][PosZ] = z;
785 Vehicle[idx][PosA] = a;
786 strpack(Vehicle[idx][Llaves1], "na", 30);
787 strpack(Vehicle[idx][Llaves2], "na", 30);
788 strpack(Vehicle[idx][Llaves3], "na", 30);
789 strpack(Vehicle[idx][Llaves4], "na", 30);
790 strpack(Vehicle[idx][Dueno], "Expo", 30);
791 Vehicle[idx][Bloqueo] = 0;
792 Vehicle[idx][Precio] = precio;
793 Vehicle[idx][Venta] = precio;
794 Vehicle[idx][Stats] = 0;
795 Vehicle[idx][ExpoX] = 0.0;
796 Vehicle[idx][ExpoY] = 0.0;
797 Vehicle[idx][ExpoZ] = 0.0;
798 Vehicle[idx][ExpoA] = 0.0;
799 Vehicle[idx][TotalLlaves] = 0;
800 Vehicle[idx][A1] = 0;
801 Vehicle[idx][A2] = 0;
802 Vehicle[idx][A3] = 0;
803 Vehicle[idx][A4] = 0;
804 Vehicle[idx][A5] = 0;
805 Vehicle[idx][M1] = 0;
806 Vehicle[idx][M2] = 0;
807 Vehicle[idx][M3] = 0;
808 Vehicle[idx][M4] = 0;
809 Vehicle[idx][M5] = 0;
810 Vehicle[idx][Vida] = 1000.0;
811 Vehicle[idx][Created] = false;
812 CreateVehicleByIDX(idx);
813 return 1;
814}
815
816public OnVehicleInsertBuy(plate[], model, color1, color2, Float:x, Float:y, Float:z, Float:a, idx, playerid, precio, dueno[])
817{
818 Vehicle[idx][ID] = cache_insert_id();
819 strpack(Vehicle[idx][Plate], plate, 30);
820 Vehicle[idx][Model] = model;
821 Vehicle[idx][Color1] = color1;
822 Vehicle[idx][Color2] = color2;
823 Vehicle[idx][PosX] = x;
824 Vehicle[idx][PosY] = y;
825 Vehicle[idx][PosZ] = z;
826 Vehicle[idx][PosA] = a;
827 strpack(Vehicle[idx][Llaves1], "na", 30);
828 strpack(Vehicle[idx][Llaves2], "na", 30);
829 strpack(Vehicle[idx][Llaves3], "na", 30);
830 strpack(Vehicle[idx][Llaves4], "na", 30);
831 strpack(Vehicle[idx][Dueno], dueno, 30);
832 Vehicle[idx][Bloqueo] = 0;
833 Vehicle[idx][Precio] = precio;
834 Vehicle[idx][Venta] = precio;
835 Vehicle[idx][Stats] = 0;
836 Vehicle[idx][ExpoX] = 0.0;
837 Vehicle[idx][ExpoY] = 0.0;
838 Vehicle[idx][ExpoZ] = 0.0;
839 Vehicle[idx][ExpoA] = 0.0;
840 Vehicle[idx][TotalLlaves] = 1;
841 Vehicle[idx][A1] = 0;
842 Vehicle[idx][A2] = 0;
843 Vehicle[idx][A3] = 0;
844 Vehicle[idx][A4] = 0;
845 Vehicle[idx][A5] = 0;
846 Vehicle[idx][M1] = 0;
847 Vehicle[idx][M2] = 0;
848 Vehicle[idx][M3] = 0;
849 Vehicle[idx][M4] = 0;
850 Vehicle[idx][M5] = 0;
851 Vehicle[idx][Vida] = 1000.0;
852 Vehicle[idx][Created] = false;
853 CreateVehicleByIDX(idx);
854 LoadUserVehicles(playerid);
855 return 1;
856}
857
858ParkDynamicVehicle(idx, Float:x, Float:y, Float:z, Float:a)
859{
860 Vehicle[idx][PosX] = x;
861 Vehicle[idx][PosY] = y;
862 Vehicle[idx][PosZ] = z;
863 Vehicle[idx][PosA] = a;
864 SaveVehicles(idx);
865}
866
867GuardarLock(idx, bloqueo)
868{
869 Vehicle[idx][Bloqueo] = bloqueo;
870 SaveVehicleParams(idx);
871}
872
873GuardarStats(idx, stats)
874{
875 VehicleUser[idx][Stats] = stats;
876 SaveVehicleStats(VehicleUser[idx][ID]);
877}
878
879GuardarHealth(idx, Float:health)
880{
881 Vehicle[idx][Vida] = health;
882 SaveVehicleParams(idx);
883}
884
885SellDynamicVehicle(idx, Float:x, Float:y, Float:z, Float:a)
886{
887 Vehicle[idx][ExpoX] = x;
888 Vehicle[idx][ExpoY] = y;
889 Vehicle[idx][ExpoZ] = z;
890 Vehicle[idx][ExpoA] = a;
891 strpack(Vehicle[idx][Dueno], "En venta", 30);
892 SaveVehiclesExpo(idx);
893}
894
895VehiclePlate(idx)
896{
897 strunpack(str, Vehicle[idx][Plate], 45);
898 return str;
899}
900
901VehiclePlateUser(idx)
902{
903 strunpack(str, VehicleUser[idx][Plate], 45);
904 return str;
905}
906
907SetVehiclePlate(idx, plate[])
908{
909 strpack(Vehicle[idx][Plate], plate, 30);
910 SaveVehicles(idx);
911 CreateVehicleByIDX(idx);
912}
913
914SetVehicleColor1(idx, color1)
915{
916 Vehicle[idx][Color1] = color1;
917 SaveVehicles(idx);
918 ChangeVehicleColor(Vehicle[idx][VehicleID], color1, Vehicle[idx][Color2]);
919}
920
921SetVehicleColor2(idx, color2)
922{
923 Vehicle[idx][Color2] = color2;
924 SaveVehicles(idx);
925 ChangeVehicleColor(Vehicle[idx][VehicleID], Vehicle[idx][Color1], color2);
926}
927
928SetVehicleModel(idx, model)
929{
930 Vehicle[idx][Model] = model;
931 SaveVehicles(idx);
932 CreateVehicleByIDX(idx);
933}
934
935GetVehicleName(model)
936{
937 new vehname[50];
938 format(vehname, sizeof(vehname), VehicleNames[model - 400]);
939 return vehname;
940}
941
942FreeVehicleIDX()
943{
944 for(new i = 0; i < DYNAMIC_MAX; i++) {
945 if(Vehicle[i][ID] == 0) return i;
946 }
947 return -1;
948}
949
950VehicleIDX(vehicleid)
951{
952 for(new i = 0; i < DYNAMIC_MAX; i++)
953 {
954 if(Vehicle[i][ID] != 0 && Vehicle[i][VehicleID] == vehicleid) {
955 return i;
956 }
957 }
958 return INVALID_VEHICLE_ID;
959}
960
961public AdminsBroadCast(color, string[])
962{
963 for(new i = 0; i < MAX_PLAYERS; i++)
964 {
965 if(IsPlayerConnected(i))
966 {
967 new level = AdminCheck(i);
968 new rolea = AdminRolea(i);
969 if(level >= 1)
970 {
971 if (rolea == 0)
972 {
973 SendClientMessage(i, color, string);
974 }
975 }
976 }
977 }
978 return 1;
979}
980
981public vidaVehiculo(id)
982{
983 new Float:health;
984 GetVehicleHealth(id, health);
985 if(health < 352)
986 {
987 SetVehicleHealth(id, 353);
988 SetVehicleParamsEx(id, VEHICLE_PARAMS_OFF, -1, -1, -1, -1, -1, -1);
989 Engine[id] = 0;
990 }
991 return 1;
992}
993
994public EncenderMotor(playerid)
995{
996 new vehicleid = GetPlayerVehicleID(playerid);
997 new enginem, lights, alarm, doors, bonnet, boot, objective;
998 GetVehicleParamsEx(vehicleid,enginem, lights, alarm, doors, bonnet, boot, objective);
999 new Float:h;
1000 GetVehicleHealth(vehicleid,h);
1001 if(h <= 353)
1002 {
1003 SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,-1,-1,-1,-1,-1,-1);
1004 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El motor del vehÃculo está dañado, llama un mecánico para que lo repare.");
1005 Engine[vehicleid] = 0;
1006 }
1007 else
1008 {
1009 SetVehicleParamsEx(GetPlayerVehicleID(playerid),VEHICLE_PARAMS_ON, lights, alarm, doors, bonnet, boot, objective);
1010 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Has encendido el motor del vehÃculo. Utiliza {FFFF00}/motor {FFFFFF}para apagarlo.");
1011 Engine[vehicleid] = 1;
1012 }
1013}
1014
1015public ApagarMotor(playerid)
1016{
1017 new vehicleid = GetPlayerVehicleID(playerid);
1018 new enginem, lights, alarm, doors, bonnet, boot, objective;
1019 GetVehicleParamsEx(vehicleid,enginem, lights, alarm, doors, bonnet, boot, objective);
1020 SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
1021 Engine[vehicleid] = 0;
1022}
1023
1024public EncenderLuces(playerid)
1025{
1026 new vehicle = GetPlayerVehicleID(playerid);
1027 new enginem, lights, alarm, doors, bonnet, boot, objective;
1028 GetVehicleParamsEx(vehicle,enginem, lights, alarm, doors, bonnet, boot, objective);
1029
1030 SetVehicleParamsEx(vehicle, enginem, VEHICLE_PARAMS_ON, alarm, doors, bonnet, boot, objective);
1031 Luces[vehicle] = 1;
1032}
1033
1034public ApagarLuces(playerid)
1035{
1036 new vehicle = GetPlayerVehicleID(playerid);
1037 new enginem, lights, alarm, doors, bonnet, boot, objective;
1038 GetVehicleParamsEx(vehicle, enginem, lights, alarm, doors, bonnet, boot, objective);
1039
1040 SetVehicleParamsEx(vehicle, enginem, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective);
1041 Luces[vehicle] = 0;
1042}
1043
1044public AbrirMaletero(playerid)
1045{
1046 new vehicle = GetPlayerVehicleID(playerid);
1047 new enginem, lights, alarm, doors, bonnet, boot, objective;
1048 GetVehicleParamsEx(vehicle, enginem, lights, alarm, doors, bonnet, boot, objective);
1049 SetVehicleParamsEx(vehicle, enginem, lights, alarm, doors, bonnet, VEHICLE_PARAMS_ON, objective);
1050 Maletero[vehicle] = 1;
1051}
1052
1053public CerrarMaletero(playerid)
1054{
1055 new vehicle = GetPlayerVehicleID(playerid);
1056 new enginem, lights, alarm, doors, bonnet, boot, objective;
1057 GetVehicleParamsEx(vehicle, enginem, lights, alarm, doors, bonnet, boot, objective);
1058 SetVehicleParamsEx(vehicle, enginem, lights, alarm, doors, bonnet, VEHICLE_PARAMS_OFF, objective);
1059 Maletero[vehicle] = 0;
1060}
1061
1062public AbrirCapo(playerid)
1063{
1064 new vehicle = GetPlayerVehicleID(playerid);
1065 new enginem, lights, alarm, doors, bonnet, boot, objective;
1066 GetVehicleParamsEx(vehicle, enginem, lights, alarm, doors, bonnet, boot, objective);
1067 SetVehicleParamsEx(vehicle, enginem, lights, alarm, doors, VEHICLE_PARAMS_ON, boot, objective);
1068 Capo[vehicle] = 1;
1069}
1070
1071public CerrarCapo(playerid)
1072{
1073 new vehicle = GetPlayerVehicleID(playerid);
1074 new enginem, lights, alarm, doors, bonnet, boot, objective;
1075 GetVehicleParamsEx(vehicle, enginem, lights, alarm, doors, bonnet, boot, objective);
1076 SetVehicleParamsEx(vehicle, enginem, lights, alarm, doors, VEHICLE_PARAMS_OFF, boot, objective);
1077 Capo[vehicle] = 0;
1078}
1079
1080CMD:motor(playerid, params[])
1081{
1082 new vehicleid = GetPlayerVehicleID(playerid);
1083 new string[240];
1084 new level = AdminCheck(playerid);
1085 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás en un vehÃculo.");
1086 if(IsBicycle(vehicleid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Las bicicletas no tienen motor.");
1087 if(GetPlayerState(playerid)!= PLAYER_STATE_DRIVER) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No eres el conductor del vehÃculo.");
1088 if(!strmatch(Vehicle[VehicleIDX(vehicleid)][Dueno], "En venta") || strmatch(Vehicle[VehicleIDX(vehicleid)][Dueno], "Expo"))
1089 {
1090 if(GetPlayerState(playerid) == 2)
1091 {
1092 if(Engine[vehicleid] == 0)
1093 {
1094 SetTimerEx("EncenderMotor", 2000, false, "d", playerid);
1095 format(string,sizeof(string), "**%s introduce la llave en el contacto y la gira para encender el motor del vehÃculo.", GetName(playerid));
1096 ProxDetector(17, playerid, string, COLOR_LILACLARO);
1097 }
1098 else
1099 {
1100 SetTimerEx("ApagarMotor", 100, false, "d", playerid);
1101 format(string,sizeof(string), "**%s gira la llave del contacto y apaga el motor del vehÃculo.", GetName(playerid));
1102 ProxDetector(17, playerid, string, COLOR_LILACLARO);
1103 }
1104 }
1105 }
1106 else
1107 {
1108 if (level >= 6)
1109 {
1110 if(Engine[vehicleid] == 0)
1111 {
1112 EncenderMotor(playerid);
1113 SendClientMessage(playerid,COLOR_WHITE,"{E34B25}[ADM]: {FFFFFF}Lleva el vehÃculo a su punto exacto de exposición y utiliza {d9ea4e}/avestacionar{FFFFFF}.");
1114 }
1115 }
1116 else
1117 {
1118 RemovePlayerFromVehicle(playerid);
1119 }
1120 }
1121 return 1;
1122}
1123
1124CMD:luces(playerid, params[])
1125{
1126 new vehicle = GetPlayerVehicleID(playerid);
1127 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás dentro de un vehÃculo.");
1128 if(IsBicycle(vehicle)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Las bicicletas no tienen luces.");
1129 if(GetPlayerState(playerid)!= PLAYER_STATE_DRIVER) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No eres el conductor del vehÃculo.");
1130 if (strmatch(Vehicle[VehicleIDX(vehicle)][Dueno],PlayerName(playerid)))
1131 {
1132 if (Luces[vehicle] == 0) {
1133 EncenderLuces(playerid);
1134 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Encendiste las luces del vehÃculo.");
1135 }
1136 else
1137 {
1138 ApagarLuces(playerid);
1139 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Apagaste las luces del vehÃculo.");
1140 }
1141 }
1142 return 1;
1143}
1144
1145CMD:maletero(playerid, params[])
1146{
1147 new vehicle = GetPlayerVehicleID(playerid);
1148 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás dentro de un vehÃculo.");
1149 if (esBike(vehicle)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El vehÃculo no tiene maletero.");
1150 if (strmatch(Vehicle[VehicleIDX(vehicle)][Dueno],PlayerName(playerid)))
1151 {
1152 if (Maletero[vehicle] == 0) {
1153 AbrirMaletero(playerid);
1154 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Abriste el maletero del vehÃculo.");
1155 }
1156 else
1157 {
1158 CerrarMaletero(playerid);
1159 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Cerraste el maletero del vehÃculo.");
1160 }
1161 }
1162 return 1;
1163}
1164
1165CMD:vermaletero(playerid, params[])
1166{
1167 new counter, result;
1168 for(new i; i != DYNAMIC_MAX; i++)
1169 {
1170 new dist = CheckPlayerDistanceToVehicle(3.5, playerid, i);
1171 if(dist)
1172 {
1173 result = i;
1174 counter++;
1175 }
1176 }
1177 if(counter == 0) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No hay ningún vehÃculo cerca tuyo.");
1178 if(counter > 1) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Se han encontrado varios vehÃculos, acércate más al tuyo.");
1179 if (Maletero[result] == 0) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El maltero está cerrado.");
1180 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El maletero está abierto.");
1181 return 1;
1182}
1183
1184CMD:capo(playerid, params[])
1185{
1186 new vehicleid = GetPlayerVehicleID(playerid);
1187 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás dentro de un vehÃculo.");
1188 if (esBike(vehicleid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El vehÃculo no tiene capó.");
1189 if (strmatch(Vehicle[VehicleIDX(vehicleid)][Dueno],PlayerName(playerid)))
1190 {
1191 if (Capo[vehicleid] == 0) {
1192 AbrirCapo(playerid);
1193 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Abriste el capó del vehÃculo.");
1194 }
1195 else
1196 {
1197 CerrarCapo(playerid);
1198 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Cerraste el capó del vehÃculo.");
1199 }
1200 }
1201 return 1;
1202}
1203
1204CMD:acrearvehiculo(playerid, params[])
1205{
1206 new level = AdminCheck(playerid);
1207 if(level >= 6)
1208 {
1209 new model, color1, color2, precio;
1210 if(sscanf(params, "dddd", model, color1, color2, precio)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Uso: /acrearvehiculo [modelo] [color1] [color2] [precio]");
1211 if(model < 400 || model > 611) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El modelo introducido no existe.");
1212 if(color1 < 0 || color1 > 255 || color2 < 0 || color2 > 255) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El color introducido no existe.");
1213 new Float:playerx,Float:playery,Float:playerz,Float:playera;
1214 GetPlayerPos(playerid,playerx,playery,playerz);
1215 GetPlayerFacingAngle(playerid,playera);
1216 new Playername[MAX_PLAYER_NAME];
1217 Playername = GetName(playerid);
1218 AddVehicleToFile(playerid, model, color1, color2, playerx+2, playery, playerz, playera, precio);
1219 new astring[256];
1220 format(astring, sizeof(astring), "{E34B25}[ADM]: {FFFFFF}%s(%d) creó un %s(%d), por $%d.", Playername, playerid, GetVehicleName(model), model, precio);
1221 AdminsBroadCast(-1, astring);
1222 }
1223 else
1224 {
1225 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás autorizado.");
1226 }
1227 return 1;
1228}
1229
1230CMD:avestacionar(playerid, params[])
1231{
1232 new level = AdminCheck(playerid);
1233 new vehicle = GetPlayerVehicleID(playerid);
1234 if(level >= 6)
1235 {
1236 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás dentro de un vehÃculo.");
1237 if (Vehicle[VehicleIDX(vehicle)][ID] == vehicle)
1238 {
1239 if (strmatch(Vehicle[VehicleIDX(vehicle)][Dueno],"Expo") && level >= 6)
1240 {
1241 if(VehicleIDX(vehicle) == INVALID_VEHICLE_ID) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El vehÃculo no es compatible con el sistema.");
1242 new Float:x, Float:y, Float:z, Float:a;
1243 GetVehiclePos(vehicle, x, y, z);
1244 GetVehicleZAngle(vehicle, a);
1245 ParkDynamicVehicle(VehicleIDX(vehicle), x, y, z, a);
1246 SendClientMessage(playerid, -1, "{E34B25}[ADM]: {FFFFFF}Bien, ahora conduce hasta donde quieres que se generen los coches al comprarlos y escribe {d9ea4e}/avcompra");
1247 }
1248 else
1249 {
1250 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Esto no es un vehÃculo de exposición o no tienes suficiente nivel para estacionar el vehÃculo.");
1251 }
1252 }
1253 }
1254 else
1255 {
1256 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás autorizado.");
1257 }
1258 return 1;
1259}
1260
1261CMD:avcompra(playerid, params[])
1262{
1263 new level = AdminCheck(playerid);
1264 new enginem, lights, alarm, doors, bonnet, boot, objective;
1265 if(level >= 6)
1266 {
1267 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás dentro de un vehÃculo.");
1268 new vehicle = GetPlayerVehicleID(playerid);
1269 if(VehicleIDX(vehicle) == INVALID_VEHICLE_ID) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El vehÃculo no es compatible con el sistema.");
1270 RemovePlayerFromVehicle(playerid);
1271 new Float:x, Float:y, Float:z, Float:a;
1272 GetVehiclePos(vehicle, x, y, z);
1273 GetVehicleZAngle(vehicle, a);
1274 SellDynamicVehicle(VehicleIDX(vehicle), x, y, z, a);
1275 SendClientMessage(playerid, -1, "{E34B25}[ADM]: {FFFFFF}El vehÃculo ha sido puesto a la venta con éxito!");
1276 SetVehiclePos(vehicle, Vehicle[VehicleIDX(vehicle)][PosX], Vehicle[VehicleIDX(vehicle)][PosY], Vehicle[VehicleIDX(vehicle)][PosZ]);
1277 SetVehicleZAngle(vehicle, Vehicle[VehicleIDX(vehicle)][PosA]);
1278 Engine[vehicle] = 0;
1279 GetVehicleParamsEx(vehicle, enginem, lights, alarm, doors, bonnet, boot, objective);
1280 SetVehicleParamsEx(vehicle, VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
1281 }
1282 return 1;
1283}
1284
1285CMD:aborrarvehiculo(playerid, params[])
1286{
1287 new level = AdminCheck(playerid);
1288 new vehicleid;
1289 new Playername[MAX_PLAYER_NAME];
1290 Playername = GetName(playerid);
1291 if(level >= 6)
1292 {
1293 if(sscanf(params, "d", vehicleid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Uso: /aborrarvehiculo [ID]");
1294 if(VehicleIDX(vehicleid) == INVALID_VEHICLE_ID) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El vehÃculo no es compatible con el sistema.");
1295 DeleteVehicleByIDX(playerid, VehicleIDX(vehicleid));
1296 new astring[256];
1297 format(astring, sizeof(astring), "{E34B25}[ADM]: {FFFFFF}%s(%d) eliminó el vehÃculo ID: %d.", Playername, playerid, VehicleIDX(vehicleid));
1298 AdminsBroadCast(-1, astring);
1299 }
1300 else
1301 {
1302 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás autorizado.");
1303 }
1304 return 1;
1305}
1306
1307CMD:estacionar(playerid, params[])
1308{
1309 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás en un vehÃculo.");
1310 new vehicle = GetPlayerVehicleID(playerid);
1311 if(VehicleIDX(vehicle) == INVALID_VEHICLE_ID) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El vehÃculo no es compatible con el sistema.");
1312 new Float:x, Float:y, Float:z, Float:a;
1313 GetVehiclePos(vehicle, x, y, z);
1314 GetVehicleZAngle(vehicle, a);
1315 ParkDynamicVehicle(VehicleIDX(vehicle), x, y, z, a);
1316 SCMEx(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El vehÃculo ha sido estacionado en éste lugar.");
1317 return 1;
1318}
1319
1320CMD:editvehicle(playerid, params[])
1321{
1322 if(!IsPlayerAdmin(playerid)) return 0;
1323 new idx = VehicleIDX(GetPVarInt(playerid, "VehID"));
1324 if(idx == INVALID_VEHICLE_ID) return SendClientMessage(playerid, COLOR_GREY, "Either the vehicle you selected does not exist or you haven't selected any, /selectvehicle.");
1325 new option, option2[30], option3;
1326 if(sscanf(params, "dS(NULL)[30]", option, option2)) {
1327 SendClientMessage(playerid, COLOR_GREY, "Syntax: /editvehicle [edit type] [input]");
1328 SendClientMessage(playerid, COLOR_WHITE, "Edit types: 1-plate, 2-color1, 3-color2, 4-model");
1329 return 1;
1330 }
1331 switch(option)
1332 {
1333 case 1: {
1334 new plate[30];
1335 if(sscanf(params, "{d}s[30]", plate)) {
1336 return SendClientMessage(playerid, COLOR_GREY, "/editvehicle 1 [new plate]");
1337 }
1338 SetVehiclePlate(idx, plate);
1339 }
1340 case 2: {
1341 if(sscanf(params, "{d}d", option3)) {
1342 return SendClientMessage(playerid, COLOR_GREY, "/editvehicle 2 [color 1] (0-255)");
1343 }
1344 if(option3 < 0 || option3 > 255) return SendClientMessage(playerid, COLOR_WHITE, "Invalid color ID.");
1345 SetVehicleColor1(idx, option3);
1346 }
1347 case 3: {
1348 if(sscanf(params, "{d}d", option3)) {
1349 return SendClientMessage(playerid, COLOR_GREY, "/editvehicle 3 [color 2] (0-255)");
1350 }
1351 if(option3 < 0 || option3 > 255) return SendClientMessage(playerid, COLOR_WHITE, "Invalid color ID.");
1352 SetVehicleColor2(idx, option3);
1353 }
1354 case 4: {
1355 if(sscanf(params, "{d}d", option3)) {
1356 return SendClientMessage(playerid, COLOR_GREY, "/editvehicle 4 [new model] (400-611)");
1357 }
1358 if(option3 < 400 || option3 > 611) return SendClientMessage(playerid, COLOR_WHITE, "Invalid model ID.");
1359 SetVehicleModel(idx, option3);
1360 }
1361 default: SendClientMessage(playerid, COLOR_WHITE, "Invalid edit type.");
1362 }
1363 return 1;
1364}
1365
1366CMD:seguro(playerid, params[])
1367{
1368 new vehicleid;
1369 if(sscanf(params, "d", vehicleid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Uso: /seguro [id]");
1370 if(VehicleIDX(vehicleid) == INVALID_VEHICLE_ID) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El vehÃculo no es compatible con el sistema.");
1371 if(strmatch(Vehicle[VehicleIDX(vehicleid)][Dueno],PlayerName(playerid)))
1372 {
1373 if(esBike(vehicleid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Este vehÃculo no tiene sistema de bloqueo.");
1374 new Float:XX1, Float:YY1, Float:ZZ1;
1375 GetVehiclePos(vehicleid, XX1, YY1, ZZ1);
1376 if(IsPlayerInRangeOfPoint(playerid, 15.0, XX1, YY1, ZZ1))
1377 {
1378 new string[240];
1379 new Playername[MAX_PLAYER_NAME];
1380 Playername = GetName(playerid);
1381 if(Vehicle[VehicleIDX(vehicleid)][Bloqueo] == 0)
1382 {
1383 Vehicle[VehicleIDX(vehicleid)][Bloqueo] = 1;
1384 format(string,sizeof(string), "**%s acciona su control remoto y bloquea su %s.", Playername, GetVehicleName(Vehicle[VehicleIDX(vehicleid)][Model]));
1385 ProxDetector(17, playerid, string, COLOR_LILACLARO);
1386 GuardarLock(VehicleIDX(vehicleid), 1);
1387 }
1388 else if(Vehicle[VehicleIDX(vehicleid)][Bloqueo] == 1)
1389 {
1390 Vehicle[VehicleIDX(vehicleid)][Bloqueo] = 0;
1391 format(string,sizeof(string), "**%s acciona su control remoto y bloquea su %s.", Playername, GetVehicleName(Vehicle[VehicleIDX(vehicleid)][Model]));
1392 ProxDetector(17, playerid, string, COLOR_LILACLARO);
1393 GuardarLock(VehicleIDX(vehicleid), 0);
1394 }
1395 }
1396 else
1397 {
1398 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás lo suficientemente cerca de tu vehÃculo.");
1399 }
1400 }
1401 else
1402 {
1403 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Éste vehÃculo no es de tu propiedad.");
1404 }
1405 return 1;
1406}
1407
1408CMD:cinturon(playerid, params[])
1409{
1410 new vehicleid = GetPlayerVehicleID(playerid);
1411 PlayerName(playerid);
1412 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás dentro de un vehÃculo.");
1413 if(VehicleIDX(vehicleid) == INVALID_VEHICLE_ID) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El vehÃculo no es compatible con el sistema.");
1414 new string [250];
1415 if (esBike(vehicleid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}El vehÃculo no tiene cinturón de seguridad.");
1416 if (LlevaCinturon[playerid] == 0) {
1417 LlevaCinturon[playerid] = 1;
1418 format(string,sizeof(string), "**%s se abrocha el cinturón de seguridad.", GetName(playerid));
1419 ProxDetector(17, playerid, string, COLOR_LILACLARO);
1420 }
1421 else
1422 {
1423 LlevaCinturon[playerid] = 0;
1424 format(string,sizeof(string), "**%s se desabrocha el cinturón de seguridad.", GetName(playerid));
1425 ProxDetector(17, playerid, string, COLOR_LILACLARO);
1426 }
1427 return 1;
1428}
1429
1430CMD:vercinturon(playerid, params[])
1431{
1432 new level = AdminCheck(playerid);
1433 new Float:XX1, Float:YY1, Float:ZZ1;
1434 if(level >= 1)
1435 {
1436 new id;
1437 new string[240];
1438 if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Uso: /vercinturon [playerid]");
1439 GetPlayerPos(id, XX1, YY1, ZZ1);
1440 if(IsPlayerInRangeOfPoint(playerid, 4.0, XX1, YY1, ZZ1))
1441 {
1442 GetName(id);
1443 if (LlevaCinturon[id] == 1)
1444 {
1445 format(string,sizeof(string), "{40D3FF}[SERVIDOR]: {FFFFFF}%s tiene el cinturón de seguridad {23FFAA}abrochado.", GetName(id));
1446 SendClientMessage(playerid, -1, string);
1447 }
1448 else
1449 {
1450 format(string,sizeof(string), "{40D3FF}[SERVIDOR]: {FFFFFF}%s tiene el cinturón de seguridad {B51212}desabrochado.", GetName(id));
1451 SendClientMessage(playerid, -1, string);
1452 }
1453 }
1454 else
1455 {
1456 format(string,sizeof(string), "{40D3FF}[SERVIDOR]: {FFFFFF}Tienes que estar a 4m de %s para comprobarlo.", GetName(id));
1457 SendClientMessage(playerid, -1, string);
1458 }
1459 }
1460 else
1461 {
1462 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás autorizado.");
1463 }
1464 return 1;
1465}
1466
1467CMD:rac(playerid, params[])
1468{
1469 new level = AdminCheck(playerid);
1470 if(level >= 1)
1471 {
1472 new Playername[MAX_PLAYER_NAME];
1473 Playername = GetName(playerid);
1474 for(new i=0;i<DYNAMIC_MAX;i++)
1475 {
1476 if(IsVehicleEmpty(i) && Vehicle[VehicleIDX(i)][Stats] == 0)
1477 {
1478 new Float:health;
1479 GetVehicleHealth(i, health);
1480 GuardarHealth(VehicleIDX(i), health);
1481 SetVehicleToRespawn(i);
1482 SetVehiclePos(i, Vehicle[VehicleIDX(i)][PosX], Vehicle[VehicleIDX(i)][PosY], Vehicle[VehicleIDX(i)][PosZ]);
1483 SetVehicleZAngle(i, Vehicle[VehicleIDX(i)][PosA]);
1484 new enginem, lights, alarm, doors, bonnet, boot, objective;
1485 GetVehicleParamsEx(i, enginem, lights, alarm, doors, bonnet, boot, objective);
1486 SetVehicleParamsEx(i, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, objective);
1487 Engine[i] = 0;
1488 Maletero[i] = 0;
1489 Capo[i] = 0;
1490 Luces[i] = 0;
1491 }
1492 }
1493 new astring[256];
1494 format(astring, sizeof(astring), "{E34B25}[ADM]: {FFFFFF}%s respawneó todos los vehÃculos del servidor.", Playername);
1495 SendClientMessageToAll(-1, astring);
1496 }
1497 else
1498 {
1499 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás autorizado.");
1500 }
1501 return 1;
1502}
1503
1504CMD:respawncar(playerid, params[])
1505{
1506 new level = AdminCheck(playerid);
1507 if(level >= 1)
1508 {
1509 new id;
1510 if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Uso: /respawncar [id]");
1511 if(IsVehicleEmpty(id) && Vehicle[VehicleIDX(id)][Stats] == 0)
1512 {
1513 new Float:health;
1514 GetVehicleHealth(VehicleIDX(id), health);
1515 GuardarHealth(VehicleIDX(id), health);
1516 SetVehicleToRespawn(VehicleIDX(id));
1517 SetVehicleHealth(VehicleIDX(id), health);
1518 SetVehiclePos(id, Vehicle[VehicleIDX(id)][PosX], Vehicle[VehicleIDX(id)][PosY], Vehicle[VehicleIDX(id)][PosZ]);
1519 new Playername[MAX_PLAYER_NAME];
1520 Playername = GetName(playerid);
1521 new astring[256];
1522 format(astring, sizeof(astring), "{E34B25}[ADM]: {FFFFFF}%s(%d) respawneó el vehÃculo ID: %d.", Playername, playerid, id);
1523 AdminsBroadCast(-1, astring);
1524 if(IsPlayerConnected(GetPlayerIdFromName(Vehicle[VehicleIDX(id)][Dueno])))
1525 {
1526 new mess[200];
1527 format(mess,sizeof(mess),"{40D3FF}[SERVIDOR]: {FFFFFF}%s envió tu vehÃculo %s a la última posición donde lo estacionaste.", Playername, GetVehicleName(Vehicle[VehicleIDX(id)][Model]));
1528 SendClientMessage(GetPlayerIdFromName(Vehicle[VehicleIDX(id)][Dueno]), -1, mess);
1529 }
1530 new enginem, lights, alarm, doors, bonnet, boot, objective;
1531 GetVehicleParamsEx(id, enginem, lights, alarm, doors, bonnet, boot, objective);
1532 SetVehicleParamsEx(id, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, objective);
1533 Engine[id] = 0;
1534 Maletero[id] = 0;
1535 Capo[id] = 0;
1536 Luces[id] = 0;
1537 }
1538 }
1539 else
1540 {
1541 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás autorizado.");
1542 }
1543 return 1;
1544}
1545
1546CMD:traercar(playerid, params[])
1547{
1548 new level = AdminCheck(playerid);
1549 if(level >= 1)
1550 {
1551 new Float:playerx, Float:playery, Float:playerz, Float:playera, id;
1552 if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Uso: /traercoche [id]");
1553 if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No puedes llamar a un vehÃculo si estás > dentro de otro.");
1554 if(IsVehicleEmpty(id) && Vehicle[VehicleIDX(id)][Stats] == 0)
1555 {
1556 GetPlayerPos(playerid,playerx,playery,playerz);
1557 GetPlayerFacingAngle(playerid,playera);
1558 new Playername[MAX_PLAYER_NAME];
1559 Playername = GetName(playerid);
1560 new Float:health;
1561 GetVehicleHealth(id, health);
1562 GuardarHealth(VehicleIDX(id), health);
1563 SetVehicleToRespawn(id);
1564 SetVehicleHealth(id, health);
1565 SetVehiclePos(id, playerx+2, playery, playerz);
1566 SetVehicleZAngle(id, playera);
1567 new astring[256];
1568 format(astring, sizeof(astring), "{E34B25}[ADM]: {FFFFFF}%s(%d) teletransportó el vehÃculo ID: %d a su posición.", Playername, playerid, id);
1569 AdminsBroadCast(-1, astring);
1570 new enginem, lights, alarm, doors, bonnet, boot, objective;
1571 GetVehicleParamsEx(id, enginem, lights, alarm, doors, bonnet, boot, objective);
1572 SetVehicleParamsEx(id, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, objective);
1573 Engine[id] = 0;
1574 Maletero[id] = 0;
1575 Capo[id] = 0;
1576 Luces[id] = 0;
1577 }
1578 }
1579 else
1580 {
1581 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás autorizado.");
1582 }
1583 return 1;
1584}
1585
1586CMD:ircar(playerid, params[])
1587{
1588 new level = AdminCheck(playerid);
1589 if(level >= 1)
1590 {
1591 new id;
1592 if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Uso: /ircar [ID]");
1593 if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No puedes ir a un vehÃculo si estás dentro de otro.");
1594 if(Vehicle[VehicleIDX(id)][Stats] == 0)
1595 {
1596 SetPlayerPos(playerid, Vehicle[VehicleIDX(id)][PosX]+2, Vehicle[VehicleIDX(id)][PosY], Vehicle[VehicleIDX(id)][PosZ]);
1597 new Playername[MAX_PLAYER_NAME];
1598 Playername = GetName(playerid);
1599 new astring[256];
1600 format(astring, sizeof(astring), "{E34B25}[ADM]: {FFFFFF}%s(%d) se teletransportó al vehÃculo ID: %d.", Playername, playerid, id);
1601 AdminsBroadCast(-1, astring);
1602 }
1603 }
1604 else
1605 {
1606 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás autorizado.");
1607 }
1608 return 1;
1609}
1610
1611CMD:vehiculos(playerid, params[])
1612{
1613 new string[240];
1614 new stats[30];
1615 new count;
1616 for(new i=0;i<DYNAMIC_MAX;i++)
1617 {
1618 if(strmatch(VehicleUser[i][Dueno],PlayerName(playerid)))
1619 {
1620 if (VehicleUser[i][Stats] == 0)
1621 {
1622 stats = "{B2F289}Spawneado";
1623 }
1624 else if (VehicleUser[i][Stats] == 1)
1625 {
1626 stats = "{CAE1FF}Guardado";
1627 }
1628 format(string,sizeof(string), "%s%s (%d) - [%s] - %s\n", string, GetVehicleName(VehicleUser[i][Model]), VehicleUser[i][ID], VehiclePlateUser(i), stats);
1629 ListaSeleccion[playerid][count] = i;
1630 count++;
1631 }
1632 }
1633 if (count >= 1)
1634 {
1635 ShowPlayerDialog(playerid, DIALOG_MISCOCHES, DIALOG_STYLE_LIST, "Mis coches", string, "Cambiar", "Salir");
1636 }
1637 else
1638 {
1639 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No tienes ningún vehÃculo en propiedad.");
1640 }
1641 return 1;
1642}
1643
1644CMD:fixveh(playerid, params[])
1645{
1646 new level = AdminCheck(playerid);
1647 if(level >= 1)
1648 {
1649 new id;
1650 if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}Uso: /fixveh [id]");
1651 for(new i=0;i<DYNAMIC_MAX;i++)
1652 {
1653 if(Vehicle[i][VehicleID] == id)
1654 {
1655 RepairVehicle(id);
1656 GuardarHealth(VehicleIDX(id), 1000.0);
1657 new Playername[MAX_PLAYER_NAME];
1658 Playername = GetName(playerid);
1659 new astring[256];
1660 format(astring, sizeof(astring), "{E34B25}[ADM]: {FFFFFF}%s(%d) reparó el vehÃculo ID: %d.", Playername, playerid, id);
1661 AdminsBroadCast(-1, astring);
1662 }
1663 }
1664 }
1665 else
1666 {
1667 SendClientMessage(playerid, -1, "{40D3FF}[SERVIDOR]: {FFFFFF}No estás autorizado.");
1668 }
1669 return 1;
1670}
1671
1672stock SCMEx(playerid, color, const newStr[], {Float,_}:...)
1673{
1674 static
1675 args,
1676 start,
1677 end,
1678 string[144]
1679 ;
1680 #emit LOAD.S.pri 8
1681 #emit STOR.pri args
1682
1683 if (args > 12)
1684 {
1685 #emit ADDR.pri newStr
1686 #emit STOR.pri start
1687
1688 for (end = start + (args - 12); end > start; end -= 4)
1689 {
1690 #emit LREF.pri end
1691 #emit PUSH.pri
1692 }
1693 #emit PUSH.S newStr
1694 #emit PUSH.C 144
1695 #emit PUSH.C string
1696 #emit PUSH.C args
1697 #emit SYSREQ.C format
1698
1699 SendClientMessage(playerid, color, string);
1700
1701 #emit LCTRL 5
1702 #emit SCTRL 4
1703 #emit RETN
1704 }
1705 return SendClientMessage(playerid, color, newStr);
1706}
1707
1708stock GetName(playerid)
1709{
1710 new name[24];
1711 GetPlayerName(playerid, name, sizeof(name));
1712 strreplace(name, '_', ' ');
1713 return name;
1714}
1715
1716stock strreplace(string[], find, replace)
1717{
1718 for(new i=0; string[i]; i++)
1719 {
1720 if(string[i] == find)
1721 {
1722 string[i] = replace;
1723 }
1724 }
1725}
1726
1727stock IsVehicleEmpty(vehicleid)
1728{
1729 for(new i=0; i<MAX_PLAYERS; i++)
1730 {
1731 if(IsPlayerInVehicle(i, vehicleid)) return 0;
1732 }
1733 return 1;
1734}
1735
1736stock AdminCheck(playerid)
1737{
1738 return CallRemoteFunction("GetPlayerAdminLevel", "i", playerid);
1739}
1740
1741stock AdminRolea(playerid)
1742{
1743 return CallRemoteFunction("AdminEsRol", "i", playerid);
1744}
1745
1746stock IsBicycle(vehicleid)
1747{
1748 switch(GetVehicleModel(vehicleid))
1749 {
1750 case 481,509,510: return 1;
1751 }
1752 return 0;
1753}
1754
1755stock ProxDetector(Float:radi, playerid, string[],color)
1756{
1757 new Float:x,Float:y,Float:z;
1758 GetPlayerPos(playerid,x,y,z);
1759 foreach(Player,i)
1760 {
1761 if(IsPlayerInRangeOfPoint(i,radi,x,y,z))
1762 {
1763 SendClientMessage(i,color,string);
1764 }
1765 }
1766}
1767
1768stock strmatch(const String1[], const String2[])
1769{
1770 if ((strcmp(String1, String2, true, strlen(String2)) == 0) && (strlen(String2) == strlen(String1)))
1771 {
1772 return true;
1773 }
1774 else
1775 {
1776 return false;
1777 }
1778}
1779
1780stock PlayerName(playerid)
1781{
1782 new name[MAX_PLAYER_NAME];
1783 GetPlayerName(playerid, name, MAX_PLAYER_NAME);
1784 return name;
1785}
1786
1787stock esBike(vehicleid)
1788{
1789 switch(GetVehicleModel(vehicleid))
1790 {
1791 case 481,509,510,448,461,462,463,468,471,521,522,523,581,586: return 1;
1792 }
1793 return 0;
1794}
1795
1796stock GetPlayerIdFromName(playername[])
1797{
1798 for(new i = 0; i <= MAX_PLAYERS; i++)
1799 {
1800 if(IsPlayerConnected(i))
1801 {
1802 new playername2[MAX_PLAYER_NAME];
1803 GetPlayerName(i, playername2, sizeof(playername2));
1804 if(strcmp(playername2, playername, true, strlen(playername)) == 0)
1805 {
1806 return i;
1807 }
1808 }
1809 }
1810 return INVALID_PLAYER_ID;
1811}
1812
1813stock CheckPlayerDistanceToVehicle(Float:radi, playerid, vehicleid)
1814{
1815 if(IsPlayerConnected(playerid))
1816 {
1817 new Float:PX,Float:PY,Float:PZ,Float:X,Float:Y,Float:Z;
1818 GetPlayerPos(playerid,PX,PY,PZ);
1819 GetVehiclePos(vehicleid, X,Y,Z);
1820 new Float:Distance = (X-PX)*(X-PX)+(Y-PY)*(Y-PY)+(Z-PZ)*(Z-PZ);
1821 if(Distance <= radi*radi)
1822 {
1823 return 1;
1824 }
1825 }
1826 return 0;
1827}