· 7 years ago · Oct 02, 2018, 09:34 PM
1// This is a comment
2// uncomment the line below if you want to write a filterscript
3//#define FILTERSCRIPT
4
5#include <a_samp>
6#include <sscanf2>
7#include <zcmd>
8#include <cpstream>
9#include <a_mysql>
10
11/*-- definições do banco de dados --*/
12#define HOST "localhost"
13#define USUARIO "root"
14#define DATABASE "samp"
15#define SENHA "samp123"
16
17/*-- definições de gangs --*/
18#define GANG_YAKUZA 1
19#define GANG_GROOVE_STREET 2
20#define GANG_BALLAS 3
21
22/*-- definições de menus --*/
23#define DIALOG_MENU_KIT 1001
24#define DIALOG_MULTAS 1002
25#define DIALOG_MENU_DETRAN 1003
26#define DIALOG_MENU_DETRAN_CONSULTAR 1004
27#define DIALOG_MENU_DETRAN_PAGARMULTAS 1005
28#define DIALOG_PAGAR_MULTAS 1006
29#define DIALOG_REGISTRO 1007
30#define DIALOG_LOGIN 1008
31
32
33forward UpdateRadar();
34forward LiberarPlayerMulta(playerid);
35forward VerificarContas(playerid);
36forward DadosRegistrados(playerid);
37forward CarregarContas(playerid);
38forward DadosSalvos(playerid);
39
40enum pBradoks {
41 pGang,
42 bool:pMulta = false,
43 pTimerMulta,
44 pValorDaMulta,
45 pIDdoVeiculo,
46 pID,
47 pNome[24],
48 pIP[26],
49 pSenha[20],
50 pLevel,
51 pDinheiro,
52 pSkin,
53 pMatou,
54 pMorreu,
55 pAdmin,
56 bool:pLogado
57}
58new PlayerBradoks[MAX_PLAYERS][pBradoks];
59new BRADOKS_VEHICLES = 1;
60new bool:Contagem[MAX_PLAYERS] = false;
61new MySQL:IDConexao;
62
63new RankClassNames[][] = { /*-- 52 PATENTES --*/
64 "Novato" , "Taifeiro 2ª Classe" , "Taifeiro 1ª Classe" , "Cabo" , "Sargento" ,
65 "Terceiro-Sargento 1" , "Terceiro-Sargento 2" , "Terceiro-Sargento 3" , "Segundo-Sargento 1" , "Segundo-Sargento 2" ,
66 "Segundo-Sargento 3" , "Segundo-Sargento 4" , "Primeiro-Sargento 1" , "Primeiro-Sargento 2" , "Primeiro-Sargento 3" ,
67 "Primeiro-Sargento 4" , "Primeiro-Sargento 5" , "Segundo-Tenente 1" , "Segundo-Tenente 2" , "Segundo-Tenente 3" ,
68 "Segundo-Tenente 4" , "Primeiro-Tenente 1" , "Primeiro-Tenente 2" , "Primeiro-Tenente 3" , "Primeiro-Tenente 4" ,
69 "Primeiro-Tenente 5" , "Capitão 1" , "Capitão 2" , "Capitão 3" , "Capitão 4" ,
70 "Capitão 5" , "Major 1" , "Major 2" , "Major 3" , "Major 4" ,
71 "Major 5" , "Tenente-Coronel 1" , "Tenente-Coronel 2" , "Tenente-Coronel 3" , "Tenente-Coronel 4" ,
72 "Tenente-Coronel 5" , "Coronel 1" , "Coronel 2" , "Coronel 3" , "Coronel 4" ,
73 "Coronel 5" , "General de Brigada" , "General de Divisão" , "General de Exército" , "Marechal" ,
74 "Herói de Guerra" , "Lendário"
75};
76
77new RankClassColors[] = { /*-- 52 CORES --*/
78 0xFFFFFFAA, 0x400040AA, 0xC0C0C0AA, 0x408080AA, 0x808080AA,
79 0x808040AA, 0x808000AA, 0x000000AA, 0x400080AA, 0x8C008CAA,
80 0x000040AA, 0x000080AA, 0x004040AA, 0x004000AA, 0x804000AA,
81 0x400000AA, 0x8000FFAA, 0x800080AA, 0x0000A0AA, 0x0000FFAA,
82 0x008040AA, 0x008000AA, 0xFF8000AA, 0x800000AA, 0xFF0080AA,
83 0x800040AA, 0x8080FFAA, 0x004080AA, 0x008080AA, 0x00FF00AA,
84 0xFF8040AA, 0x804040AA, 0xFF00FFAA, 0x8080C0AA, 0x0080C0AA,
85 0x00FFFFAA, 0x00FF40AA, 0x80FF00AA, 0xFFFF00AA, 0xFF0000AA,
86 0xFF80FFAA, 0xFF80C0AA, 0x0080FFAA, 0x80FFFFAA, 0x00FF80AA,
87 0x80FF80AA, 0xFFFF80AA, 0xFF8080AA, 0xCC0066AA, 0xFF4242AA,
88 0xF90000AA, 0xDD0000AA
89};
90
91enum vBradoks {
92 vVeiculoIDX,
93 vPlaca[9],
94 vValorMulta,
95 vTotalMultas,
96}
97new VeiculoBradoks[MAX_VEHICLES][vBradoks];
98
99new PortaoHSLS[2],
100 bool:PortaoHSLSEAberto = false,
101 bool:PortaoHSLSDAberto = false;
102
103enum pPickupID {
104 pEntradaDetranSF,
105 pSaidaDetranSF
106}
107new PickupBradoks[pPickupID];
108
109enum pCheckID {
110 pCheckDetranMenu
111}
112new CheckBradoks[pCheckID];
113
114new VehicleNames[][] =
115{
116 "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
117 "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
118 "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
119 "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
120 "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
121 "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
122 "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral",
123 "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
124 "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
125 "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
126 "Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
127 "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
128 "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
129 "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking",
130 "Blista Compact", "Police Maverick", "Boxville", "Benson", "Mesa", "RC Goblin",
131 "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT",
132 "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
133 "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
134 "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
135 "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
136 "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
137 "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
138 "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
139 "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratium",
140 "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
141 "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
142 "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
143 "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
144 "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
145 "Police Car", "Police Car", "Police Ranger", "Picador", "S.W.A.T", "Alpha",
146 "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
147 "Tiller", "Utility Trailer"
148};
149
150main()
151{
152 print("\n----------------------------------");
153 print(" Blank Gamemode by your name here");
154 print("----------------------------------\n");
155}
156
157public OnGameModeInit()
158{
159 IDConexao = mysql_connect(HOST, USUARIO, SENHA, DATABASE);
160 mysql_query(IDConexao, "CREATE TABLE IF NOT EXISTS `Contas`(`ID`int AUTO_INCREMENT PRIMARY KEY, `Nome`varchar(24) NOT NULL,`Senha` varchar(20) NOT NULL,`Level` int(20) NOT NULL,`Matou` int(10) NOT NULL,`Morreu` int(10) NOT NULL,`Skin` int(10) NOT NULL,`Admin` int(10) NOT NULL,`Dinheiro` int(20) NOT NULL)", false);
161 print(mysql_errno(IDConexao) != 0 ? ("Falha na conexão ao banco de dados Mysql") : ("Conexão ao banco de dado Mysql efetuada com sucesso"));
162
163 SetGameModeText("Blank Script");
164 AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
165 SetTimer("UpdateRadar", 400, true);
166 DisableInteriorEnterExits();
167
168 VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX] = AddStaticVehicle(560,2038.6934,1319.2219,10.3783,179.8767,-1,-1); // Carro Público LV 1
169 SetVehicleNumberPlateEx(VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX], "PUB-2018"); BRADOKS_VEHICLES ++;
170 VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX] = AddStaticVehicle(565,2038.7120,1328.0275,10.3782,179.8766,-1,-1); // Carro Público LV 2
171 SetVehicleNumberPlateEx(VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX], "PUB-2019"); BRADOKS_VEHICLES ++;
172 VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX] = AddStaticVehicle(585,2038.7369,1339.4006,10.3782,179.8766,-1,-1); // Carro Público LV 3
173 SetVehicleNumberPlateEx(VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX], "PUB-2020"); BRADOKS_VEHICLES ++;
174 VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX] = AddStaticVehicle(565,2038.7646,1352.3700,10.3776,179.8763,-1,-1); // Carro Público LV 4
175 SetVehicleNumberPlateEx(VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX], "PUB-2021"); BRADOKS_VEHICLES ++;
176 VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX] = AddStaticVehicle(585,2038.7971,1367.3813,10.3779,179.8762,-1,-1); // Carro Público LV 5
177 SetVehicleNumberPlateEx(VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX], "PUB-2022"); BRADOKS_VEHICLES ++;
178 VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX] = AddStaticVehicle(560,2038.8286,1382.0822,10.3781,179.8761,-1,-1); // Carro Público LV 6
179 SetVehicleNumberPlateEx(VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX], "PUB-2023"); BRADOKS_VEHICLES ++;
180
181
182 /*-- PORTÕES DO HOSPITAL DE LS PRÓXIMO AO GROOVE STREET --*/
183 PortaoHSLS[0] = CreateObject(2933,1999.9000000,-1442.5000000,14.3000000,0.0000000,0.0000000,316.0000000); //portão esquerdo p Original fechado
184 PortaoHSLS[1] = CreateObject(2933,2005.6000000,-1448.0000000,14.3000000,0.0000000,0.0000000,315.9950000); //portão direito p Original fechado
185
186 /*-- RADARES --*/
187 CreateObject(18880, 2055.10352, 1338.94104, 9.85640, 0.00000, 0.00000, 0.00000);
188 CreateObject(18880, 2037.11914, 1338.99243, 9.85640, 0.00000, 0.00000, 0.00000);
189 CreateObject(18880, 2077.61694, 1417.69373, 9.85640, 0.00000, 0.00000, -180.09801);
190 CreateObject(18880, 2059.66455, 1417.75464, 9.85640, 0.00000, 0.00000, -180.09801);
191
192 /*-- PICKUPS --*/
193 PickupBradoks[pEntradaDetranSF] = CreatePickup(19132, 1, 2364.3064,2377.5967,10.8203);
194 PickupBradoks[pSaidaDetranSF] = CreatePickup(1318, 1, 390.2981,173.7916,1008.3828);
195
196 Create3DTextLabel("{FFD700}DETRAN\n{FFFFFF}De\n{2E8B57}San Fierro\n{FFFFFF}Aperte '{B22222}F{FFFFFF}' para Entrar", -1, 2364.3064,2377.5967,10.8203, 30.0, 0);
197 Create3DTextLabel("{FFD700}DETRAN\n{FFFFFF}De\n{2E8B57}San Fierro\n{FFFFFF}Aperte '{B22222}F{FFFFFF}' para Sair", -1, 390.2981,173.7916,1008.3828, 30.0, 0);
198 Create3DTextLabel("{FFD700}DETRAN\n{FFFFFF}De\n{2E8B57}San Fierro\n{FFFFFF}Consultas e Pagamentos de Multas", -1, 358.7964,178.6017,1008.3828, 20.0, 0);
199
200 CheckBradoks[pCheckDetranMenu] = CPS_AddCheckpoint(358.7964,178.6017,1008.3828, 1.0, 20);
201 return 1;
202}
203
204public OnGameModeExit()
205{
206 for(new i = 0; i < MAX_PLAYERS; i++) SalvarDados(i);
207 mysql_close(IDConexao);
208 return 1;
209}
210
211public OnPlayerRequestClass(playerid, classid)
212{
213 SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
214 SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
215 SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
216 return 1;
217}
218
219public OnPlayerConnect(playerid)
220{
221 GetPlayerName(playerid, PlayerBradoks[playerid][pNome], 24);
222 GetPlayerIp(playerid, PlayerBradoks[playerid][pIP], 26);
223 new Query[90];
224 mysql_format(IDConexao, Query, sizeof(Query), "SELECT `Senha`, `ID` FROM `Contas` WHERE `Nome`='%s'", PlayerBradoks[playerid][pNome]);
225 mysql_tquery(IDConexao, Query, "VerificarContas", "i", playerid);
226
227 SetPlayerMapIcon(playerid, 1, 2364.3064,2377.5967,10.8203, 24, 0, MAPICON_GLOBAL);
228 return 1;
229}
230
231public OnPlayerDisconnect(playerid, reason)
232{
233 SalvarDados(playerid);
234 return 1;
235}
236
237public OnPlayerSpawn(playerid)
238{
239 new string[128], aname[MAX_PLAYER_NAME];
240 GetPlayerName(playerid, aname, sizeof(aname));
241 format(string, sizeof(string), "{4169E1}Olá {FFFFFF}%s {4169E1}seja bem vindo(a)%sPatente: {FFFFFF}%s", aname, GetPlayerScore(playerid) == 0 ? (" ") : (" novamente "), RankClassNames[GetPlayerPatente(playerid)]);
242 SendClientMessage(playerid, -1, string);
243 SetPlayerColor(playerid, RankClassColors[GetPlayerPatente(playerid)]);
244 return 1;
245}
246
247public OnPlayerDeath(playerid, killerid, reason)
248{
249 PlayerBradoks[playerid][pMorreu]++;
250 PlayerBradoks[killerid][pMatou]++;
251 return 1;
252}
253
254public OnVehicleSpawn(vehicleid)
255{
256 return 1;
257}
258
259public OnVehicleDeath(vehicleid, killerid)
260{
261 return 1;
262}
263
264public OnPlayerText(playerid, text[])
265{
266 return 1;
267}
268
269public OnPlayerCommandText(playerid, cmdtext[])
270{
271 if (strcmp("/mycommand", cmdtext, true, 10) == 0)
272 {
273 // Do something here
274 return 1;
275 }
276 return 0;
277}
278
279public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
280{
281 return 1;
282}
283
284public OnPlayerExitVehicle(playerid, vehicleid)
285{
286 return 1;
287}
288
289public OnPlayerStateChange(playerid, newstate, oldstate)
290{
291
292 return 1;
293}
294
295public OnPlayerEnterCheckpoint(playerid)
296{
297 if(CPS_IsPlayerInCheckpoint(playerid, CheckBradoks[pCheckDetranMenu])) {/*-- Checkpoint Detran Menu --*/
298 ShowPlayerDialog(playerid, DIALOG_MENU_DETRAN, DIALOG_STYLE_LIST, "DETRAN - SF", "Consultar Multas\nPagar Multas", "Selecionar", "Fechar");
299 }
300 return 1;
301}
302
303public OnPlayerLeaveCheckpoint(playerid)
304{
305 return 1;
306}
307
308public OnPlayerEnterRaceCheckpoint(playerid)
309{
310 return 1;
311}
312
313public OnPlayerLeaveRaceCheckpoint(playerid)
314{
315 return 1;
316}
317
318public OnRconCommand(cmd[])
319{
320 return 1;
321}
322
323public OnPlayerRequestSpawn(playerid)
324{
325 return 1;
326}
327
328public OnObjectMoved(objectid)
329{
330 return 1;
331}
332
333public OnPlayerObjectMoved(playerid, objectid)
334{
335 return 1;
336}
337
338public OnPlayerPickUpPickup(playerid, pickupid)
339{
340 if(pickupid == PickupBradoks[pEntradaDetranSF]) {
341 SendClientMessage(playerid, -1, "[ DETRAN SF ] {2F4F4F}Aperte {FFFFFF}'{2F4F4F}F{FFFFFF}' {2F4F4F}para entrar ou use: {FFFFFF}/entrar");
342 }
343 else if(pickupid == PickupBradoks[pSaidaDetranSF]) {
344 SendClientMessage(playerid, -1, "[ DETRAN SF ] {2F4F4F}Aperte {FFFFFF}'{2F4F4F}F{FFFFFF}' {2F4F4F}para sair ou use: {FFFFFF}/sair");
345 }
346 return 1;
347}
348
349public OnVehicleMod(playerid, vehicleid, componentid)
350{
351 return 1;
352}
353
354public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
355{
356 return 1;
357}
358
359public OnVehicleRespray(playerid, vehicleid, color1, color2)
360{
361 return 1;
362}
363
364public OnPlayerSelectedMenuRow(playerid, row)
365{
366 return 1;
367}
368
369public OnPlayerExitedMenu(playerid)
370{
371 return 1;
372}
373
374public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
375{
376 return 1;
377}
378
379public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
380{
381 if((newkeys == 2) && IsPlayerInAnyVehicle(playerid)) { /*-- Portão Esquerdo Abrindo --*/
382 if(IsPlayerInRangeOfPoint(playerid, 6.0, 2001.5627,-1434.9376,14.0625) || IsPlayerInRangeOfPoint(playerid, 6.0, 1992.9233,-1442.9767,13.1851)) {
383 if(PortaoHSLSEAberto == false) {
384 MoveObject(PortaoHSLS[0], 1997.2000000,-1434.1000000,14.3000000, 5.0, 0.0000000,0.0000000,270.0000000);
385 PortaoHSLSEAberto = true;
386 } else { /*-- Portão Esquerdo Fechando --*/
387 MoveObject(PortaoHSLS[0], 1999.9000000,-1442.5000000,14.3000000, 5.0, 0.0000000,0.0000000,316.0000000);
388 PortaoHSLSEAberto = false;
389 }
390 } /*-- Portão Direito Abrindo --*/
391 else if(IsPlayerInRangeOfPoint(playerid, 6.0, 2010.7794,-1446.5564,13.6373) || IsPlayerInRangeOfPoint(playerid, 6.0, 2001.3469,-1453.4921,13.2596)) {
392 if(PortaoHSLSDAberto == false) {
393 MoveObject(PortaoHSLS[1], 2012.8000000,-1450.8000000,14.3000000, 5.0, 0.0000000,0.0000000,359.9940000);
394 PortaoHSLSDAberto = true;
395 } else { /*-- Portão Direito Fechando --*/
396 MoveObject(PortaoHSLS[1], 2005.6000000,-1448.0000000,14.3000000, 5.0, 0.0000000,0.0000000,315.9950000);
397 PortaoHSLSDAberto = false;
398 }
399 }
400 }
401 if(newkeys == KEY_SECONDARY_ATTACK) {
402 if(IsPlayerInRangeOfPoint(playerid, 3.0, 2364.3064,2377.5967,10.8203)) { /*-- Entrada Detran SF --*/
403 SetPlayerInterior(playerid, 3);
404 SetPlayerFacingAngle(playerid, 89.4206);
405 SetPlayerPos(playerid, 387.3808,173.8342,1008.3828);
406 }
407 else if(IsPlayerInRangeOfPoint(playerid, 3.0, 390.2981,173.7916,1008.3828)) { /*-- Saida Detran SF --*/
408 SetPlayerInterior(playerid, 0);
409 SetPlayerFacingAngle(playerid, 90.4796);
410 SetPlayerPos(playerid, 2361.9072,2377.7593,10.8203);
411 }
412 }
413 return 1;
414}
415
416public OnRconLoginAttempt(ip[], password[], success)
417{
418 return 1;
419}
420
421public OnPlayerUpdate(playerid)
422{
423 return 1;
424}
425
426public OnPlayerStreamIn(playerid, forplayerid)
427{
428 return 1;
429}
430
431public OnPlayerStreamOut(playerid, forplayerid)
432{
433 return 1;
434}
435
436public OnVehicleStreamIn(vehicleid, forplayerid)
437{
438 return 1;
439}
440
441public OnVehicleStreamOut(vehicleid, forplayerid)
442{
443 return 1;
444}
445
446public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
447{
448 switch(dialogid) {
449 case DIALOG_REGISTRO: {
450 if(!response) return Kick(playerid);
451 if(strlen(inputtext) < 4 || strlen(inputtext) > 20) {
452 SendClientMessage(playerid, -1, "[ ERRO ]{FF0000} A senha deve conter de 4 a 20 caracteres!");
453 new Dialog[240];
454 format(Dialog, sizeof(Dialog),"{F8F8FF}Bem vindo(a) ao servidor {058AFF}%s{F8F8FF}\n\nVocê não tem uma conta registrada\n\nDigite uma senha para registrar\n\nStatus: {058AFF}N/A Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerBradoks[playerid][pNome], PlayerBradoks[playerid][pIP]);
455 ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{FFFFFF}Leonardo Bradoks - Registro", Dialog, "Registrar", "Cancelar");
456 } else {
457 new Query[100];
458 mysql_format(IDConexao, Query, sizeof(Query), "INSERT INTO `Contas`(`Nome`, `Senha`) VALUES ('%s', '%s')", PlayerBradoks[playerid][pNome], inputtext);
459 mysql_tquery(IDConexao, Query, "DadosRegistrados", "i", playerid);
460 RegistrarDados(playerid);
461 }
462 }
463 case DIALOG_LOGIN: {
464 if(!response) return Kick(playerid);
465 new string[240];
466 if(!strlen(inputtext)) {
467 SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}É necessário digitar uma senha para se logar !");
468 format(string, sizeof(string),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocê ja tem uma Conta registrada\n\nDigite sua senha para Logar\n\nStatus: {1E90FF}Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerBradoks[playerid][pNome], PlayerBradoks[playerid][pIP]);
469 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Leonardo Bradoks - Login", string, "Logar", "Cancelar");
470 return 1;
471 }
472 if(!strcmp(PlayerBradoks[playerid][pSenha], inputtext, true, 20)) {
473 new Query[70];
474 mysql_format(IDConexao, Query, sizeof(Query), "SELECT * FROM `Contas` WHERE Nome='%s'", PlayerBradoks[playerid][pNome]);
475 mysql_tquery(IDConexao, Query, "CarregarContas", "d", playerid);
476 } else {
477 SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}A senha digitada está incorreta !");
478 format(string, sizeof(string),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocê ja tem uma Conta registrada\n\nDigite sua senha para Logar\n\nStatus: {1E90FF}Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerBradoks[playerid][pNome], PlayerBradoks[playerid][pIP]);
479 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Leonardo Bradoks - Login", string, "Logar", "Cancelar");
480 }
481 }
482 case DIALOG_MENU_KIT: {
483 if(response) {
484 switch(PlayerBradoks[playerid][pGang]) {
485 case GANG_YAKUZA: {
486 switch(listitem) {
487 case 0: {
488 if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não possui dinheiro suficiente !");
489 GivePlayerWeapon(playerid, 22, 10);
490 GivePlayerMoney(playerid, -1000);
491 SendClientMessage(playerid, -1, "[•»] {00FF7F}Arma adquirida com sucesso !");
492 return 1;
493 }
494 case 1: {
495 if(GetPlayerMoney(playerid) < 1500) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não possui dinheiro suficiente !");
496 GivePlayerWeapon(playerid, 25, 15);
497 GivePlayerMoney(playerid, -1500);
498 SendClientMessage(playerid, -1, "[•»] {00FF7F}Arma adquirida com sucesso !");
499 return 1;
500 }
501 case 2: {
502 if(GetPlayerMoney(playerid) < 2000) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não possui dinheiro suficiente !");
503 GivePlayerWeapon(playerid, 28, 20);
504 GivePlayerMoney(playerid, -2000);
505 SendClientMessage(playerid, -1, "[•»] {00FF7F}Arma adquirida com sucesso !");
506 return 1;
507 }
508 }
509 }
510 case GANG_GROOVE_STREET: {
511 switch(listitem) {
512 case 0: {
513 if(GetPlayerMoney(playerid) < 1500) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não possui dinheiro suficiente !");
514 GivePlayerWeapon(playerid, 23, 15);
515 GivePlayerMoney(playerid, -1500);
516 SendClientMessage(playerid, -1, "[•»] {00FF7F}Arma adquirida com sucesso !");
517 return 1;
518 }
519 case 1: {
520 if(GetPlayerMoney(playerid) < 2000) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não possui dinheiro suficiente !");
521 GivePlayerWeapon(playerid, 26, 20);
522 GivePlayerMoney(playerid, -2000);
523 SendClientMessage(playerid, -1, "[•»] {00FF7F}Arma adquirida com sucesso !");
524 return 1;
525 }
526 case 2: {
527 if(GetPlayerMoney(playerid) < 2500) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não possui dinheiro suficiente !");
528 GivePlayerWeapon(playerid, 29, 25);
529 GivePlayerMoney(playerid, -2500);
530 SendClientMessage(playerid, -1, "[•»] {00FF7F}Arma adquirida com sucesso !");
531 return 1;
532 }
533 }
534 }
535 case GANG_BALLAS: {
536 switch(listitem) {
537 case 0: {
538 if(GetPlayerMoney(playerid) < 2000) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não possui dinheiro suficiente !");
539 GivePlayerWeapon(playerid, 24, 20);
540 GivePlayerMoney(playerid, -2000);
541 SendClientMessage(playerid, -1, "[•»] {00FF7F}Arma adquirida com sucesso !");
542 return 1;
543 }
544 case 1: {
545 if(GetPlayerMoney(playerid) < 2500) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não possui dinheiro suficiente !");
546 GivePlayerWeapon(playerid, 27, 25);
547 GivePlayerMoney(playerid, -2500);
548 SendClientMessage(playerid, -1, "[•»] {00FF7F}Arma adquirida com sucesso !");
549 return 1;
550 }
551 case 2: {
552 if(GetPlayerMoney(playerid) < 3000) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não possui dinheiro suficiente !");
553 GivePlayerWeapon(playerid, 32, 30);
554 GivePlayerMoney(playerid, -3000);
555 SendClientMessage(playerid, -1, "[•»] {00FF7F}Arma adquirida com sucesso !");
556 return 1;
557 }
558 }
559 }
560 }
561 }
562 }
563 case DIALOG_MENU_DETRAN: {
564 if(response) {
565 switch(listitem) {
566 case 0: { /*-- Consultar Multas --*/
567 ShowPlayerDialog(playerid, DIALOG_MENU_DETRAN_CONSULTAR, DIALOG_STYLE_INPUT, "{FFFFFF}DETRAN - SF Consultas de Multas", "{FFFFFF}Informe a placa do VeÃculo", "Consultar", "Voltar");
568 }
569 case 1: { /*-- Pagar Multas --*/
570 ShowPlayerDialog(playerid, DIALOG_MENU_DETRAN_PAGARMULTAS, DIALOG_STYLE_INPUT, "{FFFFFF}DETRAN - SF Pagamento de Multas", "{FFFFFF}Informe a placa do VeÃculo", "Consultar", "Voltar");
571 }
572 }
573 }
574 }
575 case DIALOG_MENU_DETRAN_CONSULTAR: {
576 if(response) { /*-- Clicou em Consultar --*/
577 Contagem[playerid] = false;
578 for(new i = 1; i < BRADOKS_VEHICLES; i++) {
579 if(strfind(GetVehicleNumberPlateEx(VeiculoBradoks[i][vVeiculoIDX]), inputtext, true) != -1) {
580 new string[400];
581 Contagem[playerid] = true;
582 format(string, sizeof(string), "{FF0000}•{FFFFFF}»{FFD700}---------------------------------------------{FF0000}•{FFFFFF}«\n\n{FF0000}•{FFFFFF}»{FFD700} Veiculo{FFFFFF} %s\n{FF0000}•{FFFFFF}»{FFD700} Placa{FFFFFF} %s\n{FF0000}•{FFFFFF}»{FFD700} Total de Multas:{FFFFFF} %d\n{FF0000}•{FFFFFF}»{FFD700} Valor das Multas:{FFFFFF} %d\n\n{FF0000}•{FFFFFF}»{FFD700}---------------------------------------------{FF0000}•{FFFFFF}«",
583 GetVehicleName(VeiculoBradoks[i][vVeiculoIDX]), GetVehicleNumberPlateEx(VeiculoBradoks[i][vVeiculoIDX]), VeiculoBradoks[i][vTotalMultas], VeiculoBradoks[i][vValorMulta]);
584 ShowPlayerDialog(playerid, DIALOG_MULTAS, DIALOG_STYLE_MSGBOX, "{FFFFFF}DETRAN - SF Consultas de Multas", string, "Voltar", "Fechar");
585 }
586 }
587 if(Contagem[playerid] == false) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Nenhum veÃculo encontrado com a placa informada !");
588 } else { /*-- Clicou em Voltar --*/
589 ShowPlayerDialog(playerid, DIALOG_MENU_DETRAN, DIALOG_STYLE_LIST, "DETRAN - SF", "Consultar Multas\nPagar Multas", "Selecionar", "Fechar");
590 }
591 }
592 case DIALOG_MULTAS: {
593 if(response) {
594 ShowPlayerDialog(playerid, DIALOG_MENU_DETRAN, DIALOG_STYLE_LIST, "DETRAN - SF", "Consultar Multas\nPagar Multas", "Selecionar", "Fechar");
595 }
596 }
597 case DIALOG_MENU_DETRAN_PAGARMULTAS: {
598 if(response) { /*-- Clicou em Consultar --*/
599 Contagem[playerid] = false;
600 for(new i = 1; i < BRADOKS_VEHICLES; i++) {
601 if(strfind(GetVehicleNumberPlateEx(VeiculoBradoks[i][vVeiculoIDX]), inputtext, true) != -1) {
602 new string[400];
603 PlayerBradoks[playerid][pIDdoVeiculo] = i;
604 PlayerBradoks[playerid][pValorDaMulta] = VeiculoBradoks[i][vValorMulta];
605 Contagem[playerid] = true;
606 format(string, sizeof(string), "{FF0000}•{FFFFFF}»{FFD700}---------------------------------------------{FF0000}•{FFFFFF}«\n\n{FF0000}•{FFFFFF}»{FFD700} Veiculo{FFFFFF} %s\n{FF0000}•{FFFFFF}»{FFD700} Placa{FFFFFF} %s\n{FF0000}•{FFFFFF}»{FFD700} Total de Multas:{FFFFFF} %d\n{FF0000}•{FFFFFF}»{FFD700} Valor das Multas:{FFFFFF} %d\n\n{FF0000}•{FFFFFF}»{FFD700}---------------------------------------------{FF0000}•{FFFFFF}«",
607 GetVehicleName(VeiculoBradoks[i][vVeiculoIDX]), GetVehicleNumberPlateEx(VeiculoBradoks[i][vVeiculoIDX]), VeiculoBradoks[i][vTotalMultas], VeiculoBradoks[i][vValorMulta]);
608 ShowPlayerDialog(playerid, DIALOG_PAGAR_MULTAS, DIALOG_STYLE_MSGBOX, "{FFFFFF}DETRAN - SF Consultas de Multas", string, "Pagar", "Voltar");
609 }
610 }
611 if(Contagem[playerid] == false) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Nenhum veÃculo encontrado com a placa informada !");
612 } else {
613 ShowPlayerDialog(playerid, DIALOG_MENU_DETRAN, DIALOG_STYLE_LIST, "DETRAN - SF", "Consultar Multas\nPagar Multas", "Selecionar", "Fechar");
614 }
615 }
616 case DIALOG_PAGAR_MULTAS: {
617 if(response) {
618 if(GetPlayerMoney(playerid) < PlayerBradoks[playerid][pValorDaMulta]) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não possui dinheiro suficiente !");
619 GivePlayerMoney(playerid, -PlayerBradoks[playerid][pValorDaMulta]);
620 VeiculoBradoks[PlayerBradoks[playerid][pIDdoVeiculo]][vValorMulta] = 0;
621 VeiculoBradoks[PlayerBradoks[playerid][pIDdoVeiculo]][vTotalMultas] = 0;
622 SendClientMessage(playerid, -1, "[>] {006400}Todas as multas do veÃculo foram pagas !");
623 return 1;
624 } else {
625 ShowPlayerDialog(playerid, DIALOG_MENU_DETRAN, DIALOG_STYLE_LIST, "DETRAN - SF", "Consultar Multas\nPagar Multas", "Selecionar", "Fechar");
626 }
627 }
628 }
629 return 1;
630}
631
632public OnPlayerClickPlayer(playerid, clickedplayerid, source)
633{
634 return 1;
635}
636
637public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
638{
639 new string[128], aname[MAX_PLAYER_NAME];
640 GetPlayerName(playerid, aname, sizeof(aname));
641 format(string, sizeof(string), "O(A) player %s foi para a posição %f %f %f", aname, fX, fY, fZ);
642 SendClientMessageToAll(-1, string);
643 SetPlayerPosFindZ(playerid, fX, fY, fZ);
644 return 1;
645}
646
647
648/*-- Comandos --*/
649
650CMD:setlevel(playerid, params[]) {
651 new idplayer, level, string[128];
652 if(sscanf(params, "dd", idplayer, level)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}use: /setlevel [playerid] [level]");
653 if(!IsPlayerConnected(idplayer)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Este player não está conectado !");
654 SetPlayerScore(idplayer, level);
655 format(string, sizeof(string), "[ > ] Seu level foi setado para %d", level);
656 SendClientMessage(idplayer, -1, string);
657 return 1;
658}
659
660CMD:patente(playerid) {
661 new string[128], aname[MAX_PLAYER_NAME];
662 GetPlayerName(playerid, aname, sizeof(aname));
663 format(string, sizeof(string), "{4169E1}Olá {FFFFFF}%s {4169E1}seja bem vindo(a)%sPatente: {FFFFFF}%s", aname, GetPlayerScore(playerid) == 0 ? (" ") : (" novamente "), RankClassNames[GetPlayerPatente(playerid)]);
664 SendClientMessage(playerid, -1, string);
665 SetPlayerColor(playerid, RankClassColors[GetPlayerPatente(playerid)]);
666 return 1;
667}
668
669CMD:setgang(playerid, params[]) {
670 new id, gang, aname[MAX_PLAYER_NAME], pname[MAX_PLAYER_NAME], string[128];
671 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não tem acesso a este comando !");
672 if(sscanf(params, "dd", id, gang)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Use: /setgang [playerid] [(1: Yakuza) - (2: Groove Street) - (3: Ballas)]");
673 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Este player não está conectado !");
674 if(PlayerBradoks[id][pGang] == gang) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Este player já faz parte desta gang !");
675 GetPlayerName(playerid, aname, sizeof(aname));
676 GetPlayerName(playerid, pname, sizeof(pname));
677
678 format(string, sizeof(string), "[•»] O(A) Administrador(a) %s setou o(a) player %s como membro(a) da gang %s", aname, pname, gang == 1 ? ("Yakuza") : gang == 2 ? ("Groove Street") : gang == 3 ? ("Ballas") : ("Nenhuma"));
679 SendClientMessageToAll(-1, string);
680
681 format(string, sizeof(string), "[•»] O(A) Administrador(a) %s te setou como membro(a) da gang %s", aname, gang == 1 ? ("Yakuza") : gang == 2 ? ("Groove Street") : gang == 3 ? ("Ballas") : ("Nenhuma"));
682 SendClientMessage(playerid, -1, string);
683 PlayerBradoks[id][pGang] = gang;
684 return 1;
685}
686
687CMD:kit(playerid) {
688 switch(PlayerBradoks[playerid][pGang]) {
689 case GANG_YAKUZA: {
690 ShowPlayerDialog(playerid, DIALOG_MENU_KIT, DIALOG_STYLE_TABLIST_HEADERS, "{ffffff}Menu KIT de Armas {FFD700}Yakuza", "{FF0000}Arma\t{ffffff}Munição\t{00FF7F}Valor\n\
691 {ffffff}Pistola 9MM\t{ffffff}10\t{00FF7F}R$ {ffffff}1000\n\
692 {ffffff}Espingarda\t{ffffff}15\t{00FF7F}R$ {ffffff}1500\n\
693 {ffffff}Micro SMG\t{ffffff}20\t{00FF7F}R$ {ffffff}2000",
694 "Comprar", "Cancelar");
695 }
696 case GANG_GROOVE_STREET: {
697 ShowPlayerDialog(playerid, DIALOG_MENU_KIT, DIALOG_STYLE_TABLIST_HEADERS, "{ffffff}Menu KIT de Armas {00FF7F}Groove Street", "{FF0000}Arma\t{ffffff}Munição\t{00FF7F}Valor\n\
698 {ffffff}Pistola 9MM C/ Silenciador\t{ffffff}15\t{00FF7F}R$ {ffffff}1500\n\
699 {ffffff}Shotgun Sawnoff\t{ffffff}20\t{00FF7F}R$ {ffffff}2000\n\
700 {ffffff}MP5\t{ffffff}25\t{00FF7F}R$ {ffffff}2500",
701 "Comprar", "Cancelar");
702 }
703 case GANG_BALLAS: {
704 ShowPlayerDialog(playerid, DIALOG_MENU_KIT, DIALOG_STYLE_TABLIST_HEADERS, "{ffffff}Menu KIT de Armas {8A2BE2}Ballas", "{FF0000}Arma\t{ffffff}Munição\t{00FF7F}Valor\n\
705 {ffffff}Desert Eagle\t{ffffff}20\t{00FF7F}R$ {ffffff}2000\n\
706 {ffffff}Combat Shotgun\t{ffffff}25\t{00FF7F}R$ {ffffff}2500\n\
707 {ffffff}Tec-9\t{ffffff}30\t{00FF7F}R$ {ffffff}3000",
708 "Comprar", "Cancelar");
709 }
710 default: SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não tem acesso a este comando !");
711 }
712 return 1;
713}
714
715CMD:dargrana(playerid, params[]) {
716 new id, grana;
717 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não tem acesso a este comando !");
718 if(sscanf(params, "dd", id, grana)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Use: /dargrana [playerid] [valor]");
719 GivePlayerMoney(id, grana);
720 SendClientMessage(playerid, -1, "[•»] {00FF7F}Dinheiro enviado com sucesso !");
721 return 1;
722}
723
724CMD:criarveiculo(playerid, params[]) {
725 new idveiculo, cor[2], placa[9], Float:Pos[4], string[140];
726 if(sscanf(params, "ddds[9]", idveiculo, cor[0], cor[1], placa)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Use: /criarveiculo [id do veiculo] [cor 1] [cor 2] [placa]");
727 GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
728 GetPlayerFacingAngle(playerid, Pos[3]);
729 VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX] = AddStaticVehicle(idveiculo, Pos[0], Pos[1], Pos[2], Pos[3], cor[0], cor[1]);
730 SetVehicleNumberPlateEx(VeiculoBradoks[BRADOKS_VEHICLES][vVeiculoIDX], placa); BRADOKS_VEHICLES++;
731 format(string, sizeof(string), "[x] Veiculo (ID Geral: %d) - (ID Interno: %d) - (Placa: %s) criado com sucesso !", idveiculo, VeiculoBradoks[idveiculo][vVeiculoIDX], placa);
732 SendClientMessage(playerid, -1, string);
733 return 1;
734}
735
736CMD:pegarplaca(playerid) {
737 new string[148];
738 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não está dentro de um veiculo !");
739 format(string, sizeof(string), "{00FF7F}[x] Veiculo ( ID Geral:{FFFFFF} %d {00FF7F}) - ( ID Interno:{FFFFFF} %d {00FF7F}) - ( Placa:{FFFFFF} %s {00FF7F})", GetVehicleModel(GetPlayerVehicleID(playerid)), GetPlayerVehicleID(playerid), GetVehicleNumberPlateEx(GetPlayerVehicleID(playerid)));
740 SendClientMessage(playerid, -1, string);
741 return 1;
742}
743
744CMD:multas(playerid) {
745 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Você não está dentro de um veiculo !");
746 new string[400];
747 format(string, sizeof(string), "{FF0000}•{FFFFFF}»{FFD700}---------------------------------------------{FF0000}•{FFFFFF}«\n\n{FF0000}•{FFFFFF}»{FFD700} Veiculo{FFFFFF} %s\n{FF0000}•{FFFFFF}»{FFD700} Placa{FFFFFF} %s\n{FF0000}•{FFFFFF}»{FFD700} Total de Multas:{FFFFFF} %d\n{FF0000}•{FFFFFF}»{FFD700} Valor das Multas:{FFFFFF} %d\n\n{FF0000}•{FFFFFF}»{FFD700}---------------------------------------------{FF0000}•{FFFFFF}«",
748 GetVehicleName(VeiculoBradoks[GetPlayerVehicleID(playerid)][vVeiculoIDX]), GetVehicleNumberPlateEx(GetPlayerVehicleID(playerid)), VeiculoBradoks[GetPlayerVehicleID(playerid)][vTotalMultas], VeiculoBradoks[GetPlayerVehicleID(playerid)][vValorMulta]);
749 ShowPlayerDialog(playerid, DIALOG_MULTAS, DIALOG_STYLE_MSGBOX, "{FFFFFF}Menu de Multas", string, "", "Fechar");
750 return 1;
751}
752
753CMD:entrar(playerid) {
754 if(IsPlayerInRangeOfPoint(playerid, 3.0, 2364.3064,2377.5967,10.8203)) { /*-- Entrada Detran SF --*/
755 SetPlayerInterior(playerid, 3);
756 SetPlayerFacingAngle(playerid, 89.4206);
757 SetPlayerPos(playerid, 387.3808,173.8342,1008.3828);
758 }
759 return 1;
760}
761
762CMD:sair(playerid) {
763 if(IsPlayerInRangeOfPoint(playerid, 3.0, 390.2981,173.7916,1008.3828)) { /*-- Saida Detran SF --*/
764 SetPlayerInterior(playerid, 0);
765 SetPlayerFacingAngle(playerid, 90.4796);
766 SetPlayerPos(playerid, 2361.9072,2377.7593,10.8203);
767 }
768 return 1;
769}
770
771stock SetVehicleNumberPlateEx(carid, plate[]) {
772 format(VeiculoBradoks[carid][vPlaca], 9, "%s", plate);
773 SetVehicleNumberPlate(carid, VeiculoBradoks[carid][vPlaca]);
774 SetVehicleToRespawn(carid);
775 return 1;
776}
777
778stock GetVehicleNumberPlateEx(carid) {
779 new plate[9];
780 for(new i = 0; i < 9; i++) {
781 strcat(plate, VeiculoBradoks[carid][vPlaca][i]);
782 }
783 return plate;
784}
785
786public UpdateRadar() {
787 for(new i = 0, j = GetPlayerPoolSize(); i <= j; ++i) {
788 if(IsPlayerInAnyVehicle(i) && PlayerBradoks[i][pMulta] == false) {
789 if(IsPlayerInRangeOfPoint(i, 11.0, 2046.2222,1339.4756,10.6719) || IsPlayerInRangeOfPoint(i, 11.0, 2068.6826,1417.1683,10.6719)) {
790 if(GetVehicleSpeed(VeiculoBradoks[GetPlayerVehicleID(i)][vVeiculoIDX]) >= 61) {
791 new string[128], Taxa = 20, Tempo = 20;
792 SendClientMessage(i, -1, "{FF0000}•{FFFFFF}»{FFD700}------------------------- {FF0000}RADAR {FFD700}-------------------------{FF0000}•{FFFFFF}«");
793 format(string, sizeof(string), "{FF0000}•{FFFFFF}»{FFD700} VeÃculo %s", GetVehicleName(VeiculoBradoks[GetPlayerVehicleID(i)][vVeiculoIDX]));
794 SendClientMessage(i, -1, string);
795 format(string, sizeof(string), "{FF0000}•{FFFFFF}»{FFD700} Placa %s", GetVehicleNumberPlateEx(VeiculoBradoks[GetPlayerVehicleID(i)][vVeiculoIDX]));
796 SendClientMessage(i, -1, string);
797 SendClientMessage(i, -1, "{FF0000}•{FFFFFF}»{FFD700} Velocidade Permitida 60 KM/H");
798 format(string, sizeof(string), "{FF0000}•{FFFFFF}»{FFD700} Velocidade Registrada %d KM/H", GetVehicleSpeed(VeiculoBradoks[GetPlayerVehicleID(i)][vVeiculoIDX]));
799 SendClientMessage(i, -1, string);
800 format(string, sizeof(string), "{FF0000}•{FFFFFF}»{FFD700} Valor da Multa %d", ((GetVehicleSpeed(VeiculoBradoks[GetPlayerVehicleID(i)][vVeiculoIDX]) * Taxa * Tempo) /100));
801 SendClientMessage(i, -1, string);
802 SendClientMessage(i, -1, "{FF0000}•{FFFFFF}»{FFD700}------------------------- {FF0000}RADAR {FFD700}-------------------------{FF0000}•{FFFFFF}«");
803 VeiculoBradoks[GetPlayerVehicleID(i)][vValorMulta] += ((GetVehicleSpeed(VeiculoBradoks[GetPlayerVehicleID(i)][vVeiculoIDX]) * Taxa * Tempo) /100);
804 VeiculoBradoks[GetPlayerVehicleID(i)][vTotalMultas]++;
805 PlayerBradoks[i][pMulta] = true;
806 PlayerBradoks[i][pTimerMulta] = SetTimerEx("LiberarPlayerMulta", 2000, false, "i", i);
807 return 1;
808 } else {
809 new string[128];
810 format(string, sizeof(string), "{FF0000}•{FFFFFF}»{FFD700} Velocidade Registrada: %d KM/H", GetVehicleSpeed(VeiculoBradoks[GetPlayerVehicleID(i)][vVeiculoIDX]));
811 SendClientMessage(i, -1, string);
812 PlayerBradoks[i][pMulta] = true;
813 PlayerBradoks[i][pTimerMulta] = SetTimerEx("LiberarPlayerMulta", 2000, false, "i", i);
814 return 1;
815 }
816 }
817 }
818 }
819 return 1;
820}
821
822GetVehicleSpeed(vehicleid) {
823 new Float:Vx, Float:Vy, Float:Vz;
824 GetVehicleVelocity(vehicleid, Vx, Vy, Vz);
825 new Float:rtn;
826 rtn = floatsqroot(floatpower(Vx*100,2) + floatpower(Vy*100,2));
827 rtn = floatsqroot(floatpower(rtn,2) + floatpower(Vz*100,2));
828 return floatround(rtn);
829}
830
831stock GetVehicleName(vehicleid)
832{
833 new string[50];
834 format(string,sizeof(string),"%s", VehicleNames[GetVehicleModel(vehicleid) - 400]);
835 return string;
836}
837
838public LiberarPlayerMulta(playerid) {
839 if(PlayerBradoks[playerid][pMulta] == true) {
840 KillTimer(PlayerBradoks[playerid][pTimerMulta]);
841 PlayerBradoks[playerid][pMulta] = false;
842 return 1;
843 }
844 return 1;
845}
846
847public VerificarContas(playerid) {
848 new Dialog[240];
849 if(cache_num_rows() > 0) {
850 cache_get_value(0, "Senha", PlayerBradoks[playerid][pSenha], 20);
851 format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocê ja tem uma Conta registrada\n\nDigite sua senha para Logar\n\nStatus: {1E90FF}Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerBradoks[playerid][pNome], PlayerBradoks[playerid][pIP]);
852 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Leonardo Bradoks - Login", Dialog, "Logar", "Cancelar");
853 } else {
854 format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocê não tem uma Conta registrada\n\nDigite uma senha para Registrar\n\nStatus: {058AFF}N/A Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerBradoks[playerid][pNome], PlayerBradoks[playerid][pIP]);
855 ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{FFFFFF}Leonardo Bradoks - Registro", Dialog, "Registrar", "Cancelar");
856 }
857 return 1;
858}
859
860public DadosRegistrados(playerid) {
861 PlayerBradoks[playerid][pID] = cache_insert_id();
862 printf("-> Nova conta registrada ID: %d", PlayerBradoks[playerid][pID]);
863 return 1;
864}
865
866public CarregarContas(playerid) {
867 cache_get_value_int(0, "ID", PlayerBradoks[playerid][pID]);
868 cache_get_value_int(0, "Admin", PlayerBradoks[playerid][pAdmin]);
869 cache_get_value_int(0, "Level", PlayerBradoks[playerid][pLevel]);
870 cache_get_value_int(0, "Matou", PlayerBradoks[playerid][pMatou]);
871 cache_get_value_int(0, "Morreu", PlayerBradoks[playerid][pMorreu]);
872 cache_get_value_int(0, "Skin", PlayerBradoks[playerid][pSkin]);
873 cache_get_value_int(0, "Dinheiro", PlayerBradoks[playerid][pDinheiro]);
874 CarregarDados(playerid);
875 return 1;
876}
877
878stock RegistrarDados(playerid) {
879 PlayerBradoks[playerid][pDinheiro] = 5000;
880 PlayerBradoks[playerid][pAdmin] = 0;
881 PlayerBradoks[playerid][pLevel] = 1;
882 PlayerBradoks[playerid][pSkin] = 0;
883 PlayerBradoks[playerid][pMorreu] = 0;
884 PlayerBradoks[playerid][pMatou] = 0;
885 CarregarDados(playerid);
886 return 1;
887}
888
889stock CarregarDados(playerid) {
890 PlayerBradoks[playerid][pLogado] = true;
891 SetPlayerScore(playerid, PlayerBradoks[playerid][pLevel]);
892 GivePlayerMoney(playerid, PlayerBradoks[playerid][pDinheiro]);
893 SetPlayerSkin(playerid, PlayerBradoks[playerid][pSkin]);
894 SpawnPlayer(playerid);
895 return 1;
896}
897
898stock SalvarDados(playerid) {
899 PlayerBradoks[playerid][pDinheiro] = GetPlayerMoney(playerid);
900 new Query[350];
901 mysql_format(IDConexao, Query, sizeof(Query), "UPDATE `Contas` SET `Nome`='%s', `Level`=%d, `Admin`=%d, `Skin`=%d, `Matou`=%d, `Morreu`=%d, `Dinheiro`=%d WHERE `ID`=%d",
902 PlayerBradoks[playerid][pNome],
903 PlayerBradoks[playerid][pLevel],
904 PlayerBradoks[playerid][pAdmin],
905 PlayerBradoks[playerid][pSkin],
906 PlayerBradoks[playerid][pMatou],
907 PlayerBradoks[playerid][pMorreu],
908 PlayerBradoks[playerid][pDinheiro],
909 PlayerBradoks[playerid][pID]);
910 mysql_tquery(IDConexao, Query, "DadosSalvos","d", playerid);
911
912
913 PlayerBradoks[playerid][pLevel] = 0;
914 PlayerBradoks[playerid][pAdmin] = 0;
915 PlayerBradoks[playerid][pMatou] = 0;
916 PlayerBradoks[playerid][pMorreu] = 0;
917 PlayerBradoks[playerid][pDinheiro] = 0;
918 PlayerBradoks[playerid][pLogado] = false;
919 return 1;
920}
921
922public DadosSalvos(playerid) return printf("-> Conta salva ID: %d", PlayerBradoks[playerid][pID]);
923
924
925stock GetPlayerPatente(playerid) {
926 new idpatente;
927 switch(GetPlayerScore(playerid)) {
928 case 0 .. 9: { idpatente = 0; }
929 case 10 .. 29: { idpatente = 1; }
930 case 30 .. 39: { idpatente = 2; }
931 case 40 .. 49: { idpatente = 3; }
932 case 50 .. 69: { idpatente = 4; }
933 case 70 .. 89: { idpatente = 5; }
934 case 90 .. 109: { idpatente = 6; }
935 case 110 .. 159: { idpatente = 7; }
936 case 160 .. 184: { idpatente = 8; }
937 case 185 .. 194: { idpatente = 9; }
938 case 195 .. 209: { idpatente = 10; }
939 case 210 .. 239: { idpatente = 11; }
940 case 240 .. 269: { idpatente = 12; }
941 case 270 .. 299: { idpatente = 13; }
942 case 300 .. 329: { idpatente = 14; }
943 case 330 .. 359: { idpatente = 15; }
944 case 360 .. 409: { idpatente = 16; }
945 case 410 .. 459: { idpatente = 17; }
946 case 460 .. 509: { idpatente = 18; }
947 case 510 .. 559: { idpatente = 19; }
948 case 560 .. 619: { idpatente = 20; }
949 case 620 .. 679: { idpatente = 21; }
950 case 680 .. 739: { idpatente = 22; }
951 case 740 .. 799: { idpatente = 23; }
952 case 800 .. 859: { idpatente = 24; }
953 case 860 .. 929: { idpatente = 25; }
954 case 930 .. 999: { idpatente = 26; }
955 case 1000 .. 1069: { idpatente = 27; }
956 case 1070 .. 1139: { idpatente = 28; }
957 case 1140 .. 1209: { idpatente = 29; }
958 case 1210 .. 1509: { idpatente = 30; }
959 case 1510 .. 1809: { idpatente = 31; }
960 case 1810 .. 2109: { idpatente = 32; }
961 case 2110 .. 2409: { idpatente = 33; }
962 case 2410 .. 2709: { idpatente = 34; }
963 case 2710 .. 3109: { idpatente = 35; }
964 case 3110 .. 3509: { idpatente = 36; }
965 case 3510 .. 3909: { idpatente = 37; }
966 case 3910 .. 4309: { idpatente = 38; }
967 case 4310 .. 4709: { idpatente = 39; }
968 case 4710 .. 5209: { idpatente = 40; }
969 case 5210 .. 5709: { idpatente = 41; }
970 case 5710 .. 6209: { idpatente = 42; }
971 case 6210 .. 6709: { idpatente = 43; }
972 case 6710 .. 7209: { idpatente = 44; }
973 case 7210 .. 12999: { idpatente = 45; }
974 case 13000 .. 13999: { idpatente = 46; }
975 case 14000 .. 14999: { idpatente = 47; }
976 case 15000 .. 15999: { idpatente = 48; }
977 case 16000 .. 16999: { idpatente = 49; }
978 case 17000 .. 17999: { idpatente = 50; }
979 case 18000 .. 19999: { idpatente = 51; }
980 default: { idpatente = 51; }
981 }
982 return idpatente;