Advertisement
FlacoBey

Untitled

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