Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sourcemod>
- #include <sdktools>
- #include <sdkhooks>
- #pragma semicolon 1
- #pragma tabsize 0
- new bool:lateLoad;
- char sDataFilePath[PLATFORM_MAX_PATH];
- int num;
- float fTargetDistance;
- public APLRes:AskPluginLoad2(Handle:plugin, bool:late, String:error[], errMax)
- {
- lateLoad = late;
- return APLRes_Success;
- }
- public OnPluginStart()
- {
- if (lateLoad)
- {
- for (new client = 1; client <= MaxClients; client++)
- {
- if (IsClientInGame(client))
- {
- OnClientPutInServer(client);
- }
- }
- }
- BuildPath(Path_SM, sDataFilePath, sizeof(sDataFilePath), "data/weapons_distance.ini");
- if (!FileExists(sDataFilePath))
- {
- new Handle:open_path = OpenFile(sDataFilePath, "w");
- WriteFileLine(open_path, "");
- CloseHandle(open_path);
- PrintToServer("Error Code: WSP-EC-01A");
- KvWriteToFile(sDataFilePath);
- }
- }
- void KvWriteToFile(const char[] path)
- {
- KeyValues kv = new KeyValues("Distance");
- kv.SetNum("DistanceForEveryWeapon", 1);
- kv.SetNum("DistanceForEveryWeapon_2", 1);
- kv.SetNum("DistanceForEveryWeapon_3", 1);
- kv.SetNum("DistanceForEveryWeapon_4", 1);
- kv.SetNum("DistanceForEveryWeapon_5", 1);
- kv.SetNum("weapon_autoshotgun/Damage", 1);
- kv.SetNum("weapon_hunting_rifle/Damage", 1);
- kv.SetNum("weapon_pistol/Damage", 1);
- kv.SetNum("weapon_rifle_ak47/Damage", 1);
- kv.SetNum("weapon_rifle/Damage", 1);
- kv.SetNum("weapon_pumpshotgun/Damage", 1);
- kv.SetNum("weapon_sniper_awp/Damage", 1);
- kv.SetNum("weapon_shotgun_chrome/Damage", 1);
- kv.SetNum("weapon_pistol_magnum/Damage", 1);
- kv.SetNum("weapon_grenade_launcher/Damage", 1);
- kv.SetNum("weapon_shotgun_spas/Damage", 1);
- kv.SetNum("weapon_smg/Damage", 1);
- kv.SetNum("weapon_smg_mp5 /Damage", 1);
- kv.SetNum("weapon_smg_silenced/Damage", 1);
- kv.SetNum("weapon_sniper_military/Damage", 1);
- kv.SetNum("weapon_rifle_sg552/Damage", 1);
- kv.SetNum("weapon_sniper_scout/Damage", 1);
- kv.SetNum("weapon_rifle_m60/Damage", 1);
- kv.SetNum("weapon_rifle_desert/Damage", 1);
- kv.SetNum("weapon_autoshotgun/Damage_2", 1);
- kv.SetNum("weapon_hunting_rifle/Damage_2", 1);
- kv.SetNum("weapon_pistol/Damage_2", 1);
- kv.SetNum("weapon_rifle_ak47/Damage_2", 1);
- kv.SetNum("weapon_rifle/Damage_2", 1);
- kv.SetNum("weapon_pumpshotgun/Damage_2", 1);
- kv.SetNum("weapon_sniper_awp/Damage_2", 1);
- kv.SetNum("weapon_shotgun_chrome/Damage_2", 1);
- kv.SetNum("weapon_pistol_magnum/Damage_2", 1);
- kv.SetNum("weapon_grenade_launcher/Damage_2", 1);
- kv.SetNum("weapon_shotgun_spas/Damage_2", 1);
- kv.SetNum("weapon_smg/Damage_2", 1);
- kv.SetNum("weapon_smg_mp5 /Damage_2", 1);
- kv.SetNum("weapon_smg_silenced/Damage_2", 1);
- kv.SetNum("weapon_sniper_military/Damage_2", 1);
- kv.SetNum("weapon_rifle_sg552/Damage_2", 1);
- kv.SetNum("weapon_sniper_scout/Damage_2", 1);
- kv.SetNum("weapon_rifle_m60/Damage_2", 1);
- kv.SetNum("weapon_rifle_desert/Damage_2", 1);
- kv.SetNum("weapon_autoshotgun/Damage_3", 1);
- kv.SetNum("weapon_hunting_rifle/Damage_3", 1);
- kv.SetNum("weapon_pistol/Damage_3", 1);
- kv.SetNum("weapon_rifle_ak47/Damage_3", 1);
- kv.SetNum("weapon_rifle/Damage_3", 1);
- kv.SetNum("weapon_pumpshotgun/Damage_3", 1);
- kv.SetNum("weapon_sniper_awp/Damage_3", 1);
- kv.SetNum("weapon_shotgun_chrome/Damage_3", 1);
- kv.SetNum("weapon_pistol_magnum/Damage_3", 1);
- kv.SetNum("weapon_grenade_launcher/Damage_3", 1);
- kv.SetNum("weapon_shotgun_spas/Damage_3", 1);
- kv.SetNum("weapon_smg/Damage_3", 1);
- kv.SetNum("weapon_smg_mp5 /Damage_3", 1);
- kv.SetNum("weapon_smg_silenced/Damage_3", 1);
- kv.SetNum("weapon_sniper_military/Damage_3", 1);
- kv.SetNum("weapon_rifle_sg552/Damage_3", 1);
- kv.SetNum("weapon_sniper_scout/Damage_3", 1);
- kv.SetNum("weapon_rifle_m60/Damage_3", 1);
- kv.SetNum("weapon_rifle_desert/Damage_3", 1);
- kv.SetNum("weapon_autoshotgun/Damage_4", 1);
- kv.SetNum("weapon_hunting_rifle/Damage_4", 1);
- kv.SetNum("weapon_pistol/Damage_4", 1);
- kv.SetNum("weapon_rifle_ak47/Damage_4", 1);
- kv.SetNum("weapon_rifle/Damage_4", 1);
- kv.SetNum("weapon_pumpshotgun/Damage_4", 1);
- kv.SetNum("weapon_sniper_awp/Damage_4", 1);
- kv.SetNum("weapon_shotgun_chrome/Damage_4", 1);
- kv.SetNum("weapon_pistol_magnum/Damage_4", 1);
- kv.SetNum("weapon_grenade_launcher/Damage_4", 1);
- kv.SetNum("weapon_shotgun_spas/Damage_4", 1);
- kv.SetNum("weapon_smg/Damage_4", 1);
- kv.SetNum("weapon_smg_mp5 /Damage_4", 1);
- kv.SetNum("weapon_smg_silenced/Damage_4", 1);
- kv.SetNum("weapon_sniper_military/Damage_4", 1);
- kv.SetNum("weapon_rifle_sg552/Damage_4", 1);
- kv.SetNum("weapon_sniper_scout/Damage_4", 1);
- kv.SetNum("weapon_rifle_m60/Damage_4", 1);
- kv.SetNum("weapon_rifle_desert/Damage_4", 1);
- kv.SetNum("weapon_autoshotgun/Damage_5", 1);
- kv.SetNum("weapon_hunting_rifle/Damage_5", 1);
- kv.SetNum("weapon_pistol/Damage_5", 1);
- kv.SetNum("weapon_rifle_ak47/Damage_5", 1);
- kv.SetNum("weapon_rifle/Damage_5", 1);
- kv.SetNum("weapon_pumpshotgun/Damage_5", 1);
- kv.SetNum("weapon_sniper_awp/Damage_5", 1);
- kv.SetNum("weapon_shotgun_chrome/Damage_5", 1);
- kv.SetNum("weapon_pistol_magnum/Damage_5", 1);
- kv.SetNum("weapon_grenade_launcher/Damage_5", 1);
- kv.SetNum("weapon_shotgun_spas/Damage_5", 1);
- kv.SetNum("weapon_smg/Damage_5", 1);
- kv.SetNum("weapon_smg_mp5 /Damage_5", 1);
- kv.SetNum("weapon_smg_silenced/Damage_5", 1);
- kv.SetNum("weapon_sniper_military/Damage_5", 1);
- kv.SetNum("weapon_rifle_sg552/Damage_5", 1);
- kv.SetNum("weapon_sniper_scout/Damage_5", 1);
- kv.SetNum("weapon_rifle_m60/Damage_5", 1);
- kv.SetNum("weapon_rifle_desert/Damage_5", 1);
- kv.ExportToFile(path);
- delete kv;
- }
- public OnClientPutInServer(client)
- {
- SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
- }
- public OnClientDisconnect(client)
- {
- SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
- }
- public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)
- {
- if (IsValidInfected(victim))
- {
- KeyValues kv = new KeyValues("Distance");
- if (kv.ImportFromFile(sDataFilePath))
- {
- new DistanceI = KvGetNum(kv, "DistanceForEveryWeapon", 1);
- new DistanceI2 = KvGetNum(kv, "DistanceForEveryWeapon_2", 1);
- new DistanceI3 = KvGetNum(kv, "DistanceForEveryWeapon_3", 1);
- new DistanceI4 = KvGetNum(kv, "DistanceForEveryWeapon_4", 1);
- new DistanceI5 = KvGetNum(kv, "DistanceForEveryWeapon_5", 1);
- decl String:classname[64];
- GetClientWeapon(attacker, classname, sizeof(classname));
- if (KvJumpToKey(kv, classname, true))
- {
- float fDamagerPos[3], fDangerPos[3];
- GetEntPropVector(attacker, Prop_Send, "m_vecOrigin", fDamagerPos);
- GetEntPropVector(victim, Prop_Send, "m_vecOrigin", fDangerPos);
- fTargetDistance = GetVectorDistance(fDamagerPos, fDangerPos);
- if (fTargetDistance > DistanceI5)
- {
- num = KvGetNum(kv, "Damage_5", 1);
- damage -= num;
- }
- else if (fTargetDistance > DistanceI4)
- {
- num = KvGetNum(kv, "Damage_4", 1);
- damage -= num;
- }
- else if (fTargetDistance > DistanceI3)
- {
- num = KvGetNum(kv, "Damage_3", 1);
- damage -= num;
- }
- else if (fTargetDistance > DistanceI2)
- {
- num = KvGetNum(kv, "Damage_2", 1);
- damage -= num;
- }
- else if (fTargetDistance > DistanceI)
- {
- num = KvGetNum(kv, "Damage", 1);
- damage -= num;
- }
- return Plugin_Changed;
- }
- }
- }
- return Plugin_Continue;
- }
- stock bool:IsValidInfected( client )
- {
- if ( client < 1 || client > MaxClients ) return false;
- if ( !IsClientConnected( client )) return false;
- if ( !IsClientInGame( client )) return false;
- if ( GetClientTeam( client ) != 3 ) return false;
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement