FlacoBey

Untitled

May 20th, 2019
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 25.60 KB | None | 0 0
  1. /*
  2. ** ATTENTION
  3. ** THE PRODUCED CODE, IS NOT ABLE TO COMPILE!
  4. ** THE DECOMPILER JUST TRIES TO GIVE YOU A POSSIBILITY
  5. ** TO LOOK HOW A PLUGIN DOES IT'S JOB AND LOOK FOR
  6. ** POSSIBLE MALICIOUS CODE.
  7. **
  8. ** ALL CONVERSIONS ARE WRONG! AT EXAMPLE:
  9. ** SetEntityRenderFx(client, RenderFx 0);  →  SetEntityRenderFx(client, view_as<RenderFx>0);  →  SetEntityRenderFx(client, RENDERFX_NONE);
  10. */
  11.  
  12.  PlVers __version = 5;
  13.  float NULL_VECTOR[3];
  14.  char NULL_STRING[1];
  15.  Extension __ext_core = 64;
  16.  int MaxClients;
  17.  Extension __ext_sdktools = 2232;
  18.  Extension __ext_sdkhooks = 2276;
  19.  float TRACE_TOLERANCE = 1103626240;
  20.  float BILE_POS_HEIGHT_FIX = 1116471296;
  21.  int ZOMBIECLASS_BOOMER = 2;
  22.  int L4D2Team_Survivors = 2;
  23.  int L4D2Team_Infected = 3;
  24.  char ENTPROP_ZOMBIE_CLASS[4] = "m_zombieClass";
  25.  char GAMEDATA_FILE[4] = "l4d2addresses";
  26.  char ENTPROP_IS_GHOST[3] = "m_isGhost";
  27.  char CLASS_BILEJAR[5] = "vomitjar_projectile";
  28.  char CLASS_ZOMBIE[3] = "infected";
  29.  char CLASS_WITCH[2] = "witch";
  30.  int CommonType[4097];
  31.  bool isMapRunning;
  32.  Handle cvarRandomChance;
  33.  Handle cvarType1HPMin;
  34.  Handle cvarType1HPMax;
  35.  Handle cvarType1Damage;
  36.  Handle cvarType1MagnumArmor;
  37.  Handle cvarType2HPMin;
  38.  Handle cvarType2HPMax;
  39.  Handle cvarType2Damage;
  40.  Handle cvarType2MagnumArmor;
  41.  Handle cvarType3HPMin;
  42.  Handle cvarType3HPMax;
  43.  Handle cvarType3Damage;
  44.  Handle cvarType3MagnumArmor;
  45.  Handle cvarType4HPMin;
  46.  Handle cvarType4HPMax;
  47.  Handle cvarType4Damage;
  48.  Handle cvarType4MagnumArmor;
  49.  Handle cvarTankSpeed;
  50.  Handle cvarTankHPMin;
  51.  Handle cvarChargerHPMin;
  52.  Handle cvarChargerHPMax;
  53.  Handle cvarHunterHPMin;
  54.  Handle cvarHunterHPMax;
  55.  Handle cvarJockeyHPMin;
  56.  Handle cvarJockeyHPMax;
  57.  Handle cvarTankHPMax;
  58.  Handle cvarWitchHPMin;
  59.  Handle cvarWitchHPMax;
  60.  Handle isEnabled;
  61.  Handle cvarSplashRadius;
  62.  Handle sdkCallVomitOnPlayer;
  63.  Handle sdkCallBileJarPlayer;
  64.  Handle sdkCallBileJarInfected;
  65.  int laggedMovementOffset;
  66.  int health_default_witch;
  67.  int health_default_tank;
  68.  int health_default_charger;
  69.  int health_default_hunter;
  70.  int health_default_jockey;
  71. public Plugin myinfo =
  72. {
  73.     name = "[L4D2] Infected Abilities",
  74.     description = "Allows custom set Survivor Speed.",
  75.     author = "NoBody",
  76.     version = "1.0",
  77.     url = ""
  78. };
  79. public int __ext_core_SetNTVOptional()
  80. {
  81.     MarkNativeAsOptional("GetFeatureStatus");
  82.     MarkNativeAsOptional("RequireFeature");
  83.     MarkNativeAsOptional("AddCommandListener");
  84.     MarkNativeAsOptional("RemoveCommandListener");
  85.     MarkNativeAsOptional("BfWriteBool");
  86.     MarkNativeAsOptional("BfWriteByte");
  87.     MarkNativeAsOptional("BfWriteChar");
  88.     MarkNativeAsOptional("BfWriteShort");
  89.     MarkNativeAsOptional("BfWriteWord");
  90.     MarkNativeAsOptional("BfWriteNum");
  91.     MarkNativeAsOptional("BfWriteFloat");
  92.     MarkNativeAsOptional("BfWriteString");
  93.     MarkNativeAsOptional("BfWriteEntity");
  94.     MarkNativeAsOptional("Bf");
  95.     MarkNativeAsOptional("BfWriteCoord");
  96.     MarkNativeAsOptional("BfWriteVecCoord");
  97.     MarkNativeAsOptional("BfWriteVecNormal");
  98.     MarkNativeAsOptional("BfWriteAngles");
  99.     MarkNativeAsOptional("BfReadBool");
  100.     MarkNativeAsOptional("BfReadByte");
  101.     MarkNativeAsOptional("BfReadChar");
  102.     MarkNativeAsOptional("BfReadShort");
  103.     MarkNativeAsOptional("BfReadWord");
  104.     MarkNativeAsOptional("BfReadNum");
  105.     MarkNativeAsOptional("BfReadFloat");
  106.     MarkNativeAsOptional("BfReadString");
  107.     MarkNativeAsOptional("BfReadEntity");
  108.     MarkNativeAsOptional("BfReadAngle");
  109.     MarkNativeAsOptional("BfReadCoord");
  110.     MarkNativeAsOptional("BfReadVecCoord");
  111.     MarkNativeAsOptional("BfReadVecNormal");
  112.     MarkNativeAsOptional("BfReadAngles");
  113.     MarkNativeAsOptional("BfGetNumBytesLeft");
  114.     MarkNativeAsOptional("BfWrite.WriteBool");
  115.     MarkNativeAsOptional("BfWrite.WriteByte");
  116.     MarkNativeAsOptional("BfWrite.WriteChar");
  117.     MarkNativeAsOptional("BfWrite.WriteShort");
  118.     MarkNativeAsOptional("BfWrite.WriteWord");
  119.     MarkNativeAsOptional("BfWrite.WriteNum");
  120.     MarkNativeAsOptional("BfWrite.WriteFloat");
  121.     MarkNativeAsOptional("BfWrite.WriteString");
  122.     MarkNativeAsOptional("BfWrite.WriteEntity");
  123.     MarkNativeAsOptional("BfWrite.WriteAngle");
  124.     MarkNativeAsOptional("BfWrite.WriteCoord");
  125.     MarkNativeAsOptional("BfWrite.WriteVecCoord");
  126.     MarkNativeAsOptional("BfWrite.WriteVecNormal");
  127.     MarkNativeAsOptional("BfWrite.WriteAngles");
  128.     MarkNativeAsOptional("BfRead.ReadBool");
  129.     MarkNativeAsOptional("BfRead.ReadByte");
  130.     MarkNativeAsOptional("BfRead.ReadChar");
  131.     MarkNativeAsOptional("BfRead.ReadShort");
  132.     MarkNativeAsOptional("BfRead.ReadWord");
  133.     MarkNativeAsOptional("BfRead.ReadNum");
  134.     MarkNativeAsOptional("BfRead.ReadFloat");
  135.     MarkNativeAsOptional("BfRead.ReadString");
  136.     MarkNativeAsOptional("BfRead.ReadEntity");
  137.     MarkNativeAsOptional("BfRead.ReadAngle");
  138.     MarkNativeAsOptional("BfRead.ReadCoord");
  139.     MarkNativeAsOptional("BfRead.ReadVecCoord");
  140.     MarkNativeAsOptional("BfRead.ReadVecNormal");
  141.     MarkNativeAsOptional("BfRead.ReadAngles");
  142.     MarkNativeAsOptional("BfRead.GetNumBytesLeft");
  143.     MarkNativeAsOptional("PbReadInt");
  144.     MarkNativeAsOptional("PbReadFloat");
  145.     MarkNativeAsOptional("PbReadBool");
  146.     MarkNativeAsOptional("PbReadString");
  147.     MarkNativeAsOptional("PbReadColor");
  148.     MarkNativeAsOptional("PbReadAngle");
  149.     MarkNativeAsOptional("PbReadVector");
  150.     MarkNativeAsOptional("PbReadVector2D");
  151.     MarkNativeAsOptional("PbGetRepeatedFieldCount");
  152.     MarkNativeAsOptional("PbSetInt");
  153.     MarkNativeAsOptional("PbSetFloat");
  154.     MarkNativeAsOptional("PbSetBool");
  155.     MarkNativeAsOptional("PbSetString");
  156.     MarkNativeAsOptional("PbSetColor");
  157.     MarkNativeAsOptional("PbSetAngle");
  158.     MarkNativeAsOptional("PbSetVector");
  159.     MarkNativeAsOptional("PbSetVector2D");
  160.     MarkNativeAsOptional("PbAddInt");
  161.     MarkNativeAsOptional("PbAddFloat");
  162.     MarkNativeAsOptional("PbAddBool");
  163.     MarkNativeAsOptional("PbAddString");
  164.     MarkNativeAsOptional("PbAddColor");
  165.     MarkNativeAsOptional("PbAddAngle");
  166.     MarkNativeAsOptional("PbAddVector");
  167.     MarkNativeAsOptional("PbAddVector2D");
  168.     MarkNativeAsOptional("PbRemoveRepeatedFieldValue");
  169.     MarkNativeAsOptional("PbReadMessage");
  170.     MarkNativeAsOptional("PbReadRepeatedMessage");
  171.     MarkNativeAsOptional("PbAddMessage");
  172.     MarkNativeAsOptional("Protobuf.ReadInt");
  173.     MarkNativeAsOptional("Protobuf.ReadFloat");
  174.     MarkNativeAsOptional("Protobuf.ReadBool");
  175.     MarkNativeAsOptional("Protobuf.ReadString");
  176.     MarkNativeAsOptional("Protobuf.ReadColor");
  177.     MarkNativeAsOptional("Protobuf.ReadAngle");
  178.     MarkNativeAsOptional("Protobuf.ReadVector");
  179.     MarkNativeAsOptional("Protobuf.ReadVector2D");
  180.     MarkNativeAsOptional("Protobuf.GetRepeatedFieldCount");
  181.     MarkNativeAsOptional("Protobuf.SetInt");
  182.     MarkNativeAsOptional("Protobuf.SetFloat");
  183.     MarkNativeAsOptional("Protobuf.SetBool");
  184.     MarkNativeAsOptional("Protobuf.SetString");
  185.     MarkNativeAsOptional("Protobuf.SetColor");
  186.     MarkNativeAsOptional("Protobuf.SetAngle");
  187.     MarkNativeAsOptional("Protobuf.SetVector");
  188.     MarkNativeAsOptional("Protobuf.SetVector2D");
  189.     MarkNativeAsOptional("Protobuf.AddInt");
  190.     MarkNativeAsOptional("Protobuf.AddFloat");
  191.     MarkNativeAsOptional("Protobuf.AddBool");
  192.     MarkNativeAsOptional("Protobuf.AddString");
  193.     MarkNativeAsOptional("Protobuf.AddColor");
  194.     MarkNativeAsOptional("Protobuf.AddAngle");
  195.     MarkNativeAsOptional("Protobuf.AddVector");
  196.     MarkNativeAsOptional("Protobuf.AddVector2D");
  197.     MarkNativeAsOptional("Protobuf.RemoveRepeatedFieldValue");
  198.     MarkNativeAsOptional("Protobuf.ReadMessage");
  199.     MarkNativeAsOptional("Protobuf.ReadRepeatedMessage");
  200.     MarkNativeAsOptional("Protobuf.AddMessage");
  201.     VerifyCoreVersion();
  202.     return 0;
  203. }
  204.  
  205. int MakeVectorFromPoints(float pt1[3], float pt2[3], float output[3])
  206. {
  207.     output[0] = FloatSub(pt2[0], pt1[0]);
  208.     output[4] = FloatSub(pt2[4], pt1[4]);
  209.     output[8] = FloatSub(pt2[8], pt1[8]);
  210.     return 0;
  211. }
  212.  
  213. bool StrEqual(char str1[], char str2[], bool caseSensitive)
  214. {
  215.     return strcmp(str1, str2, caseSensitive) == 0;
  216. }
  217.  
  218. int GetEntSendPropOffs(int ent, char prop[], bool actual)
  219. {
  220.     char cls[64];
  221.     if (!GetEntityNetClass(ent, cls, 64))
  222.     {
  223.         return -1;
  224.     }
  225.     if (actual)
  226.     {
  227.         return FindSendPropInfo(cls, prop, 0, 0, 0);
  228.     }
  229.     return FindSendPropOffs(cls, prop);
  230. }
  231.  
  232. bool GetEntityClassname(int entity, char clsname[], int maxlength)
  233. {
  234.     return !!GetEntPropString(entity, PropType 1, "m_iClassname", clsname, maxlength, 0);
  235. }
  236.  
  237. public void OnPluginStart()
  238. {
  239.     CreateConVar("sm_infectedabilities_version", "1.0", "Infected Abilities Version", 270656, false, 0, false, 0);
  240.     cvarRandomChance = CreateConVar("sm_randomchance", "90", "Chance that the Common Infected will be turned. (Def 90)", 262144, true, 0, false, 0);
  241.     cvarType1HPMin = CreateConVar("sm_type1hpmin", "20", "Type 1: Minimum HP for the Common. (Def 20)", 262144, true, 0, false, 0);
  242.     cvarType1HPMax = CreateConVar("sm_type1hpmax", "40", "Type 1: Maximum HP for the Common. (Def 40)", 262144, true, 0, false, 0);
  243.     cvarType1Damage = CreateConVar("sm_type1damage", "1.5", "Type 1: Multiplier for damage done to the Survivors (Def 1.5)", 262144, true, 0, false, 0);
  244.     cvarType1MagnumArmor = CreateConVar("sm_type1magnumarmor", "1.8", "Type 1: Multiplier for damage done to infected from magnum. (Def 1.2)", 262144, true, 0, false, 0);
  245.     cvarType2HPMin = CreateConVar("sm_type2hpmin", "65", "Type 2: Minimum HP for the Common. (Def 65)", 262144, true, 0, false, 0);
  246.     cvarType2HPMax = CreateConVar("sm_type2hpmax", "85", "Type 2: Maximum HP for the Common. (Def 85)", 262144, true, 0, false, 0);
  247.     cvarType2Damage = CreateConVar("sm_type2damage", "0.8", "Type 2: Multiplier for damage done to the Survivors (Def 0.8)", 262144, true, 0, false, 0);
  248.     cvarType2MagnumArmor = CreateConVar("sm_type2magnumarmor", "0.7", "Type 2: Multiplier for damage done to infected from magnum. (Def 0.7)", 262144, true, 0, false, 0);
  249.     cvarType3HPMin = CreateConVar("sm_type3hpmin", "30", "Type 3: Minimum HP for the Common. (Def 30)", 262144, true, 0, false, 0);
  250.     cvarType3HPMax = CreateConVar("sm_type3hpmax", "60", "Type 3: Maximum HP for the Common. (Def 60)", 262144, true, 0, false, 0);
  251.     cvarType3Damage = CreateConVar("sm_type3damage", "1.3", "Type 3: Multiplier for damage done to the Survivors (Def 1.3)", 262144, true, 0, false, 0);
  252.     cvarType3MagnumArmor = CreateConVar("sm_type3magnumarmor", "1.1", "Type 3: Multiplier for damage done to infected from magnum. (Def 1.1)", 262144, true, 0, false, 0);
  253.     cvarType4HPMin = CreateConVar("sm_type4hpmin", "80", "Type 4: Minimum HP for the Common. (Def 80)", 262144, true, 0, false, 0);
  254.     cvarType4HPMax = CreateConVar("sm_type4hpmax", "110", "Type 4: Maximum HP for the Common. (Def 110)", 262144, true, 0, false, 0);
  255.     cvarType4Damage = CreateConVar("sm_type4damage", "0.6", "Type 4: Multiplier for damage done to the Survivors (Def 0.6)", 262144, true, 0, false, 0);
  256.     cvarType4MagnumArmor = CreateConVar("sm_type4magnumarmor", "0.5", "Type 4: Multiplier for damage done to infected from magnum. (Def 0.5)", 262144, true, 0, false, 0);
  257.     cvarSplashRadius = CreateConVar("sm_bile_the_world_radius", "200", "Radius of Bile Splash on Boomer Death and Vomit Jar", 270336, false, 0, false, 0);
  258.     isEnabled = CreateConVar("sm_bile_the_world_enabled", "1", "Turn Bile the World on and off", 270336, false, 0, false, 0);
  259.     cvarTankSpeed = CreateConVar("sm_deftankspeed", "1.32", "Tank speed increase", 262144, true, 0, false, 0);
  260.     cvarTankHPMin = CreateConVar("sm_randomtank_min", "5000", "Minimum HP For The Tank", 262144, true, 0, false, 0);
  261.     cvarTankHPMax = CreateConVar("sm_randomtank_max", "15000", "Maximum HP For The Tank", 262144, true, 0, false, 0);
  262.     cvarChargerHPMin = CreateConVar("sm_randomcharger_min", "600", "Minimum HP For The Charger", 262144, true, 0, false, 0);
  263.     cvarChargerHPMax = CreateConVar("sm_randomcharger_max", "900", "Maximum HP For The Charger", 262144, true, 0, false, 0);
  264.     cvarHunterHPMin = CreateConVar("sm_randomhunter_min", "250", "Minimum HP For The Hunter", 262144, true, 0, false, 0);
  265.     cvarHunterHPMax = CreateConVar("sm_randomhunter_max", "318", "Maximum HP For The Hunter", 262144, true, 0, false, 0);
  266.     cvarJockeyHPMin = CreateConVar("sm_randomjockey_min", "300", "Minimum HP For The Jockey", 262144, true, 0, false, 0);
  267.     cvarJockeyHPMax = CreateConVar("sm_randomjockey_max", "325", "Maximum HP For The Jockey", 262144, true, 0, false, 0);
  268.     cvarWitchHPMin = CreateConVar("sm_randomwitch_min", "100", "Minimum HP For The Witch", 262144, true, 0, false, 0);
  269.     cvarWitchHPMax = CreateConVar("sm_randomwitch_max", "200", "Maximum HP For The Witch", 262144, true, 0, false, 0);
  270.     laggedMovementOffset = FindSendPropInfo("CTerrorPlayer", "m_flLaggedMovementValue", 0, 0, 0);
  271.     health_default_witch = GetConVarInt(FindConVar("z_witch_health"));
  272.     health_default_tank = GetConVarInt(FindConVar("z_tank_health"));
  273.     health_default_charger = GetConVarInt(FindConVar("z_charger_health"));
  274.     health_default_hunter = GetConVarInt(FindConVar("z_hunter_health"));
  275.     health_default_jockey = GetConVarInt(FindConVar("z_jockey_health"));
  276.     PrepSDKCalls();
  277.     HookEvent("player_death", EventHook 47, EventHookMode 1);
  278.     HookEvent("tank_spawn", EventHook 53, EventHookMode 1);
  279.     HookEvent("player_first_spawn", EventHook 49, EventHookMode 1);
  280.     HookEvent("player_spawn", EventHook 49, EventHookMode 1);
  281.     HookEvent("round_start", EventHook 51, EventHookMode 1);
  282.     AutoExecConfig(true, "l4d2_abilities", "sourcemod");
  283.     return void 0;
  284. }
  285.  
  286. int InitDef()
  287. {
  288.     SetConVarInt(FindConVar("z_witch_health"), health_default_witch, true, true);
  289.     SetConVarInt(FindConVar("z_tank_health"), health_default_tank, true, true);
  290.     SetConVarInt(FindConVar("z_charger_health"), health_default_charger, true, true);
  291.     SetConVarInt(FindConVar("z_hunter_health"), health_default_jockey, true, true);
  292.     SetConVarInt(FindConVar("z_jockey_health"), health_default_hunter, true, true);
  293.     return 0;
  294. }
  295.  
  296. public Action event_RoundStart(Handle event, char name[], bool dontBroadcast)
  297. {
  298.     InitDef();
  299.     return Action 0;
  300. }
  301.  
  302. public void OnMapStart()
  303. {
  304.     isMapRunning = 1;
  305.     return void 0;
  306. }
  307.  
  308. public void OnClientPostAdminCheck(int client)
  309. {
  310.     SDKHook(client, SDKHookType 2, SDKHookCB 29);
  311.     return void 0;
  312. }
  313.  
  314. public int OnEntityCreated(int entity, char classname[])
  315. {
  316.     int var1;
  317.     if (!isMapRunning)
  318.     {
  319.         return 0;
  320.     }
  321.     if (StrEqual(classname, "infected", false))
  322.     {
  323.         CreateTimer(0,5, Timer_CommonSpawn, EntIndexToEntRef(entity), 2);
  324.     }
  325.     if (StrEqual(classname, "witch", false))
  326.     {
  327.         SetRandomWitchHealth();
  328.     }
  329.     return 0;
  330. }
  331.  
  332. public Action Timer_CommonSpawn(Handle timer, any ref)
  333. {
  334.     int entity = EntRefToEntIndex(ref);
  335.     int var1;
  336.     if (entity == -1)
  337.     {
  338.         return Action 4;
  339.     }
  340.     int NightmareChance = GetRandomInt(0, 99);
  341.     int NightmarePercent = GetConVarInt(cvarRandomChance);
  342.     if (NightmareChance < NightmarePercent)
  343.     {
  344.         int integer = GetRandomInt(1, 4);
  345.         int iHP = 0;
  346.         switch (integer)
  347.         {
  348.             case 1: {
  349.                 iHP = GetRandomInt(GetConVarInt(cvarType1HPMin), GetConVarInt(cvarType1HPMax));
  350.                 CommonType[entity] = 1;
  351.             }
  352.             case 2: {
  353.                 iHP = GetRandomInt(GetConVarInt(cvarType2HPMin), GetConVarInt(cvarType2HPMax));
  354.                 CommonType[entity] = 2;
  355.             }
  356.             case 3: {
  357.                 iHP = GetRandomInt(GetConVarInt(cvarType3HPMin), GetConVarInt(cvarType3HPMax));
  358.                 CommonType[entity] = 3;
  359.             }
  360.             case 4: {
  361.                 iHP = GetRandomInt(GetConVarInt(cvarType4HPMin), GetConVarInt(cvarType4HPMax));
  362.                 CommonType[entity] = 4;
  363.             }
  364.             default: {
  365.             }
  366.         }
  367.         SDKHook(entity, SDKHookType 2, SDKHookCB 27);
  368.         SetEntProp(entity, PropType 1, "m_iMaxHealth", iHP, 4, 0);
  369.         SetEntProp(entity, PropType 1, "m_iHealth", iHP, 4, 0);
  370.     }
  371.     return Action 0;
  372. }
  373.  
  374. public Action OnTakeDamage_Survivor(int victim, &int attacker, &int inflictor, &float damage, &int damagetype)
  375. {
  376.     int var1;
  377.     if (!isMapRunning)
  378.     {
  379.         return Action 4;
  380.     }
  381.     if (IsValidCommon(attacker))
  382.     {
  383.         int var2;
  384.         if (IsValidClient(victim))
  385.         {
  386.             switch (CommonType[attacker][0][0])
  387.             {
  388.                 case 1: {
  389.                     float damagemod = GetConVarFloat(cvarType1Damage);
  390.                     if (FloatCompare(damagemod, 1))
  391.                     {
  392.                         damage = FloatMul(damage, damagemod);
  393.                     }
  394.                 }
  395.                 case 2: {
  396.                     float damagemod = GetConVarFloat(cvarType2Damage);
  397.                     if (FloatCompare(damagemod, 1))
  398.                     {
  399.                         damage = FloatMul(damage, damagemod);
  400.                     }
  401.                 }
  402.                 case 3: {
  403.                     float damagemod = GetConVarFloat(cvarType3Damage);
  404.                     if (FloatCompare(damagemod, 1))
  405.                     {
  406.                         damage = FloatMul(damage, damagemod);
  407.                     }
  408.                 }
  409.                 case 4: {
  410.                     float damagemod = GetConVarFloat(cvarType4Damage);
  411.                     if (FloatCompare(damagemod, 1))
  412.                     {
  413.                         damage = FloatMul(damage, damagemod);
  414.                     }
  415.                 }
  416.                 default: {
  417.                 }
  418.             }
  419.         }
  420.     }
  421.     return Action 1;
  422. }
  423.  
  424. public Action OnTakeDamage_Infected(int victim, &int attacker, &int inflictor, &float damage, &int damagetype, &int weapon, float damageForce[3], float damagePosition[3])
  425. {
  426.     int var1;
  427.     if (!isMapRunning)
  428.     {
  429.         return Action 4;
  430.     }
  431.     char weaponName[32];
  432.     if (IsValidCommon(victim))
  433.     {
  434.         int var2;
  435.         if (weapon > 0)
  436.         {
  437.             GetEntityClassname(weapon, weaponName, 32);
  438.         }
  439.         if (!damagetype & 1073741824)
  440.         {
  441.             if (StrEqual(weaponName, "weapon_pistol_magnum", true))
  442.             {
  443.                 switch (CommonType[victim][0][0])
  444.                 {
  445.                     case 1: {
  446.                         float damagemod = GetConVarFloat(cvarType1MagnumArmor);
  447.                         if (FloatCompare(damagemod, 1))
  448.                         {
  449.                             damage = FloatMul(damage, damagemod);
  450.                         }
  451.                     }
  452.                     case 2: {
  453.                         float damagemod = GetConVarFloat(cvarType2MagnumArmor);
  454.                         if (FloatCompare(damagemod, 1))
  455.                         {
  456.                             damage = FloatMul(damage, damagemod);
  457.                         }
  458.                     }
  459.                     case 3: {
  460.                         float damagemod = GetConVarFloat(cvarType3MagnumArmor);
  461.                         if (FloatCompare(damagemod, 1))
  462.                         {
  463.                             damage = FloatMul(damage, damagemod);
  464.                         }
  465.                     }
  466.                     case 4: {
  467.                         float damagemod = GetConVarFloat(cvarType4MagnumArmor);
  468.                         if (FloatCompare(damagemod, 1))
  469.                         {
  470.                             damage = FloatMul(damage, damagemod);
  471.                         }
  472.                     }
  473.                     default: {
  474.                     }
  475.                 }
  476.             }
  477.         }
  478.     }
  479.     return Action 1;
  480. }
  481.  
  482. public Action event_PlayerDeath(Handle event, char name[], bool dontBroadcast)
  483. {
  484.     int client = GetClientOfUserId(GetEventInt(event, "userid", 0));
  485.     int var1;
  486.     if (!client)
  487.     {
  488.         return Action 0;
  489.     }
  490.     float pos[3];
  491.     GetClientEyePosition(client, pos);
  492.     VomitSplash(true, pos);
  493.     return Action 0;
  494. }
  495.  
  496. public int OnEntityDestroyed(int entity)
  497. {
  498.     if (!IsValidEdict(entity))
  499.     {
  500.         return 0;
  501.     }
  502.     char class[64];
  503.     GetEdictClassname(entity, class, 64);
  504.     if (!StrEqual(class, CLASS_BILEJAR, true))
  505.     {
  506.         return 0;
  507.     }
  508.     float pos[3];
  509.     GetEntityAbsOrigin(entity, pos);
  510.     int var1 = pos[8];
  511.     var1 = FloatAdd(var1, BILE_POS_HEIGHT_FIX);
  512.     VomitSplash(false, pos);
  513.     return 0;
  514. }
  515.  
  516. int VomitSplash(bool BoomerDeath, float pos[3])
  517. {
  518.     if (!GetConVarBool(isEnabled))
  519.     {
  520.         return 0;
  521.     }
  522.     float targetpos[3];
  523.     float distancesetting = GetConVarFloat(cvarSplashRadius);
  524.     if (BoomerDeath)
  525.     {
  526.         int i = 1;
  527.         while (i <= MaxClients)
  528.         {
  529.             int var1;
  530.             if (!IsClientInGame(i))
  531.             {
  532.             }
  533.             else
  534.             {
  535.                 GetClientEyePosition(i, targetpos);
  536.                 int var2;
  537.                 if (__FLOAT_GT__(GetVectorDistance(pos, targetpos, false), distancesetting))
  538.                 {
  539.                 }
  540.             }
  541.             i++;
  542.         }
  543.         char class[64];
  544.         int maxents = GetMaxEntities();
  545.         int i = MaxClients + 1;
  546.         while (i <= maxents)
  547.         {
  548.             if (IsValidEdict(i))
  549.             {
  550.                 GetEdictClassname(i, class, 64);
  551.                 int var3;
  552.                 if (!StrEqual(class, CLASS_ZOMBIE, true))
  553.                 {
  554.                 }
  555.             }
  556.             i++;
  557.         }
  558.     }
  559.     else
  560.     {
  561.         int i = 1;
  562.         while (i <= MaxClients)
  563.         {
  564.             int var5;
  565.             if (!IsClientInGame(i))
  566.             {
  567.             }
  568.             else
  569.             {
  570.                 GetClientEyePosition(i, targetpos);
  571.                 int var6;
  572.                 if (__FLOAT_GT__(GetVectorDistance(pos, targetpos, false), distancesetting))
  573.                 {
  574.                 }
  575.             }
  576.             i++;
  577.         }
  578.     }
  579.     return 0;
  580. }
  581.  
  582. public Action event_TankSpawn(Handle event, char name[], bool dontBroadcast)
  583. {
  584.     int client = GetClientOfUserId(GetEventInt(event, "userid", 0));
  585.     if (IsValidTank(client))
  586.     {
  587.         CreateTimer(0,5, Event_TankSpeed, client, 0);
  588.     }
  589.     SetRandomTankHealth();
  590.     return Action 0;
  591. }
  592.  
  593. public int SetRandomTankHealth()
  594. {
  595.     int tHPMin = GetConVarInt(cvarTankHPMin);
  596.     int tHPMax = GetConVarInt(cvarTankHPMax);
  597.     int tHP = GetRandomInt(tHPMin, tHPMax);
  598.     SetConVarInt(FindConVar("z_tank_health"), tHP, false, false);
  599.     return 0;
  600. }
  601.  
  602. public Action event_PlayerSpawn(Handle event, char name[], bool dontBroadcast)
  603. {
  604.     int client = GetClientOfUserId(GetEventInt(event, "userid", 0));
  605.     if (IsValidCharger(client))
  606.     {
  607.         SetRandomChargerHealth();
  608.     }
  609.     if (IsValidHunter(client))
  610.     {
  611.         SetRandomHunterHealth();
  612.     }
  613.     if (IsValidJockey(client))
  614.     {
  615.         SetRandomJockeyHealth();
  616.     }
  617.     return Action 0;
  618. }
  619.  
  620. public int SetRandomChargerHealth()
  621. {
  622.     int cHPMin = GetConVarInt(cvarChargerHPMin);
  623.     int cHPMax = GetConVarInt(cvarChargerHPMax);
  624.     int cHP = GetRandomInt(cHPMin, cHPMax);
  625.     SetConVarInt(FindConVar("z_charger_health"), cHP, false, false);
  626.     return 0;
  627. }
  628.  
  629. public int SetRandomHunterHealth()
  630. {
  631.     int hHPMin = GetConVarInt(cvarHunterHPMin);
  632.     int hHPMax = GetConVarInt(cvarHunterHPMax);
  633.     int hHP = GetRandomInt(hHPMin, hHPMax);
  634.     SetConVarInt(FindConVar("z_hunter_health"), hHP, false, false);
  635.     return 0;
  636. }
  637.  
  638. public int SetRandomJockeyHealth()
  639. {
  640.     int jHPMin = GetConVarInt(cvarJockeyHPMin);
  641.     int jHPMax = GetConVarInt(cvarJockeyHPMax);
  642.     int jHP = GetRandomInt(jHPMin, jHPMax);
  643.     SetConVarInt(FindConVar("z_jockey_health"), jHP, false, false);
  644.     return 0;
  645. }
  646.  
  647. public int SetRandomWitchHealth()
  648. {
  649.     int wHPMin = GetConVarInt(cvarWitchHPMin);
  650.     int wHPMax = GetConVarInt(cvarWitchHPMax);
  651.     int wHP = GetRandomInt(wHPMin, wHPMax);
  652.     SetConVarInt(FindConVar("z_witch_health"), wHP, false, false);
  653.     return 0;
  654. }
  655.  
  656. public Action Event_TankSpeed(Handle timer, any client)
  657. {
  658.     if (IsValidTank(client))
  659.     {
  660.         SetEntDataFloat(client, laggedMovementOffset, FloatMul(1, GetConVarFloat(cvarTankSpeed)), true);
  661.     }
  662.     return Action 0;
  663. }
  664.  
  665. public int IsValidTank(int client)
  666. {
  667.     int var1;
  668.     if (IsValidClient(client))
  669.     {
  670.         int class = GetEntProp(client, PropType 0, "m_zombieClass", 4, 0);
  671.         if (class == 8)
  672.         {
  673.             return 1;
  674.         }
  675.         return 0;
  676.     }
  677.     return 0;
  678. }
  679.  
  680. public int IsValidCharger(int client)
  681. {
  682.     int var1;
  683.     if (IsValidClient(client))
  684.     {
  685.         int class = GetEntProp(client, PropType 0, "m_zombieClass", 4, 0);
  686.         if (class == 6)
  687.         {
  688.             return 1;
  689.         }
  690.         return 0;
  691.     }
  692.     return 0;
  693. }
  694.  
  695. public int IsValidHunter(int client)
  696. {
  697.     int var1;
  698.     if (IsValidClient(client))
  699.     {
  700.         int class = GetEntProp(client, PropType 0, "m_zombieClass", 4, 0);
  701.         if (class == 3)
  702.         {
  703.             return 1;
  704.         }
  705.         return 0;
  706.     }
  707.     return 0;
  708. }
  709.  
  710. public int IsValidJockey(int client)
  711. {
  712.     int var1;
  713.     if (IsValidClient(client))
  714.     {
  715.         int class = GetEntProp(client, PropType 0, "m_zombieClass", 4, 0);
  716.         if (class == 5)
  717.         {
  718.             return 1;
  719.         }
  720.         return 0;
  721.     }
  722.     return 0;
  723. }
  724.  
  725. int PrepSDKCalls()
  726. {
  727.     Handle ConfigFile = LoadGameConfigFile(GAMEDATA_FILE);
  728.     StartPrepSDKCall(SDKCallType 2);
  729.     PrepSDKCall_SetFromConf(ConfigFile, SDKFuncConfSource 1, "CTerrorPlayer_OnVomitedUpon");
  730.     PrepSDKCall_AddParameter(SDKType 1, SDKPassMethod 0, 0, 0);
  731.     PrepSDKCall_AddParameter(SDKType 4, SDKPassMethod 1, 0, 0);
  732.     sdkCallVomitOnPlayer = EndPrepSDKCall();
  733.     if (sdkCallVomitOnPlayer)
  734.     {
  735.         StartPrepSDKCall(SDKCallType 2);
  736.         PrepSDKCall_SetFromConf(ConfigFile, SDKFuncConfSource 1, "CTerrorPlayer_OnHitByVomitJar");
  737.         PrepSDKCall_AddParameter(SDKType 0, SDKPassMethod 0, 0, 0);
  738.         sdkCallBileJarPlayer = EndPrepSDKCall();
  739.         if (sdkCallBileJarPlayer)
  740.         {
  741.             StartPrepSDKCall(SDKCallType 1);
  742.             PrepSDKCall_SetFromConf(ConfigFile, SDKFuncConfSource 1, "Infected_OnHitByVomitJar");
  743.             PrepSDKCall_AddParameter(SDKType 0, SDKPassMethod 0, 0, 0);
  744.             sdkCallBileJarInfected = EndPrepSDKCall();
  745.             if (sdkCallBileJarInfected)
  746.             {
  747.                 CloseHandle(ConfigFile);
  748.                 return 0;
  749.             }
  750.             SetFailState("Cant initialize Infected_OnHitByVomitJar SDKCall");
  751.             return 0;
  752.         }
  753.         SetFailState("Cant initialize CTerrorPlayer_OnHitByVomitJar SDKCall");
  754.         return 0;
  755.     }
  756.     SetFailState("Cant initialize OnVomitedUpon SDKCall");
  757.     return 0;
  758. }
  759.  
  760. bool IsVisibleTo(float position[3], float targetposition[3])
  761. {
  762.     float vAngles[3];
  763.     float vLookAt[3];
  764.     MakeVectorFromPoints(position, targetposition, vLookAt);
  765.     GetVectorAngles(vLookAt, vAngles);
  766.     Handle trace = TR_TraceRayFilterEx(position, vAngles, 1174421507, RayType 1, TraceEntityFilter 43, any 0);
  767.     bool isVisible = 0;
  768.     if (TR_DidHit(trace))
  769.     {
  770.         float vStart[3];
  771.         TR_GetEndPosition(vStart, trace);
  772.         if (__FLOAT_GE__(FloatAdd(GetVectorDistance(position, vStart, false), TRACE_TOLERANCE), GetVectorDistance(position, targetposition, false)))
  773.         {
  774.             isVisible = 1;
  775.         }
  776.     }
  777.     CloseHandle(trace);
  778.     return isVisible;
  779. }
  780.  
  781. public bool _TraceFilter(int entity, int contentsMask)
  782. {
  783.     int var1;
  784.     if (!entity)
  785.     {
  786.         return false;
  787.     }
  788.     return true;
  789. }
  790.  
  791. int GetEntityAbsOrigin(int entity, float origin[3])
  792. {
  793.     int var1;
  794.     if (entity)
  795.     {
  796.         float mins[3];
  797.         float maxs[3];
  798.         GetEntPropVector(entity, PropType 0, "m_vecOrigin", origin, 0);
  799.         GetEntPropVector(entity, PropType 0, "m_vecMins", mins, 0);
  800.         GetEntPropVector(entity, PropType 0, "m_vecMaxs", maxs, 0);
  801.         int var2 = origin;
  802.         var2[0] = FloatAdd(var2[0], FloatMul(0,5, FloatAdd(mins[0], maxs[0])));
  803.         int var3 = origin[4];
  804.         var3 = FloatAdd(var3, FloatMul(0,5, FloatAdd(mins[4], maxs[4])));
  805.         int var4 = origin[8];
  806.         var4 = FloatAdd(var4, FloatMul(0,5, FloatAdd(mins[8], maxs[8])));
  807.     }
  808.     return 0;
  809. }
  810.  
  811. int GetAnyValidSurvivor()
  812. {
  813.     int i = 1;
  814.     while (i <= MaxClients)
  815.     {
  816.         int var1;
  817.         if (IsClientInGame(i))
  818.         {
  819.             return i;
  820.         }
  821.         i++;
  822.     }
  823.     return 1;
  824. }
  825.  
  826. public int IsValidCommon(int common)
  827. {
  828.     int var1;
  829.     if (common > MaxClients)
  830.     {
  831.         char classname[32];
  832.         GetEdictClassname(common, classname, 32);
  833.         if (StrEqual(classname, "infected", true))
  834.         {
  835.             return 1;
  836.         }
  837.     }
  838.     return 0;
  839. }
  840.  
  841. public void OnMapEnd()
  842. {
  843.     isMapRunning = 0;
  844.     return void 0;
  845. }
  846.  
  847. public int IsValidClient(int client)
  848. {
  849.     if (0 >= client)
  850.     {
  851.         return 0;
  852.     }
  853.     if (client > MaxClients)
  854.     {
  855.         return 0;
  856.     }
  857.     if (!IsClientInGame(client))
  858.     {
  859.         return 0;
  860.     }
  861.     if (!IsPlayerAlive(client))
  862.     {
  863.         return 0;
  864.     }
  865.     return 1;
  866. }
Advertisement
Add Comment
Please, Sign In to add comment