Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Duel stats system for Pro Duel by Proteh
- #define WEAPON_FIST 0
- #define WEAPON_CHAINSAW 1
- #define WEAPON_PISTOL 2
- #define WEAPON_SHOTGUN 3
- #define WEAPON_SSG 4
- #define WEAPON_CHAINGUN 5
- #define WEAPON_PLASMA 6
- #define WEAPON_LG 7
- #define WEAPON_RAILGUN 8
- #define WEAPON_RL 9
- #define WEAPON_GL 10
- #define MAX_WEAPONS 11
- int duelPlayerNumber[2];
- int shotsFired[2][MAX_WEAPONS];
- int hitsOnTarget[2][MAX_WEAPONS];
- function void resetStatsSystem() {
- duelPlayerNumber[0] = -1;
- duelPlayerNumber[1] = -1;
- for(int i = 0; i < MAX_WEAPONS; i++)
- {
- shotsFired[0][i] = 0;
- shotsFired[1][i] = 0;
- hitsOnTarget[0][i] = 0;
- hitsOnTarget[1][i] = 0;
- }
- }
- function void findActiveDuelPlayers() {
- for(int i = 0, j = 0; i < 64; i++)
- {
- if(!PlayerIsSpectator(i))
- {
- duelPlayerNumber[j] = i;
- j++;
- }
- if(j == 2)
- {
- break;
- }
- }
- }
- function int getIndexForPlayerNumber(int pNumber) {
- return (duelPlayerNumber[0] == pNumber ? 0 : (duelPlayerNumber[1] == pNumber ? 1 : -1));
- }
- function int getPlayerWeaponAccuracyPercent(int pNumber, int weapon) {
- if(shotsFired[getIndexForPlayerNumber(pNumber)][weapon])
- {
- return 0;
- }
- return (hitsOnTarget[getIndexForPlayerNumber(pNumber)][weapon] / shotsFired[getIndexForPlayerNumber(pNumber)][weapon]) * 100;
- }
- function int getPlayerTotalAccuracyPercent(int pNumber) {
- int totalShots;
- int totalShotsOnTarget;
- for(int i = 0; i < MAX_WEAPONS; i++)
- {
- totalShots = shotsFired[getIndexForPlayerNumber(pNumber)][i];
- totalShotsOnTarget = hitsOnTarget[getIndexForPlayerNumber(pNumber)][i];
- }
- if(totalShots == 0)
- {
- return 0;
- }
- return (totalShotsOnTarget / totalShots) * 100;
- }
- function int getPlayerCollectedMajorPickups(int pNumber) {
- int totalCollectedMajorPickups;
- totalCollectedMajorPickups += CheckActorInventory(pNumber + 1000, "CollectedGreenArmors");
- totalCollectedMajorPickups += CheckActorInventory(pNumber + 1000, "CollectedBlueArmors");
- totalCollectedMajorPickups += CheckActorInventory(pNumber + 1000, "CollectedYellowArmors");
- totalCollectedMajorPickups += CheckActorInventory(pNumber + 1000, "CollectedRedArmors");
- totalCollectedMajorPickups += CheckActorInventory(pNumber + 1000, "CollectedSoulSpheres");
- return totalCollectedMajorPickups;
- }
- SCRIPT "Game Event" (int type, int arg1, int arg2) EVENT
- {
- switch(type)
- {
- case GAMEEVENT_ROUND_STARTS:
- resetStatsSystem();
- findActiveDuelPlayers();
- break;
- case GAMEEVENT_ROUND_ENDS:
- // Show stats
- // Global stats
- int mostAccuratePlayerNum;
- int bestControlPlayerNum;
- // Item control calc
- if(getPlayerCollectedMajorPickups(duelPlayerNumber[0]) > getPlayerCollectedMajorPickups(duelPlayerNumber[1]))
- {
- bestControlPlayerNum = duelPlayerNumber[0];
- }
- else if(getPlayerCollectedMajorPickups(duelPlayerNumber[0]) < getPlayerCollectedMajorPickups(duelPlayerNumber[1])
- {
- bestControlPlayerNum = duelPlayerNumber[1];
- }
- else
- {
- bestControlPlayerNum = -1;
- }
- // Accuracy calc
- if(getPlayerTotalAccuracyPercent(duelPlayerNumber[0]) > getPlayerTotalAccuracyPercent(duelPlayerNumber[1]))
- {
- mostAccuratePlayerNum = duelPlayerNumber[0];
- }
- else if(getPlayerTotalAccuracyPercent(duelPlayerNumber[0]) < getPlayerTotalAccuracyPercent(duelPlayerNumber[1])
- {
- mostAccuratePlayerNum = duelPlayerNumber[1];
- }
- else
- {
- mostAccuratePlayerNum = -1;
- }
- // Printing
- if(bestControlPlayerNum == -1 && mostAccuratePlayerNum == -1)
- {
- HudMessageBold(s:"Most accurate: Both\nBest Item Control: Both", HUDMSG_PLAIN, 0, CR_WHITE, 1.5, 0.5, 0);
- }
- else if(bestControlPlayerNum == -1 && mostAccuratePlayerNum != -1)
- {
- HudMessageBold(s:"Most accurate: ", n:mostAccuratePlayerNum, s:"\nBest Item Control: Both", HUDMSG_PLAIN, 0, CR_WHITE, 1.5, 0.5, 0);
- }
- else if(bestControlPlayerNum != -1 && mostAccuratePlayerNum == -1)
- {
- HudMessageBold(s:"Most accurate: Both\nBest Item Control: ", n:bestControlPlayerNum, HUDMSG_PLAIN, 0, CR_WHITE, 1.5, 0.5, 0);
- }
- else
- {
- HudMessageBold(s:"Most accurate: ", n:mostAccuratePlayerNum, s:"\nBest Item Control: ", n:bestControlPlayerNum, HUDMSG_PLAIN, 0, CR_WHITE, 1.5, 0.5, 0);
- }
- // End global stats
- // Player 1 stats
- HudMessageBold(n:duelPlayerNumber[0], s:"'s stats:\n\nPickups:\n",
- s:"\nGreen Armors: ", d:CheckActorInventory(duelPlayerNumber[0] + 1000, "CollectedGreenArmors"),
- s:"\nBlue Armors: ", d:CheckActorInventory(duelPlayerNumber[0] + 1000, "CollectedBlueArmors"),
- s:"\nYellow Armors: ", d:CheckActorInventory(duelPlayerNumber[0] + 1000, "CollectedYellowArmors"),
- s:"\nRed Armors: ", d:CheckActorInventory(duelPlayerNumber[0] + 1000, "CollectedRedArmors"),
- s:"\nSoulspheres: ", d:CheckActorInventory(duelPlayerNumber[0] + 1000, "CollectedSoulSpheres"),
- s:"\n\nWeapon Accuracy:\n",
- s:"\nFist: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[0], WEAPON_FIST), s:"%", s:"[", d:hitsOnTarget[0][WEAPON_FIST], s:" / ", d:shotsFired[0][WEAPON_FIST], s:"]",
- s:"\nChainsaw: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[0], WEAPON_CHAINSAW), s:"%", s:"[", d:hitsOnTarget[0][WEAPON_CHAINSAW], s:" / ", d:shotsFired[0][WEAPON_CHAINSAW], s:"]",
- s:"\nPistol: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[0], WEAPON_PISTOL), s:"%", s:"[", d:hitsOnTarget[0][WEAPON_PISTOL], s:" / ", d:shotsFired[0][WEAPON_PISTOL], s:"]",
- s:"\nShotgun: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[0], WEAPON_SHOTGUN), s:"%", s:"[", d:hitsOnTarget[0][WEAPON_SHOTGUN], s:" / ", d:shotsFired[0][WEAPON_SHOTGUN], s:"]",
- s:"\nSSG: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[0], WEAPON_SSG), s:"%", s:"[", d:hitsOnTarget[0][WEAPON_SSG], s:" / ", d:shotsFired[0][WEAPON_SSG], s:"]",
- s:"\nChaingun: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[0], WEAPON_CHAINGUN), s:"%", s:"[", d:hitsOnTarget[0][WEAPON_CHAINGUN], s:" / ", d:shotsFired[0][WEAPON_CHAINGUN], s:"]",
- s:"\nPlasma Rifle: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[0], WEAPON_PLASMA), s:"%", s:"[", d:hitsOnTarget[0][WEAPON_PLASMA], s:" / ", d:shotsFired[0][WEAPON_PLASMA], s:"]",
- s:"\nRocket Launcher ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[0], WEAPON_RL), s:"%", s:"[", d:hitsOnTarget[0][WEAPON_RL], s:" / ", d:shotsFired[0][WEAPON_RL], s:"]",
- s:"\nGrenade Launcher: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[0], WEAPON_GL), s:"%", s:"[", d:hitsOnTarget[0][WEAPON_GL], s:" / ", d:shotsFired[0][WEAPON_GL], s:"]",
- s:"\nLightning Gun: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[0], WEAPON_LG), s:"%", s:"[", d:hitsOnTarget[0][WEAPON_LG], s:" / ", d:shotsFired[0][WEAPON_LG], s:"]",
- s:"\nRailgun: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[0], WEAPON_RAILGUN), s:"%", s:"[", d:hitsOnTarget[0][WEAPON_RAILGUN], s:" / ", d:shotsFired[0][WEAPON_RAILGUN], s:"]",
- HUDMSG_PLAIN, 1, CR_WHITE, 0.0, 0.5, 0);
- // End player 1 stats
- // Player 2 stats
- HudMessageBold(n:duelPlayerNumber[1], s:"'s stats:\n\nPickups:\n",
- s:"\nGreen Armors: ", d:CheckActorInventory(duelPlayerNumber[1] + 1000, "CollectedGreenArmors"),
- s:"\nBlue Armors: ", d:CheckActorInventory(duelPlayerNumber[1] + 1000, "CollectedBlueArmors"),
- s:"\nYellow Armors: ", d:CheckActorInventory(duelPlayerNumber[1] + 1000, "CollectedYellowArmors"),
- s:"\nRed Armors: ", d:CheckActorInventory(duelPlayerNumber[1] + 1000, "CollectedRedArmors"),
- s:"\nSoulspheres: ", d:CheckActorInventory(duelPlayerNumber[1] + 1000, "CollectedSoulSpheres"),
- s:"\n\nWeapon Accuracy:\n",
- s:"\nFist: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[1], WEAPON_FIST), s:"%", s:"[", d:hitsOnTarget[1][WEAPON_FIST], s:" / ", d:shotsFired[1][WEAPON_FIST], s:"]",
- s:"\nChainsaw: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[1], WEAPON_CHAINSAW), s:"%", s:"[", d:hitsOnTarget[1][WEAPON_CHAINSAW], s:" / ", d:shotsFired[1][WEAPON_CHAINSAW], s:"]",
- s:"\nPistol: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[1], WEAPON_PISTOL), s:"%", s:"[", d:hitsOnTarget[1][WEAPON_PISTOL], s:" / ", d:shotsFired[1][WEAPON_PISTOL], s:"]",
- s:"\nShotgun: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[1], WEAPON_SHOTGUN), s:"%", s:"[", d:hitsOnTarget[1][WEAPON_SHOTGUN], s:" / ", d:shotsFired[1][WEAPON_SHOTGUN], s:"]",
- s:"\nSSG: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[1], WEAPON_SSG), s:"%", s:"[", d:hitsOnTarget[1][WEAPON_SSG], s:" / ", d:shotsFired[1][WEAPON_SSG], s:"]",
- s:"\nChaingun: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[1], WEAPON_CHAINGUN), s:"%", s:"[", d:hitsOnTarget[1][WEAPON_CHAINGUN], s:" / ", d:shotsFired[1][WEAPON_CHAINGUN], s:"]",
- s:"\nPlasma Rifle: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[1], WEAPON_PLASMA), s:"%", s:"[", d:hitsOnTarget[1][WEAPON_PLASMA], s:" / ", d:shotsFired[1][WEAPON_PLASMA], s:"]",
- s:"\nRocket Launcher: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[1], WEAPON_RL), s:"%", s:"[", d:hitsOnTarget[1][WEAPON_RL], s:" / ", d:shotsFired[1][WEAPON_RL], s:"]",
- s:"\nGrenade Launcher: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[1], WEAPON_GL), s:"%", s:"[", d:hitsOnTarget[1][WEAPON_GL], s:" / ", d:shotsFired[1][WEAPON_GL], s:"]",
- s:"\nLightning Gun: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[1], WEAPON_LG), s:"%", s:"[", d:hitsOnTarget[1][WEAPON_LG], s:" / ", d:shotsFired[1][WEAPON_LG], s:"]",
- s:"\nRailgun: ", d:getPlayerWeaponAccuracyPercent(duelPlayerNumber[1], WEAPON_RAILGUN), s:"%", s:"[", d:hitsOnTarget[1][WEAPON_RAILGUN], s:" / ", d:shotsFired[1][WEAPON_RAILGUN], s:"]",
- HUDMSG_PLAIN, 2, CR_WHITE, 1.0, 0.5, 0);
- // End player 2 stats
- // End show stats
- resetStatsSystem();
- break;
- case GAMEEVENT_ROUND_ABORTED:
- resetStatsSystem();
- break;
- default:
- break;
- }
- }
- SCRIPT "Register Weapon Shot" (int weapon)
- {
- SetActivatorToTarget(0);
- shotsFired[getIndexForPlayerNumber(PlayerNumber())][weapon]++;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement