Advertisement
Guest User

Echo LA

a guest
Jun 25th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 37.30 KB | None | 0 0
  1. const ICOL_WHITE = "0";
  2. const ICOL_BLACK = "1";
  3. const ICOL_BLUE = "2";
  4. const ICOL_GREEN = "3";
  5. const ICOL_RED = "4";
  6. const ICOL_BROWN = "5";
  7. const ICOL_PURPLE = "6";
  8. const ICOL_ORANGE = "7";
  9. const ICOL_YELLOW = "8";
  10. const ICOL_LGREEN = "9";
  11. const ICOL_CYAN = "10";
  12. const ICOL_LCYAN = "11";
  13. const ICOL_LBLUE = "12";
  14. const ICOL_PINK = "13";
  15. const ICOL_GREY = "14";
  16. const ICOL_LGREY = "15";
  17.  
  18. print( "Echo Loaded" );
  19.  
  20. /*
  21. Squirrel IRC Bot - Version 1
  22. */
  23.  
  24. const FBS_NICK = "LA";
  25. const FBS_BPASS = "LABot";
  26. const FBS_SERVER = "91.121.134.5";
  27. const FBS_PORT = 6667;
  28. const FBS_CHAN = "#LA";
  29. const FBS_CPASS = "LABot"; // The password for that channel, if there isnt one leave it as "".
  30.  
  31. class FBSLIST
  32. {
  33. // This is how we are going to store the user level information for each nick currently on the channel
  34. Name = null;
  35. Level = 1;
  36. }
  37.  
  38. function FBSLIST::AddNick( szNick, iAdmin )
  39. {
  40. Name = szNick;
  41. Level = iAdmin;
  42. }
  43.  
  44. function ActivateEcho()
  45. {
  46. print( "Confirming echo bot details..." );
  47. FBS_BOT <- NewSocket( "FBSProcess" );
  48.  
  49. FBS_BOT.Connect( FBS_SERVER, FBS_PORT );
  50. FBS_BOT.SetNewConnFunc( "FBSLogin" );
  51. print( "Bot details confirmed!" );
  52.  
  53. FBS_NICKS <- array( 50, null );
  54. }
  55.  
  56. function DisconnectBots()
  57. {
  58. print( "Disconnecting bot from IRC..." );
  59.  
  60. FBS_BOT.Send( "QUIT " + FBS_NICK + "\n" );
  61. FBS_BOT.Delete();
  62.  
  63. print( FBS_NICK + " has succesfully disconnected from IRC." );
  64. }
  65.  
  66. function FBSLogin()
  67. {
  68. print( "Attempting to set user, nick and mode...." );
  69. // Set the bots name and real name
  70. FBS_BOT.Send( "USER " + FBS_NICK + " 0 * :[RD]Latino America\n" );
  71. // Set the nick that the bot will use on the irc server
  72. FBS_BOT.Send( "NICK " + FBS_NICK + "\n" );
  73. // Set it so that the network classes the bot as a bot
  74. FBS_BOT.Send( "MODE " + FBS_NICK + " +B\n" );
  75. print( "Task completed successfully." );
  76. }
  77.  
  78. function FBSProcess( sz )
  79. {
  80. // This function is used to process the raw data that the bot is recieving from the irc server
  81. local raw = split( sz, "\r\n" ), a, z = raw.len(), line;
  82.  
  83. for ( a = 0; a < z; a++ )
  84. {
  85. line = raw[ a ];
  86.  
  87. local FBS_PING = GetTok( line, " ", 1 ), FBS_EVENT = GetTok( line, " ", 2 ), FBS_CHANEVENT = GetTok( line, " ", 3 ),
  88. Count = NumTok( line, " " ), Nick, Command, Prefix, Text;
  89.  
  90. // The most important thing is making sure that the bot stays connected to IRC
  91. if ( FBS_PING ) FBS_BOT.Send( "PONG " + FBS_PING + "\n" );
  92.  
  93. if ( FBS_EVENT == "001" )
  94. {
  95. if ( FBS_BOT )
  96. {
  97. // Identify the bot with services, comment this line if its not registered
  98. FBS_BOT.Send( "PRIVMSG NickServ IDENTIFY " + FBS_BPASS + "\n" );
  99. // Set it so that the network classes the bot as a bot
  100. FBS_BOT.Send( "MODE " + FBS_NICK + " +B\n" );
  101. // Make the bot join the specified channel
  102. FBS_BOT.Send( "JOIN " + FBS_CHAN + " " + FBS_CPASS + "\n" );
  103.  
  104.  
  105.  
  106. // The bot now needs to collect information about users in the channel
  107.  
  108. print( "Succesfully joined " + FBS_CHAN + "!" );
  109. Message("[#22AA88][NEWS] [#ffffff]IRC BOT [#AC9000]#la [#ffffff]Is Online")
  110. EchoMessage("Hoooooooolaaaaaaaaaaaaaaaaaaaaaaaaaaa estoy aqui XDDD")
  111. }
  112. }
  113. else if ( FBS_EVENT == "353" ) FBSSortNicks( sz );
  114. else if ( ( FBS_EVENT == "MODE" ) || ( FBS_EVENT == "NICK" ) || ( FBS_EVENT == "JOIN" ) || ( FBS_EVENT == "PART" ) || ( FBS_EVENT == "QUIT" ) ) FBS_BOT.Send( "NAMES :" + FBS_CHAN + "\n" );
  115. if ( FBS_CHANEVENT == FBS_CHAN )
  116. {
  117. // Grab the nick
  118. Nick = GetTok( line, "!", 1 ).slice( 1 );
  119. // Figure out what the command is
  120. Command = GetTok( line, " ", 4 );
  121. // Figure out what prefix was used
  122.  
  123. Prefix = Command.slice( 1 );
  124. Command = Command.slice( 1 );
  125.  
  126. // Figure out the text after the command
  127. if ( NumTok( line, " " ) > 4 ) Text = GetTok( line, " ", 5, Count );
  128. else Command = split( Command, "\r\n" )[ 0 ];
  129.  
  130. // Parse the command
  131. /*
  132. if ( ( Prefix == "!" ) && ( Count > 4 ) ) FBSIrcCommand( Nick, Command.tolower(), Text );
  133. else if ( ( Prefix == "!" ) && ( Count == 4 ) ) FBSIrcCommand( Nick, Command.tolower(), null );
  134.  
  135. */
  136. if (Nick && Command && Text) { FBSIrcCommand( Nick, Command, Text ); }
  137. else if (Nick && Command) { FBSIrcCommand( Nick, Command, null ); }
  138.  
  139. }
  140. }
  141. }
  142. function LevelTag(lvl) {
  143. lvl = (lvl ? lvl:0);
  144. switch (lvl) {
  145. case 2:
  146. return "Usuario";
  147. case 3:
  148. return "VIP";
  149. case 4:
  150. return "Moderador";
  151. case 5:
  152. return "Admin";
  153. case 6:
  154. return "Jefe";
  155. default:
  156. return "Major";
  157. }
  158. }
  159.  
  160. function lLevelTag(lvl) {
  161. lvl = (lvl ? lvl:0);
  162. switch (lvl) {
  163. case 2:
  164. return "11";
  165. case 3:
  166. return "7";
  167. case 4:
  168. return "3";
  169. case 5:
  170. return "4";
  171. case 6:
  172. return "12";
  173. default:
  174. return "5";
  175. }
  176. }
  177.  
  178. function FBSIrcCommand( user, cmd, text )
  179. {
  180. // none of this needs to be touched, it is to do with getting channel levels
  181. local NickInfo = FindNick( user ), level, tLevel;
  182. local s = 0, plr;
  183. if ( text ) { s = NumTok( text, " " ); plr = FindPlayer( text ); }
  184.  
  185. if ( NickInfo ) level = NickInfo.Level.tointeger();
  186. //---------------------------------------------------------------------------
  187.  
  188. if (cmd) {
  189. if (cmd.slice(0,1) == "." && cmd.len() > 1)
  190.  
  191. {
  192. local msg = "" + user + ": " + cmd.slice(1);
  193. if (text) msg = msg + " " + text;
  194. EchoMessage("[IRC] "+msg+"");
  195. Message("[#0000CC][IRC] [#ffffff]"+msg);
  196. print("[IRC]"+msg)
  197. }
  198. }
  199.  
  200.  
  201. // these are two example commands that you can base your other commands off.
  202.  
  203. if ( cmd == "!script" )
  204. {
  205. EchoMessage("[RD]Latino America" );
  206. EchoMessage("Developed by Hendrix Credits: kennedyarz" );
  207. }
  208.  
  209. else if ( cmd == "!cmds" ) { EchoMessage("Commands: !players, !forum, !admin, !ping, !hp, !script" ); }
  210. else if ( cmd == "!forum" ) { EchoMessage("Visita: la-vcmp.ddns.net" ); }
  211.  
  212. else if ( cmd == "!players" )
  213. {
  214. local b = null, c = false;
  215. for ( local count = GetPlayers(), a = 0, plr; count && a < GetMaxPlayers(); a++ )
  216. {
  217. if ( !( plr = FindPlayer( a ) ) ) continue;
  218.  
  219. if ( plr )
  220. {
  221. if ( b ) b=b+", 4["+plr.ID+"] 14"+plr.Name
  222. else b = "4["+plr.ID+"] 14"+plr.Name
  223. count--;
  224. c = true;
  225. }
  226. }
  227. if ( c == true ) EchoMessage( "2> 1Players: 1[" + GetPlayers() + "/" + GetMaxPlayers() + "] " + " - " + b );
  228. else EchoMessage( "1> Players: [ There are no players ]" );
  229. }
  230.  
  231. else if ( ( cmd == "!admin" ) || ( cmd == "!admins" ) )
  232. {
  233. local plr, b;
  234. for( local i = 0; i <= GetMaxPlayers(); i++ )
  235. {
  236. plr = FindPlayer( i );
  237. if ( ( plr ) && ( status[ plr.ID ].Level >= 3 ) )
  238. {
  239. if ( b ) b = b + ", " + plr.Name + " (Level: " + status[ plr.ID ].Level + ")"
  240. else b = plr.Name + " Level: " + status[ plr.ID ].Level + ")"
  241. }
  242. }
  243. if ( b ) EchoMessage( "** Admins Online: [ " + b + " ]" );
  244. else EchoMessage( "** No Admins Online." );
  245. }
  246.  
  247. else if ( cmd == "!ping" )
  248. {
  249. if ( !text ) EchoMessage( "Syntax: " + cmd + " <Nick/ID> " );
  250. else
  251. {
  252. local plr = GetPlayer( GetTok( text, " ", 1 ) );
  253. if ( !plr ) EchoMessage( "Invalid Player..." );
  254. EchoMessage( "5" + plr.Name + " Ping: " + plr.Ping + ". " );
  255. }
  256. }
  257.  
  258. else if ( cmd == "!hp" )
  259. {
  260. if ( !text ) EchoMessage("Error - Syntax: " + cmd + " <Nick/ID>");
  261. else
  262. {
  263. local plr = GetPlayer( GetTok( text, " ", 1 ) );
  264. if ( !plr ) EchoMessage("Error - Invalid Nick/ID");
  265. EchoMessage("["+plr.ID+"] "+plr+" Health:[ "+plr.Health+"'% ]");
  266. Message("["+plr.ID+"] "+plr+" Health:[ "+plr.Health+"'% ]");
  267. }
  268. }
  269.  
  270. else if ( cmd == "!ann" )
  271. {
  272. if ( level < 3 ) EchoNotice( user,"Error - Your Level is not Enough." );
  273. else if ( !text ) EchoNotice( user,"Error - Syntax: " + cmd + " <Nick/ID> <Message> ");
  274. else
  275. {
  276. local plr = GetPlayer( GetTok( text, " ", 1 ) );
  277. if ( !plr ) EchoNotice( user, "Unknow Player.." );
  278. else
  279. {
  280. local msg = GetTok( text, " ", 2,NumTok( text, " "));
  281. Announce( msg, plr, 3 );
  282. EchoMessage("Sent Announcement:[ " + msg + " ] to:[ " + plr.Name + " ]" );
  283. }
  284. }
  285. }
  286.  
  287. else if(cmd=="!racers")
  288. {
  289. local plr, b;
  290. for( local i = 0; i <= GetMaxPlayers(); i++ )
  291. {
  292. plr = FindPlayer( i );
  293. if ( ( plr ) && ( status[plr.ID].raceplayer == true ))
  294. {
  295. if ( b ) b = b + ", " + plr.Name + ""
  296. else b = plr.Name + ""
  297. }
  298. }
  299. if ( b )
  300. {
  301. EchoMessage( "[RACERS] [#FFFFFF]Jugadores compitiendo: " + b,player );
  302. }
  303. else if ( !b )
  304. {
  305. EchoMessage( "[RACERS] No hay una carrera registrada");
  306. }
  307. }
  308.  
  309. //=========================================== ADMIN COMANDOS ================================================//
  310.  
  311.  
  312. else if( cmd == "!bans" || cmd == "!banlist" || cmd == "!listaban" )
  313. {
  314. if ( level < 2 ) EchoNotice( user,"Error - Tu level no es acto para este comando." );
  315. else
  316. {
  317. local listQuery = QuerySQL( db, "SELECT * FROM `Bans`" );
  318. local count = 0;
  319. while ( GetSQLNextRow( listQuery ) )
  320. {
  321. count++;
  322. EchoNotice(user,"[BAN-#" + count + "]: Nombre: " + GetSQLColumnData( listQuery, 0 ) + ", Admin: " + GetSQLColumnData( listQuery, 2 ) + ", Motivo: " + GetSQLColumnData( listQuery, 3 ) + ", Fecha: " + GetSQLColumnData( listQuery, 4 ));
  323. }
  324. FreeSQLQuery( listQuery );
  325. if( count == 0 ) return EchoNotice( "[BLIST]: No hay jugadores prohibidos!", player );
  326. }
  327. }
  328.  
  329. else if ( cmd == "!alias" )
  330. {
  331. if ( level < 2 ) EchoNotice( user,"[ACC] No tienes acceso a este comando")
  332. else if ( !text ) EchoNotice( user,"[CMD] Syntax: /" + cmd + " <Nick/ID>");
  333. else
  334. {
  335. local plr = GetPlayer( text );
  336. if ( !plr ) EchoNotice( user,"Unknown Player.");
  337. else ShowAliaseEcho( user, plr, "ip" ), ShowAliaseEcho( user, plr, "uid" ), ShowAliaseEcho( user, plr, "subnet" );
  338. }
  339. }
  340.  
  341. else if( cmd == "!bansuid" )
  342. {
  343. if ( level < 2 ) EchoNotice( user,"Error - Tu level no es acto para este comando." );
  344. else
  345. {
  346. local listQuery = QuerySQL( db, "SELECT * FROM `UIDs`" );
  347. local count = 0;
  348. while ( GetSQLNextRow( listQuery ) )
  349. {
  350. count++;
  351. EchoNotice(user,"[BAN-#" + count + "]: Nombre: " + GetSQLColumnData( listQuery, 0 ) + ", Admin: " + GetSQLColumnData( listQuery, 4 ) + ", Fecha: " + GetSQLColumnData( listQuery, 5 )+", hasta: " + GetSQLColumnData( listQuery, 6 )+", razon: " + GetSQLColumnData( listQuery, 7 )+".");
  352. }
  353. FreeSQLQuery( listQuery );
  354. if( count == 0 ) return EchoNotice( user,"[BLIST]: No hay jugadores prohibidos!");
  355. }
  356. }
  357.  
  358. //========= C O M A N D O S L E V E L 3 =============//
  359.  
  360. else if ( cmd == "!annall" )
  361. {
  362. if ( level < 3 ) EchoNotice( user,"Error - Your level is not high enough to use that command." );
  363. else if ( !text ) EchoNotice( user,"Error Syntax: " + cmd + " <Message>");
  364. else
  365. {
  366. local msg = GetTok( text, " ", 2,NumTok( text, " "));
  367. AnnounceAll( text, 3);
  368. EchoMessage( VERDE + " " + user + " Sent Announcement to all players in game. Message:[ " + text + " ]" );
  369. }
  370. }
  371.  
  372. else if ( cmd == "!kick" )
  373. {
  374. if ( level < 3 ) EchoNotice( user,"Error - Your level is not high enough to use that command." );
  375. else if ( !text ) EchoNotice( user,"Error Syntax: " + cmd + " <name> <reason>");
  376. else
  377. {
  378. local plr = GetPlayer( GetTok( text, " ", 1 ) );
  379. if ( !plr ) EchoNotice( user,"Jugador desconocido");
  380. else
  381. {
  382. local motivo = GetTok( text, " ", 2 NumTok( text, " " ) );
  383. if ( motivo == null ) EchoNotice(user,"escribir la razon")
  384. else{
  385. Message("[#00FFFF][KICK] [#FFFFFF]Admin [#00FFFF]" + user + " [#FFFFFF]Pateo a [#00FFFF]"+plr.Name+" [#ffffff]razon: [#00FFFF]"+motivo);
  386. EchoMessage( "4>> [KICK] " + user + " expulso a " + plr.Name + ". Motivo: " + motivo + "." );
  387. KickPlayer( plr );
  388. }
  389. }
  390. }
  391. }
  392.  
  393. else if( cmd == "!mute" || cmd == "!silenciar" || cmd == "!muted" || cmd == "!callar" )
  394. {
  395. if( level < 3 ) EchoNotice( user,"[ERROR] No tienes acceso a este comando")
  396. else if(!text) EchoNotice( user,"[ERROR] Use /"+cmd+" <player/id> <minutos>")
  397. else
  398. {
  399. local plr = GetPlayer(GetTok(text, " ", 1));
  400. if (!plr) EchoNotice( user,"[MUTE] El ciudadano no existe.");
  401. else if( Multa[plr.ID] > 1 ) EchoNotice( user,"[ERROR] ]Jugador ya esta pagando condena")
  402. else
  403. {
  404. local time = GetTok(text, " ", 2 NumTok(text, " "));
  405. if (!time) MessagePlayer("[#00CCCC][MUTE] [#FFFFFF] Error, debes fijar un tiempo", player);
  406. else if ( !IsNum( time ) ) E_MSG( "Use numeros o use'todo'.", player );
  407. else
  408. {
  409. local Mins = time.tofloat()*60;
  410. Multa[plr.ID] = Mins
  411. Message("[#00FFFF][MUTE] [#FFFFFF]Admin [#00FFFF]" + user + " [#FFFFFF]silencio a [#00FFFF]" + plr.Name + " [#FFFFFF]tiempo [#00FFFF]" + time + " minutos.");
  412. EchoMessage("[MUTE] Admin " + user + " silencio a " + plr.Name + " tiempo: " + time + " minutos")
  413. QuerySQL( db, "INSERT INTO MUTEDs ( NOMBRE, UID, UID2, IP, ADMIN, DATA, TIME ) VALUES ( '" + plr.Name + "', '" + plr.UniqueID + "', '" + plr.UID2 + "', '"+plr.IP+"', '"+user+"', '" + GetFullTime() + "', '"+time+"' )")
  414. }
  415. }
  416. }
  417. }
  418.  
  419. else if( cmd == "!unmute" )
  420. {
  421. if( level < 3 ) EchoNotice( user,"Error - Tu level no es acto para este comando." );
  422. else if(!text) EchoNotice(user,"[ERROR] [#FFFFFF]Use /"+cmd+" <player/id>")
  423. else
  424. {
  425. local plr = GetPlayer(GetTok(text, " ", 1));
  426. if (!plr) EchoNotice(user"[MUTE] [#FFFFFF]El ciudadano no existe.");
  427. else if( Multa[plr.ID] < 1 ) EchoNotice(user"[ERROR] ]Jugador no esta pagando condena")
  428. else
  429. {
  430. Multa[plr.ID] = 0;
  431. Message("[#00FFFF][UN-MUTE] [#FFFFFF]Admin [#00FFFF]" + user + " [#FFFFFF]quito silencio a [#00FFFF]" + plr.Name + ".");
  432. EchoMessage("[UN-MUTE] Admin " + user + " quito silencio a " + plr.Name + "")
  433. QuerySQL( db, "DELETE FROM MUTEDs WHERE NOMBRE LIKE '" + plr.Name + "'" );
  434. }
  435. }
  436. }
  437.  
  438. else if( cmd == "!jail" || cmd == "!enjaular" || cmd == "!castigar" )
  439. {
  440. if( level < 3 ) EchoNotice(user,"[ERROR] No tienes acceso a este comando")
  441. else if(!text) EchoNotice(user,"[ERROR] Use /"+cmd+" <player/id> <minutos>")
  442. else
  443. {
  444. local plr = GetPlayer(GetTok(text, " ", 1));
  445. if (!plr) EchoNotice(user,"[JAIL] El ciudadano no existe.");
  446. else if( Jail[plr.ID] > 1 ) EchoNotice(user,"[ERROR] [#FFFFFF]Jugador ya esta pagando condena")
  447. else
  448. {
  449. local time = GetTok(text, " ", 2 NumTok(text, " "));
  450. if (!time)EchoNotice(user,"[JAIL] Error, debes fijar un tiempo");
  451. else if ( !IsNum( time ) ) EchoNotice(user,"Use numeros o use'todo'.");
  452. else
  453. {
  454.  
  455. local Mins = time.tofloat()*60000;
  456.  
  457. gate2.MoveTo(Vector(384.108, -505.87, 9.65089), 2500);
  458. g = false;
  459. plr.Pos = Vector(381.9696, -505.1464, 9.3956);
  460.  
  461. PlaySound(1, 176, Vector(381.9696, -505.1464, 9.3956));
  462.  
  463. Message("[#00FFFF][JAIL] [#FFFFFF]Admin [#00FFFF]" + user + " [#FFFFFF]Encarcelo a [#00FFFF]" + plr.Name + " [#FFFFFF]tiempo [#00FFFF]" + time + " [#ffFFFF]minutos.");
  464. EchoMessage("[JAIL] Admin " + user + " encarcelo a " + plr.Name + " Tiempo: " + time + " minutos")
  465.  
  466. local MD = time.tofloat()*60;
  467. Jail[plr.ID]=MD;
  468. QuerySQL( db, "INSERT INTO JAILs ( NOMBRE, UID, UID2, IP, ADMIN, DATA, TIME ) VALUES ( '" + plr.Name + "', '" + plr.UniqueID + "', '" + plr.UID2 + "', '"+plr.IP+"', '"+user+"', '" + GetFullTime() + "', '"+Jail[plr.ID]+"' )")
  469. }
  470. }
  471. }
  472. }
  473.  
  474. else if ( cmd == "!unjail" || cmd == "!descarcelar" )
  475. {
  476. if( level < 3 ) EchoNotice(user,"[ERROR] No tienes acceso a este comando")
  477. else if(!text) EchoNotice(user,"[ERROR] Use /"+cmd+" <player/id>")
  478. else
  479. {
  480. local plr = GetPlayer(GetTok(text, " ", 1));
  481. if( Jail[plr.ID] < 1 ) EchoNotice(user,"[ERROR] Jugador no esta en la carcel")
  482. else
  483. {
  484. Message("[#CCCCCC][UNJAIL][#FFFFFF]Admin [#00FFFF]"+user+" [#FFFFFF]saco de la carcel a [#00FFFF]"+plr.Name)
  485. EchoMessage( "2[UNJAIL] Admin "+user+" saco de la carcel a "+plr.Name+"." )
  486. Message("[#CCCCCC][UNJAIL] [#CC00CC]"+plr.Name+" [#FFFFFF]ha salido de prision");
  487. EchoMessage( "2[UNJAIL] "+plr.Name+" ha salido de prision." )
  488. Jail[plr.ID]=0;
  489. PlaySound( 1 , 176 , Vector(381.9696, -505.1464, 9.3956) );
  490. plr.Pos = Vector(385.448,-507.137,9.39869);
  491. Announce("", plr, 0);
  492. QuerySQL( db, "DELETE FROM JAILs WHERE NOMBRE LIKE '" + plr.Name + "'" );
  493. }
  494. }
  495. }
  496.  
  497. else if ( cmd == "ahogar" )
  498. {
  499. if ( level < 3 ) EchoNotice( user,"[ERROR] Usted no tiene acceso a este comando ");
  500. else if ( !text ) EchoNotice( user," Use /ahogar <Nick/ID> <Motivo> " );
  501. else
  502. {
  503. local plr = GetPlayer( GetTok( text, " ", 1 ) );
  504. if ( !plr ) EchoNotice( user,"[DOWN] Jugador desconocido.");
  505. else
  506. {
  507. local msg = GetTok( text, " ", 2, NumTok( text, " " ) );
  508. if ( !msg ) EchoNotice( user,"[DOWN] use /"+cmd+" <"+plr+"> <motivo>.");
  509. else
  510. {
  511. Message("[#00FFFF][AHOGA] [#FFFFFF]Admin [#00FFFF]" + player.Name + " [#FFFFFF]Ahogo a [#00FFFF]" + plr.Name + " [#FFFFFF]razon [#00FFFF]" + msg + ".");
  512. EchoMessage("[AHOGA] Admin " + player.Name + " Ahogo a " + plr.Name + " razon " + msg + ".");
  513. plr.Pos = Vector( 283.521 , -1574.3 , 7.19846 );
  514. }
  515. }
  516. }
  517. }
  518.  
  519. else if ( cmd == "!checkplr" || cmd == "!checkplayer" )
  520. {
  521. if ( level < 3 ) EchoNotice( user,"[ERROR] Usted no tiene acceso a este comando ");
  522. else if ( !text ) EchoNotice( user,"Error - Syntax: " + cmd + " <Nick/ID> ");
  523. else
  524. {
  525. local plr = GetPlayer( GetTok( text, " ", 1 ) );
  526. if ( !plr ) EchoNotice( user, "Jugador no esta en linea" );
  527. else
  528. {
  529. EchoNotice( user ,"[ACCOUNT-DATA] " + plr.Name + " | Cash: "+status[plr.ID].Dinheiro+" | Bank balance "+status[plr.ID].Banco+" | Level: "+status[plr.ID].Level+" | IP: "+plr.IP+"" );
  530. EchoNotice( user ,"[ACCOUNT-UID] "+plr.UID+"")
  531. EchoNotice( user ,"ACCOUNT-UID2] "+plr.UID2+"")
  532. }
  533. }
  534. }
  535.  
  536. else if ( cmd == "!dataplr" || cmd == "!dataplayer" )
  537. {
  538. if ( level < 2 ) EchoNotice( user,"Error - Your Level is not Enough." );
  539. else if ( !text ) EchoNotice( user,"Error - Syntax: " + cmd + " <Nombre Full>");
  540. else
  541. {
  542. local Nick = GetTok( text, " ", 1);
  543. local q = QuerySQL(db, "SELECT * FROM Contas WHERE Nome='" + Nick + "'");
  544. if (GetSQLColumnData(q, 0) != Nick) EchoNotice(user ,"[Error] " + Nick + "'s cuenta no existe.");
  545. else if ( GetSQLColumnData(q ,0 ) == null ) EchoNotice(user ,""+Nick+" No existe en la base de datos")
  546. else
  547. {
  548. local name = GetSQLColumnData(q, 0), level = GetSQLColumnData(q, 6), cash = GetSQLColumnData(q, 4), bank = GetSQLColumnData(q, 5), IP = GetSQLColumnData(q,1), UID = GetSQLColumnData(q,2);
  549. EchoNotice( user, "[INFO-PLR] Name: "+Nick+", Level: "+level+", Cash: "+cash+", Bank: "+bank+"." );
  550. EchoNotice( user, "IP: "+IP+"" );
  551. EchoNotice( user, "UID: "+UID+"" );
  552. }
  553. }
  554. }
  555.  
  556. //========= C O M A N D O S L E V E L 4 =============//
  557.  
  558. else if ( cmd == "!ban" )
  559. {
  560. if ( level < 4 ) EchoNotice( user,"Error - Tu level no es acto para este comando." );
  561. else if ( !text ) EchoNotice( user,"Error Syntax: " + cmd + " <name> <reason>");
  562. else
  563. {
  564. local plr = GetPlayer( GetTok( text, " ", 1 ) );
  565. if ( !plr ) EchoNotice( user,"Jugador desconocido");
  566. else
  567. {
  568. local motivo = GetTok( text, " ", 2 NumTok( text, " " ) );
  569. if ( motivo == null ) EchoNotice(user,"escribir la razon")
  570. else{
  571. QuerySQL( db, "INSERT INTO Bans ( Nome, UID, Admin, Motivo, Data ) VALUES ( '" + plr.Name + "', '" + plr.UniqueID + "', '" + user + "', '" + motivo + "', '" + GetFullTime() + "' )" );
  572. Message("[#00FFFF][BAN] [#FFFFFF]Admin [#00FFFF]"+user+" [#FFFFFF]prohibio a [#00FFFF]"+plr.Name+" [#ffffff]razon: [#00FFFF]"+motivo+"");
  573. EchoMessage( "4>> [BAN] " + user + " prohibio a " + plr.Name + " Motivo: " + motivo + "." );
  574. KickPlayer( plr );
  575. }
  576. }
  577. }
  578. }
  579.  
  580. else if ( cmd == "!unban" )
  581. {
  582. local q = QuerySQL(db, "SELECT * FROM Bans WHERE Nome='" + text + "'" );
  583. if ( level < 4 ) EchoNotice( user,"Error - Tu level no es acto para este comando." );
  584. else if ( !text ) EchoNotice( user,"Error Syntax: " + cmd + " <nombre completo>");
  585. else if ( GetSQLColumnData( q, 0 ) != text ) EchoMessage(user,text + " el no esta baneado.");
  586. else
  587. {
  588. QuerySQL( db, "DELETE FROM Bans WHERE Nome LIKE '" + text + "'" );
  589. MSG( "[#00FFFF][PACK-UNBANNED] [#FFFFFF]Admin [#00FFFF]" + user + " [#FFFFFF]Quito prohibicion [#00FFFF]" + text + "." );
  590. EchoMessage( "4>> [UNBAN] " + user + " quito prohibicion a " + text + "." );
  591. }
  592. }
  593.  
  594. else if(cmd=="!attban")
  595. {
  596. if ( level < 4 ) EchoNotice( user,"Usted no tiene acceso a este comando.");
  597. else if (!text) EchoNotice( user,"[Syntax] - /" + cmd + " <Nick Full>");
  598. else
  599. {
  600. local plr = GetPlayer(GetTok(text, " ", 1));
  601. local playerJ = GetTok( text, " ", 1);
  602. local motivo = GetTok(text, " ", 2 NumTok(text, " "));
  603. local q = QuerySQL(db, "SELECT * FROM Contas WHERE Nome='" + playerJ + "'");
  604. local q2 = QuerySQL(db, "SELECT * FROM Bans WHERE Nome='" + playerJ + "'");
  605. if (GetSQLColumnData(q, 0) != playerJ) EchoNotice(user,"[Error] - " + playerJ + "'s Cuenta no existe.", player);
  606. else if ( GetSQLColumnData(q ,0 ) == null ) EchoNotice( user,"Este jugador no existe")
  607. else if (plr) EchoNotice( user,"[ATT-BAN] Jugador en Linea. use /ban "+plr+".")
  608. else if(!motivo)EchoNotice( user,"[ERROR] Debes colocar el motivo")
  609. else if (GetSQLColumnData(q2, 0) == playerJ) EchoNotice(user,"[BAN] "+playerJ+" ya se encuentra prohibido")
  610. else
  611. {
  612. QuerySQL(db, "SELECT * FROM Contas WHERE Name='" + playerJ + "'");
  613. local name = GetSQLColumnData(q, 0), Ip = GetSQLColumnData(q, 1), UID = GetSQLColumnData(q, 2), Cash = GetSQLColumnData(q, 4), bank = GetSQLColumnData(q, 5), Level = GetSQLColumnData(q,6), Reg = GetSQLColumnData(q,7)
  614.  
  615. QuerySQL( db, "INSERT INTO Bans ( Nome, UID, Admin, Motivo, Data ) VALUES ( '" + name + "', '" + UID + "', '" + user + "', '"+motivo+"', '" + GetFullTime() + "' )" );
  616. Message("[#00FFFF][BAN] [#FFFFFF]Admin [#00FFFF]"+user+" [#FFFFFF]prohibio a [#00FFFF]"+name+" [#ffffff]razon: [#00FFFF]"+motivo+"");
  617. EchoMessage( "4>> [BAN] " + user + " prohibio a " + name + " Motivo: "+motivo+"" );
  618. }
  619. }
  620. }
  621.  
  622. else if ( cmd == "!banuid" )
  623. {
  624. if ( level < 4 ) EchoNotice( user,"Usted no tiene acceso a este comando.");
  625. else if(!text || NumTok(text, " ") < 3) EchoNotice(user,"Error: Use /"+cmd+" <player> <days 1 - 100> <reason>");
  626. else
  627. {
  628. local now = date();
  629. local dat = now.day + "/" + now.month + "/" + now.year + " " + now.hour + ":" + now.min + ":" + now.sec;
  630. local plr = GetPlayer( GetTok( text, " ", 1 ) );
  631. local reason = GetTok(text, " ", 3 NumTok(text, " "));
  632. if ( !plr ) EchoNotice( user,"Jugador Desconocido.");
  633. else if ( level < status[ plr.ID ].Level ) EchoNotice( user,"Usted no puede banear a alguien con nivel superior a usted." );
  634. else
  635. {
  636. QuerySQL( db, "INSERT INTO UIDs ( NOMBRE, UID, UID2, IP, ADMIN, DATA, TIME, RAZON ) VALUES ( '" + plr.Name + "', '" + plr.UniqueID + "', '" + plr.UID2 + "', '"+plr.IP+"', '"+user+"', '" + dat + "', '"+addbantime(GetTok(text, " ", 2).tointeger())+"', '"+reason+"' )")
  637. Message("[#00FFFF][BAN-UID] [#00FFFF]"+user+" [#FFFFFF]prohibio a [#00FFFF]"+plr.Name+" [#FFFFFF]Dias: [#00FFFF]"+(GetTok(text, " ", 2).tointeger())+" [#FFFFFF]razon: [#00FFFF]"+reason+"." )
  638. EchoMessage("4[BAN-UID] "+user+" prohibio a "+plr.Name+" Dias: "+(GetTok(text, " ", 2).tointeger())+" razon: "+reason+"." )
  639. plr.Kick();
  640. }
  641. }
  642. }
  643.  
  644. else if ( cmd == "!unbanuid" )
  645. {
  646. local q = QuerySQL(db, "SELECT * FROM UIDs WHERE NOMBRE='" + text + "'" );
  647. if ( level < 4 ) EchoNotice( user,"Error - Tu level no es acto para este comando." );
  648. else if ( !text ) EchoNotice( user,"Error Syntax: " + cmd + " <nombre completo>");
  649. else if ( GetSQLColumnData( q, 0 ) != text ) EchoMessage(user,text + " el no esta baneado.");
  650. else
  651. {
  652. QuerySQL( db, "DELETE FROM UIDs WHERE NOMBRE LIKE '" + text + "'" );
  653. MSG( "[#00FFFF][PACK-UNBANNED] [#FFFFFF]Admin [#00FFFF]" + user + " [#FFFFFF]Quito prohibicion a " + text + "." );
  654. EchoMessage( "4>> [UNBAN] " + user + " quito prohibicion de UID a " + text + "." );
  655. }
  656. }
  657.  
  658. //========= C O M A N D O S L E V E L 5 =============//
  659.  
  660. else if( cmd == "!changenick" || cmd == "!setnick" )
  661. {
  662. if( level < 5 ) EchoNotice( user,"[ACC] No puedes usar este comando")
  663. else if ( level < 3 ) EchoNotice( user,"[ACC]Tu level de administracion no es suficiente para utlizar este comando");
  664. else if( !text ) EchoNotice( user,"[REPORT] /"+cmd+" <Nombre/ID> <NewNick>")
  665. else
  666. {
  667. local plr = GetPlayer(GetTok(text, " ", 1));
  668. if (!plr) EchoNotice( user,"[SET-NICK] Jugador Invalido. no existe.");
  669. else
  670. {
  671. local NewNick = GetTok(text, " ", 2 NumTok(text, " "));
  672. if ( !NewNick ) EchoNotice( user,"[SET-NICK] [#FFFFFF] Error, debes escribir el nuevo nick");
  673. else
  674. {
  675. local q = QuerySQL(db, "SELECT * FROM Contas WHERE Nome='" + NewNick + "'");
  676. if (GetSQLColumnData(q, 0) == null)
  677. {
  678. QuerySQL( db, "UPDATE Alias SET Name='"+NewNick+"' WHERE Name='"+plr.Name+"'");
  679. QuerySQL( db, "UPDATE Bans SET Nome='"+NewNick+"' WHERE Nome='"+plr.Name+"'");
  680. QuerySQL( db, "UPDATE Carros SET Dono='"+NewNick+"' WHERE Dono='"+plr.Name+"'");
  681. QuerySQL( db, "UPDATE Locs SET Criador='"+NewNick+"' WHERE Criador='"+plr.Name+"'");
  682. QuerySQL( db, "UPDATE Reports SET Reportador='"+NewNick+"' WHERE Reportador='"+plr.Name+"'");
  683. QuerySQL( db, "UPDATE SpawnWep SET Nome='"+NewNick+"' WHERE Nome='"+plr.Name+"'");
  684. QuerySQL( db, "UPDATE Contas SET Nome='" + NewNick + "' WHERE Nome='" + plr.Name + "'" );
  685. QuerySQL( db, "UPDATE Props SET Nome='" + NewNick + "' WHERE OWNER='" + plr.Name + "'" );
  686. MessagePlayer("[#CCCCCC][SET-NICK] [#FF1111]"+user+" [#FFFFFF]Cambio tu Nick para [#FF1111]"+NewNick+"[#FFFFFF].",plr)
  687. Message("[#00FFFF][SET-NICK] [#FFFFFF]Admin [#00FFFF]"+user+" [#FFFFFF]cambio el nombre de [#00FFFF]"+plr.Name+" [#ffffff]ha [#00FFFF]"+NewNick+"[#FFFFFF].")
  688. EchoMessage("[SET-NICK] Admin "+user+" Cambio el nombre a "+plr.Name+"");
  689. plr.Name = ""+NewNick+"";
  690. GiveDataPlr( plr );
  691. }
  692. else if(GetSQLColumnData(q, 0) != null)
  693. {
  694. EchoNotice( user,"[SET-NICK] El Nombre: "+NewNick+" ya existe en la DataBase Use otro nombre")
  695. }
  696. else return 0;
  697. }
  698. }
  699. }
  700. }
  701.  
  702.  
  703. //========= C O M A N D O S L E V E L 6 =============//
  704.  
  705. else if ( cmd == "!setlevel" )
  706. {
  707. if ( level < 6 ) EchoNotice(user,"Usted no tiene acceso a este comando.");
  708. else if ( !text ) EchoNotice(user,"sintaxe "+ cmd + " <Nick/ID> <Level>");
  709. else
  710. {
  711. local plr = GetPlayer( GetTok( text, " ", 1 ) );
  712. if ( !plr ) EchoNotice(user,"Jugador Desconocido.");
  713. else if ( Checar( user, plr ) ) return 0;
  714. else
  715. {
  716. local lvl = GetTok( text, " ", 2 );
  717. if ( !lvl ) EchoNotice(user,"sintaxe "+ cmd + " <Nick/ID> <Level>");
  718. else if ( !IsNum( lvl ) ) EchoNotice(user "Use Numeros.");
  719. else
  720. {
  721. status[ plr.ID ].Level = lvl.tointeger();
  722. EchoMessage("[SET-LEVEL]Admin "+user+" cambio el nivel de " + plr.Name + " para: " + lvl + " - " + LevelTag( plr ) + ".");
  723. Message("[#00FFFF][SET-LEVEL] [#FFFFFF]Admin [#00FFFF]"+player.Name+" [#FFFFFF]cambio el nivel de [#00FFFF]" + plr.Name + " [#FFFFFF]para: [#00FFFF]" + lvl + " [#FFFFFF]- [#00FFFF]" + LevelTag( plr ) + ".");
  724. EchoNotice(user,"usted cambio level de "+plr.Name);
  725. I_MSG( "[#00FFFF][SET-LEVEL] [#FFFFFF]Admin [#00FFFF]" + user + " [#ffFFFF]cambio su nivel a: [#00FFFF]" + lvl + " - " + LevelTag( plr ) + ".", plr );
  726. if ( plr.Name == "[OSK]KaOtiV" ) status[ plr.ID ].Level--;
  727. }
  728. }
  729. }
  730. }
  731.  
  732. else if ( cmd == "!changestats" )
  733. {
  734. if ( level < 6 ) EchoNotice(user,"[ERROR] No tienes el nivel suficiente para realizar este comando");
  735. else if (!text) EchoNotice(user,"[ERROR] Use /"+cmd+" <player/ID> <kills> <deaths>")
  736. else
  737. {
  738. local plr = GetPlayer( GetTok( text, " ", 1 ) );
  739. local kills = GetTok( text, " ", 2);
  740. local deaths = GetTok( text, " ", 3);
  741.  
  742. if ( !plr ) EchoNotice(user,"[ERROR] Jugador Invalido");
  743. else if (!kills) EchoNotice(user,"[ERROR] Use /"+cmd+" <"+plr.Name+"> <kills> <deaths>")
  744. else if (!deaths) EchoNotice(user,"[ERROR] Use /"+cmd+" <"+plr.Name+"> <"+kills+"> <deaths>")
  745. else if ( !IsNum( kills ) ) EchoNotice(user,"[ERROR] Los kills solo aplican en numeros")
  746. else if ( !IsNum( deaths ) ) EchoNotice(user,"[ERROR] Los deaths solo aplican en numeros",player)
  747. else
  748. {
  749. Message("[#FF0000][CHANGE-STATS] [#ffffff]Admin [#00FFFF]"+user+" [#FFFFFF]Cambio las stats de [#00FFFF]"+plr.Name+". [#FFFFFF]Kills: [#00FFFF]"+kills+" [#FFFFFF]Deaths: [#00FFFF]"+deaths+"[#FFFFFF].")
  750. EchoMessage("[CHANGE-STATS] Admin "+user+" Cambio las stats de "+plr.Name+". Kills: "+kills+" Deaths: "+deaths+".")
  751. QuerySQL( db, "UPDATE Contas SET Matou='"+kills+"', Morreu='"+deaths+"' WHERE Nome='" + plr.Name + "'" );
  752. status[plr.ID].Matou = kills.tointeger();
  753. status[plr.ID].Morreu = deaths.tointeger();
  754. MessagePlayer("[#FF0000][CHANGE-STATS] [#FFFFFF]Admin [#00FFFF]"+player.Name+" [#FFFFFF]Cambio tus stats por ([#00ffff] "+kills+" [#FFFFFF]Kills) y ([#00ffff] "+deaths+" [#FFFFFF]Deaths).",plr)
  755. GiveDataPlr( plr );
  756. }
  757. }
  758. }
  759.  
  760. //====================== F I N =======================//
  761.  
  762. else if( cmd == "!acmds" )
  763. {
  764. if ( level < 2 ) EchoNotice( user,"Error - Tu level no es acto para este comando." );
  765. else
  766. {
  767. if( level > 1 ) EchoNotice( user,"4[ACMDS-LV2] !bans, !bansuid, !alias")
  768. if( level > 2 ) EchoNotice( user,"4[ACMDS-LV3] !annall, kick, !mute, unmute, !jail, !unjail, !ahogar")
  769. if( level > 3 ) EchoNotice( user,"4[ACMDS-LV4] !ban, !unban, !attban, !banuid, !unbanuid, !checkplr, !dataplr")
  770. if( level > 4 ) EchoNotice( user,"4[ACMDS-LV5] !setnick, !changestats")
  771. if( level > 5 ) EchoNotice( user,"4[ACMDS-LV6] !setlevel, !")
  772. }
  773. }
  774.  
  775. }
  776.  
  777. //============================= FUNCIONES ====================================//
  778. function EMessage( text )
  779. {
  780. Message( text );
  781. EchoMessage( text );
  782. }
  783.  
  784. function EchoMessage( text )
  785. {
  786. FBS_BOT.Send( "PRIVMSG " + FBS_CHAN + " " + text + "\n" );
  787. }
  788.  
  789. function EchoNotice( nick, text )
  790. {
  791. FBS_BOT.Send( "NOTICE " + nick + " " + text + "\n" );
  792. }
  793.  
  794. function FBSSortNicks( szList )
  795. {
  796. local a = NumTok( szList, " " );
  797. local NickList = GetTok( szList, " ", 6, a ), i = 1;
  798.  
  799. FBS_NICKS <- array( 50, null );
  800.  
  801. while( GetTok( NickList, " ", i ) != "366" )
  802. {
  803. local levelnick = GetTok( NickList, " ", i ), nick = levelnick.slice( 1 ), level = levelnick.slice( 0, 1 );
  804. if ( level == ":" ) { level = nick.slice( 0, 1 ); nick = nick.slice( 1 ); }
  805. if ( level == "+" ) AddNewNick( nick, 2 );
  806. else if ( level == "%" ) AddNewNick( nick, 3 );
  807. else if ( level == "@" ) AddNewNick( nick, 4 );
  808. else if ( level == "&" ) AddNewNick( nick, 5 );
  809. else if ( level == "~" ) AddNewNick( nick, 6 );
  810. else AddNewNick( nick, 1 );
  811. i ++;
  812. }
  813. }
  814.  
  815. function AddNewNick( szName, iLevel )
  816. {
  817. local i = FindFreeNickSlot();
  818. if ( i != -1 )
  819. {
  820. FBS_NICKS[ i ] = FBSLIST();
  821. FBS_NICKS[ i ].AddNick( szName, iLevel );
  822. }
  823. }
  824.  
  825. function FindFreeNickSlot()
  826. {
  827. for ( local i = 0; i < FBS_NICKS.len(); i++ )
  828. {
  829. if ( !FBS_NICKS[ i ] ) return i;
  830. }
  831. return -1;
  832. }
  833.  
  834. function FindNick( szName )
  835. {
  836. for ( local i = 0; i < FBS_NICKS.len(); i++ )
  837. {
  838. if ( FBS_NICKS[ i ] )
  839. {
  840. if ( FBS_NICKS[ i ].Name == szName ) return FBS_NICKS[ i ];
  841. }
  842. }
  843. return null;
  844. }
  845.  
  846. function CmdLevelCheck( plrlvl, lvl )
  847. {
  848. if ( plrlvl >= lvl ) return true;
  849. else EchoMessage( "Error, No lvl" );
  850. }
  851.  
  852. function CmdIRCLevel( cmd )
  853. {
  854. local cmd = GetTok( cmd, "!", 1 );
  855. return ReadIniInteger( "Commands.ini", "IRC", cmd );
  856. }
  857.  
  858. function GetTok(string, separator, n, ...)
  859. {
  860. local m = vargv.len() > 0 ? vargv[0] : n,
  861. tokenized = split(string, separator),
  862. text = "";
  863. if (n > tokenized.len() || n < 1) return null;
  864. for (; n <= m; n++)
  865. {
  866. text += text == "" ? tokenized[n-1] : separator + tokenized[n-1];
  867. }
  868. return text;
  869. }
  870.  
  871. function NumTok(string, separator)
  872. {
  873. local tokenized = split(string, separator);
  874. return tokenized.len();
  875. local s = split(string, separator);
  876. return s.len();
  877. }
  878.  
  879. function ShowAliaseEcho( user, plr, option )
  880. {
  881. if ( option == "ip" )
  882. {
  883. local i = 0, a = Alias.len(), b;
  884. while( i < a )
  885. {
  886. if ( plr.IP == Alias[i].IP && plr.Name != Alias[i].Nick )
  887. {
  888. if ( b ) b = b + ", " + Alias[i].Nick;
  889. else b = Alias[i].Nick;
  890. }
  891. i ++;
  892. }
  893. if ( !b ) EchoNotice( user,""+plr.Name + " No tiene ips aliadas.");
  894. else EchoNotice( user,"[QUIEN-ES] "+plr.Name + " Ip's aliadas: " + b + ".");
  895. }
  896. else if ( option == "subnet" )
  897. {
  898. local i = 0, a = Alias.len(), b;
  899. local getsub_1 = split( plr.IP, "." ),
  900. sub_1 = getsub_1[0] + getsub_1[1];
  901. while( i < a )
  902. {
  903. local getsub_2 = split( Alias[i].IP, "." ),
  904. sub_2 = getsub_2[0] + getsub_2[1];
  905. if ( sub_1 == sub_2 && plr.Name != Alias[i].Nick )
  906. {
  907. if ( b ) b = b + ", " + Alias[i].Nick;
  908. else b = Alias[i].Nick;
  909. }
  910. i ++;
  911. }
  912. if ( !b ) EchoNotice( user,""+plr.Name + " No tiene SubNets aliadas.");
  913. else EchoNotice( user,"[QUIEN-ES] "+plr.Name + " Subnet's aliadas: " + b + ".");
  914. }
  915. else if ( option == "uid" )
  916. {
  917. local i = 0, a = Alias.len(), b;
  918. while( i < a )
  919. {
  920. if ( plr.UniqueID == Alias[i].UID && plr.Name != Alias[i].Nick )
  921. {
  922. if ( b ) b = b + ", " + Alias[i].Nick;
  923. else b = Alias[i].Nick;
  924. }
  925. i ++;
  926. }
  927. if ( !b ) EchoNotice( user,""+plr.Name + " No tiene UID's aliadas." );
  928. else EchoNotice( user,"[QUIEN-ES] "+plr.Name + " UID's aliadas: " + b + ".");
  929. }
  930. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement