MrMegaTx

Untitled

Nov 30th, 2011
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 73.66 KB | None | 0 0
  1. /*********** Sistema Registro & Clanes con Tops DINI & [C]Admin ***************/
  2. //==============================================================================
  3. // # Sistema Registro & Clanes con Tops DINI & [C]Admin
  4. // # Autor: Zoutdaxv. .ConecCionMex. .Infierno
  5. // # Versión: 0.4
  6. // # Fecha: 20/Feb/2010
  7. // # Actualizado: 05/Jun/2010
  8. // # Creditos:
  9. // - Infierno Sistema de Clanes en DINI
  10. // - » RyDeR «: idea In Game ColorPicker (Sin copiar & pegar).
  11. // - Zamaroht: TDE & Función RGB.
  12. // - ConecCionMex y CristianDJ[C]Admin Sistema de Admistracion
  13. //==============================================================================
  14. #include <a_samp>
  15. #include <dini>
  16. #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  17. //==============================================================================
  18. #define DLG_TOP_PLAYERS 1500
  19. #define DLG_TOP_CLANES 1501
  20. #define DLG_PLY_INFO 1503
  21. #define DLG_CLAN_INFO 1504
  22. //==============================================================================
  23. /* -= Colores =- */
  24. #define Azul 0x375FFFFF
  25. #define Rojo 0xFF0000FF
  26. #define Verde 0x00FF00FF
  27. #define Amarillo 0xFFFF00AA5
  28. #define Naranja 0xFF8000FF
  29. #define ROJO 0xAA3333AA
  30. #define NARANJA 0xF97804FF
  31. #define BLANCO 0xEFEFF7AA
  32. #define LIGHTBLUE 0x00C2ECFF
  33. #define NICESKY 0x99FFFFAA
  34. //==============================================================================
  35. //TOP PLAYERS & TOP CLANES
  36. enum info
  37. {
  38. NickTOP[32],
  39. AsesinatosTOP,
  40. MuertesTOP,
  41. Float:RatioTOP,
  42. Nivel,
  43. Tsay,
  44. Congelado,
  45. CongelarTiempo,
  46. Carcel,
  47. CarcelTiempo
  48. };
  49. new TopInfo[11][info];
  50. new Conteo;
  51. new Menu:armas;
  52. new SaltosBici[MAX_PLAYERS];
  53. new CarcelTimer[MAX_PLAYERS];
  54. new CongelarTimer[MAX_PLAYERS];
  55. new sendername[MAX_PLAYER_NAME];
  56. new PlayerInfo[MAX_PLAYERS][info];
  57. new Top[11];
  58. new NOMBRE[3000][32];
  59. new Float:VALOR[3000];
  60. new EnTop[3000];
  61. //==============================================================================
  62. //Strings diálogos:
  63. new DLG_TOP_PLY_STR[1024];
  64. new DLG_TOP_CLAN_STR[1024];
  65. new DLG_INFO_PLY_STR[1024];
  66. new DLG_INFO_CLAN_STR[1024];
  67. //==============================================================================
  68. //JUGADORES:
  69. new bool:Registrado[MAX_PLAYERS] = false;
  70. new bool:Ingresado[MAX_PLAYERS] = false;
  71. new Nickname[MAX_PLAYERS][MAX_PLAYER_NAME];
  72. new Asesinatos[MAX_PLAYERS];
  73. new Muertes[MAX_PLAYERS];
  74. new Float:Ratio[MAX_PLAYERS];
  75. //Combinador de colores:
  76. new bool:CColor[MAX_PLAYERS] = false;
  77. new CSelec[MAX_PLAYERS] = 1;
  78. new COLORES[MAX_PLAYERS][4];//0 ROJO, 1 VERDE, 2 AZUL, 3 Transparencia
  79. //==============================================================================
  80. //TextDraws Combinador de colores
  81. new Text:NumColor[MAX_PLAYERS];
  82. new Text:Color[MAX_PLAYERS];
  83. new Text:CComb[MAX_PLAYERS];
  84. new Text:Comb[MAX_PLAYERS];
  85. //==============================================================================
  86. //CLANES:
  87. new Clan_TAG[MAX_PLAYERS][4];
  88. new Clan_ID[MAX_PLAYERS];
  89. new Invitacion[MAX_PLAYERS][32];
  90. new bool:EnClan[MAX_PLAYERS];
  91. //==============================================================================
  92. new PlayerColors[200] = {
  93. 0xFF8C13FF,0xC715FFFF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,0xf0e68cFF,0x778899FF,
  94. 0xFF1493FF,0xF4A460FF,0xEE82EEFF,0xFFD720FF,0x8b4513FF,0x4949A0FF,0x148b8bFF,
  95. 0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,0x10DC29FF,0x534081FF,0x0495CDFF,0xEF6CE8FF,
  96. 0xBD34DAFF,0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,0x65ADEBFF,0x5C1ACCFF,
  97. 0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,0x275222FF,0xF09F5BFF,
  98. 0x3D0A4FFF,0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,0x3793FAFF,0x90239DFF,
  99. 0xE9AB2FFF,0xAF2FF3FF,0x057F94FF,0xB98519FF,0x388EEAFF,0x028151FF,0xA55043FF,
  100. 0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,0x18F71FFF,0x4B8987FF,0x491B9EFF,
  101. 0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,0x3C1C0DFF,0x12D6D4FF,
  102. 0x48C000FF,0x2A51E2FF,0xE3AC12FF,0xFC42A8FF,0x2FC827FF,0x1A30BFFF,0xB740C2FF,
  103. 0x42ACF5FF,0x2FD9DEFF,0xFAFB71FF,0x05D1CDFF,0xC471BDFF,0x94436EFF,0xC1F7ECFF,
  104. 0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,0x3214AAFF,0x184D3BFF,0xAE4B99FF,0x7E49D7FF,
  105. 0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,0x9F945CFF,0xDCDE3DFF,0x10C9C5FF,
  106. 0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,0xE59338FF,0xEEDC2DFF,
  107. 0xD8C762FF,0xD8C762FF,0xFF8C13FF,0xC715FFFF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,
  108. 0xf0e68cFF,0x778899FF,0xFF1493FF,0xF4A460FF,0xEE82EEFF,0xFFD720FF,0x8b4513FF,
  109. 0x4949A0FF,0x148b8bFF,0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,0x10DC29FF,0x534081FF,
  110. 0x0495CDFF,0xEF6CE8FF,0xBD34DAFF,0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,
  111. 0x65ADEBFF,0x5C1ACCFF,0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,
  112. 0x275222FF,0xF09F5BFF,0x3D0A4FFF,0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,
  113. 0x3793FAFF,0x90239DFF,0xE9AB2FFF,0xAF2FF3FF,0x057F94FF,0xB98519FF,0x388EEAFF,
  114. 0x028151FF,0xA55043FF,0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,0x18F71FFF,
  115. 0x4B8987FF,0x491B9EFF,0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,
  116. 0x3C1C0DFF,0x12D6D4FF,0x48C000FF,0x2A51E2FF,0xE3AC12FF,0xFC42A8FF,0x2FC827FF,
  117. 0x1A30BFFF,0xB740C2FF,0x42ACF5FF,0x2FD9DEFF,0xFAFB71FF,0x05D1CDFF,0xC471BDFF,
  118. 0x94436EFF,0xC1F7ECFF,0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,0x3214AAFF,0x184D3BFF,
  119. 0xAE4B99FF,0x7E49D7FF,0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,0x9F945CFF,
  120. 0xDCDE3DFF,0x10C9C5FF,0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,
  121. 0xE59338FF,0xEEDC2DFF,0xD8C762FF,0xD8C762FF
  122. };
  123.  
  124. public OnFilterScriptInit()
  125. {
  126. new
  127. Archivo[64];
  128.  
  129. print("\n/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/");
  130. print("/=/=/=/=/=Sistema De Clanes-Dini-=/=/=/=/");
  131. print("/=/=/=/=/=/=/=/= -Mas- =/=/=/=/=/=/=/=/=/");
  132. print("/=/=/= -Sistema de Administracion- =/=/=/");
  133. print("/=/=/=/=-Infierno + ConecCionMex-=/=/=/=/");
  134. print("/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/\n");
  135. SetTimer("ActualizarListaJugadores", 1500, 0);
  136. SetTimer("ActualizarTopPlayers", 3500, 0);
  137. SetTimer("ActualizarTopClanes", 5000, 0);
  138.  
  139. format(Archivo, sizeof Archivo, "Clan.ini");
  140. if(!dini_Exists(Archivo)) {
  141. dini_Create(Archivo);
  142. dini_IntSet(Archivo, "Clanes_Creados", 0);
  143. }
  144. if(!fexist("Jugadores.txt")) {
  145. new
  146. File:file = fopen("Jugadores.txt", io_write);
  147.  
  148. fclose(file);
  149. }
  150. if(!fexist("Clanes.txt")) {
  151. new
  152. File:file = fopen("Clanes.txt", io_write);
  153.  
  154. fclose(file);
  155. }
  156. return 1;
  157. }
  158.  
  159. //==============================================================================
  160. public OnPlayerRequestSpawn(playerid)
  161. {
  162. SaltosBici[playerid] = 0;
  163. return 1;
  164. }
  165.  
  166. public OnPlayerConnect(playerid)
  167. {
  168. new
  169. Archivo[64];
  170.  
  171. GetPlayerName(playerid, Nickname[playerid], MAX_PLAYER_NAME);
  172. if(strfind(Nickname[playerid], "[", true) != -1 || strfind(Nickname[playerid], "]", true) != -1)
  173. {
  174. SendClientMessage(playerid, ROJO, "Tu nick no puede contener corchetes");
  175. return Kick(playerid);
  176. }
  177. //Verificar registro:
  178. format(Archivo, sizeof(Archivo), "Jugadores/%s.ini", Nickname[playerid]);
  179. if(dini_Exists(Archivo)) Registrado[playerid] = true;
  180. SetPlayerColor(playerid, PlayerColors[playerid]);
  181.  
  182. return 1;
  183. }
  184.  
  185. public OnPlayerDisconnect(playerid, reason)
  186. {
  187. new file[MAX_PLAYERS];
  188.  
  189. Invitacion[playerid][0] = 0;
  190. Clan_ID[playerid] = 0;
  191. Clan_TAG[playerid][0] = 0;
  192. EnClan[playerid] = false;
  193. Registrado[playerid] = false;
  194. Ingresado[playerid] = false;
  195. Asesinatos[playerid] = 0;
  196. Muertes[playerid] = 0;
  197. Ratio[playerid] = 0.0;
  198. dini_IntSet(file, "Nivel", PlayerInfo[playerid][Nivel]);
  199. //==========================//
  200. new pname[MAX_PLAYER_NAME], string[39 + MAX_PLAYER_NAME];
  201. GetPlayerName(playerid, pname, sizeof(pname));
  202. switch(reason)
  203. {
  204. case 0: format(string, sizeof(string), "%s Ha salido Del Server.[[(Crash]]", pname);
  205. case 1: format(string, sizeof(string), "%s Ha salido Del Server. ", pname);
  206. case 2: format(string, sizeof(string), "%s Ha salido Del Server. [[Kick/Ban]]", pname);
  207. }
  208. SendClientMessageToAll(Amarillo, string);
  209. //===================================
  210. new Nombre[MAX_PLAYERS]; GetPlayerName(playerid, Nombre, sizeof(Nombre));
  211. format(file, sizeof(file), "Sadmin/Jugadores/%s.ini", Nombre);
  212. return 1;
  213. }
  214.  
  215. public OnPlayerDeath(playerid, killerid, reason)
  216. {
  217. new
  218. Archivo[64],
  219. TempMuertes,
  220. TempAsesinatos;
  221.  
  222. Muertes[playerid]++;
  223. Ratio[playerid] = float(Asesinatos[playerid]) / float(Muertes[playerid]);
  224.  
  225. if(IsPlayerConnected(killerid) && killerid != INVALID_PLAYER_ID)
  226. {
  227. Asesinatos[killerid]++;
  228. if(Muertes[killerid] == 0) Ratio[killerid] = float(Asesinatos[playerid]);
  229. else Ratio[killerid] = float(Asesinatos[killerid]) / float(Muertes[killerid]);
  230. }
  231. if(IsPlayerConnected(playerid) && Ingresado[playerid] == true)
  232. {
  233. format(Archivo, sizeof(Archivo), "Jugadores/%s.ini", Nickname[playerid]);
  234. if(dini_Exists(Archivo))
  235. {
  236. dini_IntSet(Archivo, "Muertes", Muertes[playerid]);
  237. dini_FloatSet(Archivo, "Ratio", Ratio[playerid]);
  238. }
  239. if(EnClan[playerid] == true)
  240. {
  241. format(Archivo, sizeof Archivo, "Clanes/%s.ini", Clan_TAG[playerid]);
  242. if(dini_Exists(Archivo))
  243. {
  244. dini_IntSet(Archivo, "Muertes", dini_Int(Archivo, "Muertes")+1);
  245. dini_FloatSet(Archivo, "Ratio", float(dini_Int(Archivo, "Asesinatos")) / float(dini_Int(Archivo, "Muertes")));
  246. }
  247. }
  248. }
  249. if(IsPlayerConnected(killerid) && Ingresado[killerid] == true && killerid != INVALID_PLAYER_ID)
  250. {
  251. format(Archivo, sizeof(Archivo), "Jugadores/%s.ini", Nickname[killerid]);
  252. if(dini_Exists(Archivo))
  253. {
  254. dini_IntSet(Archivo, "Asesinatos", Asesinatos[killerid]);
  255. dini_FloatSet(Archivo, "Ratio", Ratio[killerid]);
  256. }
  257. if(EnClan[killerid] == true)
  258. {
  259. format(Archivo, sizeof Archivo, "Clanes/%s.ini", Clan_TAG[killerid]);
  260. if(dini_Exists(Archivo))
  261. {
  262. TempMuertes = dini_Int(Archivo, "Muertes");
  263. TempAsesinatos = dini_Int(Archivo, "Asesinatos");
  264. dini_IntSet(Archivo, "Asesinatos", TempAsesinatos+1);
  265. if(TempMuertes == 0) dini_FloatSet(Archivo, "Ratio", float(TempAsesinatos));
  266. else dini_FloatSet(Archivo, "Ratio", float(TempAsesinatos) / float(TempMuertes));
  267. }
  268. }
  269. }
  270. return 1;
  271. }
  272.  
  273. public OnPlayerText(playerid, text[])
  274. {
  275. new
  276. Nick[MAX_PLAYER_NAME],
  277. texto[128];
  278.  
  279. if(text[0] == '!' && EnClan[playerid] == true)
  280. {
  281. GetPlayerName(playerid, Nick, MAX_PLAYER_NAME);
  282. format(texto, sizeof texto, "%s: %s", Nick, text[1]);
  283. for(new i = 0; i < MAX_PLAYERS; i++)
  284. {
  285. if(IsPlayerConnected(i))
  286. {
  287. if(EnClan[i] == EnClan[playerid])
  288. {
  289. SendClientMessage(playerid, LIGHTBLUE, texto);
  290. }
  291. }
  292. }
  293.  
  294. }
  295. return 1;
  296. }
  297.  
  298. public OnPlayerCommandText(playerid, cmdtext[])
  299. {
  300. new
  301. cmd[20],
  302. tmp[20],
  303. tmp2[20],
  304. tmp3[24],
  305. string[64],
  306. Archivo[64],
  307. Nick[MAX_PLAYER_NAME],
  308. longitud,
  309. id,
  310. File:file,
  311. idx;
  312.  
  313. if(!strcmp("/kill", cmd, true))
  314. {
  315. SetPlayerHealth(playerid, 0.0);
  316. return 1;
  317. }
  318. if(!strcmp("/register", cmd, true))
  319. {
  320. if(Registrado[playerid] == true) return SendClientMessage(playerid, ROJO, "Ya estás registrado");
  321. longitud = strlen(tmp);
  322. if(longitud == 0) return SendClientMessage(playerid, BLANCO, "Uso /register [Contraseña]");
  323. if(longitud < 3 || longitud > 16)
  324. {
  325. return SendClientMessage(playerid, ROJO, "La contraseña debe tener de 3 a 16 caracteres");
  326. }
  327. Registrar(playerid, tmp);
  328. return 1;
  329. }
  330. if(!strcmp("/login", cmd, true))
  331. {
  332. if(Registrado[playerid] == false) return SendClientMessage(playerid, ROJO, "No estás registrado");
  333. if(Ingresado[playerid] == true) return SendClientMessage(playerid, ROJO, "Ya estás logueado");
  334. longitud = strlen(tmp);
  335. if(longitud == 0) return SendClientMessage(playerid, BLANCO, "Uso /login [Contraseña]");
  336. Login(playerid, tmp);
  337. return 1;
  338. }
  339. if(!strcmp(cmd, "/stats", true))
  340. {
  341. if(!strlen(tmp)) return SendClientMessage(playerid, BLANCO, "Usa: /stats [id]");
  342. id = strval(tmp);
  343. if(!IsPlayerConnected(id)) return SendClientMessage(playerid, ROJO, "Jugador no conectado");
  344. if(Ingresado[id] == false) return SendClientMessage(playerid, ROJO, "Ese jugador no está ingresado");
  345. format(Archivo, sizeof(Archivo), "Jugadores/%s.ini", Nickname[id]);
  346. format(DLG_INFO_PLY_STR, sizeof DLG_INFO_PLY_STR, "~.~");
  347. if(dini_Exists(Archivo))
  348. {
  349. format(DLG_INFO_PLY_STR, sizeof DLG_INFO_PLY_STR, "Asesinatos: %d\n", dini_Int(Archivo, "Asesinatos"));
  350. format(DLG_INFO_PLY_STR, sizeof DLG_INFO_PLY_STR, "%sMuertes: %d\n", DLG_INFO_PLY_STR, dini_Int(Archivo, "Muertes"));
  351. format(DLG_INFO_PLY_STR, sizeof DLG_INFO_PLY_STR, "%sRatio: %d\n", DLG_INFO_PLY_STR, dini_Float(Archivo, "Ratio"));
  352. format(DLG_INFO_PLY_STR, sizeof DLG_INFO_PLY_STR, "%sClan: [%s]", DLG_INFO_PLY_STR, dini_Get(Archivo, "Clan"));
  353. }
  354. format(string, sizeof string, "Stadísticas de %s (%d)", Nickname[id], id);
  355. ShowPlayerDialog(playerid, DLG_PLY_INFO, DIALOG_STYLE_MSGBOX, string, DLG_INFO_PLY_STR, "Aceptar", "Cancelar");
  356. return 1;
  357. }
  358. if(!strcmp(cmd, "/Topplayers", true))
  359. {
  360. ShowPlayerDialog(playerid, DLG_TOP_PLAYERS, DIALOG_STYLE_LIST, "Top Players", DLG_TOP_PLY_STR, "Aceptar", "Cancelar");
  361. return 1;
  362. }
  363. if(!strcmp(cmd, "/Topclanes", true))
  364. {
  365. ShowPlayerDialog(playerid, DLG_TOP_CLANES, DIALOG_STYLE_LIST, "Top Clanes", DLG_TOP_CLAN_STR, "Aceptar", "Cancelar");
  366. return 1;
  367. }
  368. if(!strcmp(cmd, "/clan", true))
  369. {
  370. if(!strlen(tmp)) return SendClientMessage(playerid, BLANCO, "Usa: /clan [info, crear, invitar, entrar, salir, expulsar, color, colorh] [Nombre] [TAG]");
  371. if(!strcmp(tmp, "crear", true))
  372. {
  373. if(Ingresado[id] == false) return SendClientMessage(playerid, ROJO, "Necesitas estar logueado para usar este comando");
  374. if(EnClan[playerid] == true) return SendClientMessage(playerid, ROJO, "Ya tienes clan");
  375. if(!strlen(tmp2) || !strlen(tmp3)) return SendClientMessage(playerid, BLANCO, "Usa: /clan crear [TAG] [Nombre]");
  376. if(strlen(tmp2) < 1 || strlen(tmp2) > 3) return SendClientMessage(playerid, ROJO, "Sólo de 1 a 3 caracteres");
  377. if(strlen(tmp3) < 3 || strlen(tmp3) > 24) return SendClientMessage(playerid, ROJO, "Sólo de 3 a 24 caracteres");
  378. if(strfind(tmp2, "[", true) != -1 || strfind(tmp2, "]", true) != -1)
  379. {
  380. return SendClientMessage(playerid, ROJO, "Sin '[' ']' (corchetes) .");
  381. }
  382. format(Archivo, sizeof Archivo, "Clanes/%s.ini", tmp2);
  383. if(!dini_Exists(Archivo))
  384. {
  385. format(Clan_TAG[playerid], 4, "%s", tmp2);
  386. Clan_ID[playerid] = dini_Int("Clan.ini", "Clanes_Creados")+1;
  387. dini_IntSet("Clan.ini", "Clanes_Creados", Clan_ID[playerid]);
  388. dini_Create(Archivo);
  389. dini_IntSet(Archivo, "ID", Clan_ID[playerid]);
  390. dini_Set(Archivo, "Nombre", tmp3);
  391. dini_Set(Archivo, "TAG", tmp2);
  392. dini_IntSet(Archivo, "Color", id);
  393. dini_Set(Archivo, "Lider", Nickname[playerid]);
  394. dini_IntSet(Archivo, "Miembros", 1);
  395. dini_IntSet(Archivo, "Asesinatos", 0);
  396. dini_IntSet(Archivo, "Muertes", 0);
  397. dini_FloatSet(Archivo, "Ratio", 0.0);
  398. dini_Set(Archivo, "Miembro_1", Nickname[playerid]);
  399. for(new l = 2; l < 21; l++)
  400. {
  401. format(string, sizeof string, "Miembro_%d", l);
  402. dini_Set(Archivo, string, "<Vacio>");
  403. }
  404. format(Archivo, sizeof Archivo, "Jugadores/%s.ini", Nickname[playerid]);
  405. dini_Set(Archivo, "Clan", Clan_TAG[playerid]);
  406. file = fopen("Clanes.txt", io_append);
  407. format(string, sizeof(string), "%s;\r\n", Clan_TAG[playerid]);
  408. fwrite(file, string);
  409. fclose(file);
  410. format(Nick, sizeof Nick, "[%s]%s", Clan_TAG[playerid], Nickname[playerid]);
  411. SetPlayerName(playerid, Nick);
  412. SetPlayerColor(playerid, 0);
  413. EnClan[playerid] = true;
  414. format(string, sizeof string, "Has creado el clan '%s' TAG: [%s]", tmp3, tmp2);
  415. SendClientMessage(playerid, LIGHTBLUE, string);
  416. SendClientMessage(playerid, NARANJA, "Usa /clan color para cambiar el color de tu clan");
  417. } else {
  418. SendClientMessage(playerid, ROJO, "El TAG ya está en uso");
  419. }
  420. return 1;
  421. }
  422. if(!strcmp(tmp, "color", true))
  423. {
  424. if(EnClan[playerid] == false) return SendClientMessage(playerid, ROJO, "No tienes clan");
  425. format(Archivo, sizeof Archivo, "Clanes/%s.ini", Clan_TAG[playerid]);
  426. if(strcmp(dini_Get(Archivo, "Lider"), Nickname[playerid]) != 0) return SendClientMessage(playerid, ROJO, "Necesitas ser el creador del clan para poder cambiar el color");
  427. if(CColor[playerid] == true) {
  428. OcultarCombinador(playerid);
  429. TogglePlayerControllable(playerid, 1);
  430. CColor[playerid] = false;
  431. } else {
  432. MostrarCombinador(playerid);
  433. TogglePlayerControllable(playerid, 0);
  434. COLORES[playerid][3] = 255;
  435. CColor[playerid] = true;
  436. SendClientMessage(playerid, NICESKY, "Usa /clan color para cancelar");
  437. GameTextForPlayer(playerid, "~w~~h~Presiona ~k~~GO_FORWARD~, ~k~~GO_BACK~, ~n~~w~~h~~k~~GO_LEFT~, ~k~~GO_RIGHT~ y ~k~~PED_SPRINT~ ~w~~h~para cambiar el color ~n~~w~~h~y ~k~~PED_FIREWEAPON~ para seleccionar el color", 7000, 3);
  438. }
  439. return 1;
  440. }
  441. if(!strcmp(tmp, "colorh", true))
  442. {
  443. if(EnClan[playerid] == false) return SendClientMessage(playerid, ROJO, "No tienes clan");
  444. if(strcmp(dini_Get(Archivo, "Lider"), Nickname[playerid]) != 0) return SendClientMessage(playerid, ROJO, "Necesitas ser el creador del clan para poder cambiar el color");
  445. if(CColor[playerid] == true) return SendClientMessage(playerid, ROJO, "Cierra primero el combinador de colores.");
  446. longitud = strlen(tmp2);
  447. if(!longitud) return SendClientMessage(playerid, BLANCO, "Usa: /clan colorh [Código Hexadecimal]");
  448. if(longitud > 10) return SendClientMessage(playerid, ROJO, "Demasiado grande");
  449.  
  450. new
  451. rojo[3] = "00",
  452. azul[3] = "00",
  453. verde[3] = "00",
  454. alfa[3],
  455. ColorC;
  456.  
  457. if(tmp2[0] == '#')
  458. {
  459. format(string, sizeof string, "%s", tmp2[1]);
  460. if(!IsAHexNumber(string)) return SendClientMessage(playerid, ROJO, "Formato incorrecto. Ejemplo: #FFFFFFFF");
  461. format(rojo, sizeof rojo, "%c%c", tmp2[1], tmp2[2]);
  462. format(azul, sizeof azul, "%c%c", tmp2[3], tmp2[4]);
  463. format(verde, sizeof verde, "%c%c", tmp2[5], tmp2[6]);
  464. if(tmp2[7] != '\0')
  465. format(alfa, sizeof alfa, "%c%c", tmp2[7], tmp2[8]);
  466. else alfa = "FF";
  467.  
  468. ColorC = RGBA(HexToInt(rojo), HexToInt(verde), HexToInt(azul), HexToInt(alfa));
  469. format(Archivo, sizeof Archivo, "Clanes/%s.ini", Clan_TAG[playerid]);
  470. dini_IntSet(Archivo, "Color", ColorC);
  471. for(new i = 0; i < MAX_PLAYERS; i++)
  472. {
  473. if(IsPlayerConnected(i))
  474. if(Clan_ID[playerid] == Clan_ID[i])
  475. SetPlayerColor(i, ColorC);
  476. }
  477. format(string, sizeof string, "~y~~h~ Color seleccionado~n~~p~#%s%s%s%s", rojo, verde, azul, alfa);
  478. GameTextForPlayer(playerid, string, 3000, 4);
  479. return 1;
  480. }
  481. else if(tmp2[0] == '0' && tmp2[1] == 'x')
  482. {
  483. format(string, sizeof string, "%s", tmp2[2]);
  484. if(!IsAHexNumber(string)) return SendClientMessage(playerid, ROJO, "Formato incorrecto. Ejemplo: 0xFFFFFFFF");
  485. format(rojo, sizeof rojo, "%c%c", tmp2[2], tmp2[3]);
  486. format(azul, sizeof azul, "%c%c", tmp2[4], tmp2[5]);
  487. format(verde, sizeof verde, "%c%c", tmp2[6], tmp2[7]);
  488. if(tmp[8] != '\0')
  489. format(alfa, sizeof alfa, "%c%c", tmp2[8], tmp2[9]);
  490. else alfa = "FF";
  491.  
  492. ColorC = RGBA(HexToInt(rojo), HexToInt(verde), HexToInt(azul), HexToInt(alfa));
  493. format(Archivo, sizeof Archivo, "Clanes/%s.ini", Clan_TAG[playerid]);
  494. dini_IntSet(Archivo, "Color", ColorC);
  495. for(new i = 0; i < MAX_PLAYERS; i++)
  496. {
  497. if(IsPlayerConnected(i))
  498. if(Clan_ID[playerid] == Clan_ID[i])
  499. SetPlayerColor(i, ColorC);
  500. }
  501. format(string, sizeof string, "~y~~h~ Color seleccionado~n~~p~0x%s%s%s%s", rojo, verde, azul, alfa);
  502. GameTextForPlayer(playerid, string, 3000, 4);
  503. return 1;
  504. }
  505. if(IsAHexNumber(tmp2))
  506. {
  507. format(rojo, sizeof rojo, "%c%c", tmp2[0], tmp2[1]);
  508. format(azul, sizeof azul, "%c%c", tmp2[2], tmp2[3]);
  509. format(verde, sizeof verde, "%c%c", tmp2[4], tmp2[5]);
  510. if(tmp[6] != '\0')
  511. format(alfa, sizeof alfa, "%c%c", tmp2[6], tmp2[7]);
  512. else alfa = "FF";
  513.  
  514. ColorC = RGBA(HexToInt(rojo), HexToInt(verde), HexToInt(azul), HexToInt(alfa));
  515. format(Archivo, sizeof Archivo, "Clanes/%s.ini", Clan_TAG[playerid]);
  516. dini_IntSet(Archivo, "Color", ColorC);
  517. for(new i = 0; i < MAX_PLAYERS; i++)
  518. {
  519. if(IsPlayerConnected(i))
  520. if(Clan_ID[playerid] == Clan_ID[i])
  521. SetPlayerColor(i, ColorC);
  522. }
  523. format(string, sizeof string, "~y~~h~ Color seleccionado~n~~p~%s%s%s%s", rojo, verde, azul, alfa);
  524. GameTextForPlayer(playerid, string, 3000, 4);
  525. return 1;
  526. } else return SendClientMessage(playerid, ROJO, "Formato incorrecto. Ejemplo: FFFFFFFF");
  527. }
  528. if(!strcmp(tmp, "invitar", true))
  529. {
  530. if(EnClan[playerid] == false) return SendClientMessage(playerid, ROJO, "No tienes clan");
  531. if(!strlen(tmp2)) return SendClientMessage(playerid, BLANCO, "Usa: /clan invitar [id]");
  532. id = strval(tmp2);
  533. if(!IsPlayerConnected(id)) return SendClientMessage(playerid, ROJO, "Jugador no conectado");
  534. if(Ingresado[id] == false) return SendClientMessage(playerid, ROJO, "El jugador invitado necesita estar logueado");
  535. if(id == playerid) return SendClientMessage(playerid, ROJO, "No puedes enviarte invitación a ti mismo");
  536. format(Archivo, sizeof Archivo, "Clanes/%s.ini", Clan_TAG[playerid]);
  537. if(strcmp(dini_Get(Archivo, "Lider"), Nickname[playerid]) != 0) return SendClientMessage(playerid, ROJO, "Necesitas ser el creador del clan para poder invitar");
  538. if(EnClan[id] == true) return SendClientMessage(playerid, ROJO, "Ese jugador ya tiene clan");
  539. format(string, sizeof string, "* %s te ha invitado al clan '%s'", Nickname[playerid], dini_Get(Archivo, "Nombre"));
  540. SendClientMessage(id, LIGHTBLUE, string);
  541. SendClientMessage(id, NARANJA, "Usa /clan entrar para aceptar la invitación o /clan rechazar para rechazar la invitación.");
  542. format(string, sizeof string, "* Has invitado a %s ", Nickname[id]);
  543. SendClientMessage(playerid, LIGHTBLUE, string);
  544. format(Invitacion[id], 4, "%s", Clan_TAG[playerid]);
  545. return 1;
  546. }
  547. if(!strcmp(tmp, "rechazar", true))
  548. {
  549. if(!strlen(Invitacion[playerid])) return SendClientMessage(playerid, ROJO, "No te han invitado a ningun clan");
  550. Invitacion[playerid][0] = 0;
  551. return 1;
  552. }
  553. if(!strcmp(tmp, "entrar", true))
  554. {
  555. if(!strlen(Invitacion[playerid])) return SendClientMessage(playerid, ROJO, "No te han invitado a ningun clan");
  556. if(EnClan[playerid] == true) return SendClientMessage(playerid, ROJO, "Ya tienes clan");
  557. format(Archivo, sizeof Archivo, "Clanes/%s.ini", Invitacion[playerid]);
  558. if(dini_Exists(Archivo))
  559. {
  560. new
  561. IDMiembro = 2;
  562.  
  563. if(dini_Int(Archivo, "Miembros") == 20) return SendClientMessage(playerid, ROJO, "El clan está lleno");
  564. dini_IntSet(Archivo, "Miembros", dini_Int(Archivo, "Miembros")+1);
  565. while(IDMiembro < 20)
  566. {
  567. format(string, sizeof string, "Miembro_%d", IDMiembro);
  568. if(!strcmp(dini_Get(Archivo, string), "<Vacio>"))
  569. {
  570. dini_Set(Archivo, string, Nickname[playerid]);
  571. break;
  572. }
  573. IDMiembro++;
  574. }
  575. format(Clan_TAG[playerid], 4, Invitacion[playerid]);
  576. format(Archivo, sizeof Archivo, "Jugadores/%s.ini", Nickname[playerid]);
  577. dini_Set(Archivo, "Clan", Clan_TAG[playerid]);
  578. format(Nick, sizeof Nick, "[%s]%s", Clan_TAG[playerid], Nickname[playerid]);
  579. SetPlayerName(playerid, Nick);
  580. SetPlayerColor(playerid, dini_Int(Archivo, "Color"));
  581. format(string, sizeof string, "* %s has entrado al clan '%s'", dini_Get(Archivo, "Nombre"));
  582. SendClientMessage(playerid, BLANCO, string);
  583. Clan_ID[playerid] = dini_Int(Archivo, "ID");
  584. format(string, sizeof string, "* %s ha entrado al clan ", Nickname[playerid]);
  585. for(new i = 0; i < MAX_PLAYERS; i++) {
  586. if(i == playerid || !IsPlayerConnected(i)) continue;
  587. if(Clan_ID[playerid] == Clan_ID[i]) SendClientMessage(i, BLANCO, string);
  588. }
  589. EnClan[playerid] = true;
  590. } else return SendClientMessage(playerid, ROJO, "Ya no existe ese clan");
  591. return 1;
  592. }
  593. if(!strcmp(tmp, "salir", true))
  594. {
  595. if(EnClan[playerid] == false) return SendClientMessage(playerid, ROJO, "No tienes clan");
  596. format(string, sizeof string, "* %s ha salido del clan", Nickname[playerid]);
  597. for(new i = 0; i < MAX_PLAYERS; i++) {
  598. if(i == playerid || !IsPlayerConnected(i)) continue;
  599. if(Clan_ID[playerid] == Clan_ID[i]) SendClientMessage(i, BLANCO, string);
  600. }
  601. Clan_ID[playerid] = 0;
  602. format(Archivo, sizeof Archivo, "Clanes/%s.ini", Clan_TAG[playerid]);
  603. file = fopen(Archivo, io_read);
  604. while(fread(file, string))
  605. {
  606. idx = strfind(string, Nickname[playerid], true);
  607. if(idx != -1)
  608. {
  609. strmid(string, string, 0, idx-1, 16);
  610. dini_Set(Archivo, string, "<Vacio>");
  611. }
  612. }
  613. fclose(file);
  614. dini_IntSet(Archivo, "Miembros", dini_Int(Archivo, "Miembros")-1);
  615. format(string, sizeof string, "* Saliste del clan '%s'", dini_Get(Archivo, "Nombre"));
  616. SendClientMessage(playerid, ROJO, string);
  617. format(Archivo, sizeof Archivo, "Jugadores/%s.ini", Nickname[playerid]);
  618. dini_Set(Archivo, "Clan", "<Ninguno>");
  619. SetPlayerName(playerid, Nickname[playerid]);
  620. SetPlayerColor(playerid, PlayerColors[playerid]);
  621. EnClan[playerid] = false;
  622. return 1;
  623. }
  624. if(!strcmp(tmp, "expulsar", true))
  625. {
  626. if(EnClan[playerid] == false) return SendClientMessage(playerid, ROJO, "No tienes clan");
  627. if(!strlen(tmp2)) return SendClientMessage(playerid, BLANCO, "Usa: /clan expulsar [id]");
  628. id = strval(tmp2);
  629. if(!IsPlayerConnected(id)) return SendClientMessage(playerid, ROJO, "Jugador no conectado");
  630. if(id == playerid) return SendClientMessage(playerid, ROJO, "No puedes expulsarte a ti mismo");
  631. format(Archivo, sizeof Archivo, "Clanes/%s.ini", Clan_TAG[playerid]);
  632. if(Clan_ID[playerid] != Clan_ID[id]) return SendClientMessage(playerid, ROJO, "Ese jugador no está en tu clan");
  633. if(strcmp(dini_Get(Archivo, "Lider"), Nickname[playerid]) != 0) return SendClientMessage(playerid, ROJO, "Necesitas ser el creador del clan para poder expulsar");
  634. OnPlayerCommandText(playerid, "/clan salir");
  635. SendClientMessage(playerid, ROJO, "Fuiste expulsado del clan");
  636. return 1;
  637. }
  638. if(!strcmp(tmp, "info", true))
  639. {
  640. if(!strlen(tmp2)) return SendClientMessage(playerid, BLANCO, "Usa: /clan info [TAG]");
  641. format(Archivo, sizeof Archivo, "Clanes/%s.ini", tmp2);
  642. if(dini_Exists(Archivo))
  643. {
  644. format(DLG_INFO_CLAN_STR, sizeof DLG_INFO_CLAN_STR, "> ID: %d\n", dini_Int(Archivo, "ID"));
  645. format(DLG_INFO_CLAN_STR, sizeof DLG_INFO_CLAN_STR, "%s> Color: %d\n", DLG_INFO_CLAN_STR, dini_Int(Archivo, "Color"));
  646. format(DLG_INFO_CLAN_STR, sizeof DLG_INFO_CLAN_STR, "%s> Líder: %s\n", DLG_INFO_CLAN_STR, dini_Get(Archivo, "Lider"));
  647. format(DLG_INFO_CLAN_STR, sizeof DLG_INFO_CLAN_STR, "%s> Miembros: %d\n", DLG_INFO_CLAN_STR, dini_Int(Archivo, "Miembros"));
  648. format(DLG_INFO_CLAN_STR, sizeof DLG_INFO_CLAN_STR, "%s> Asesinatos: %d\n", DLG_INFO_CLAN_STR, dini_Int(Archivo, "Asesinatos"));
  649. format(DLG_INFO_CLAN_STR, sizeof DLG_INFO_CLAN_STR, "%s> Muertes: %d\n", DLG_INFO_CLAN_STR, dini_Int(Archivo, "Muertes"));
  650. format(DLG_INFO_CLAN_STR, sizeof DLG_INFO_CLAN_STR, "%s> Ratio: %0.0f\n", DLG_INFO_CLAN_STR, dini_Float(Archivo, "Ratio"));
  651. for(new d = 1; d < 21; d++)
  652. {
  653. format(string, sizeof string, "Miembro_%d", d);
  654. format(DLG_INFO_CLAN_STR, sizeof DLG_INFO_CLAN_STR, "%s> Miembro %d: %s\n", DLG_INFO_CLAN_STR, d, dini_Get(Archivo, string));
  655. }
  656. format(string, sizeof string, "Información '%s' [%s]", dini_Get(Archivo, "Nombre"), dini_Get(Archivo, "TAG"));
  657. ShowPlayerDialog(playerid, DLG_CLAN_INFO, DIALOG_STYLE_MSGBOX, string, DLG_INFO_CLAN_STR, "Aceptar", "Cancelar");
  658. } else return SendClientMessage(playerid, ROJO, "No existe ese clan");
  659. return 1;
  660. }
  661. return 1;
  662. }
  663.  
  664. if(strcmp(cmdtext,"/saltarbici",true)==0)
  665. {
  666. if(SaltosBici[playerid] > 0)
  667. {
  668. SaltosBici[playerid] = 0;
  669. SendClientMessage(playerid,Amarillo,"Super saltos en bici desactivado.");
  670. }
  671. else
  672. {
  673. SaltosBici[playerid] = 1;
  674. SendClientMessage(playerid,Amarillo,"Super saltos en bici activado. Usa /saltarbici para desactivarlo.");
  675. }
  676. return 1;
  677. }
  678.  
  679. //======= Comandos DCMD: =======
  680. dcmd(acmds, 5, cmdtext);
  681. dcmd(kill , 4,cmdtext);
  682. dcmd(reportar , 8,cmdtext);
  683. dcmd(admins, 6, cmdtext);
  684. dcmd(conteo, 6, cmdtext);
  685. dcmd(armas, 5, cmdtext);
  686. dcmd(anuncio, 7, cmdtext);
  687. dcmd(fix, 3, cmdtext);
  688. dcmd(ir, 2, cmdtext);
  689. dcmd(traer, 5, cmdtext);
  690. dcmd(sayon, 5, cmdtext);
  691. dcmd(sayoff, 6, cmdtext);
  692. dcmd(carcel, 6, cmdtext);
  693. dcmd(liberar, 7 ,cmdtext);
  694. dcmd(congelar, 8, cmdtext);
  695. dcmd(descongelar, 11, cmdtext);
  696. dcmd(kick, 4, cmdtext);
  697. dcmd(ban, 3, cmdtext);
  698. dcmd(Nivel, 5, cmdtext);
  699. return 0;
  700. }
  701.  
  702. //===================== Comandos DCMD para Administradores =====================
  703.  
  704. dcmd_conteo(playerid,params[])
  705. {
  706. #pragma unused params
  707. if (Conteo == 1) return SendClientMessage(playerid, Rojo, "Ya hay un Conteo en Progreso.");
  708. new nombre[MAX_PLAYER_NAME], string[100];
  709. GetPlayerName(playerid, nombre, sizeof(nombre));
  710. format(string, sizeof(string), "* %s ha iniciado un conteo.", nombre);
  711. Conteo = 1;
  712. SetTimerEx("Conteo5", 500, false, "d", playerid);
  713. SendClientMessageToAll(Verde, string);
  714. return 1;
  715. }
  716.  
  717. //=========----------------------=========//
  718. dcmd_acmds(playerid,params[])
  719. {
  720. #pragma unused params
  721. if(PlayerInfo[playerid][Nivel] == 1)
  722. {
  723. SendClientMessage(playerid, Verde, "Comandos de administrador:");
  724. SendClientMessage(playerid, Azul, "[Admin]Nivel 1: /sayon /sayoff ");
  725. }
  726. else if(PlayerInfo[playerid][Nivel] == 2)
  727. {
  728. SendClientMessage(playerid, Verde, "Comandos de administrador:");
  729. SendClientMessage(playerid, Azul, "[Admin]Nivel 1: /sayon /sayoff");
  730. SendClientMessage(playerid, Azul, "[Admin]Nivel 2: /anuncio - /fix /kick");
  731. }
  732. else if(PlayerInfo[playerid][Nivel] == 3)
  733. {
  734. SendClientMessage(playerid, Verde, "Comandos de administrador:");
  735. SendClientMessage(playerid, Azul, "[Admin]Nivel 1: /sayon /sayoff");
  736. SendClientMessage(playerid, Azul, "[Admin]Nivel 2: /anuncio - /fix /kick");
  737. SendClientMessage(playerid, Azul, "[Admin]Nivel 3: /armas /traer /ban");
  738. }
  739. else if(PlayerInfo[playerid][Nivel] == 4)
  740. {
  741. SendClientMessage(playerid, Verde, "Comandos de administrador:");
  742. SendClientMessage(playerid, Azul, "[Admin]Nivel 1: /sayon /sayoff");
  743. SendClientMessage(playerid, Azul, "[Admin]Nivel 2:/anuncio /fix /kick");
  744. SendClientMessage(playerid, Azul, "[Admin]Nivel 3: /armas /traer /ban");
  745. SendClientMessage(playerid, Azul, "[Admin]Nivel 4: /ir /carcel /liberar ");
  746. }
  747. else if(PlayerInfo[playerid][Nivel] == 5)
  748. {
  749. SendClientMessage(playerid, Verde, "Comandos de administrador:");
  750. SendClientMessage(playerid, Azul, "[Admin]Nivel 1: /sayon /sayoff");
  751. SendClientMessage(playerid, Azul, "[Admin]Nivel 2: /anuncio - /fix /kick");
  752. SendClientMessage(playerid, Azul, "[Admin]Nivel 3: /armas /traer /ban");
  753. SendClientMessage(playerid, Azul, "[Admin]Nivel 4: /ir /carcel /liberar");
  754. SendClientMessage(playerid, Azul, "[Admin]Nivel 5: /nivel /congelar /descongelar");
  755. }
  756. else return SendClientMessage(playerid, Rojo, "[[Info]] Lo sentimos no eres Admin");
  757. return 1;
  758. }
  759.  
  760. dcmd_kill(playerid,params[]){
  761. #pragma unused params
  762. SendClientMessage(playerid,Rojo,"Por que mierda te matas acaso estas loco o.O");
  763. SetPlayerHealth(playerid, 0.0);
  764. return 1;
  765. }
  766.  
  767. dcmd_reportar(playerid,params[]){
  768. #pragma unused params
  769. new razon[250], string[250], giveplayerid, giveplayer[MAX_PLAYER_NAME], idx, cmd[256];
  770. cmd = strtok(params, idx);
  771. if(!strlen(cmd))
  772. {
  773. SendClientMessage(playerid, Naranja, "Usa: /reportar [ID] [Razon]");
  774. return 1;
  775. }
  776. giveplayerid = strval(cmd);
  777. razon = strrest(params,idx);
  778. if(!strlen(razon))
  779. {
  780. SendClientMessage(playerid,Naranja,"Usa: /reportar [ID] [Razon]");
  781. return 1;
  782. }
  783. if (IsPlayerConnected(giveplayerid))
  784. {
  785. GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
  786. GetPlayerName(playerid, sendername, sizeof(sendername));
  787. SendClientMessage(playerid,Amarillo,"[[Info]]Tu reporte ha sido enviado con Exito a los Administradores en Linea.");
  788. SendClientMessage(playerid,Amarillo,"[[Info]]No repitas el reporte o seras castigado.");
  789. SendClientMessage(playerid,Amarillo,"[[Info]]Si reportaste al ID incorrecto Avisa.");
  790. format(string,sizeof(string),"* [Reporte:] %s [ID: %d] reportó a %s [ID: %d]. Razón: %s",sendername,playerid,giveplayer,giveplayerid,razon);
  791. MsgAdmins(Azul,string,1);
  792. } else {
  793. format(string, sizeof(string), "[[Info]] Jugador no Conectado");
  794. SendClientMessage(playerid, Rojo, string);
  795. }
  796. return 1;
  797. }
  798.  
  799. dcmd_admins(playerid,params[])
  800. {
  801. #pragma unused params
  802. new Count,i,name[24],string[256];
  803. for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[i][Nivel] >= 3) Count++;
  804. if(!Count) return SendClientMessage(playerid, Rojo, "No hay Administradores conectados..");
  805.  
  806. if(Count == 1)
  807. {
  808. for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[i][Nivel] >= 3) break;
  809. GetPlayerName(i,name,24); format(string,256,"%s (Nivel: %d)",name,PlayerInfo[i][Nivel]);
  810. return ShowPlayerDialog(playerid, 500, DIALOG_STYLE_MSGBOX, "Administradores conectados", string, " Ok ", " Salir ");
  811. }
  812.  
  813. if(Count >= 1)
  814. {
  815. new bool:First = false;
  816. for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[i][Nivel] >= 3)
  817. {
  818. GetPlayerName(i,name,24);
  819. if(!First)
  820. {
  821. format(string,256,"%s (Nivel: %d)\n",name,PlayerInfo[i][Nivel]); First = true;
  822. }
  823. else format(string,256,"%s %s (Nivel: %d)",string,name,PlayerInfo[i][Nivel]);
  824. }
  825. return ShowPlayerDialog(playerid, 500, DIALOG_STYLE_MSGBOX, "Administradores conectados", string, " Ok ", " Salir ");
  826. }
  827. return 1;
  828. }
  829.  
  830. dcmd_armas(playerid,params[])
  831. {
  832. #pragma unused params
  833. if(PlayerInfo[playerid][Nivel] >= 3)
  834. {
  835. if(IsPlayerInAnyVehicle(playerid)) {
  836. TogglePlayerControllable(playerid,false); return ShowMenuForPlayer(armas,playerid);
  837. } else return ShowMenuForPlayer(armas,playerid);
  838. } else return SendClientMessage(playerid,Rojo,"[[Info]] Lo sentimos no eres Admin");
  839. }
  840.  
  841. dcmd_anuncio(playerid,params[])
  842. {
  843. if(PlayerInfo[playerid][Nivel] >= 2)
  844. {
  845. new texto;
  846. if(sscanf(params, "pz", texto))
  847. {
  848. SendClientMessage(playerid, Naranja, "Usa: /anuncio <Texto>");
  849. }
  850. else
  851. {
  852. GameTextForAll(params ,4000, 6);
  853. }
  854. } else {
  855. SendClientMessage(playerid, Rojo,"[[Info]] Lo sentimos no eres Admin");
  856. }
  857. return 1;
  858. }
  859.  
  860. dcmd_fix(playerid,params[])
  861. {
  862. #pragma unused params
  863. if(PlayerInfo[playerid][Nivel] > 2)
  864. {
  865. if (IsPlayerInAnyVehicle(playerid)) {
  866. SetVehicleHealth(GetPlayerVehicleID(playerid),1250.0);
  867. return SendClientMessage(playerid,Azul,"[[Info:]]> Vehículo Reparado Correctamente.");
  868. } else return SendClientMessage(playerid,Rojo,"[[Info]] No estas en un vehiculo.");
  869. } else return SendClientMessage(playerid,Rojo,"[[Info]] Lo sentimos no eres Admin");
  870. }
  871.  
  872. dcmd_ir(playerid,params[])
  873. {
  874. if(PlayerInfo[playerid][Nivel] >= 4)
  875. {
  876. if(!strlen(params)) return SendClientMessage(playerid, Naranja,"Usa: /ir <ID>");
  877. new Nick, string[128];
  878. Nick = strval(params);
  879. if(IsPlayerConnected(Nick) && Nick != INVALID_PLAYER_ID && Nick != playerid)
  880. {
  881. new Float:x, Float:y, Float:z; GetPlayerPos(Nick,x,y,z); SetPlayerInterior(playerid,GetPlayerInterior(Nick));
  882. SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(Nick));
  883. if(GetPlayerState(playerid) == 2)
  884. {
  885. SetVehiclePos(GetPlayerVehicleID(playerid),x+5,y,z); LinkVehicleToInterior(GetPlayerVehicleID(playerid),GetPlayerInterior(Nick));
  886. SetVehicleVirtualWorld(GetPlayerVehicleID(playerid),GetPlayerVirtualWorld(Nick));
  887. } else SetPlayerPos(playerid,x+2,y,z);
  888. format(string,sizeof(string),"Has sido teletransportado hasta %s.",Nick);
  889. return SendClientMessage(playerid, Azul,string);
  890. } else return SendClientMessage(playerid, Rojo, "[[Info]] Jugador no Conectado");
  891. } else return SendClientMessage(playerid, Rojo,"[[Info]] Lo sentimos no eres Admin");
  892. }
  893. //=========----------------------=========//
  894. dcmd_traer(playerid,params[])
  895. {
  896. if(PlayerInfo[playerid][Nivel] >= 3)
  897. {
  898. if(!strlen(params)) return SendClientMessage(playerid, Azul, "Usa: /Traer <ID>");
  899. new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
  900. player1 = strval(params);
  901. if(PlayerInfo[player1][Nivel] && PlayerInfo[playerid][Nivel]) return SendClientMessage(playerid, Rojo,"ERROR: No puedes usar este comando sobre este Administrador.");
  902. if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && player1 != playerid)
  903. {
  904. new Float:x, Float:y, Float:z; GetPlayerPos(playerid,x,y,z); SetPlayerInterior(player1,GetPlayerInterior(playerid));
  905. SetPlayerVirtualWorld(player1,GetPlayerVirtualWorld(playerid));
  906. if(GetPlayerState(player1) == 2)
  907. {
  908. new VehicleID = GetPlayerVehicleID(player1);
  909. SetVehiclePos(VehicleID,x+3,y,z); LinkVehicleToInterior(VehicleID,GetPlayerInterior(playerid));
  910. SetVehicleVirtualWorld(GetPlayerVehicleID(player1),GetPlayerVirtualWorld(playerid));
  911. } else SetPlayerPos(player1,x+2,y,z);
  912. GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));
  913. format(string,sizeof(string),"Has sido teletransportado por el administrador %s hacia su posición.",adminname); SendClientMessage(player1,Azul,string);
  914. format(string,sizeof(string),"Has teletransportado a %s hacia tu posición.", playername); return SendClientMessage(playerid,Amarillo,string);
  915. } else return SendClientMessage(playerid, Rojo, "[[Info]] Jugador no Conectado");
  916. } else return SendClientMessage(playerid, Rojo,"[[Info]] Lo sentimos no eres Admin");
  917. }
  918.  
  919. //=========----------------------=========//
  920.  
  921. dcmd_carcel(playerid,params[])
  922. {
  923. if(PlayerInfo[playerid][Nivel] >= 4)
  924. {
  925. new tmp[256], tmp2[256], tmp3[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index), tmp3 = strtok(params,Index);
  926. if(!strlen(params)) return SendClientMessage(playerid, Amarillo, "* Usa: /carcel <ID> <Tiempo> <Razón>");
  927. new player1, Nombreplayerid[MAX_PLAYER_NAME], Adminnombre[MAX_PLAYER_NAME], string[128];
  928. player1 = strval(tmp);
  929.  
  930. if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID)
  931. {
  932. if(PlayerInfo[player1][Carcel] == 0)
  933. {
  934. GetPlayerName(player1, Nombreplayerid, sizeof(Nombreplayerid)); GetPlayerName(playerid, Adminnombre, sizeof(Adminnombre));
  935. new Ctiempo = strval(tmp2);
  936. if(Ctiempo == 0) Ctiempo = 9999;
  937.  
  938. PlayerInfo[player1][CarcelTiempo] = Ctiempo*1000*60;
  939. SetTimerEx("playeridCarcel",5000,0,"d",player1);
  940. SetTimerEx("Carcel1",1000,0,"d",player1);
  941.  
  942. PlayerInfo[player1][Carcel] = 1;
  943.  
  944. if(Ctiempo == 9999)
  945. {
  946. if(!strlen(params[strlen(tmp2)+1])) format(string,sizeof(string),"Administrador %s ha encarcelado a %s ",Adminnombre, Nombreplayerid);
  947. else format(string,sizeof(string),"Administrador %s ha encarcelado a %s | Razón %s",Adminnombre, Nombreplayerid, params[strlen(tmp)+1] );
  948. } else {
  949. if(!strlen(tmp3)) format(string,sizeof(string),"Administrador %s ha encarcelado a %s durante %d minutos", Adminnombre, Nombreplayerid, Ctiempo);
  950. else format(string,sizeof(string),"Administrador %s ha encarcelado a %s durante %d minutos | Razón: %s", Adminnombre, Nombreplayerid, Ctiempo, params[strlen(tmp2)+strlen(tmp)+1] );
  951. }
  952. return SendClientMessageToAll(Rojo,string);
  953. } else return SendClientMessage(playerid, Rojo, "[[Info]]Jugador ya en Carcel.");
  954. } else return SendClientMessage(playerid, Rojo, "[[Info]] Jugador no Conectado.");
  955. } else return SendClientMessage(playerid, Rojo,"[[Info]] Lo sentimos no eres Admin.");
  956. }
  957. //=========----------------------=========//
  958. dcmd_liberar(playerid,params[])
  959. {
  960. if(PlayerInfo[playerid][Nivel] >= 4)
  961. {
  962. new tmp[256], Index; tmp = strtok(params,Index);
  963. if(!strlen(params)) return SendClientMessage(playerid, Rojo, "Usa: /Desencarcelar <ID>");
  964. new player1, Nombreplayerid[MAX_PLAYER_NAME], Adminnombre[MAX_PLAYER_NAME], string[128];
  965. player1 = strval(tmp);
  966.  
  967. if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID)
  968. {
  969. if(PlayerInfo[player1][Carcel] == 1)
  970. {
  971. GetPlayerName(player1, Nombreplayerid, sizeof(Nombreplayerid)); GetPlayerName(playerid, Adminnombre, sizeof(Adminnombre));
  972. format(string,sizeof(string),"El Administrador %s te ha desencarcelado.", Adminnombre); SendClientMessage(player1,Naranja,string);
  973. format(string,sizeof(string),"Administrador %s ha desencarcelado a %s",Adminnombre, Nombreplayerid);
  974. SacarCarcel(player1);
  975. return SendClientMessageToAll(Rojo,string);
  976. } else return SendClientMessage(playerid, Rojo, "[[Info]]Jugador no en carcel.");
  977. } else return SendClientMessage(playerid, Rojo, "[[Info]] Jugador no Conectado.");
  978. } else return SendClientMessage(playerid, Rojo,"[[Info]] Lo sentimos no eres Admin");
  979. }
  980.  
  981. dcmd_congelar(playerid,params[])
  982. {
  983. if(PlayerInfo[playerid][Nivel] >= 5)
  984. {
  985. new tmp[256], tmp2[256], tmp3[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index), tmp3 = strtok(params,Index);
  986. if(!strlen(params)) return SendClientMessage(playerid, Naranja, "Usa: /Congelar <ID> <Minutos> <Razón>");
  987. new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
  988. player1 = strval(tmp);
  989.  
  990. if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID)
  991. {
  992. if(PlayerInfo[player1][Congelado] == 0)
  993. {
  994. GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));
  995. new Ctiempo = strval(tmp2);
  996. if(Ctiempo == 0) Ctiempo = 9999;
  997.  
  998. TogglePlayerControllable(player1,false); PlayerInfo[player1][Congelado] = 1; PlayerPlaySound(player1,1057,0.0,0.0,0.0);
  999. PlayerInfo[player1][CongelarTiempo] = Ctiempo*1000*60;
  1000. CongelarTimer[player1] = SetTimerEx("Descongelame",PlayerInfo[player1][CongelarTiempo],0,"d",player1);
  1001.  
  1002. if(Ctiempo == 9999)
  1003. {
  1004. if(!strlen(params[strlen(tmp2)+1])) format(string,sizeof(string),"[Admin] %s ha congelado a %s ",adminname, playername);
  1005. else format(string,sizeof(string),"[Admin] %s ha congelado a %s | Razón %s",adminname, playername, params[strlen(tmp)+1] );
  1006. } else {
  1007. if(!strlen(tmp3)) format(string,sizeof(string),"[Admin] %s ha congelado a %s durante %d minutos.",adminname, playername, Ctiempo);
  1008. else format(string,sizeof(string),"[Admin] %s ha congelado a %s durante %d minutos | Razón: %s",adminname, playername, Ctiempo, params[strlen(tmp2)+strlen(tmp)+1] );
  1009. }
  1010. return SendClientMessageToAll(Amarillo,string);
  1011. } else return SendClientMessage(playerid, Rojo, "[[Info]] Jugador ya Congelado");
  1012. } else return SendClientMessage(playerid, Rojo, "[[Info]] Jugador no Conectado");
  1013. } else return SendClientMessage(playerid, Rojo,"[[Info]] Lo sentimos no eres Admin");
  1014. }
  1015. //=========----------------------=========//
  1016. dcmd_descongelar(playerid,params[])
  1017. {
  1018. if(PlayerInfo[playerid][Nivel] >= 5)
  1019. {
  1020. if(!strlen(params)) return SendClientMessage(playerid, Naranja, "Usa: /Descongelar <ID>");
  1021. new player1, string[128];
  1022. player1 = strval(params);
  1023.  
  1024. if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID)
  1025. {
  1026. if(PlayerInfo[player1][Congelado] == 1)
  1027. {
  1028. Descongelame(player1);
  1029. format(string,sizeof(string)," [[Info]] [Admin] %s te ha descongelado.",playerid); SendClientMessage(player1, Naranja,string);
  1030. format(string,sizeof(string),"[[Info]] [Admin] %s ha descongelado a %s", playerid, player1);
  1031. return SendClientMessageToAll(Amarillo,string);
  1032. } else return SendClientMessage(playerid, Rojo, "[[Info]] Jugador no Congelado");
  1033. } else return SendClientMessage(playerid, Rojo, "[[Info]] Jugador no Conectado");
  1034. } else return SendClientMessage(playerid, Rojo,"[[Info]] Lo sentimos no eres Admin");
  1035. }
  1036.  
  1037. dcmd_kick(playerid,params[])
  1038. {
  1039. if(PlayerInfo[playerid][Nivel] >= 2)
  1040. {
  1041. new id;
  1042. new razon;
  1043. if(sscanf(params, "uz", id, razon))
  1044. {
  1045. SendClientMessage(playerid, Naranja, "Usa: /Kick <ID> <Razón>");
  1046. }
  1047. else if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) return SendClientMessage(playerid, Rojo, "[[Info]] Jugador no Conectado");
  1048. else
  1049. {
  1050. new string[256],Nombre[24],ANombre[24]; GetPlayerName(playerid,Nombre,24); GetPlayerName(id,ANombre,24);
  1051. format(string,256,"[[Info]] %s ha sido kickeado por un Admin | [Razón: %s].",Nombre,razon);
  1052. SendClientMessageToAll(Amarillo,string);
  1053. Kick(playerid);
  1054. }
  1055. } else {
  1056. SendClientMessage(playerid, Rojo,"[[Info]] Lo sentimos no eres Admin");
  1057. }
  1058. return 1;
  1059. }
  1060. dcmd_ban(playerid,params[])
  1061. {
  1062. if(PlayerInfo[playerid][Nivel] >= 4)
  1063. {
  1064. new id;
  1065. new razon;
  1066. if(sscanf(params, "uz", id, razon))
  1067. {
  1068. SendClientMessage(playerid, Naranja, "Usa: /Ban <ID> <Razón>");
  1069. }
  1070. else if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) return SendClientMessage(playerid, Rojo, "[[Info]] Jugador no Conectado");
  1071. else
  1072. {
  1073. new string[256],Nombre[24],ANombre[24]; GetPlayerName(playerid,Nombre,24); GetPlayerName(id,ANombre,24);
  1074. format(string,256,"[[Info]] %s ha sido Baneado por un Admin | [Razón: %s].",Nombre,razon);
  1075. SendClientMessageToAll(Amarillo,string);
  1076. Ban(playerid);
  1077. }
  1078. } else {
  1079. SendClientMessage(playerid, Rojo,"[[Info]] Lo sentimos no eres Admin");
  1080. }
  1081. return 1;
  1082. }
  1083.  
  1084. //=========----------------------=========//
  1085. dcmd_sayon(playerid, params[])
  1086. {
  1087. #pragma unused params
  1088. if(PlayerInfo[playerid][Nivel] >= 1)
  1089. {
  1090. PlayerInfo[playerid][Tsay] = 1;
  1091. SendClientMessage(playerid, Verde, "Comando /Say activado.");
  1092. } else {
  1093. SendClientMessage(playerid, Rojo,"[[Info]] Lo sentimos no eres Admin");
  1094. }
  1095. return 1;
  1096. }
  1097. //=========----------------------=========//
  1098. dcmd_sayoff(playerid, params[])
  1099. {
  1100. #pragma unused params
  1101. if(PlayerInfo[playerid][Nivel] >= 1)
  1102. {
  1103. PlayerInfo[playerid][Tsay] = 0;
  1104. SendClientMessage(playerid, Rojo, "Comando /Say desactivado.");
  1105. } else {
  1106. SendClientMessage(playerid, Rojo,"[[Info]] Lo sentimos no eres Admin.");
  1107. }
  1108. return 1;
  1109. }
  1110.  
  1111. dcmd_Nivel(playerid, params[])
  1112. {
  1113. if(PlayerInfo[playerid][Nivel] < 5) return SendClientMessage(playerid, Rojo, "[[Info]] Lo sentimos no eres Admin");
  1114.  
  1115. new id, nivel, string[72];
  1116.  
  1117. if(sscanf(params, "ud", id, nivel)) return SendClientMessage(playerid, Naranja, "Uso: /Nivel [id][Nivel]");
  1118. else if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Rojo, "[[Info]] Jugador no Conectado");
  1119. else if(playerid == id) return SendClientMessage(playerid, Rojo, "[[Info]] No puedes cambiar tu propio Nivel!");
  1120. else if(nivel < 1 || nivel > 5) return SendClientMessage(playerid, Rojo, "[[Info]] El Nivel tiene qe ser de 1 a 5");
  1121. else if(PlayerInfo[id][Nivel] >= PlayerInfo[playerid][Nivel]) return SendClientMessage(playerid, Rojo, "[[Info]]No puedes modificar a este jugador");
  1122.  
  1123. new
  1124. Name[24];
  1125.  
  1126. PlayerInfo[playerid][Nivel] = nivel;
  1127. GetPlayerName(playerid, Name, 24);
  1128. format(string, sizeof(string), "[Admin] %s Te puso [Admin] Nivel: %d!", Name, nivel);
  1129. SendClientMessage(id, Amarillo, string);
  1130. GetPlayerName(id, Name, 24);
  1131. format(string, sizeof(string), "Le has dado a %s, [Admin] Nivel: %d!", Name, nivel);
  1132. SendClientMessage(playerid, Azul, string);
  1133. return 1;
  1134. }
  1135.  
  1136. //============================================================================//
  1137.  
  1138. public OnPlayerUpdate(playerid)
  1139. {
  1140. if(CColor[playerid] == true)
  1141. {
  1142. new
  1143. keys,
  1144. updown,
  1145. leftright,
  1146. Archivo[64];
  1147.  
  1148. GetPlayerKeys(playerid, keys, updown, leftright);
  1149.  
  1150. if(updown < 0) CSelec[playerid]--;//ARRIBA
  1151. else if(updown > 0) CSelec[playerid]++;//ABAJO
  1152. if(CSelec[playerid] > 4) CSelec[playerid] = 1;
  1153. else if(CSelec[playerid] < 1) CSelec[playerid] = 4;
  1154. if(keys & KEY_FIRE)
  1155. {
  1156. new
  1157. ColorC = RGBA(COLORES[playerid][0], COLORES[playerid][1], COLORES[playerid][2], COLORES[playerid][3]);
  1158.  
  1159. format(Archivo, sizeof Archivo, "Clanes/%s.ini", Clan_TAG[playerid]);
  1160. dini_IntSet(Archivo, "Color", ColorC);
  1161. CColor[playerid] = false;
  1162. COLORES[playerid][0] = 0;//ROJO
  1163. COLORES[playerid][1] = 0;//VERDE
  1164. COLORES[playerid][2] = 0;//AZUL
  1165. COLORES[playerid][3] = 255;//ALPHA
  1166. SetTimerEx("OcultarCombinador", 500, 0, "i", playerid);
  1167. for(new i = 0; i < MAX_PLAYERS; i++)
  1168. {
  1169. if(IsPlayerConnected(i))
  1170. if(Clan_ID[playerid] == Clan_ID[i])
  1171. SetPlayerColor(i, ColorC);
  1172. }
  1173. TogglePlayerControllable(playerid, 1);
  1174. GameTextForPlayer(playerid, "~y~~h~ Color seleccionado", 3000, 4);
  1175. }
  1176. if(leftright > 0)//DERECHA
  1177. {
  1178. if(CSelec[playerid] == 1)//ROJO
  1179. {
  1180. if(keys & KEY_SPRINT) COLORES[playerid][0] += 5;
  1181. else COLORES[playerid][0]++;
  1182. if(COLORES[playerid][0] > 255) COLORES[playerid][0] = 0;
  1183. }
  1184. if(CSelec[playerid] == 2)//VERDE
  1185. {
  1186. if(keys & KEY_SPRINT) COLORES[playerid][1] += 5;
  1187. else COLORES[playerid][1]++;
  1188. if(COLORES[playerid][1] > 255) COLORES[playerid][1] = 0;
  1189. }
  1190. if(CSelec[playerid] == 3)//AZUL
  1191. {
  1192. if(keys & KEY_SPRINT) COLORES[playerid][2] += 5;
  1193. else COLORES[playerid][2]++;
  1194. if(COLORES[playerid][2] > 255) COLORES[playerid][2] = 0;
  1195. }
  1196. if(CSelec[playerid] == 4)//ALPHA
  1197. {
  1198. if(keys & KEY_SPRINT) COLORES[playerid][3] += 5;
  1199. else COLORES[playerid][3]++;
  1200. if(COLORES[playerid][3] > 255) COLORES[playerid][3] = 0;
  1201. }
  1202.  
  1203. }
  1204. if(leftright < 0)//IZQUIERDA
  1205. {
  1206. if(CSelec[playerid] == 1)//ROJO
  1207. {
  1208. if(keys & KEY_SPRINT) COLORES[playerid][0] -= 5;
  1209. else COLORES[playerid][0]--;
  1210. if(COLORES[playerid][0] < 0) COLORES[playerid][0] = 255;
  1211. }
  1212. if(CSelec[playerid] == 2)//VERDE
  1213. {
  1214. if(keys & KEY_SPRINT) COLORES[playerid][1] -= 5;
  1215. else COLORES[playerid][1]--;
  1216. if(COLORES[playerid][1] < 0) COLORES[playerid][1] = 255;
  1217. }
  1218. if(CSelec[playerid] == 3)//AZUL
  1219. {
  1220. if(keys & KEY_SPRINT) COLORES[playerid][2] -= 5;
  1221. else COLORES[playerid][2]--;
  1222. if(COLORES[playerid][2] < 0) COLORES[playerid][2] = 255;
  1223. }
  1224. if(CSelec[playerid] == 4)//ALHPA
  1225. {
  1226. if(keys & KEY_SPRINT) COLORES[playerid][3] -= 5;
  1227. else COLORES[playerid][3]--;
  1228. if(COLORES[playerid][3] < 0) COLORES[playerid][3] = 255;
  1229. }
  1230. }
  1231. ActualizarCombinador(playerid);
  1232. }
  1233. return 1;
  1234. }
  1235.  
  1236. forward ActualizarCombinador(playerid);
  1237. public ActualizarCombinador(playerid)
  1238. {
  1239. new
  1240. str[128],
  1241. ColorS = RGBA(COLORES[playerid][0], COLORES[playerid][1], COLORES[playerid][2], COLORES[playerid][3]);
  1242.  
  1243. if(CSelec[playerid] == 1) {
  1244. format(str, sizeof str, "~w~>~r~ ROJO ~<~ %03d ~>~ ~n~~g~ VERDE ~<~ %03d ~>~ ~n~~b~ AZUL ~<~ %03d ~>~ ~n~~w~ ALPHA ~<~ %03d ~>~",
  1245. COLORES[playerid][0], COLORES[playerid][1], COLORES[playerid][2], COLORES[playerid][3]);
  1246. }
  1247. if(CSelec[playerid] == 2) {
  1248. format(str, sizeof str, "~r~ ROJO ~<~ %03d ~>~ ~n~~w~>~g~ VERDE ~<~ %03d ~>~ ~n~~b~ AZUL ~<~ %03d ~>~ ~n~~w~ ALPHA ~<~ %03d ~>~",
  1249. COLORES[playerid][0], COLORES[playerid][1], COLORES[playerid][2], COLORES[playerid][3]);
  1250. }
  1251. if(CSelec[playerid] == 3) {
  1252. format(str, sizeof str, "~r~ ROJO ~<~ %03d ~>~ ~n~~g~ VERDE ~<~ %03d ~>~ ~n~~w~>~b~ AZUL ~<~ %03d ~>~ ~n~~w~ ALPHA ~<~ %03d ~>~",
  1253. COLORES[playerid][0], COLORES[playerid][1], COLORES[playerid][2], COLORES[playerid][3]);
  1254. }
  1255. if(CSelec[playerid] == 4) {
  1256. format(str, sizeof str, "~r~ ROJO ~<~ %03d ~>~ ~n~~g~ VERDE ~<~ %03d ~>~ ~n~~b~ AZUL ~<~ %03d ~>~ ~n~~w~>~w~ ALPHA ~<~ %03d ~>~",
  1257. COLORES[playerid][0], COLORES[playerid][1], COLORES[playerid][2], COLORES[playerid][3]);
  1258. }
  1259. TextDrawSetString(Comb[playerid], str);
  1260.  
  1261. format(str, sizeof str, "~y~0x%x%x%x%x", COLORES[playerid][0], COLORES[playerid][1], COLORES[playerid][2], COLORES[playerid][3]);
  1262. TextDrawSetString(NumColor[playerid], str);
  1263.  
  1264. TextDrawHideForPlayer(playerid, Color[playerid]);
  1265. TextDrawDestroy(Color[playerid]);
  1266. Color[playerid] = TextDrawCreate(9.000000, 255.000000, "CAJA");
  1267. TextDrawBackgroundColor(Color[playerid], 0);
  1268. TextDrawFont(Color[playerid], 1);
  1269. TextDrawLetterSize(Color[playerid], 1.630000, 2.099999);
  1270. TextDrawColor(Color[playerid], 0);
  1271. TextDrawSetProportional(Color[playerid], 1);
  1272. TextDrawUseBox(Color[playerid], 1);
  1273. TextDrawBoxColor(Color[playerid], ColorS);
  1274. TextDrawTextSize(Color[playerid], 153.000000, 0.000000);
  1275. TextDrawShowForPlayer(playerid, Color[playerid]);
  1276. }
  1277.  
  1278. forward MostrarCombinador(playerid);
  1279. public MostrarCombinador(playerid)
  1280. {
  1281. NumColor[playerid] = TextDrawCreate(9.000000, 237.000000, "~y~0x00000000");
  1282. TextDrawBackgroundColor(NumColor[playerid], 255);
  1283. TextDrawFont(NumColor[playerid], 1);
  1284. TextDrawLetterSize(NumColor[playerid], 0.500000, 1.000000);
  1285. TextDrawColor(NumColor[playerid], -1);
  1286. TextDrawSetOutline(NumColor[playerid], 0);
  1287. TextDrawSetProportional(NumColor[playerid], 1);
  1288. TextDrawSetShadow(NumColor[playerid], 1);
  1289. TextDrawUseBox(NumColor[playerid], 1);
  1290. TextDrawBoxColor(NumColor[playerid], 1684300900);
  1291. TextDrawTextSize(NumColor[playerid], 153.000000, 0.000000);
  1292.  
  1293. Color[playerid] = TextDrawCreate(9.000000, 255.000000, "CAJA");
  1294. TextDrawFont(Color[playerid], 1);
  1295. TextDrawLetterSize(Color[playerid], 1.630000, 2.099999);
  1296. TextDrawColor(Color[playerid], 0);
  1297. TextDrawSetProportional(Color[playerid], 1);
  1298. TextDrawUseBox(Color[playerid], 1);
  1299. TextDrawBoxColor(Color[playerid], 0);
  1300. TextDrawTextSize(Color[playerid], 153.000000, 0.000000);
  1301.  
  1302. CComb[playerid] = TextDrawCreate(9.000000, 283.000000, "CAJA");
  1303. TextDrawBackgroundColor(CComb[playerid], 0);
  1304. TextDrawFont(CComb[playerid], 1);
  1305. TextDrawLetterSize(CComb[playerid], 1.630000, 5.100001);
  1306. TextDrawColor(CComb[playerid], 0);
  1307. TextDrawSetOutline(CComb[playerid], 0);
  1308. TextDrawSetProportional(CComb[playerid], 1);
  1309. TextDrawSetShadow(CComb[playerid], 1);
  1310. TextDrawUseBox(CComb[playerid], 1);
  1311. TextDrawBoxColor(CComb[playerid], 1684300900);
  1312. TextDrawTextSize(CComb[playerid], 153.000000, 0.000000);
  1313.  
  1314. Comb[playerid] = TextDrawCreate(9.000000, 280.000000, "~r~ ROJO ~<~ 255 ~>~ ~n~~g~ VERDE ~<~ 255 ~>~ ~n~~b~ AZUL ~<~ 255 ~>~ ~n~~w~ ALPHA ~<~ 255 ~>~");
  1315. TextDrawBackgroundColor(Comb[playerid], 255);
  1316. TextDrawFont(Comb[playerid], 2);
  1317. TextDrawLetterSize(Comb[playerid], 0.400000, 1.400000);
  1318. TextDrawColor(Comb[playerid], -1);
  1319. TextDrawSetOutline(Comb[playerid], 0);
  1320. TextDrawSetProportional(Comb[playerid], 1);
  1321. TextDrawSetShadow(Comb[playerid], 1);
  1322.  
  1323. TextDrawShowForPlayer(playerid, NumColor[playerid]);
  1324. TextDrawShowForPlayer(playerid, Color[playerid]);
  1325. TextDrawShowForPlayer(playerid, CComb[playerid]);
  1326. TextDrawShowForPlayer(playerid, Comb[playerid]);
  1327. }
  1328.  
  1329. forward OcultarCombinador(playerid);
  1330. public OcultarCombinador(playerid)
  1331. {
  1332. TextDrawHideForPlayer(playerid, NumColor[playerid]);
  1333. TextDrawHideForPlayer(playerid, Color[playerid]);
  1334. TextDrawHideForPlayer(playerid, CComb[playerid]);
  1335. TextDrawHideForPlayer(playerid, Comb[playerid]);
  1336.  
  1337. TextDrawDestroy(NumColor[playerid]);
  1338. TextDrawDestroy(Color[playerid]);
  1339. TextDrawDestroy(CComb[playerid]);
  1340. TextDrawDestroy(Comb[playerid]);
  1341. }
  1342.  
  1343. forward ActualizarListaJugadores();
  1344. public ActualizarListaJugadores()
  1345. {
  1346. new
  1347. File:file,
  1348. bool:Existe = false,
  1349. string[128],
  1350. str[32];
  1351.  
  1352. for(new i = 0; i < MAX_PLAYERS; i++)
  1353. {
  1354. if(IsPlayerConnected(i))
  1355. {
  1356. if(Ingresado[i] == true)
  1357. {
  1358. format(str, sizeof(str), "%s;", Nickname[i]);
  1359. file = fopen("Jugadores.txt", io_read);
  1360. while(fread(file, string))
  1361. {
  1362. if(strfind(string, str, true) == 0)
  1363. {
  1364. Existe = true;
  1365. }
  1366. }
  1367. fclose(file);
  1368. if(Existe == false)
  1369. {
  1370. file = fopen("Jugadores.txt", io_append);
  1371. format(string, sizeof(string), "%s;\r\n", Nickname[i]);
  1372. fwrite(file, string);
  1373. fclose(file);
  1374. }
  1375. }
  1376. }
  1377. Existe = false;
  1378. }
  1379. }
  1380.  
  1381.  
  1382. forward ActualizarTopClanes();
  1383. public ActualizarTopClanes()
  1384. {
  1385. new
  1386. File:file,
  1387. Archivo[64],
  1388. string[128],
  1389. Linea,
  1390. Lugar,
  1391. Float:MAX_VALOR = -1.0;
  1392.  
  1393. file = fopen("Clanes.txt", io_read);
  1394. while(fread(file, string))
  1395. {
  1396. new
  1397. v = strfind(string, ";", true);
  1398.  
  1399. strmid(NOMBRE[Linea], string, 0, v, 32);
  1400. format(Archivo, sizeof(Archivo), "Clanes/%s.ini", NOMBRE[Linea]);
  1401. if(dini_Exists(Archivo))
  1402. {
  1403. VALOR[Linea] = dini_Float(Archivo, "Ratio");
  1404. }
  1405. Linea++;
  1406. }
  1407. fclose(file);
  1408.  
  1409. Lugar = 1;
  1410. while(Lugar < 11)
  1411. {
  1412. for(new i = 0; i < 3000; i++)
  1413. {
  1414. if(EnTop[i] == 0)
  1415. {
  1416. if(VALOR[i] > MAX_VALOR)
  1417. {
  1418. MAX_VALOR = VALOR[i];
  1419. Top[Lugar] = i;
  1420. }
  1421. }
  1422. }
  1423. strmid(TopInfo[Lugar][NickTOP], NOMBRE[Top[Lugar]], 0, 32, 32);
  1424. format(Archivo, sizeof(Archivo), "Clanes/%s.ini", TopInfo[Lugar][NickTOP]);
  1425. TopInfo[Lugar][AsesinatosTOP] = dini_Int(Archivo, "Asesinatos");
  1426. TopInfo[Lugar][MuertesTOP] = dini_Int(Archivo, "Muertes");
  1427. TopInfo[Lugar][RatioTOP] = dini_Float(Archivo, "Ratio");
  1428. EnTop[Top[Lugar]] = 1;
  1429. MAX_VALOR = -1;
  1430. Lugar++;
  1431. }
  1432.  
  1433. for(new s = 0; s < 3000; s++) EnTop[s] = 0;
  1434. format(DLG_TOP_CLAN_STR, sizeof(DLG_TOP_CLAN_STR),"");
  1435. Lugar = 1;
  1436. while(Lugar < 11)
  1437. {
  1438. format(DLG_TOP_CLAN_STR, sizeof(DLG_TOP_CLAN_STR),
  1439. "%s| %02d | %s | Asesinatos: %d | Muertes: %d | Ratio: %0.0f|\n",
  1440. DLG_TOP_CLAN_STR, Lugar, TopInfo[Lugar][NickTOP], TopInfo[Lugar][AsesinatosTOP],
  1441. TopInfo[Lugar][MuertesTOP], TopInfo[Lugar][RatioTOP]);
  1442. Lugar++;
  1443. }
  1444. SetTimer("ActualizarTopClanes", 62000, 0);
  1445. }
  1446.  
  1447. forward ActualizarTopPlayers();
  1448. public ActualizarTopPlayers()
  1449. {
  1450. new
  1451. File:file,
  1452. Archivo[64],
  1453. string[128],
  1454. Linea,
  1455. Lugar,
  1456. Float:MAX_VALOR = -1.0;
  1457.  
  1458. file = fopen("Jugadores.txt", io_read);
  1459.  
  1460. while(fread(file, string))
  1461. {
  1462. new
  1463. v = strfind(string, ";", true);
  1464.  
  1465. strmid(NOMBRE[Linea], string, 0, v, 32);
  1466. format(Archivo, sizeof(Archivo), "Jugadores/%s.ini", NOMBRE[Linea]);
  1467. if(dini_Exists(Archivo))
  1468. {
  1469. VALOR[Linea] = dini_Float(Archivo, "Ratio");
  1470. }
  1471. Linea++;
  1472. }
  1473. fclose(file);
  1474.  
  1475. Lugar = 1;
  1476. while(Lugar < 11)
  1477. {
  1478. for(new i = 0; i < 3000; i++)
  1479. {
  1480. if(EnTop[i] == 0)
  1481. {
  1482. if(VALOR[i] > MAX_VALOR)
  1483. {
  1484. MAX_VALOR = VALOR[i];
  1485. Top[Lugar] = i;
  1486. }
  1487. }
  1488. }
  1489. strmid(TopInfo[Lugar][NickTOP], NOMBRE[Top[Lugar]], 0, 32, 32);
  1490. format(Archivo, sizeof(Archivo), "Jugadores/%s.ini", TopInfo[Lugar][NickTOP]);
  1491. TopInfo[Lugar][AsesinatosTOP] = dini_Int(Archivo, "Asesinatos");
  1492. TopInfo[Lugar][MuertesTOP] = dini_Int(Archivo, "Muertes");
  1493. TopInfo[Lugar][RatioTOP] = dini_Float(Archivo, "Ratio");
  1494. EnTop[Top[Lugar]] = 1;
  1495. MAX_VALOR = -1;
  1496. Lugar++;
  1497. }
  1498.  
  1499. for(new s = 0; s < 3000; s++) EnTop[s] = 0;
  1500. format(DLG_TOP_PLY_STR, sizeof(DLG_TOP_PLY_STR),"");
  1501. Lugar = 1;
  1502. while(Lugar < 11)
  1503. {
  1504. format(DLG_TOP_PLY_STR, sizeof(DLG_TOP_PLY_STR),
  1505. "%s| %02d | %s | Asesinatos: %d | Muertes: %d | Ratio: %0.0f|\n",
  1506. DLG_TOP_PLY_STR, Lugar, TopInfo[Lugar][NickTOP], TopInfo[Lugar][AsesinatosTOP],
  1507. TopInfo[Lugar][MuertesTOP], TopInfo[Lugar][RatioTOP]);
  1508. Lugar++;
  1509. }
  1510. SetTimer("ActualizarTopPlayers", 60000, 0);
  1511. SetTimer("ActualizarListaJugadores", 10000, 0);
  1512. }
  1513.  
  1514. stock Registrar(playerid, pass[])
  1515. {
  1516. new
  1517. Archivo[64],
  1518. str[128];
  1519.  
  1520. format(Archivo, sizeof(Archivo), "Jugadores/%s.ini", NickName(playerid));
  1521. if(!dini_Exists(Archivo))
  1522. {
  1523. dini_Create(Archivo);
  1524. dini_Set(Archivo, "Contrasena", pass);
  1525. dini_IntSet(Archivo, "Asesinatos", 0);
  1526. dini_IntSet(Archivo, "Muertes", 0);
  1527. dini_IntSet(Archivo, "Nivel", 0);
  1528. PlayerInfo[playerid][Nivel] = dini_Int(Archivo, "Nivel");
  1529. dini_FloatSet(Archivo, "Ratio", 0.0);
  1530. dini_Set(Archivo, "Clan", "<Ninguno>");
  1531. format(str, sizeof(str), "Nick '%s' registrado. Contrasena: '%s' ", NickName(playerid), pass);
  1532. SendClientMessage(playerid, NICESKY, str);
  1533. Registrado[playerid] = true;
  1534. SendClientMessage(playerid, NARANJA, "Ahora usa /login [contraseña]");
  1535. }
  1536. }
  1537.  
  1538. stock Login(playerid, pass[])
  1539. {
  1540. new
  1541. Archivo[64],
  1542. Nick[MAX_PLAYER_NAME];
  1543.  
  1544. format(Archivo, sizeof(Archivo), "Jugadores/%s.ini", NickName(playerid));
  1545. if(dini_Exists(Archivo))
  1546. {
  1547. if(!strcmp(dini_Get(Archivo, "Contrasena"), pass, false))
  1548. {
  1549. strmid(Nickname[playerid], NickName(playerid), 0, MAX_PLAYER_NAME, MAX_PLAYER_NAME);
  1550. PlayerInfo[playerid][Nivel] = dini_Int(Archivo, "Nivel");
  1551. Asesinatos[playerid] = dini_Int(Archivo, "Asesinatos");
  1552. Muertes[playerid] = dini_Int(Archivo, "Muertes");
  1553. Ratio[playerid] = dini_Float(Archivo, "Ratio");
  1554. Ingresado[playerid] = true;
  1555. format(Archivo, sizeof Archivo, "Clanes/%s.ini", dini_Get(Archivo, "Clan"));
  1556. if(dini_Exists(Archivo))
  1557. {
  1558. format(Clan_TAG[playerid], 4, dini_Get(Archivo, "TAG"));
  1559. format(Nick, sizeof Nick, "[%s]%s", Clan_TAG[playerid], NickName(playerid));
  1560. SetPlayerName(playerid, Nick);
  1561. SetPlayerColor(playerid, dini_Int(Archivo, "Color"));
  1562. Clan_ID[playerid] = dini_Int(Archivo, "ID");
  1563. EnClan[playerid] = true;
  1564. }
  1565. SendClientMessage(playerid, NICESKY, "Logueado Correctamente");
  1566. } else SendClientMessage(playerid, ROJO, "Contraseña Incorrecta");
  1567. }
  1568. }
  1569.  
  1570. stock NickName(playerid)
  1571. {
  1572. new
  1573. NickP[MAX_PLAYER_NAME];
  1574.  
  1575. GetPlayerName(playerid, NickP, MAX_PLAYER_NAME);
  1576. return NickP;
  1577. }
  1578.  
  1579. //Por Zamaroht
  1580. stock RGBA(red, green, blue, alpha)
  1581. {
  1582. return (red * 16777216) + (green * 65536) + (blue * 256) + alpha;
  1583. }
  1584.  
  1585. //Por Zoutdaxv
  1586. stock IsAHexNumber(string[])
  1587. {
  1588. new
  1589. longitud = strlen(string);
  1590.  
  1591. for(new s = 0; s < longitud; s++)
  1592. {
  1593. if(string[s] < 48 || string[s] > 57 && string[s] < 65 || string[s] > 70)
  1594. {
  1595. return false;
  1596. }
  1597. }
  1598. return true;
  1599. }
  1600.  
  1601. //Por Dracoblue
  1602. stock strrest(const string[], &index)
  1603. {
  1604. new length = strlen(string);
  1605. while ((index < length) && (string[index] <= ' '))
  1606. {
  1607. index++;
  1608. }
  1609. new offset = index;
  1610. new result[24];
  1611. while ((index < length) && ((index - offset) < (sizeof(result) - 1)))
  1612. {
  1613. result[index - offset] = string[index];
  1614. index++;
  1615. }
  1616. result[index - offset] = EOS;
  1617. return result;
  1618. }
  1619.  
  1620.  
  1621. forward MsgAdmins(color,const string[],level);
  1622. public MsgAdmins(color,const string[],level)
  1623. {
  1624. for(new i = 0; i < MAX_PLAYERS; i++)
  1625. {
  1626. if(IsPlayerConnected(i))
  1627. {
  1628. if (PlayerInfo[i][Nivel] >= level)
  1629. {
  1630. SendClientMessage(i, color, string);
  1631. }
  1632. }
  1633. }
  1634. return 1;
  1635. }
  1636. public OnPlayerSelectedMenuRow(playerid, row)
  1637. {
  1638. new Menu:current;
  1639. current = GetPlayerMenu(playerid);
  1640. if(current == armas)
  1641. {
  1642. switch(row)
  1643. {
  1644. case 0: { GivePlayerWeapon(playerid,22,800);}
  1645. case 1: { GivePlayerWeapon(playerid,28,800);}
  1646. case 2: { GivePlayerWeapon(playerid,26,800);}
  1647. case 3: { GivePlayerWeapon(playerid,16,800);}
  1648. case 4: { GivePlayerWeapon(playerid,41,800); SendClientMessage(playerid,Rojo,"No Abuses de Esta Arma");}
  1649. case 5: { GivePlayerWeapon(playerid,37,800); SendClientMessage(playerid,Rojo,"No Abuses de Esta Arma");}
  1650. case 6: { GivePlayerWeapon(playerid,36,800); SendClientMessage(playerid,Rojo,"No Abuses de Esta Arma");}
  1651. case 7: { GivePlayerWeapon(playerid,35,800); SendClientMessage(playerid,Rojo,"No Abuses de Esta Arma");}
  1652. case 8: { GivePlayerWeapon(playerid,38,800); SendClientMessage(playerid,Rojo,"No Abuses de Esta Arma");}
  1653. }
  1654. }
  1655. return 1;
  1656. }
  1657.  
  1658. stock sscanf(string[], format[], {Float,_}:...)
  1659. {
  1660. #if defined isnull
  1661. if (isnull(string))
  1662. #else
  1663. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  1664. #endif
  1665. {
  1666. return format[0];
  1667. }
  1668. #pragma tabsize 4
  1669. new
  1670. formatPos = 0,
  1671. stringPos = 0,
  1672. paramPos = 2,
  1673. paramCount = numargs(),
  1674. delim = ' ';
  1675. while (string[stringPos] && string[stringPos] <= ' ')
  1676. {
  1677. stringPos++;
  1678. }
  1679. while (paramPos < paramCount && string[stringPos])
  1680. {
  1681. switch (format[formatPos++])
  1682. {
  1683. case '\0':
  1684. {
  1685. return 0;
  1686. }
  1687. case 'i', 'd':
  1688. {
  1689. new
  1690. neg = 1,
  1691. num = 0,
  1692. ch = string[stringPos];
  1693. if (ch == '-')
  1694. {
  1695. neg = -1;
  1696. ch = string[++stringPos];
  1697. }
  1698. do
  1699. {
  1700. stringPos++;
  1701. if ('0' <= ch <= '9')
  1702. {
  1703. num = (num * 10) + (ch - '0');
  1704. }
  1705. else
  1706. {
  1707. return -1;
  1708. }
  1709. }
  1710. while ((ch = string[stringPos]) > ' ' && ch != delim);
  1711. setarg(paramPos, 0, num * neg);
  1712. }
  1713. case 'h', 'x':
  1714. {
  1715. new
  1716. num = 0,
  1717. ch = string[stringPos];
  1718. do
  1719. {
  1720. stringPos++;
  1721. switch (ch)
  1722. {
  1723. case 'x', 'X':
  1724. {
  1725. num = 0;
  1726. continue;
  1727. }
  1728. case '0' .. '9':
  1729. {
  1730. num = (num << 4) | (ch - '0');
  1731. }
  1732. case 'a' .. 'f':
  1733. {
  1734. num = (num << 4) | (ch - ('a' - 10));
  1735. }
  1736. case 'A' .. 'F':
  1737. {
  1738. num = (num << 4) | (ch - ('A' - 10));
  1739. }
  1740. default:
  1741. {
  1742. return -1;
  1743. }
  1744. }
  1745. }
  1746. while ((ch = string[stringPos]) > ' ' && ch != delim);
  1747. setarg(paramPos, 0, num);
  1748. }
  1749. case 'c':
  1750. {
  1751. setarg(paramPos, 0, string[stringPos++]);
  1752. }
  1753. case 'f':
  1754. {
  1755. setarg(paramPos, 0, _:floatstr(string[stringPos]));
  1756. }
  1757. case 'p':
  1758. {
  1759. delim = format[formatPos++];
  1760. continue;
  1761. }
  1762. case '\'':
  1763. {
  1764. new
  1765. end = formatPos - 1,
  1766. ch;
  1767. while ((ch = format[++end]) && ch != '\'') {}
  1768. if (!ch)
  1769. {
  1770. return -1;
  1771. }
  1772. format[end] = '\0';
  1773. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  1774. {
  1775. if (format[end + 1])
  1776. {
  1777. return -1;
  1778. }
  1779. return 0;
  1780. }
  1781. format[end] = '\'';
  1782. stringPos = ch + (end - formatPos);
  1783. formatPos = end + 1;
  1784. }
  1785. case 'u':
  1786. {
  1787. new
  1788. end = stringPos - 1,
  1789. id = 0,
  1790. bool:num = true,
  1791. ch;
  1792. while ((ch = string[++end]) && ch != delim)
  1793. {
  1794. if (num)
  1795. {
  1796. if ('0' <= ch <= '9')
  1797. {
  1798. id = (id * 10) + (ch - '0');
  1799. }
  1800. else
  1801. {
  1802. num = false;
  1803. }
  1804. }
  1805. }
  1806. if (num && IsPlayerConnected(id))
  1807. {
  1808. setarg(paramPos, 0, id);
  1809. }
  1810. else
  1811. {
  1812. #if !defined foreach
  1813. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1814. #define __SSCANF_FOREACH__
  1815. #endif
  1816. string[end] = '\0';
  1817. num = false;
  1818. new
  1819. name[MAX_PLAYER_NAME];
  1820. id = end - stringPos;
  1821. foreach (Player, playerid)
  1822. {
  1823. GetPlayerName(playerid, name, sizeof (name));
  1824. if (!strcmp(name, string[stringPos], true, id))
  1825. {
  1826. setarg(paramPos, 0, playerid);
  1827. num = true;
  1828. break;
  1829. }
  1830. }
  1831. if (!num)
  1832. {
  1833. setarg(paramPos, 0, INVALID_PLAYER_ID);
  1834. }
  1835. string[end] = ch;
  1836. #if defined __SSCANF_FOREACH__
  1837. #undef foreach
  1838. #undef __SSCANF_FOREACH__
  1839. #endif
  1840. }
  1841. stringPos = end;
  1842. }
  1843. case 's', 'z':
  1844. {
  1845. new
  1846. i = 0,
  1847. ch;
  1848. if (format[formatPos])
  1849. {
  1850. while ((ch = string[stringPos++]) && ch != delim)
  1851. {
  1852. setarg(paramPos, i++, ch);
  1853. }
  1854. if (!i)
  1855. {
  1856. return -1;
  1857. }
  1858. }
  1859. else
  1860. {
  1861. while ((ch = string[stringPos++]))
  1862. {
  1863. setarg(paramPos, i++, ch);
  1864. }
  1865. }
  1866. stringPos--;
  1867. setarg(paramPos, i, '\0');
  1868. }
  1869. default:
  1870. {
  1871. continue;
  1872. }
  1873. }
  1874. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  1875. {
  1876. stringPos++;
  1877. }
  1878. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  1879. {
  1880. stringPos++;
  1881. }
  1882. paramPos++;
  1883. }
  1884. do
  1885. {
  1886. if ((delim = format[formatPos++]) > ' ')
  1887. {
  1888. if (delim == '\'')
  1889. {
  1890. while ((delim = format[formatPos++]) && delim != '\'') {}
  1891. }
  1892. else if (delim != 'z')
  1893. {
  1894. return delim;
  1895. }
  1896. }
  1897. }
  1898. while (delim > ' ');
  1899. return 0;
  1900. }
  1901.  
  1902. forward Descongelame(player1);
  1903. public Descongelame(player1)
  1904. {
  1905. KillTimer( CongelarTimer[player1] );
  1906. TogglePlayerControllable(player1,true); PlayerInfo[player1][Congelado] = 0;
  1907. PlayerPlaySound(player1,1057,0.0,0.0,0.0); GameTextForPlayer(player1,"~g~Descongelado",3000,3);
  1908. }
  1909. forward SacarCarcel(player1);
  1910. public SacarCarcel(player1)
  1911. {
  1912. KillTimer( CarcelTimer[player1] );
  1913. PlayerInfo[player1][CarcelTiempo] = 0; PlayerInfo[player1][Carcel] = 0;
  1914. SetPlayerInterior(player1,0); SetPlayerPos(player1, 0.0, 0.0, 0.0); SpawnPlayer(player1);
  1915. PlayerPlaySound(player1,1057,0.0,0.0,0.0);
  1916. GameTextForPlayer(player1,"~g~Liberado",3000,3);
  1917. }
  1918. //=========----------------------=========//
  1919. forward Carcel1(player1);
  1920. public Carcel1(player1)
  1921. {
  1922. TogglePlayerControllable(player1,false);
  1923. new Float:x, Float:y, Float:z; GetPlayerPos(player1,x,y,z);
  1924. ResetPlayerWeapons(player1);
  1925. SetPlayerCameraPos(player1,x+10,y,z+10);SetPlayerCameraLookAt(player1,x,y,z);
  1926. SetTimerEx("Carcel2",1000,0,"d",player1);
  1927. }
  1928. //=========----------------------=========//
  1929. forward Carcel2(player1);
  1930. public Carcel2(player1)
  1931. {
  1932. new Float:x, Float:y, Float:z; GetPlayerPos(player1,x,y,z);
  1933. ResetPlayerWeapons(player1);
  1934. SetPlayerCameraPos(player1,x+7,y,z+5); SetPlayerCameraLookAt(player1,x,y,z);
  1935. if(GetPlayerState(player1) == PLAYER_STATE_ONFOOT) SetPlayerSpecialAction(player1,SPECIAL_ACTION_HANDSUP);
  1936. GameTextForPlayer(player1,"~r~Atrapado",3000,3);
  1937. SetTimerEx("Carcel3",1000,0,"d",player1);
  1938. }
  1939. //=========----------------------=========//
  1940. forward Carcel3(player1);
  1941. public Carcel3(player1)
  1942. {
  1943. new Float:x, Float:y, Float:z; GetPlayerPos(player1,x,y,z);
  1944. ResetPlayerWeapons(player1);
  1945. SetPlayerCameraPos(player1,x+3,y,z); SetPlayerCameraLookAt(player1,x,y,z);
  1946. SetTimerEx("CarcelPlayer",1000,0,"d",player1);
  1947. }
  1948. //=========----------------------=========//
  1949. forward CarcelPlayer(player1);
  1950. public CarcelPlayer(player1)
  1951. {
  1952. TogglePlayerControllable(player1,true);
  1953. SetPlayerPos(player1,197.6661,173.8179,1003.0234);
  1954. ResetPlayerWeapons(player1);
  1955. SetPlayerInterior(player1,3);
  1956. SetCameraBehindPlayer(player1);
  1957. CarcelTimer[player1] = SetTimerEx("SacarCarcel",PlayerInfo[player1][CarcelTiempo],0,"d",player1);
  1958. PlayerInfo[player1][Carcel] = 1;
  1959. }
  1960.  
  1961. //=====================[Conteo]=====================//
  1962. forward Conteo5(playerid);
  1963. forward Conteo4(playerid);
  1964. forward Conteo3(playerid);
  1965. forward Conteo2(playerid);
  1966. forward Conteo1(playerid);
  1967. forward ConteoGo(playerid);
  1968. public Conteo5(playerid)
  1969. {
  1970. SetTimerEx("Conteo4", 1000, false, "d", playerid);
  1971. for(new i = 0; i < MAX_PLAYERS; i++)
  1972. {
  1973. PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
  1974. }
  1975. GameTextForAll("~r~5!", 1000, 4);
  1976. return 1;
  1977. }
  1978.  
  1979. public Conteo4(playerid)
  1980. {
  1981. SetTimerEx("Conteo3", 1000, false, "d", playerid);
  1982. for(new i = 0; i < MAX_PLAYERS; i++)
  1983. {
  1984. PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
  1985. }
  1986. GameTextForAll("~g~4!", 1000, 4);
  1987. return 1;
  1988. }
  1989.  
  1990. public Conteo3(playerid)
  1991. {
  1992. SetTimerEx("Conteo2", 1000, false, "d", playerid);
  1993. for(new i = 0; i < MAX_PLAYERS; i++)
  1994. {
  1995. PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
  1996. }
  1997. GameTextForAll("~b~3!", 1000, 4);
  1998. return 1;
  1999. }
  2000.  
  2001. public Conteo2(playerid)
  2002. {
  2003. SetTimerEx("Conteo1", 1000, false, "d", playerid);
  2004. for(new i = 0; i < MAX_PLAYERS; i++)
  2005. {
  2006. PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
  2007. }
  2008. GameTextForAll("~y~2!", 1000, 4);
  2009. return 1;
  2010. }
  2011.  
  2012. public Conteo1(playerid)
  2013. {
  2014. SetTimerEx("ConteoGo", 1000, false, "d", playerid);
  2015. for(new i = 0; i < MAX_PLAYERS; i++)
  2016. {
  2017. PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
  2018. }
  2019. GameTextForAll("~p~1!", 1000, 4);
  2020. return 1;
  2021. }
  2022.  
  2023. public ConteoGo(playerid)
  2024. {
  2025. Conteo = 0;
  2026. for(new i = 0; i < MAX_PLAYERS; i++)
  2027. {
  2028. PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  2029. }
  2030. GameTextForAll("~g~G~g~o~w~o~r~o~p~!", 1500, 4);
  2031. return 1;
  2032. }
  2033.  
  2034. stock JugadorEnBici(playerid)
  2035. {
  2036. if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  2037. {
  2038. if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 481 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 509 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 510) return 1;
  2039. }
  2040. return 0;
  2041. }
  2042. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  2043. {
  2044. if ((oldkeys & (KEY_ACTION | KEY_ACTION)) == (KEY_ACTION | KEY_ACTION))
  2045. {
  2046. if(SaltosBici[playerid] == 1 && JugadorEnBici(playerid))
  2047. {
  2048. new Float:x,Float:y,Float:z;
  2049. GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z);
  2050. SetTimerEx("SaltosBiciTimer",150,0,"d",playerid);
  2051. SaltosBici[playerid] = 2;
  2052. }
  2053. }
  2054. return 0;
  2055. }
  2056. forward SaltosBiciTimer(playerid);
  2057. public SaltosBiciTimer(playerid)
  2058. {
  2059. if(IsPlayerConnected(playerid) && JugadorEnBici(playerid))
  2060. {
  2061. if(SaltosBici[playerid] == 2)
  2062. {
  2063. new Float:x,Float:y,Float:z;
  2064. GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z);
  2065. if(z < 0) return SaltosBici[playerid] = 1;
  2066. SetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z+(z*4));
  2067. SetTimerEx("SaltosBiciTimer",4000,0,"d",playerid);
  2068. SaltosBici[playerid] = 3;
  2069. }
  2070. else if(SaltosBici[playerid] == 3) SaltosBici[playerid] = 1;
  2071. }
  2072. return 1;
  2073. }
  2074. public OnPlayerStateChange(playerid, newstate, oldstate)
  2075. {
  2076. if(newstate == PLAYER_STATE_ONFOOT)
  2077. {
  2078. if(SaltosBici[playerid] > 1) SaltosBici[playerid] = 1;
  2079. }
  2080. return 1;
  2081. }
  2082.  
Advertisement
Add Comment
Please, Sign In to add comment