Advertisement
FlacoBey

Untitled

Jun 16th, 2019
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 21.61 KB | None | 0 0
  1. #pragma semicolon 1
  2. #pragma newdecls required
  3.  
  4. #include <sdktools>
  5. #include <sdkhooks>
  6.  
  7. Handle sdkSetAttack;
  8.  
  9. float weapon_autoshotgun = 1650.0;
  10. float weapon_hunting_rifle = 660.0;
  11. float weapon_pistol = 880.0;
  12. float weapon_pistol_magnum = 1980.0;
  13. float weapon_pumpshotgun = 1650.0;
  14. float weapon_rifle = 1100.0;
  15. float weapon_rifle_ak47 = 1100.0;
  16. float weapon_rifle_desert = 1100.0;
  17. float weapon_rifle_m60 = 1320.0;
  18. float weapon_rifle_sg552 = 1100.0;
  19. float weapon_shotgun_chrome = 1540.0;
  20. float weapon_shotgun_spas = 1540.0;
  21. float weapon_smg = 880.0;
  22. float weapon_smg_mp5 = 880.0;
  23. float weapon_smg_silenced = 880.0;
  24. float weapon_sniper_awp = 1100.0;
  25. float weapon_sniper_military = 1320.0;
  26. float weapon_sniper_scout = 1320.0;
  27.  
  28. float weapon_grenade_launcher  = 2200.0;
  29. float weapon_pipe_bomb = 2200.0;
  30.  
  31. int iChance = 2;
  32.  
  33. public void OnPluginStart()
  34. {
  35.     Handle hGameConf = LoadGameConfigFile("SetAttackSurvivorCommons");
  36.     StartPrepSDKCall(SDKCall_Entity);
  37.     if( PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, "SetAttackToSurvivors") == false )
  38.         SetFailState("Could not load the \"SetAttackToSurvivors\" gamedata signature.");
  39.     sdkSetAttack = EndPrepSDKCall();
  40.    
  41.     HookEvent("non_melee_fired", EventFire);
  42. }
  43.  
  44. public Action EventFire(Handle event, const char[] name, bool dontbroadcast)
  45. {
  46.     int client = GetClientOfUserId(GetEventInt(event, "userid"));
  47.     int weapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
  48.     if(!IsValidEntity(weapon)) return Plugin_Continue;
  49.    
  50.     char weaponname[36];
  51.     GetEntityClassname(weapon, weaponname, sizeof(weaponname));
  52.     if(bIsSurvivor(client))
  53.     {
  54.         float vPos[3], vTargetPos[3];
  55.         GetClientEyePosition(client, vPos);
  56.         if(strcmp(weaponname, "weapon_autoshotgun") == 0)
  57.         {
  58.             for(int i = 33; i <= 2048; i++)
  59.             {
  60.                 if(IsCommonInfected(i))
  61.                 {
  62.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  63.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  64.                     if(IsVisibleTo(vPos, vTargetPos))
  65.                     {
  66.                         if(fTargetDistance < weapon_autoshotgun)
  67.                         {
  68.                             SDKCall(sdkSetAttack, i);
  69.                         }
  70.                     }
  71.                     else
  72.                     {
  73.                         if(GetRandomInt(0, 100) <= iChance)
  74.                         {
  75.                             if(fTargetDistance < weapon_autoshotgun)
  76.                             {
  77.                                 SDKCall(sdkSetAttack, i);
  78.                             }
  79.                         }
  80.                     }
  81.                 }
  82.             }
  83.         }
  84.         else if(strcmp(weaponname, "weapon_hunting_rifle") == 0)
  85.         {
  86.             for(int i = 33; i <= 2048; i++)
  87.             {
  88.                 if(IsCommonInfected(i))
  89.                 {
  90.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  91.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  92.                     if(IsVisibleTo(vPos, vTargetPos))
  93.                     {
  94.                         if(fTargetDistance < weapon_hunting_rifle)
  95.                         {
  96.                             SDKCall(sdkSetAttack, i);
  97.                         }
  98.                     }
  99.                     else
  100.                     {
  101.                         if(GetRandomInt(0, 100) <= iChance)
  102.                         {
  103.                             if(fTargetDistance < weapon_hunting_rifle)
  104.                             {
  105.                                 SDKCall(sdkSetAttack, i);
  106.                             }
  107.                         }
  108.                     }
  109.                 }
  110.             }
  111.         }
  112.         else if(strcmp(weaponname, "weapon_pistol") == 0)
  113.         {
  114.             for(int i = 33; i <= 2048; i++)
  115.             {
  116.                 if(IsCommonInfected(i))
  117.                 {
  118.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  119.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  120.                     if(IsVisibleTo(vPos, vTargetPos))
  121.                     {
  122.                         if(fTargetDistance < weapon_pistol)
  123.                         {
  124.                             SDKCall(sdkSetAttack, i);
  125.                         }
  126.                     }
  127.                     else
  128.                     {
  129.                         if(GetRandomInt(0, 100) <= iChance)
  130.                         {
  131.                             if(fTargetDistance < weapon_pistol)
  132.                             {
  133.                                 SDKCall(sdkSetAttack, i);
  134.                             }
  135.                         }
  136.                     }
  137.                 }
  138.             }
  139.         }
  140.         else if(strcmp(weaponname, "weapon_pistol_magnum") == 0)
  141.         {
  142.             for(int i = 33; i <= 2048; i++)
  143.             {
  144.                 if(IsCommonInfected(i))
  145.                 {
  146.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  147.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  148.                     if(IsVisibleTo(vPos, vTargetPos))
  149.                     {
  150.                         if(fTargetDistance < weapon_pistol_magnum)
  151.                         {
  152.                             SDKCall(sdkSetAttack, i);
  153.                         }
  154.                     }
  155.                     else
  156.                     {
  157.                         if(GetRandomInt(0, 100) <= iChance)
  158.                         {
  159.                             if(fTargetDistance < weapon_pistol_magnum)
  160.                             {
  161.                                 SDKCall(sdkSetAttack, i);
  162.                             }
  163.                         }
  164.                     }
  165.                 }
  166.             }
  167.         }
  168.         else if(strcmp(weaponname, "weapon_pumpshotgun") == 0)
  169.         {
  170.             for(int i = 33; i <= 2048; i++)
  171.             {
  172.                 if(IsCommonInfected(i))
  173.                 {
  174.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  175.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  176.                     if(IsVisibleTo(vPos, vTargetPos))
  177.                     {
  178.                         if(fTargetDistance < weapon_pumpshotgun)
  179.                         {
  180.                             SDKCall(sdkSetAttack, i);
  181.                         }
  182.                     }
  183.                     else
  184.                     {
  185.                         if(GetRandomInt(0, 100) <= iChance)
  186.                         {
  187.                             if(fTargetDistance < weapon_pumpshotgun)
  188.                             {
  189.                                 SDKCall(sdkSetAttack, i);
  190.                             }
  191.                         }
  192.                     }
  193.                 }
  194.             }
  195.         }
  196.         else if(strcmp(weaponname, "weapon_rifle") == 0)
  197.         {
  198.             for(int i = 33; i <= 2048; i++)
  199.             {
  200.                 if(IsCommonInfected(i))
  201.                 {
  202.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  203.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  204.                     if(IsVisibleTo(vPos, vTargetPos))
  205.                     {
  206.                         if(fTargetDistance < weapon_rifle)
  207.                         {
  208.                             SDKCall(sdkSetAttack, i);
  209.                         }
  210.                     }
  211.                     else
  212.                     {
  213.                         if(GetRandomInt(0, 100) <= iChance)
  214.                         {
  215.                             if(fTargetDistance < weapon_rifle)
  216.                             {
  217.                                 SDKCall(sdkSetAttack, i);
  218.                             }
  219.                         }
  220.                     }
  221.                 }
  222.             }
  223.         }
  224.         else if(strcmp(weaponname, "weapon_rifle_ak47") == 0)
  225.         {
  226.             for(int i = 33; i <= 2048; i++)
  227.             {
  228.                 if(IsCommonInfected(i))
  229.                 {
  230.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  231.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  232.                     if(IsVisibleTo(vPos, vTargetPos))
  233.                     {
  234.                         if(fTargetDistance < weapon_rifle_ak47)
  235.                         {
  236.                             SDKCall(sdkSetAttack, i);
  237.                         }
  238.                     }
  239.                     else
  240.                     {
  241.                         if(GetRandomInt(0, 100) <= iChance)
  242.                         {
  243.                             if(fTargetDistance < weapon_rifle_ak47)
  244.                             {
  245.                                 SDKCall(sdkSetAttack, i);
  246.                             }
  247.                         }
  248.                     }
  249.                 }
  250.             }
  251.         }
  252.         else if(strcmp(weaponname, "weapon_rifle_desert") == 0)
  253.         {
  254.             for(int i = 33; i <= 2048; i++)
  255.             {
  256.                 if(IsCommonInfected(i))
  257.                 {
  258.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  259.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  260.                     if(IsVisibleTo(vPos, vTargetPos))
  261.                     {
  262.                         if(fTargetDistance < weapon_rifle_desert)
  263.                         {
  264.                             SDKCall(sdkSetAttack, i);
  265.                         }
  266.                     }
  267.                     else
  268.                     {
  269.                         if(GetRandomInt(0, 100) <= iChance)
  270.                         {
  271.                             if(fTargetDistance < weapon_rifle_desert)
  272.                             {
  273.                                 SDKCall(sdkSetAttack, i);
  274.                             }
  275.                         }
  276.                     }
  277.                 }
  278.             }
  279.         }
  280.         else if(strcmp(weaponname, "weapon_rifle_m60") == 0)
  281.         {
  282.             for(int i = 33; i <= 2048; i++)
  283.             {
  284.                 if(IsCommonInfected(i))
  285.                 {
  286.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  287.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  288.                     if(IsVisibleTo(vPos, vTargetPos))
  289.                     {
  290.                         if(fTargetDistance < weapon_rifle_m60)
  291.                         {
  292.                             SDKCall(sdkSetAttack, i);
  293.                         }
  294.                     }
  295.                     else
  296.                     {
  297.                         if(GetRandomInt(0, 100) <= iChance)
  298.                         {
  299.                             if(fTargetDistance < weapon_rifle_m60)
  300.                             {
  301.                                 SDKCall(sdkSetAttack, i);
  302.                             }
  303.                         }
  304.                     }
  305.                 }
  306.             }
  307.         }
  308.         else if(strcmp(weaponname, "weapon_rifle_sg552") == 0)
  309.         {
  310.             for(int i = 33; i <= 2048; i++)
  311.             {
  312.                 if(IsCommonInfected(i))
  313.                 {
  314.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  315.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  316.                     if(IsVisibleTo(vPos, vTargetPos))
  317.                     {
  318.                         if(fTargetDistance < weapon_rifle_sg552)
  319.                         {
  320.                             SDKCall(sdkSetAttack, i);
  321.                         }
  322.                     }
  323.                     else
  324.                     {
  325.                         if(GetRandomInt(0, 100) <= iChance)
  326.                         {
  327.                             if(fTargetDistance < weapon_rifle_sg552)
  328.                             {
  329.                                 SDKCall(sdkSetAttack, i);
  330.                             }
  331.                         }
  332.                     }
  333.                 }
  334.             }
  335.         }
  336.         else if(strcmp(weaponname, "weapon_shotgun_chrome") == 0)
  337.         {
  338.             for(int i = 33; i <= 2048; i++)
  339.             {
  340.                 if(IsCommonInfected(i))
  341.                 {
  342.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  343.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  344.                     if(IsVisibleTo(vPos, vTargetPos))
  345.                     {
  346.                         if(fTargetDistance < weapon_shotgun_chrome)
  347.                         {
  348.                             SDKCall(sdkSetAttack, i);
  349.                         }
  350.                     }
  351.                     else
  352.                     {
  353.                         if(GetRandomInt(0, 100) <= iChance)
  354.                         {
  355.                             if(fTargetDistance < weapon_shotgun_chrome)
  356.                             {
  357.                                 SDKCall(sdkSetAttack, i);
  358.                             }
  359.                         }
  360.                     }
  361.                 }
  362.             }
  363.         }
  364.         else if(strcmp(weaponname, "weapon_shotgun_spas") == 0)
  365.         {
  366.             for(int i = 33; i <= 2048; i++)
  367.             {
  368.                 if(IsCommonInfected(i))
  369.                 {
  370.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  371.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  372.                     if(IsVisibleTo(vPos, vTargetPos))
  373.                     {
  374.                         if(fTargetDistance < weapon_shotgun_spas)
  375.                         {
  376.                             SDKCall(sdkSetAttack, i);
  377.                         }
  378.                     }
  379.                     else
  380.                     {
  381.                         if(GetRandomInt(0, 100) <= iChance)
  382.                         {
  383.                             if(fTargetDistance < weapon_shotgun_spas)
  384.                             {
  385.                                 SDKCall(sdkSetAttack, i);
  386.                             }
  387.                         }
  388.                     }
  389.                 }
  390.             }
  391.         }
  392.         else if(strcmp(weaponname, "weapon_smg") == 0)
  393.         {
  394.             for(int i = 33; i <= 2048; i++)
  395.             {
  396.                 if(IsCommonInfected(i))
  397.                 {
  398.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  399.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  400.                     if(IsVisibleTo(vPos, vTargetPos))
  401.                     {
  402.                         if(fTargetDistance < weapon_smg)
  403.                         {
  404.                             SDKCall(sdkSetAttack, i);
  405.                         }
  406.                     }
  407.                     else
  408.                     {
  409.                         if(GetRandomInt(0, 100) <= iChance)
  410.                         {
  411.                             if(fTargetDistance < weapon_smg)
  412.                             {
  413.                                 SDKCall(sdkSetAttack, i);
  414.                             }
  415.                         }
  416.                     }
  417.                 }
  418.             }
  419.         }
  420.         else if(strcmp(weaponname, "weapon_smg_mp5") == 0)
  421.         {
  422.             for(int i = 33; i <= 2048; i++)
  423.             {
  424.                 if(IsCommonInfected(i))
  425.                 {
  426.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  427.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  428.                     if(IsVisibleTo(vPos, vTargetPos))
  429.                     {
  430.                         if(fTargetDistance < weapon_smg_mp5)
  431.                         {
  432.                             SDKCall(sdkSetAttack, i);
  433.                         }
  434.                     }
  435.                     else
  436.                     {
  437.                         if(GetRandomInt(0, 100) <= iChance)
  438.                         {
  439.                             if(fTargetDistance < weapon_smg_mp5)
  440.                             {
  441.                                 SDKCall(sdkSetAttack, i);
  442.                             }
  443.                         }
  444.                     }
  445.                 }
  446.             }
  447.         }
  448.         else if(strcmp(weaponname, "weapon_smg_silenced") == 0)
  449.         {
  450.             for(int i = 33; i <= 2048; i++)
  451.             {
  452.                 if(IsCommonInfected(i))
  453.                 {
  454.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  455.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  456.                     if(IsVisibleTo(vPos, vTargetPos))
  457.                     {
  458.                         if(fTargetDistance < weapon_smg_silenced)
  459.                         {
  460.                             SDKCall(sdkSetAttack, i);
  461.                         }
  462.                     }
  463.                     else
  464.                     {
  465.                         if(GetRandomInt(0, 100) <= iChance)
  466.                         {
  467.                             if(fTargetDistance < weapon_smg_silenced)
  468.                             {
  469.                                 SDKCall(sdkSetAttack, i);
  470.                             }
  471.                         }
  472.                     }
  473.                 }
  474.             }
  475.         }
  476.         else if(strcmp(weaponname, "weapon_sniper_awp") == 0)
  477.         {
  478.             for(int i = 33; i <= 2048; i++)
  479.             {
  480.                 if(IsCommonInfected(i))
  481.                 {
  482.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  483.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  484.                     if(IsVisibleTo(vPos, vTargetPos))
  485.                     {
  486.                         if(fTargetDistance < weapon_sniper_awp)
  487.                         {
  488.                             SDKCall(sdkSetAttack, i);
  489.                         }
  490.                     }
  491.                     else
  492.                     {
  493.                         if(GetRandomInt(0, 100) <= iChance)
  494.                         {
  495.                             if(fTargetDistance < weapon_sniper_awp)
  496.                             {
  497.                                 SDKCall(sdkSetAttack, i);
  498.                             }
  499.                         }
  500.                     }
  501.                 }
  502.             }
  503.         }
  504.         else if(strcmp(weaponname, "weapon_sniper_military") == 0)
  505.         {
  506.             for(int i = 33; i <= 2048; i++)
  507.             {
  508.                 if(IsCommonInfected(i))
  509.                 {
  510.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  511.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  512.                     if(IsVisibleTo(vPos, vTargetPos))
  513.                     {
  514.                         if(fTargetDistance < weapon_sniper_military)
  515.                         {
  516.                             SDKCall(sdkSetAttack, i);
  517.                         }
  518.                     }
  519.                     else
  520.                     {
  521.                         if(GetRandomInt(0, 100) <= iChance)
  522.                         {
  523.                             if(fTargetDistance < weapon_sniper_military)
  524.                             {
  525.                                 SDKCall(sdkSetAttack, i);
  526.                             }
  527.                         }
  528.                     }
  529.                 }
  530.             }
  531.         }
  532.         else if(strcmp(weaponname, "weapon_sniper_scout") == 0)
  533.         {
  534.             for(int i = 33; i <= 2048; i++)
  535.             {
  536.                 if(IsCommonInfected(i))
  537.                 {
  538.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  539.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  540.                     if(IsVisibleTo(vPos, vTargetPos))
  541.                     {
  542.                         if(fTargetDistance < weapon_sniper_scout)
  543.                         {
  544.                             SDKCall(sdkSetAttack, i);
  545.                         }
  546.                     }
  547.                     else
  548.                     {
  549.                         if(GetRandomInt(0, 100) <= iChance)
  550.                         {
  551.                             if(fTargetDistance < weapon_sniper_scout)
  552.                             {
  553.                                 SDKCall(sdkSetAttack, i);
  554.                             }
  555.                         }
  556.                     }
  557.                 }
  558.             }
  559.         }
  560.     }
  561.     return Plugin_Continue;
  562. }
  563.  
  564. public void OnEntityDestroyed(int entity)
  565. {
  566.     if(IsValidEntity(entity) && IsValidEdict(entity))
  567.     {
  568.         char sTypeEx[36];
  569.         GetEntityClassname(entity, sTypeEx, sizeof(sTypeEx));
  570.         if(strcmp(sTypeEx, "grenade_launcher_projectile") == 0)
  571.         {
  572.             float vPos[3], vTargetPos[3];
  573.             GetEntPropVector(entity, Prop_Send, "m_vecOrigin", vPos);
  574.             for(int i = 33; i <= 2048; i++)
  575.             {
  576.                 if(IsCommonInfected(i))
  577.                {
  578.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  579.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  580.                     if(fTargetDistance <= weapon_grenade_launcher)
  581.                     {
  582.                         SDKCall(sdkSetAttack, i);
  583.                     }
  584.                 }
  585.             }
  586.         }
  587.         else if(strcmp(sTypeEx, "pipe_bomb_projectile") == 0)
  588.        {
  589.             float vPos[3], vTargetPos[3];
  590.             GetEntPropVector(entity, Prop_Send, "m_vecOrigin", vPos);
  591.             for(int i = 33; i <= 2048; i++)
  592.             {
  593.                 if(IsCommonInfected(i))
  594.                 {
  595.                     GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  596.                     float fTargetDistance = GetVectorDistance(vPos, vTargetPos);   
  597.                     if(fTargetDistance <= weapon_pipe_bomb)
  598.                     {
  599.                         SDKCall(sdkSetAttack, i);
  600.                     }
  601.                 }
  602.             }
  603.         }
  604.     }
  605. }
  606.  
  607. static bool IsVisibleTo(float position[3], float targetposition[3])
  608. {
  609.     float vAngles[3], vLookAt[3];
  610.    
  611.     MakeVectorFromPoints(position, targetposition, vLookAt);
  612.     GetVectorAngles(vLookAt, vAngles);
  613.  
  614.     Handle trace = TR_TraceRayFilterEx(position, vAngles, MASK_SHOT, RayType_Infinite, _TraceFilter);
  615.    
  616.     bool isVisible = false;
  617.     if (TR_DidHit(trace))
  618.     {
  619.         float vStart[3];
  620.         TR_GetEndPosition(vStart, trace);
  621.        
  622.         if ((GetVectorDistance(position, vStart, false) + 25.0) >= GetVectorDistance(position, targetposition))
  623.         {
  624.             isVisible = true;
  625.         }
  626.     }
  627.    
  628.     return isVisible;
  629. }
  630.  
  631. public bool _TraceFilter(int entity, int contentsMask)
  632. {
  633.     if (IsValidEntity(entity))
  634.     {
  635.         return false;
  636.     }
  637.     return true;
  638. }
  639.  
  640. stock bool bIsSurvivor(int client)
  641. {
  642.     return client > 0 && client <= MaxClients && IsClientInGame(client) && GetClientTeam(client) == 2 && !IsClientInKickQueue(client) && IsPlayerAlive(client);
  643. }
  644.  
  645. stock bool IsCommonInfected(int entity)
  646. {
  647.     if (entity > 33 && IsValidEntity(entity) && IsValidEdict(entity))
  648.     {
  649.         char entType[64];
  650.         GetEdictClassname(entity, entType, sizeof(entType));
  651.         return StrEqual(entType, "infected");
  652.     }
  653.     return false;
  654. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement