Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <fader>
- #include <foreach>
- #include <sscanf2>
- #include <zcmd>
- new Power[MAX_PLAYERS];
- public OnFilterScriptInit()
- {
- EnableVehicleFriendlyFire();
- foreach(new i: Player)
- {
- SetPlayerTeam(i, 1);
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- foreach(new i: Player)
- {
- SetPlayerTeam(i, -1);
- }
- Seifader_OnExit();
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- SetPlayerTeam(playerid, 1);
- Power[playerid] = 1;
- return 1;
- }
- public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
- {
- new Float:damage, Float:health, Float:armour, string[256];
- new power = Power[issuerid];
- if(issuerid != INVALID_PLAYER_ID)
- {
- if(amount == 2.64)
- {
- if(GetPlayerWeapon(issuerid) > 21 && GetPlayerWeapon(issuerid) < 34)
- {
- switch(power)
- {
- case 0..10: damage = 11.5;
- case 11..20: damage = 12.0;
- case 21..30: damage = 12.5;
- case 31..40: damage = 13.0;
- case 41..50: damage = 13.5;
- case 51..60: damage = 14.0;
- case 61..70: damage = 14.5;
- case 71..80: damage = 15.0;
- case 81..90: damage = 15.5;
- case 91..100: damage = 16.0;
- }
- }
- }
- else
- {
- if(weaponid >= 0 && weaponid < 16)
- {
- switch(weaponid)
- {
- case 0:
- {
- switch(bodypart)
- {
- case 3:
- {
- switch(power)
- {
- case 0..10: damage = 3.0;
- case 11..20: damage = 3.5;
- case 21..30: damage = 4.0;
- case 31..40: damage = 4.5;
- case 41..50: damage = 5.0;
- case 51..60: damage = 5.5;
- case 61..70: damage = 6.0;
- case 71..80: damage = 6.5;
- case 81..90: damage = 7.0;
- case 91..100: damage = 7.5;
- }
- }
- case 4:
- {
- switch(power)
- {
- case 0..10: damage = 4.5;
- case 11..20: damage = 5.0;
- case 21..30: damage = 5.5;
- case 31..40: damage = 6.0;
- case 41..50: damage = 6.5;
- case 51..60: damage = 7.0;
- case 61..70: damage = 7.5;
- case 71..80: damage = 8.0;
- case 81..90: damage = 8.5;
- case 91..100: damage = 9.0;
- }
- }
- case 5..8:
- {
- switch(power)
- {
- case 0..10: damage = 2.0;
- case 11..20: damage = 2.5;
- case 21..30: damage = 3.0;
- case 31..40: damage = 3.5;
- case 41..50: damage = 4.0;
- case 51..60: damage = 4.5;
- case 61..70: damage = 5.0;
- case 71..80: damage = 5.5;
- case 81..90: damage = 6.0;
- case 91..100: damage = 6.5;
- }
- }
- case 9:
- {
- switch(power)
- {
- case 0..10: damage = 4.0;
- case 11..20: damage = 4.5;
- case 21..30: damage = 5.0;
- case 31..40: damage = 5.5;
- case 41..50: damage = 6.0;
- case 51..60: damage = 6.5;
- case 61..70: damage = 7.0;
- case 71..80: damage = 7.5;
- case 81..90: damage = 8.0;
- case 91..100: damage = 8.5;
- }
- }
- }
- }
- case 1:
- {
- switch(bodypart)
- {
- case 3:
- {
- switch(power)
- {
- case 0..10: damage = 4.0;
- case 11..20: damage = 4.5;
- case 21..30: damage = 5.0;
- case 31..40: damage = 5.5;
- case 41..50: damage = 6.0;
- case 51..60: damage = 6.5;
- case 61..70: damage = 7.0;
- case 71..80: damage = 7.5;
- case 81..90: damage = 8.0;
- case 91..100: damage = 8.5;
- }
- }
- case 4:
- {
- switch(power)
- {
- case 0..10: damage = 5.5;
- case 11..20: damage = 6.0;
- case 21..30: damage = 6.5;
- case 31..40: damage = 7.0;
- case 41..50: damage = 7.5;
- case 51..60: damage = 8.0;
- case 61..70: damage = 8.5;
- case 71..80: damage = 9.0;
- case 81..90: damage = 9.5;
- case 91..100: damage = 10.0;
- }
- }
- case 5..8:
- {
- switch(power)
- {
- case 0..10: damage = 3.0;
- case 11..20: damage = 3.5;
- case 21..30: damage = 4.0;
- case 31..40: damage = 4.5;
- case 41..50: damage = 5.0;
- case 51..60: damage = 5.5;
- case 61..70: damage = 6.0;
- case 71..80: damage = 6.5;
- case 81..90: damage = 7.0;
- case 91..100: damage = 7.5;
- }
- }
- case 9:
- {
- switch(power)
- {
- case 0..10: damage = 5.0;
- case 11..20: damage = 5.5;
- case 21..30: damage = 6.0;
- case 31..40: damage = 6.5;
- case 41..50: damage = 7.0;
- case 51..60: damage = 7.5;
- case 61..70: damage = 8.0;
- case 71..80: damage = 8.5;
- case 81..90: damage = 9.0;
- case 91..100: damage = 9.5;
- }
- }
- }
- }
- case 2,3,5,6,7,15:
- {
- switch(bodypart)
- {
- case 3:
- {
- switch(power)
- {
- case 0..10: damage = 6.0;
- case 11..20: damage = 6.5;
- case 21..30: damage = 7.0;
- case 31..40: damage = 7.5;
- case 41..50: damage = 8.0;
- case 51..60: damage = 8.5;
- case 61..70: damage = 9.0;
- case 71..80: damage = 9.5;
- case 81..90: damage = 10.0;
- case 91..100: damage = 10.5;
- }
- }
- case 4:
- {
- switch(power)
- {
- case 0..10: damage = 10.5;
- case 11..20: damage = 11.0;
- case 21..30: damage = 11.5;
- case 31..40: damage = 12.0;
- case 41..50: damage = 12.5;
- case 51..60: damage = 13.0;
- case 61..70: damage = 13.5;
- case 71..80: damage = 14.0;
- case 81..90: damage = 14.5;
- case 91..100: damage = 15.0;
- }
- }
- case 5..8:
- {
- switch(power)
- {
- case 0..10: damage = 5.0;
- case 11..20: damage = 5.5;
- case 21..30: damage = 6.0;
- case 31..40: damage = 6.5;
- case 41..50: damage = 7.0;
- case 51..60: damage = 7.5;
- case 61..70: damage = 8.0;
- case 71..80: damage = 8.5;
- case 81..90: damage = 9.0;
- case 91..100: damage = 9.5;
- }
- }
- case 9:
- {
- switch(power)
- {
- case 0..10: damage = 10.0;
- case 11..20: damage = 10.5;
- case 21..30: damage = 11.0;
- case 31..40: damage = 11.5;
- case 41..50: damage = 12.0;
- case 51..60: damage = 12.5;
- case 61..70: damage = 13.0;
- case 71..80: damage = 13.5;
- case 81..90: damage = 14.0;
- case 91..100: damage = 14.5;
- }
- }
- }
- }
- case 4:
- {
- switch(bodypart)
- {
- case 3:
- {
- switch(power)
- {
- case 0..10: damage = 10.0;
- case 11..20: damage = 10.5;
- case 21..30: damage = 11.0;
- case 31..40: damage = 11.5;
- case 41..50: damage = 12.0;
- case 51..60: damage = 12.5;
- case 61..70: damage = 13.0;
- case 71..80: damage = 13.5;
- case 81..90: damage = 14.0;
- case 91..100: damage = 14.5;
- }
- }
- case 4:
- {
- switch(power)
- {
- case 0..10: damage = 12.5;
- case 11..20: damage = 13.0;
- case 21..30: damage = 13.5;
- case 31..40: damage = 14.0;
- case 41..50: damage = 14.5;
- case 51..60: damage = 15.0;
- case 61..70: damage = 15.5;
- case 71..80: damage = 16.0;
- case 81..90: damage = 16.5;
- case 91..100: damage = 17.0;
- }
- }
- case 5..8:
- {
- switch(power)
- {
- case 0..10: damage = 6.0;
- case 11..20: damage = 6.5;
- case 21..30: damage = 7.0;
- case 31..40: damage = 7.5;
- case 41..50: damage = 8.0;
- case 51..60: damage = 8.5;
- case 61..70: damage = 9.0;
- case 71..80: damage = 9.5;
- case 81..90: damage = 10.0;
- case 91..100: damage = 10.5;
- }
- }
- case 9:
- {
- switch(power)
- {
- case 0..10: damage = 12.0;
- case 11..20: damage = 12.5;
- case 21..30: damage = 13.0;
- case 31..40: damage = 13.5;
- case 41..50: damage = 14.0;
- case 51..60: damage = 14.5;
- case 61..70: damage = 15.0;
- case 71..80: damage = 15.5;
- case 81..90: damage = 16.0;
- case 91..100: damage = 16.5;
- }
- }
- }
- }
- case 8:
- {
- switch(bodypart)
- {
- case 3,4:
- {
- switch(power)
- {
- case 0..10: damage = 15.0;
- case 11..20: damage = 15.5;
- case 21..30: damage = 16.0;
- case 31..40: damage = 16.5;
- case 41..50: damage = 17.0;
- case 51..60: damage = 17.5;
- case 61..70: damage = 18.0;
- case 71..80: damage = 18.5;
- case 81..90: damage = 19.0;
- case 91..100: damage = 19.5;
- }
- }
- case 5..8:
- {
- switch(power)
- {
- case 0..10: damage = 12.0;
- case 11..20: damage = 12.5;
- case 21..30: damage = 13.0;
- case 31..40: damage = 13.5;
- case 41..50: damage = 14.0;
- case 51..60: damage = 14.5;
- case 61..70: damage = 15.0;
- case 71..80: damage = 15.5;
- case 81..90: damage = 16.0;
- case 91..100: damage = 16.5;
- }
- }
- case 9: damage = 200;
- }
- }
- default: damage = amount;
- }
- format(string, sizeof(string), "Damage produced by the blow or cut: %f | Aggressor power: %d | Weapon ID: %d | Bodypart: %s", damage, power, weaponid, GetBodypart(bodypart));
- SendClientMessageToAll(-1, string);
- SendClientMessageToAll(-1, "|-----------------|");
- }
- if(weaponid > 21 && weaponid < 52)
- {
- switch(weaponid)
- {
- case 22,23:
- {
- switch(bodypart)
- {
- case 3,4: damage = 45.0;
- case 5..8: damage = 20.0;
- case 9: damage = 200.0;
- }
- }
- case 24:
- {
- switch(bodypart)
- {
- case 3,4: damage = 70.0;
- case 5..8: damage = 35.0;
- case 9: damage = 200.0;
- }
- }
- case 25..27:
- {
- switch(bodypart)
- {
- case 3,4: damage = 90.0;
- case 5..8: damage = 50.0;
- case 9: damage = 200.0;
- }
- }
- case 28,32:
- {
- switch(bodypart)
- {
- case 3,4: damage = 45.0;
- case 5..8: damage = 20.0;
- case 9: damage = 200.0;
- }
- }
- case 29:
- {
- switch(bodypart)
- {
- case 3,4: damage = 55.0;
- case 5..8: damage = 30.0;
- case 9: damage = 200.0;
- }
- }
- case 30:
- {
- switch(bodypart)
- {
- case 3,4: damage = 65.0;
- case 5..8: damage = 40.0;
- case 9: damage = 200.0;
- }
- }
- case 31:
- {
- switch(bodypart)
- {
- case 3,4: damage = 60.0;
- case 5..8: damage = 35.0;
- case 9: damage = 200.0;
- }
- }
- case 33:
- {
- switch(bodypart)
- {
- case 3,4: damage = 80.0;
- case 5..8: damage = 40.0;
- case 9: damage = 200.0;
- }
- }
- case 34:
- {
- switch(bodypart)
- {
- case 3,4: damage = 100.0;
- case 5..8: damage = 60.0;
- case 9: damage = 200.0;
- }
- }
- default: damage = amount;
- }
- format(string, sizeof(string), "Damage produced by the shot: %f | Weapon ID: %d | Bodypart: %s", damage, weaponid, GetBodypart(bodypart));
- SendClientMessageToAll(-1, string);
- SendClientMessageToAll(-1, "|-----------------|");
- FadePlayerScreen(playerid, 0xE20000FF, 25);
- }
- }
- GetPlayerHealth(playerid, health);
- GetPlayerArmour(playerid, armour);
- if(armour)
- {
- if(armour > damage) SetPlayerArmour(playerid, armour-damage);
- else
- {
- SetPlayerArmour(playerid, 0.0);
- armour = damage-armour;
- if(armour >= health) SetPlayerHealth(playerid, 0.0);
- else SetPlayerHealth(playerid, health-armour);
- }
- }
- else
- {
- if(health > damage) SetPlayerHealth(playerid, health-damage);
- else SetPlayerHealth(playerid, 0.0);
- }
- }
- return 1;
- }
- stock PlayerName(playerid)
- {
- new name[32];
- GetPlayerName(playerid, name, 32);
- return name;
- }
- stock GetBodypart(id)
- {
- new name[64] = "None";
- if(id == 3) name = "Torso";
- if(id == 4) name = "Groin";
- if(id == 5) name = "Left arm";
- if(id == 6) name = "Right arm";
- if(id == 7) name = "Left leg";
- if(id == 8) name = "Right leg";
- if(id == 9) name = "Head";
- return name;
- }
- COMMAND:givepower(playerid, params[])
- {
- if(!sscanf(params, "ui", params[0], params[1]))
- {
- if(params[0] != INVALID_PLAYER_ID)
- {
- if(params[1] < 0 || params[1] > 100) return SendClientMessage(playerid, -1, "[ERROR] You can only occur between 1 and 100 strength points");
- Power[params[0]] = params[1];
- new string[128];
- format(string, sizeof(string), "%s has given you %d strength points.", PlayerName(playerid), params[1]);
- SendClientMessage(params[0], -1, string);
- }
- else SendClientMessage(playerid, -1, "[ERROR] The selected player is not connected.");
- }
- else SendClientMessage(playerid, -1, "[USAGE] '/givepower' [Player ID] [Power 1-100]");
- return 1;
- }
- COMMAND:power(playerid, params[])
- {
- new string[128];
- format(string, sizeof(string), "You have %d strength points.", Power[playerid]);
- SendClientMessage(playerid, -1, string);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement