Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //=====================INCLUDES=====================
- #include <a_samp>
- #include <zcmd>
- #include <sscanf2>
- //=====================DIALOGS======================
- #define DIALOG_DAMAGE 1927
- //==================CONTROL PANEL===================
- #define FILTERSCRIPT
- #define MAX_DAMAGES 1000
- #define SCM SendClientMessage
- #define FORMAT:%0(%1) format(%0, sizeof(%0), %1)
- #define BODY_PART_TORSO 3
- #define BODY_PART_GROIN 4
- #define BODY_PART_RIGHT_ARM 5
- #define BODY_PART_LEFT_ARM 6
- #define BODY_PART_RIGHT_LEG 7
- #define BODY_PART_LEFT_LEG 8
- #define BODY_PART_HEAD 9
- //===================ENUMERATORS====================
- enum dmgInfo
- {
- dmgDamage,
- dmgWeapon,
- dmgBodypart,
- dmgKevlarhit,
- dmgSeconds[90],
- }
- new DamageInfo[MAX_PLAYERS][MAX_DAMAGES][dmgInfo];
- public OnFilterScriptInit()
- {
- print("\n ==================================");
- print(" | |");
- print(" | Damage System |");
- print(" | By Hreesang |");
- print(" | |");
- print(" ==================================\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- stock ResetPlayerDamages(playerid)
- {
- for(new id = 0; id < MAX_DAMAGES; id++)
- {
- if(DamageInfo[playerid][id][dmgDamage] != 0)
- {
- DamageInfo[playerid][id][dmgDamage] = 0;
- DamageInfo[playerid][id][dmgWeapon] = 0;
- DamageInfo[playerid][id][dmgBodypart] = 0;
- DamageInfo[playerid][id][dmgKevlarhit] = 0;
- strcpy(DamageInfo[playerid][id][dmgSeconds], "-", 90);
- }
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- ResetPlayerDamages(playerid);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- ResetPlayerDamages(playerid);
- return 1;
- }
- stock ShowPlayerDamages(playerid, toid)
- {
- new
- str[1000], str1[500], count = 0, name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof(name));
- for(new id = 0; id < MAX_DAMAGES; id++)
- {
- if(DamageInfo[playerid][id][dmgDamage] != 0) count++;
- }
- if(count == 0) return ShowPlayerDialog(toid, DIALOG_DAMAGE, DIALOG_STYLE_LIST, name, "There is no damage to display...", "Close", "");
- else if(count > 0)
- {
- for(new id = 0; id < MAX_DAMAGES; id++)
- {
- if(DamageInfo[playerid][id][dmgDamage] != 0)
- {
- FORMAT:str1("%d dmg from %s to %s (Kevlarhit: %d) %s\n", DamageInfo[playerid][id][dmgDamage], GetWeaponNameEx(DamageInfo[playerid][id][dmgWeapon]), GetBodypartName(DamageInfo[playerid][id][dmgBodypart]), DamageInfo[playerid][id][dmgKevlarhit], DamageInfo[playerid][id][dmgSeconds]);
- strcat(str, str1);
- }
- }
- ShowPlayerDialog(toid, DIALOG_DAMAGE, DIALOG_STYLE_LIST, name, str, "Close", "");
- }
- return 1;
- }
- stock GetName(playerid)
- {
- new name;
- GetPlayerName(playerid, name, sizeof(name));
- return name;
- }
- CMD:damages(playerid, params[])
- {
- new
- id, Float: pPos[3];
- if(sscanf(params, "u", id)) return SCM(playerid, 0xFF6347FF, "USAGE: {FFFFFF}/damages [playerid/PartOfName]");
- if(!IsPlayerConnected(id)) return SCM(playerid, 0xFF6347FF, "Playerid is not an active player.");
- GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
- if(IsPlayerInRangeOfPoint(playerid, 7.0, pPos[0], pPos[1], pPos[2]))
- {
- ShowPlayerDamages(id, playerid);
- }
- else return SCM(playerid, 0xB8BAC6FF, "You're too far away.");
- return 1;
- }
- stock ReturnDate()
- {
- new sendString[90], MonthStr[40];
- gettime(hour, minute, second);
- getdate(year, month, day);
- switch(month)
- {
- case 1: MonthStr = "January";
- case 2: MonthStr = "February";
- case 3: MonthStr = "March";
- case 4: MonthStr = "April";
- case 5: MonthStr = "May";
- case 6: MonthStr = "June";
- case 7: MonthStr = "July";
- case 8: MonthStr = "August";
- case 9: MonthStr = "September";
- case 10: MonthStr = "October";
- case 11: MonthStr = "November";
- case 12: MonthStr = "December";
- }
- format(sendString, sizeof(sendString), "%s %d %d - %02d:%02d:%02d", MonthStr, day, year, hour, minute, second);
- return sendString;
- }
- public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
- {
- if(IsPlayerConnected(playerid))
- {
- new
- id, Float: pHP, Float: pArm;
- GetPlayerHealth(playerid, pHP);
- GetPlayerArmour(playerid, pArm);
- for(new i = 0; i < MAX_DAMAGES; i++)
- {
- if(!DamageInfo[playerid][i][dmgDamage])
- {
- id = i;
- break;
- }
- }
- DamageInfo[playerid][id][dmgDamage] = floatround(amount, floatround_round);
- DamageInfo[playerid][id][dmgWeapon] = weaponid;
- DamageInfo[playerid][id][dmgBodypart] = bodypart;
- if(pArm > 0) DamageInfo[playerid][id][dmgKevlarhit] = 1;
- else if(pArm < 1) DamageInfo[playerid][id][dmgKevlarhit] = 0;
- strcpy(DamageInfo[playerid][id][dmgSeconds], ReturnDate(), 90);
- }
- return 1;
- }
- stock GetWeaponNameEx(weaponid)
- {
- new weaponname[60];
- GetWeaponName(weaponid, weaponname, sizeof(weaponname));
- return weaponname;
- }
- stock GetBodypartName(bodypart)
- {
- new bodyname[60];
- switch(bodypart)
- {
- case BODY_PART_TORSO: FORMAT:bodyname("TORSO");
- case BODY_PART_GROIN: FORMAT:bodyname("GROIN");
- case BODY_PART_RIGHT_ARM: FORMAT:bodyname("RIGHT ARM");
- case BODY_PART_LEFT_ARM: FORMAT:bodyname("LEFT ARM");
- case BODY_PART_RIGHT_LEG: FORMAT:bodyname("RIGHT ARM");
- case BODY_PART_LEFT_LEG: FORMAT:bodyname("LEFT LEG");
- case BODY_PART_HEAD: FORMAT:bodyname("HEAD");
- }
- return bodyname;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement