Update zDarkTigerStats.cs

Fixes
This commit is contained in:
ChocoTaco1 2020-09-25 19:25:33 -04:00
parent 92055637e2
commit ab99a03279

View file

@ -153,9 +153,16 @@
// Adjusted clientShotsFired, to fix warnings, still unsure why flyingVehicleObject is getting passed into a onFire? // Adjusted clientShotsFired, to fix warnings, still unsure why flyingVehicleObject is getting passed into a onFire?
// Added server crashing tracking, not 100% accurate // Added server crashing tracking, not 100% accurate
// //
// 7.5
// Fixed averages was useing the total avg instead of game avg
// Removed distance calc from weapon score on throwables
// Fixed killStreaks
// Fixed unused vars reset
//
//
//-----------Settings------------ //-----------Settings------------
//Notes score ui width is 592 //Notes score ui width is 592
$dtStats::version = 7.4; $dtStats::version = 7.5;
//disable stats system //disable stats system
$dtStats::Enable = 1; $dtStats::Enable = 1;
//enable disable map stats //enable disable map stats
@ -600,7 +607,7 @@ $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "groundDeaths";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "plasmaTurretKills"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "plasmaTurretKills";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "plasmaTurretDeaths"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "plasmaTurretDeaths";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "aaTurretKills"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "aaTurretKills";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "aaTurretDeaths"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "aaTurretDeaths";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "elfTurretKills"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "elfTurretKills";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "elfTurretDeaths"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "elfTurretDeaths";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "mortarTurretKills"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "mortarTurretKills";
@ -673,7 +680,6 @@ $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "satchelShotsFired";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "cgHits"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "cgHits";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "laserHits"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "laserHits";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "blasterHits"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "blasterHits";
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "elfHits";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "discHits"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "discHits";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "grenadeHits"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "grenadeHits";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hGrenadeHits"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hGrenadeHits";
@ -683,6 +689,7 @@ $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "plasmaHits";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "shockHits"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "shockHits";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "mineHits"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "mineHits";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "satchelHits"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "satchelHits";
//aoe hits //aoe hits
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "plasmaDmgHits"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "plasmaDmgHits";
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "discDmgHits"; $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "discDmgHits";
@ -1193,8 +1200,7 @@ $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "null";//rng number
//Unused vars that are not tracked but used for other things //Unused vars that are not tracked but used for other things
$dtStats::unused[$dtStats::unusedCount++] = "timeToLive"; $dtStats::unused[$dtStats::unusedCount++] = "timeToLive";
$dtStats::unused[$dtStats::unusedCount++] = "at"; $dtStats::unused[$dtStats::unusedCount++] = "ksCounter";
$dtStats::unused[$dtStats::unusedCount++] = "gt";
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -3795,8 +3801,8 @@ function DefaultGame::postGameStats(%game,%dtStats){ //stats to add up at the en
%dtStats.shockScore = %dtStats.shockKill + %dtStats.shockMA + %dtStats.shockKillAir + (%dtStats.shockKillDist/2) + %dtStats.shockCom + %dtStats.shockRearShot; %dtStats.shockScore = %dtStats.shockKill + %dtStats.shockMA + %dtStats.shockKillAir + (%dtStats.shockKillDist/2) + %dtStats.shockCom + %dtStats.shockRearShot;
%dtStats.plasmaScore = %dtStats.plasmaKill + %dtStats.plasmaMA + %dtStats.plasmaKillAir + (%dtStats.plasmaKillDist/50) + %dtStats.plasmaCom; %dtStats.plasmaScore = %dtStats.plasmaKill + %dtStats.plasmaMA + %dtStats.plasmaKillAir + (%dtStats.plasmaKillDist/50) + %dtStats.plasmaCom;
%dtStats.blasterScore = %dtStats.blasterKill + %dtStats.blasterMA + %dtStats.blasterKillAir + (%dtStats.blasterKillDist/50) + %dtStats.blasterCom; %dtStats.blasterScore = %dtStats.blasterKill + %dtStats.blasterMA + %dtStats.blasterKillAir + (%dtStats.blasterKillDist/50) + %dtStats.blasterCom;
%dtStats.mineScore = %dtStats.mineKill + %dtStats.mineMA + %dtStats.mineKillAir + (%dtStats.mineKillDist/20) + %dtStats.mineCom; %dtStats.mineScore = %dtStats.mineKill + %dtStats.mineMA + %dtStats.mineKillAir + %dtStats.mineCom;
%dtStats.satchelScore = %dtStats.satchelKill + %dtStats.satchelMA + %dtStats.satchelKillAir + (%dtStats.satchelKillDist/20) + %dtStats.satchelCom; %dtStats.satchelScore = %dtStats.satchelKill + %dtStats.satchelMA + %dtStats.satchelKillAir + %dtStats.satchelCom;
%dtStats.weaponScore = %dtStats.cgScore + %dtStats.weaponScore = %dtStats.cgScore +
%dtStats.discScore + %dtStats.discScore +
@ -4654,8 +4660,8 @@ function incGameStats(%dtStats,%game) {// record that games stats and inc by one
} }
case "Min": case "Min":
%val = getDynamicField(%dtStats,%varName); %val = getDynamicField(%dtStats,%varName);
setValueField(%dtStats,%varNameType,"g",%game,%c,%val); setValueField(%dtStats,%varNameType,"g",%game,%c,%val);
%varID = $mapStats::mapVarIndex[%varNameType,%game]; %varID = $mapStats::mapVarIndex[%varNameType,%game];
if(%varID > 0 && $dtStats::mapStats){ if(%varID > 0 && $dtStats::mapStats){
%varID -= 1; %varID -= 1;
@ -4675,6 +4681,7 @@ function incGameStats(%dtStats,%game) {// record that games stats and inc by one
} }
case "Avg" or "AvgI": case "Avg" or "AvgI":
%val = getDynamicField(%dtStats,%varName); %val = getDynamicField(%dtStats,%varName);
setValueField(%dtStats,%varNameType,"g",%game,%c,%val);
%varID = $mapStats::mapVarIndex[%varNameType,%game]; %varID = $mapStats::mapVarIndex[%varNameType,%game];
if(%varID > 0 && %val != 0 && $dtStats::mapStats){ if(%varID > 0 && %val != 0 && $dtStats::mapStats){
%varID -= 1; %varID -= 1;
@ -4716,8 +4723,6 @@ function incGameStats(%dtStats,%game) {// record that games stats and inc by one
%total = getField(%t,1); %total = getField(%t,1);
%gameCount = getField(%t,2); %gameCount = getField(%t,2);
} }
if(%x ==1)
setValueField(%dtStats,%varNameType,"g",%game,%c,%avg);// may not be needed
setValueField(%dtStats,%varNameType,"t",%game,%x, hasValue(%avg) @ "%a" @ hasValue(%total) @ "%a" @ hasValue(%gameCount)); setValueField(%dtStats,%varNameType,"t",%game,%x, hasValue(%avg) @ "%a" @ hasValue(%total) @ "%a" @ hasValue(%gameCount));
} }
} }
@ -4981,6 +4986,10 @@ function resetDtStats(%dtStats,%game,%slow){
schedule(32*%i,0,"resetChain",%game,%dtStats,%x,(%i * %amount)); schedule(32*%i,0,"resetChain",%game,%dtStats,%x,(%i * %amount));
} }
schedule(32*(%i+1),0,"resetChain",%game,%dtStats,(%x+%leftOver),(%i * %amount)); schedule(32*(%i+1),0,"resetChain",%game,%dtStats,(%x+%leftOver),(%i * %amount));
for(%i = 1; %i <= $dtStats::unusedCount; %i++){//script unused
%var = $dtStats::unused[%i];
setDynamicField(%dtStats,%var,0);
}
} }
else{ else{
for(%q = 0; %q < $statsVars::count[%game]; %q++){ for(%q = 0; %q < $statsVars::count[%game]; %q++){
@ -5084,12 +5093,12 @@ function clientKillStats(%game,%clVictim, %clKiller, %damageType, %implement, %d
if(isObject(%victimPlayer) && isObject(%killerPlayer) && %damageType != $DamageType::IndoorDepTurret && %damageLocation != $DamageType::OutdoorDepTurret){ if(isObject(%victimPlayer) && isObject(%killerPlayer) && %damageType != $DamageType::IndoorDepTurret && %damageLocation != $DamageType::OutdoorDepTurret){
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
%clKiller.k++; %clVictim.k = 0; %killerDT.ksCounter++; %victimDT.ksCounter = 0;
if(%clVictim == %clKiller || %damageType == $DamageType::Suicide || %damageType == $DamageType::Lava || %damageType == $DamageType::OutOfBounds || %damageType == $DamageType::Ground || %damageType == $DamageType::Lightning){ if(%clVictim == %clKiller || %damageType == $DamageType::Suicide || %damageType == $DamageType::Lava || %damageType == $DamageType::OutOfBounds || %damageType == $DamageType::Ground || %damageType == $DamageType::Lightning){
%clVictim.k = %clKiller.k = 0; %victimDT.ksCounter = %killerDT.ksCounter = 0;
} }
if(%killerDT.killStreak < %clKiller.k){ if(%killerDT.killStreak < %killerDT.ksCounter){
%killerDT.killStreak = %clKiller.k; %killerDT.killStreak = %killerDT.ksCounter;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
if(%victimPlayer.hitBy[%clKiller]){ if(%victimPlayer.hitBy[%clKiller]){
@ -5494,21 +5503,32 @@ function GameConnection::dtMessage(%this,%message,%sfx,%bypass){
} }
function rayTest(%targetObject,%dis){ function rayTest(%targetObject,%dis){
%mask = $TypeMasks::StaticShapeObjectType | $TypeMasks::InteriorObjectType | $TypeMasks::TerrainObjectType; if(isObject(%targetObject)){
%rayStart = %targetObject.getWorldBoxCenter(); %mask = $TypeMasks::StaticShapeObjectType | $TypeMasks::InteriorObjectType | $TypeMasks::TerrainObjectType;
%rayEnd = VectorAdd(%rayStart,"0 0" SPC ((%dis+1.15) * -1)); %rayStart = %targetObject.getWorldBoxCenter();
%ground = !ContainerRayCast(%rayStart, %rayEnd, %mask, %targetObject); %rayEnd = VectorAdd(%rayStart,"0 0" SPC ((%dis+1.15) * -1));
return %ground; %ground = !ContainerRayCast(%rayStart, %rayEnd, %mask, %targetObject);
return %ground;
}
else{
return 0;
error("Fix Me rayTest");
}
} }
function rayTestDis(%targetObject){ function rayTestDis(%targetObject){
%mask = $TypeMasks::StaticShapeObjectType | $TypeMasks::InteriorObjectType | $TypeMasks::TerrainObjectType; if(isObject(%targetObject)){
%rayStart = %targetObject.getWorldBoxCenter(); %mask = $TypeMasks::StaticShapeObjectType | $TypeMasks::InteriorObjectType | $TypeMasks::TerrainObjectType;
%rayEnd = VectorAdd(%rayStart,"0 0" SPC -5000); %rayStart = %targetObject.getWorldBoxCenter();
%ray = ContainerRayCast(%rayStart, %rayEnd, %mask, %targetObject); %rayEnd = VectorAdd(%rayStart,"0 0" SPC -5000);
if(!%ray) %ray = ContainerRayCast(%rayStart, %rayEnd, %mask, %targetObject);
if(!%ray)
return 0;
return vectorDist(%rayStart,getWords(%ray,1,3)) - 1.15;
}
else{
return 0; return 0;
%dis = vectorDist(%rayStart,getWords(%ray,1,3)) - 1.15; error("Fix Me rayTestDis");
return %dis; }
} }
function vectorRayCast(%startPos,%vec,%dis){ function vectorRayCast(%startPos,%vec,%dis){
%mask = $TypeMasks::StaticShapeObjectType | $TypeMasks::InteriorObjectType | $TypeMasks::TerrainObjectType | $TypeMasks::PlayerObjectType; %mask = $TypeMasks::StaticShapeObjectType | $TypeMasks::InteriorObjectType | $TypeMasks::TerrainObjectType | $TypeMasks::PlayerObjectType;
@ -5539,7 +5559,7 @@ function testHit(%client){
%dmgType = %data.radiusDamageType; %dmgType = %data.radiusDamageType;
//error(%dmgType); //error(%dmgType);
return 1; return 1;
} }
} }
} }
return 0; return 0;
@ -5557,11 +5577,11 @@ function clientDmgStats(%data,%position,%sourceObject, %targetObject, %damageTyp
%sourceClient = %targetClient.lastHitBy; %sourceClient = %targetClient.lastHitBy;
if(rayTest(%targetObject, $dtStats::midAirHeight) && %damageType == $DamageType::Lightning) if(rayTest(%targetObject, $dtStats::midAirHeight) && %damageType == $DamageType::Lightning)
%sourceClient.dtStats.lightningMAEVHits++; %sourceClient.dtStats.lightningMAEVHits++;
//else else
// %sourceDT.EVMAHit++; %sourceDT.EVMAHit++;
} }
return; return;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
if(%amount > 0 && %damageType > 0){ if(%amount > 0 && %damageType > 0){
if(isObject(%sourceObject)){ if(isObject(%sourceObject)){
@ -5643,7 +5663,7 @@ function clientDmgStats(%data,%position,%sourceObject, %targetObject, %damageTyp
case "left_middle":%sourceDT.hitHeadLeft++; %targetDT.hitTakenHeadLeft++; case "left_middle":%sourceDT.hitHeadLeft++; %targetDT.hitTakenHeadLeft++;
} }
} }
%rayTest = rayTestDis(%targetObject); %rayTest = rayTestDis(%targetObject);
if(%rayTest >= $dtStats::midAirHeight && %damageType != $DamageType::Bullet){ if(%rayTest >= $dtStats::midAirHeight && %damageType != $DamageType::Bullet){
if(%sourceDT.maHitDist < %dis){%sourceDT.maHitDist = %dis;} if(%sourceDT.maHitDist < %dis){%sourceDT.maHitDist = %dis;}
if(%sourceDT.maHitHeight < %rayTest){%sourceDT.maHitHeight = %rayTest;} if(%sourceDT.maHitHeight < %rayTest){%sourceDT.maHitHeight = %rayTest;}
@ -11622,7 +11642,7 @@ $dtStats::prefLog = 0; // enable logging of server hangs
function prefTest(%time,%skip){ function prefTest(%time,%skip){
%real = getRealTime(); %real = getRealTime();
%plCount = $HostGamePlayerCount - $HostGameBotCount; %plCount = $HostGamePlayerCount - $HostGameBotCount;
if(isGameRun() && !$dtStats::building && %plCount > 0){// only track during run time if(isGameRun() && !$dtStats::building && %plCount > 1){// only track during run time
%dif = (%real - %time) - $dtStats::prefTestTime; %dif = (%real - %time) - $dtStats::prefTestTime;
//echo(%dif); //echo(%dif);
if(%dif > $dtStats::prefTolerance && !%skip){ if(%dif > $dtStats::prefTolerance && !%skip){
@ -11640,7 +11660,7 @@ function prefTest(%time,%skip){
dtPingAvg(); dtPingAvg();
} }
if($dtStats::prefEnable){ if($dtStats::prefEnable){
if(%plCount > 1) if(isGameRun() && %plCount > 1)
schedule($dtStats::prefTestTime, 0, "prefTest",%real,%skip); schedule($dtStats::prefTestTime, 0, "prefTest",%real,%skip);
else else
schedule($dtStats::prefTestIdleTime, 0, "prefTest",%real,1); schedule($dtStats::prefTestIdleTime, 0, "prefTest",%real,1);