StraliotiF

Filterscript SISTEMA DE ADMINISTRAÇÃO 1.1 - Fábio Stralioti

Sep 30th, 2016
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 17.19 KB | None | 0 0
  1. /* Filterscript Sistema de Administração 1.0 Feito por : Fábio Stralioti
  2. Iniciado dia 02/03/2015 as 10:37
  3.  
  4. ******** ************ *********  **** *************
  5. ******** ************ *********  **** *************
  6. ****     ****    **** ****   **  **** *****   *****
  7. ****     ****    **** ****   **  **** *****   *****
  8. ******** ************ *********  **** *****   *****
  9. ******** ************ *********  **** *****   *****
  10. ****     ****    **** ****   **  **** *****   *****
  11. ****     ****    **** *********  **** *************
  12. ****     ****    **** *********  **** *************
  13.  
  14. reupload, perdi a senha da outra conta do pastebin e estou postando tudo nesta rsrsrs
  15.  
  16. */
  17. #include <a_samp>
  18. #include <zcmd>
  19. #include <dof2>
  20. #include <sscanf>
  21.  
  22. #define FILTERSCRIPT
  23.  
  24. public OnFilterScriptInit(){
  25.     print("\n----------------------------------");
  26.     print("Filterscript feito por : Fábio Stralioti");
  27.     print("www.equipegtatorcidas.com/forum");
  28.     print("----------------------------------\n");
  29.     return 1;
  30. }
  31.  
  32. enum pInfo {
  33.     pAdministrador
  34. };
  35. new Stralioti[MAX_PLAYERS][pInfo];
  36. new Id;
  37. new stralioti[128];
  38. new stralioti2[128];
  39. new straliotiadmin[256];
  40. new texto;
  41. new minutos;
  42. new motivo;
  43. new Float:FX, Float:FY, Float:FZ;
  44. new Float:X, Float:Y, Float:Z, Float: Angle;
  45. new Float:vida;
  46. new Float:colete;
  47. new straliotiid[MAX_PLAYERS];
  48.  
  49. #define VEH 1
  50. #define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
  51. #define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
  52. #define banido "Banidos\\%s.ini"
  53.  
  54. public OnPlayerConnect(playerid) {
  55.     straliotiid[playerid] = SetTimerEx("StraliotiTag", 5000, true, "d", playerid);
  56.  
  57.     new arquivoadmin[34];
  58.     format(arquivoadmin, sizeof(arquivoadmin), "Admins/%s.ini", PlayerNome(playerid));
  59.  
  60.     SendClientMessage(playerid, -1,"Este servidor usa o sistema de Administração feito por: Fábio Stralioti");
  61.     return 1;
  62. }
  63.  
  64. public OnPlayerDisconnect(playerid) {
  65.     new arquivoadmin[34];
  66.     format(arquivoadmin, sizeof(arquivoadmin), "Admins/%s.ini", PlayerNome(playerid));
  67.     if (!DOF2_FileExists(arquivoadmin)) {
  68.         DOF2_CreateFile(arquivoadmin);
  69.  
  70.         DOF2_SetInt(arquivoadmin, "Level", Stralioti[playerid][pAdministrador]);
  71.         DOF2_SaveFile();
  72.     }
  73.     else {
  74.         DOF2_SetInt(arquivoadmin, "Level", Stralioti[playerid][pAdministrador]);
  75.         DOF2_SaveFile();
  76.     }
  77.     return 0;
  78. }
  79.  
  80. public OnFilterScriptExit()
  81. {
  82.     DOF2_Exit();
  83.     return 1;
  84. }
  85.  
  86. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  87.     if(dialogid == VEH)
  88.     {
  89.         if(response)
  90.         {
  91.             if(listitem == 0)
  92.             {
  93.                 GetPlayerPos(playerid, X, Y, Z);
  94.                 GetPlayerFacingAngle(playerid, Angle);
  95.                 CreateVehicle(560, X+5, Y, Z+1, Angle, random(100), random(100), -1);
  96.                 SendClientMessage(playerid, -1,"Você criou um sultan para deleta-lo use /dc");
  97.             }
  98.             if(listitem == 1)
  99.             {
  100.                 GetPlayerPos(playerid, X, Y, Z);
  101.                 GetPlayerFacingAngle(playerid, Angle);
  102.                 CreateVehicle(411, X+5, Y, Z+1, Angle, random(100), random(100), -1);
  103.                 SendClientMessage(playerid, -1,"Você criou um infernus para deleta-lo use /dc");
  104.             }
  105.             if(listitem == 2)
  106.             {
  107.                 GetPlayerPos(playerid, X, Y, Z);
  108.                 GetPlayerFacingAngle(playerid, Angle);
  109.                 CreateVehicle(522, X+5, Y, Z+1, Angle, random(100), random(100), -1);
  110.                 SendClientMessage(playerid, -1,"Você criou um nrg-500 para deleta-lo use /dc");
  111.             }
  112.             if(listitem == 3)
  113.             {
  114.                 GetPlayerPos(playerid, X, Y, Z);
  115.                 GetPlayerFacingAngle(playerid, Angle);
  116.                 CreateVehicle(431, X+5, Y, Z+1, Angle, random(100), random(100), -1);
  117.                 SendClientMessage(playerid, -1,"Você criou um onibus para deleta-lo use /dc");
  118.             }
  119.             if(listitem == 4)
  120.             {
  121.                 GetPlayerPos(playerid, X, Y, Z);
  122.                 GetPlayerFacingAngle(playerid, Angle);
  123.                 CreateVehicle(506, X+5, Y, Z+1, Angle, random(100), random(100), -1);
  124.                 SendClientMessage(playerid, -1,"Você criou um super-gt para deleta-lo use /dc");
  125.             }
  126.         }
  127.     }
  128.     return 1;
  129. }
  130.  
  131. CMD:setadmin(playerid, params[]) {
  132.     new level, ganhou[MAX_PLAYER_NAME], deu[MAX_PLAYER_NAME];
  133.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Você não é um Administrador Logado Na RCON.");
  134.     if(sscanf(params, "ud", Id, level)) return SendClientMessage(playerid, -1, "Use /setadmin [Id] [LEVEL]");
  135.     if (level < 0 || level > 5) return SendClientMessage(playerid, -1, "Level inválido. Use de 1 á 5 .");
  136.     if(!IsPlayerConnected(Id)) return SendClientMessage(playerid, -1, "Este jogador não está online.");
  137.     GetPlayerName(Id, ganhou, sizeof(ganhou));
  138.     GetPlayerName(playerid, deu, sizeof(deu));
  139.     format(straliotiadmin, sizeof(straliotiadmin), "Você deu admin level %s para o %s", ganhou);
  140.     SendClientMessage(playerid, -1, straliotiadmin);
  141.     format(straliotiadmin, sizeof(straliotiadmin), "O admin %s deu admin level %s para você.", deu);
  142.     SendClientMessage(Id, -1, straliotiadmin);
  143.     Stralioti[Id][pAdministrador] =  level;
  144.     return 1;
  145. }
  146.  
  147. CMD:comandosadmin(playerid) {
  148.     ShowPlayerDialog(playerid, 3, DIALOG_STYLE_MSGBOX, "COMANDOS", "/a\n/reports\n/olhar\n/olharoff\n/vidat\n/vida\n/pinfo\n/asay\n/trazer\n/ir\n/veh\n/dc\n/reparar\n/congelar\n/descongelar\n/tapa\n/prender\n/soltar\n/kick\n/ban\n/coletet\n/colete\n/jetpack", "Ok", "");
  149.     return 1;
  150. }
  151.  
  152. CMD:a(playerid, params[]) {
  153.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  154. {
  155. for( new i; i < MAX_PLAYERS; i++ )
  156.     {
  157.        
  158.             if(sscanf(params, "s", texto)) return SendClientMessage(playerid, -1,"Use /a [texto]");
  159.             format(stralioti, sizeof(stralioti),"Chat Admin: %s: %s", PlayerNome(playerid),texto);
  160.             SendClientMessage(i,-1,stralioti);
  161.         }
  162. }
  163.     return 1;
  164. }
  165.  
  166. CMD:creditosfs(playerid) {
  167.     SendClientMessage(playerid, -1,"Filterscript feito por : Fábio Stralioti");
  168.     return 1;
  169. }
  170.  
  171. CMD:jetpack(playerid) {
  172.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  173.     SetPlayerSpecialAction(playerid, 2);
  174.     format(stralioti, sizeof(stralioti),"O Administrador %s criou um jetpack", PlayerNome(playerid));
  175.     SendClientMessageToAll(-1, stralioti);
  176.     return 1;
  177. }
  178.  
  179. CMD:asay(playerid, params[]) {
  180.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  181.     if(sscanf(params, "s", texto)) return SendClientMessage(playerid, -1, "Use /asay [texto]");
  182.     format(stralioti, sizeof(stralioti), "Administrador: %s: %s", PlayerNome(playerid), params);
  183.     SendClientMessageToAll(-1, stralioti);
  184.     return 1;
  185. }
  186.  
  187. CMD:reports(playerid) {
  188.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador"); {
  189.         format(stralioti2, sizeof(stralioti2), "%s Viu algo de ilegal? use /reportar id motivo", stralioti2);
  190.         SendClientMessageToAll(-1, stralioti2);
  191.     }
  192.     return 1;
  193. }
  194.  
  195. CMD:tr(playerid, params[])
  196. return cmd_trazer(playerid, params);
  197.  
  198. CMD:trazer(playerid, params[]) {
  199.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  200.     if(sscanf(params, "u", Id)) return SendClientMessage(playerid, -1,"Use /trazer [id]");
  201.     if(!IsPlayerConnected(Id))
  202.         return SendClientMessage(playerid, -1,"Este jogador não se encontra online");
  203.     GetPlayerPos(playerid, FX, FY, FZ);
  204.     SetPlayerPos(Id, FX, FY, FZ);
  205.     format(stralioti, sizeof(stralioti), "O %s trouxe o %s", PlayerNome(playerid), PlayerNome(Id));
  206.     SendClientMessage(playerid, -1, stralioti);
  207.     return 1;
  208. }
  209.  
  210. CMD:veh(playerid) {
  211.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  212.     ShowPlayerDialog(playerid, VEH, DIALOG_STYLE_LIST, "VEH", "Sultan\nInfernus\nNRG-500\nOnibus\nSuper-GT", "Escolher", "Sair");
  213.     return 1;
  214. }
  215.  
  216. CMD:dc(playerid) {
  217.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  218.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1,"Você não está em um veículo");
  219.     new veiculo;
  220.     veiculo = GetPlayerVehicleID(playerid);
  221.     DestroyVehicle(veiculo);
  222.     SendClientMessage(playerid, -1,"Você deletou o veiculo");
  223.     return 1;
  224. }
  225.  
  226. CMD:kick(playerid, params[]) {
  227.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  228.     if(sscanf(params, "us", Id, motivo)) return SendClientMessage(playerid, -1,"Use /kick [id] [motivo]");
  229.     if(!IsPlayerConnected(Id))
  230.         return SendClientMessage(playerid, -1,"Este jogador não se enconta online");
  231.     format(stralioti, sizeof(stralioti), "O Administrador %s kikou o %s motivo: %s", PlayerNome(playerid), PlayerNome(Id), motivo);
  232.     SendClientMessageToAll(-1, stralioti);
  233.     Kick(Id);
  234.     return 1;
  235. }
  236.  
  237. CMD:ban(playerid, params[]) {
  238.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  239.     if(sscanf(params, "us", Id, motivo)) return SendClientMessage(playerid, -1,"Use /ban [id] [motivo]");
  240.     if(!IsPlayerConnected(Id))
  241.         return SendClientMessage(playerid, -1,"Este jogador não se encontra online");
  242.     format(stralioti, sizeof(stralioti), "O Administrador %s baniu o %s motivo: %s", PlayerNome(playerid), PlayerNome(Id), motivo);
  243.     format(stralioti,sizeof(stralioti),banido,PlayerNome(Id));
  244.     DOF2_CreateFile(stralioti);
  245.     Ban(Id);
  246.     return 1;
  247. }
  248.  
  249. CMD:tapa(playerid, params[]) {
  250.     new Float:pos[3];
  251.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  252.     if(sscanf(params, "u", Id)) return SendClientMessage(playerid, -1,"Use /tapa [id]");
  253.     if(!IsPlayerConnected(Id))
  254.         return SendClientMessage(playerid, -1,"Este jogador não se encontra online");
  255.     GetPlayerHealth(Id, vida);
  256.     SetPlayerHealth(Id, vida-5);
  257.     GetPlayerPos(Id, pos[0], pos[1], pos[2]);
  258.     SetPlayerPos(Id, pos[0], pos[1], pos[2]+5);
  259.     format(stralioti, sizeof(stralioti), "O Administrador %s deu um tapa no %s", PlayerNome(playerid), PlayerNome(Id));
  260.     SendClientMessageToAll(-1, stralioti);
  261.     return 1;
  262. }
  263.  
  264. CMD:reparar(playerid) {
  265.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  266.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1,"Você não está em um veículo");
  267.     RepairVehicle(GetPlayerVehicleID(playerid));
  268.     return 1;
  269. }
  270.  
  271. CMD:ir(playerid, params[]) {
  272.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  273.     if(sscanf(params, "u", Id)) return SendClientMessage(playerid, -1,"Use /ir [id]");
  274.     if(!IsPlayerConnected(Id))
  275.         return SendClientMessage(playerid, -1,"Este jogador não se encontra online");
  276.     GetPlayerPos(Id, FX, FY, FZ);
  277.     SetPlayerPos(playerid, FX, FY, FZ);
  278.     format(stralioti, sizeof(stralioti), "O %s foi até o %s", PlayerNome(playerid), PlayerNome(Id));
  279.     SendClientMessage(playerid, -1, stralioti);
  280.     return 1;
  281. }
  282.  
  283. CMD:olhar(playerid, params[]) {
  284.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  285.     if(sscanf(params, "u", Id)) return SendClientMessage(playerid, -1,"Use /olhar [id]");
  286.     if(!IsPlayerConnected(Id))
  287.         return SendClientMessage(playerid, -1, "Este jogador não se encontra online");
  288.     SendClientMessage(playerid, -1,"Você entrou no modo espectador");
  289.     TogglePlayerSpectating(Id, 1);
  290.     return 1;
  291. }
  292.  
  293. CMD:olharoff(playerid, params[]) {
  294.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  295.     SendClientMessage(playerid, -1,"Você saiu do modo espectador");
  296.     TogglePlayerSpectating(Id, 0);
  297.     return 1;
  298. }
  299.  
  300. CMD:prender(playerid, params[]) {
  301.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  302.     if(sscanf(params, "uds", Id, minutos, motivo)) return SendClientMessage(playerid, -1,"Use /prender [id] [minutos] [motivo]");
  303.     if(!IsPlayerConnected(Id))
  304.         return SendClientMessage(playerid, -1,"Este jogador não se encontra online");
  305.     SetPlayerInterior(playerid, 5);
  306.     SetPlayerPos(playerid, 323.3304, 306.3833, 999.1484);
  307.     format(stralioti, sizeof(stralioti), "O %s foi preso pelo Administrador %s tempo: %d motivo: %s", PlayerNome(playerid), PlayerNome(Id), minutos, motivo);
  308.     SendClientMessageToAll(-1, stralioti);
  309.     return 1;
  310. }
  311.  
  312. CMD:soltar(playerid, params[]) {
  313.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  314.     if(sscanf(params, "us", Id, motivo)) return SendClientMessage(playerid, -1,"Use /soltar [id] [motivo]");
  315.     if(!IsPlayerConnected(Id))
  316.         return SendClientMessage(playerid, -1,"Este jogador não se encontra online");
  317.     SpawnPlayer(playerid);
  318.     format(stralioti, sizeof(stralioti), "O %s foi solto pelo Administrador %s  motivo: %s", PlayerNome(playerid), PlayerNome(Id), motivo);
  319.     SendClientMessageToAll(-1, stralioti);
  320.     return 1;
  321. }
  322.  
  323. CMD:congelar(playerid, params[]) {
  324.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  325.     if(sscanf(params, "u", Id)) return SendClientMessage(playerid, -1,"Use /congelar [id]");
  326.     if(!IsPlayerConnected(Id))
  327.         return SendClientMessage(playerid, -1,"Este jogador não se encontra online");
  328.     TogglePlayerControllable(Id,0);
  329.     format(stralioti, sizeof(stralioti), "O Administrador %s congelou o %s", PlayerNome(playerid), PlayerNome(Id));
  330.     SendClientMessage(playerid, -1, stralioti);
  331.     return 1;
  332. }
  333.  
  334. CMD:descongelar(playerid, params[]) {
  335.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  336.     if(sscanf(params, "u", Id)) return SendClientMessage(playerid, -1,"Use /descongelar [id]");
  337.     if(!IsPlayerConnected(Id))
  338.         return SendClientMessage(playerid, -1,"Este jogador não se encontra online");
  339.     TogglePlayerControllable(Id,1);
  340.     format(stralioti, sizeof(stralioti), "O Administrador %s descongelou o %s", PlayerNome(playerid), PlayerNome(Id));
  341.     SendClientMessage(playerid, -1, stralioti);
  342.     return 1;
  343. }
  344.  
  345. CMD:vidat(playerid) {
  346.     new i;
  347.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  348.     format(stralioti, sizeof(stralioti), "%s deu vida para todos", PlayerNome(playerid));
  349.     SendClientMessageToAll(-1, stralioti);
  350.     SetPlayerHealth(i, 100);
  351.     return 1;
  352. }
  353.  
  354. CMD:coletet(playerid) {
  355.     new i;
  356.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  357.     format(stralioti, sizeof(stralioti), "%s deu colete para todos", PlayerNome(playerid));
  358.     SendClientMessageToAll(-1, stralioti);
  359.     SetPlayerArmour(i, 100);
  360.     return 1;
  361. }
  362.  
  363. CMD:pinfo(playerid, params[]) {
  364.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  365.     if(sscanf(params, "u", Id)) return SendClientMessage(playerid, -1,"Use /pinfo [id]");
  366.     if(!IsPlayerConnected(Id))
  367.         return SendClientMessage(playerid, -1, "Este jogador não se encontra online");
  368.     new ip[24];
  369.     new Float:health;
  370.     new Float:armour;
  371.     new ping = GetPlayerPing(Id);
  372.     GetPlayerHealth(Id, health);
  373.     GetPlayerArmour(Id, armour);
  374.     GetPlayerIp(Id, ip, sizeof ip);
  375.  
  376.     format(stralioti, sizeof(stralioti), "Informações de: %s", PlayerNome(playerid));
  377.     SendClientMessage(playerid, -1, stralioti);
  378.  
  379.     format(stralioti, sizeof(stralioti), "IP: %s", ip);
  380.     SendClientMessage(playerid, -1, stralioti);
  381.     format(stralioti, sizeof(stralioti), "Vida: %.1f", health);
  382.     SendClientMessage(playerid, -1, stralioti);
  383.     format(stralioti, sizeof(stralioti), "Colete: %.1f", armour);
  384.     SendClientMessage(playerid, -1, stralioti);
  385.     format(stralioti, sizeof(stralioti), "Ping: %d", ping);
  386.     SendClientMessage(playerid, -1, stralioti);
  387.     return 1;
  388. }
  389.  
  390. CMD:vida(playerid,params[]) {
  391.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  392.     if(sscanf(params,"uf",Id,vida)) return SendClientMessage(playerid, -1,"Use /vida [id] [quantidade]");
  393.     if(vida < 0 || vida  > 100) return SendClientMessage(playerid, -1,"Quantidade invalida 0 - 100");
  394.     SetPlayerHealth(Id,vida);
  395.     format(stralioti, sizeof(stralioti), "O Administrador %s setou a vida do %s", PlayerNome(playerid), PlayerNome(Id));
  396.     return 1;
  397. }
  398.  
  399. CMD:colete(playerid,params[]) {
  400.     if(Stralioti[playerid][pAdministrador] <= 0) return SendClientMessage(playerid, -1,"Você não é um Administrador");
  401.     if(sscanf(params,"uf",Id,colete)) return SendClientMessage(playerid, -1,"Use /vida [id] [quantidade]");
  402.     if(colete < 0 || colete  > 100) return SendClientMessage(playerid, -1,"Quantidade invalida 0 - 100");
  403.     SetPlayerArmour(Id,colete);
  404.     format(stralioti, sizeof(stralioti), "O Administrador %s setou a vida do %s", PlayerNome(playerid), PlayerNome(Id));
  405.     return 1;
  406. }
  407.  
  408. PlayerNome(playerid) {
  409.     new nomeplayer[MAX_PLAYER_NAME];
  410.     GetPlayerName(playerid, nomeplayer, sizeof(nomeplayer));
  411.     return nomeplayer;
  412. }
  413.  
  414. forward StraliotiTag(playerid);
  415. public StraliotiTag(playerid) {
  416.     if(Stralioti[playerid][pAdministrador] > 0) {
  417.         SetPlayerChatBubble(playerid, "Administrador", -1, 100.0, 6000);
  418.     }
  419.     return 1;
  420. }
  421.  
  422. forward Kicka(p); public Kicka(p) {
  423.     #undef Kick
  424.     Kick(p);
  425.     #define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
  426.     return 1;
  427. }
  428.  
  429. forward Bana(p); public Bana(p) {
  430.     #undef Ban
  431.     Ban(p);
  432.     #define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
  433.     return 1;
  434. }
Advertisement
Add Comment
Please, Sign In to add comment