mirror of
https://github.com/ChocoTaco1/TacoServer.git
synced 2026-07-16 00:24:35 +00:00
Update zDarkTigerStats.cs
This commit is contained in:
parent
2320e8d11d
commit
a2a55694b6
1 changed files with 413 additions and 373 deletions
|
|
@ -8,206 +8,13 @@
|
||||||
// Version 5.0 - DuleMod and Arena support / optimizing / fixes / misc stuff
|
// Version 5.0 - DuleMod and Arena support / optimizing / fixes / misc stuff
|
||||||
// Version 6.0 - Lan & Bot Support / Leaderboard / Stats Storage Overhaul / Optimization / Fixes
|
// Version 6.0 - Lan & Bot Support / Leaderboard / Stats Storage Overhaul / Optimization / Fixes
|
||||||
// Version 7.0 - Code refactor / Heavy Optimization / Map Stats / Server Stats / Fixes / Misc other features
|
// Version 7.0 - Code refactor / Heavy Optimization / Map Stats / Server Stats / Fixes / Misc other features
|
||||||
|
// Version 8.0 - More Stats / Fixes / Server Event Log
|
||||||
|
// Note See bottom of file for full log
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//ChangeLog
|
|
||||||
// 4.0
|
|
||||||
// *Removed most redudent/repeating code
|
|
||||||
// *Menus - removed redudent menus
|
|
||||||
// *Global arrays - reorganized to get rid of repeating field values
|
|
||||||
// *Save Load - removed unused functions from the load/save fast methods
|
|
||||||
// *Stats - condensed the stats handling code by 50%
|
|
||||||
// *Fixed bug with saveing weapon stats after a person has left
|
|
||||||
// *Removed $dtStats::fullGames, as it was not necessary becuase $dtStats::fgPercentage gives the same level of contorl
|
|
||||||
// *Null GUID protection, just to prevent garbage or null data
|
|
||||||
//
|
|
||||||
// 5.0
|
|
||||||
// Rework functions to remove dependencies on other .vl2 this script now works in base, classic, and some variants of the two.
|
|
||||||
// Arena and Duel Mod Support added
|
|
||||||
// MA stats across all weapons/items
|
|
||||||
// Mine Grenades Satchel Turrets Vehicles stats added
|
|
||||||
// Stats menu clean up and rework, some stuff was not even working
|
|
||||||
// Remvoed ProjectileData::onCollision hook for stats collection, everything is now under clientDmg
|
|
||||||
// Make processGameLink into one funciton for all game types
|
|
||||||
// Added fail safe to getCNameToCID to prevent blank names
|
|
||||||
// Reduce decimal places and scale down large numbers in the menus
|
|
||||||
// Added $dtStats::debugEchos for debuging issues
|
|
||||||
// Fix issue with reset when player joins the game
|
|
||||||
// Fix issue with back button bricking the score hud, as well as add a fail safe so this cant happen
|
|
||||||
// Added to options to control whats displayed
|
|
||||||
// Reworked history to remove redudent menus and to add the ablity to view weapon history, may expand on later
|
|
||||||
// Cleaned up the field value array removed unused and unnecessary values
|
|
||||||
// Total stats now reset onces a value has getting near the 32 bit int limit
|
|
||||||
// Added Live View so players can watch there stats in realtime with the added feature of being able to pin it and keep that window in place
|
|
||||||
// Added Player/Armror kill stats
|
|
||||||
//
|
|
||||||
// 5.5 fixes
|
|
||||||
// Rework hand grenade stats collection
|
|
||||||
// Moved commonly overridden functions in its own package and uses DefaultGame-
|
|
||||||
// -activate/deactivatePackages to correctly postion them on top of gameType
|
|
||||||
// -overrides this fixes issues with lakRabbitGame overrides
|
|
||||||
// Reworked some of the values on live screen to be more correct
|
|
||||||
// Moved resetDtStats to MissionDropReady so that liveStats work in lan game
|
|
||||||
//
|
|
||||||
// 6.0
|
|
||||||
// Full lan/no guid support - function will gen a uid and associate it with the players name
|
|
||||||
// Overhall of the way we store stats - NOTE this breaks compatibility with older versions so delete serverStats folder
|
|
||||||
// Leader Board/Best Of System - this info is compled during non peak server hours see $dtStats::buildSetTime
|
|
||||||
// Rename set/getFieldValue to set/getDynamicField to be less confuseing with the other field functions that deal with strings
|
|
||||||
// Added setValueField function to handel the new way of stats storage
|
|
||||||
// Made skip zeros the the only method for running averages there for removed extra code
|
|
||||||
// Removed timeLimitReached and scoreLimitReached, not sure why i needed them in the first place everything runs threw gameover anyways
|
|
||||||
// Removed $dtStats::slowLoadTime its not used any more with the new system as theres only 2 files to load vs 11 at a given time
|
|
||||||
// History menu redone added a page system to allow for larger then 10 game history
|
|
||||||
// System now self maintains files and will delete when out of date see $dtStats::expireMax
|
|
||||||
// Removed AI checks and added in ai support for better testing
|
|
||||||
// Fix some divide by zero issues useing conditional ternary operator example condition ? result1 : result2
|
|
||||||
// Fix few dynamic fields that were named wrong resulting in stats just showing 0
|
|
||||||
// Score resetting is handeld in script to better handel end game saving
|
|
||||||
// Added unused varable array uFV for short, this is only to reset the values we dont track directly or unused gametype values
|
|
||||||
// Renamed the arrays to keep them shorter, example fieldValue is now FV
|
|
||||||
// Added max array to allow recording of varables we only want the max of example being longest sniper shot
|
|
||||||
// Added an averaging array to be able to store current averages, keeps code complexity down on loaderboard stuff, may rework later
|
|
||||||
// setValueField will now default to 0 is value is ""
|
|
||||||
// Fixed mine disc code forgot to add %targetClient to the resetCode
|
|
||||||
// Replaced gameWinStat with postGameStats were custom stuff can added up or handled at the end of the game
|
|
||||||
// Added Armor::onTrigger to better track stats on player, and to remove duplicate code
|
|
||||||
// Added a handfull of new varables to track, too many to list.
|
|
||||||
// Surival time is now acurite also simplified the code
|
|
||||||
// Removed turrets stats other then kills death
|
|
||||||
//
|
|
||||||
// 6.5 Fixes
|
|
||||||
// Misc fixes from 6.0 additions/changes
|
|
||||||
// Added option to view the other game types within the leaderboard stuff
|
|
||||||
// Bumped up distance for mortar midAirs so it's just outside its damage radius something strange is going on there
|
|
||||||
// Added game type arrays for display and processing
|
|
||||||
//
|
|
||||||
// 6.6
|
|
||||||
// Added game id to track individual games
|
|
||||||
// Removed misc turret stuff
|
|
||||||
// Removed vehicle menus
|
|
||||||
// Misc fixes
|
|
||||||
//
|
|
||||||
// 6.7
|
|
||||||
// Escort fix moved
|
|
||||||
// Stats now allways save no matter the condition, this should reduce some edge cases problems and to have a more complete data set
|
|
||||||
// Added gamePCT becuase of the change to always save to track witch maps/games were cut short or joined in the middle of a match
|
|
||||||
// MapID Gen to track map specific stats
|
|
||||||
//
|
|
||||||
// 7.0
|
|
||||||
// Way to many changes to list so here are the major changes
|
|
||||||
// Super heavy opmtiation and rework, new changes has improved some areas by 25-75% in terms of speed/impact on the server
|
|
||||||
// Player Map Stats - like totals but done per map, this is also used to build map based leaderboards
|
|
||||||
// Server/Map Stats - track whats being played and whats being skipped as well as server health
|
|
||||||
// Added fail safe options load after and load slow in case the amount of stat tracking grows too large
|
|
||||||
// Ton of new stat values added
|
|
||||||
// Score hud UI mostly Reworked
|
|
||||||
//
|
|
||||||
// 7.1
|
|
||||||
// Combined save game and save total into one function
|
|
||||||
// Switched client leave for onDrop as client leave is tied to game type and does not work in between maps
|
|
||||||
// changed vote override too serverCmdStartNewVote just so this script works in base and default classic
|
|
||||||
// Few misc stats fixes
|
|
||||||
// Vote for map stat now gens an map id, so it will now show on the list
|
|
||||||
// Renamed var for server hangs and host hangs, as they were not saving
|
|
||||||
// Removed a few stats that have no relevance
|
|
||||||
// Typo for ping avg var fix
|
|
||||||
// Fixed gameID now saves and was moved to MissonLoadDone
|
|
||||||
// Added mapGameID for parsers
|
|
||||||
// Fixed chat stats
|
|
||||||
// Added LeftID to better track what game the client left mainly for stat resetting
|
|
||||||
// Added deploy stats
|
|
||||||
// Fixed issue were if a player left during the game over screen and it hasent saved yet, it would delete the stats before saving
|
|
||||||
// Score restore optimization
|
|
||||||
//
|
|
||||||
// 7.2
|
|
||||||
// Map stats sorting and load optimization
|
|
||||||
// Added version number global, and saved in player stats
|
|
||||||
// Added lastPlay, mapReconnects and mapDisconnectsScore for server stats
|
|
||||||
// Stats ui cleanup
|
|
||||||
// Fix for onDeploy was missing return %obj;
|
|
||||||
// incGameStats now has $dtStats::mapStats to completely disable this feature if need be
|
|
||||||
// Fixed armor vs armor total
|
|
||||||
// Added a global var to control build/sort speed of stats and set it back to 128
|
|
||||||
// Few new stats
|
|
||||||
// Disabled some mine disc stats as they were not accurate, may revisit later
|
|
||||||
// Fixed Flipflop stat
|
|
||||||
//
|
|
||||||
// 7.3
|
|
||||||
// Stat fixes to do copy paste mistakes
|
|
||||||
//
|
|
||||||
// 7.35
|
|
||||||
// Mine Disc Kill Stat
|
|
||||||
// Some extra lightning stats
|
|
||||||
// Stat name and rename fixes
|
|
||||||
// Fixed pixel margin on LMB and LB page
|
|
||||||
// clientDmgStats optimization and cleanup
|
|
||||||
// Score hud bug with viewing last month map stats
|
|
||||||
// Remove dtTurret stat unused
|
|
||||||
//
|
|
||||||
// 7.4
|
|
||||||
// Fix for mine disc kill stat
|
|
||||||
// Fix for name to client id function not working in lak
|
|
||||||
// Reworked a ugly fix for %kPlayer var in clientKillStats
|
|
||||||
// Lightning stats tweak
|
|
||||||
// Changed time restriction on flag escort from 3 to 5
|
|
||||||
// Adjusted clientShotsFired, to fix warnings, still unsure why flyingVehicleObject is getting passed into a onFire?
|
|
||||||
// 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
|
|
||||||
//
|
|
||||||
// 7.6
|
|
||||||
// Removed the cross check form mine disc, as the timer cross check is enough
|
|
||||||
// Converted kdr to decimal to better match website and is less confusing
|
|
||||||
// Commented out nexusCampingKills/Deaths as we currenlty dont support hunters
|
|
||||||
// Commented out server stat client crash, it will just echo to the console if it sees any
|
|
||||||
// Removed lockout schedule on chain kills, left the multi kill one in as its kind of nessaary in how it functions
|
|
||||||
// Renamed mid air distance vars to know at a glance how its tracking, Ex: instead of cgMaDist renamed to cgMAHitDist
|
|
||||||
// Fixed land spike turret stats
|
|
||||||
//
|
|
||||||
// 7.7
|
|
||||||
// Added teamScore to player game files for correct team scores
|
|
||||||
// KDR adjustment
|
|
||||||
// Adjusted cleanup function
|
|
||||||
// Mine disc kill fix
|
|
||||||
//
|
|
||||||
// 7.8
|
|
||||||
// Added Armor Timers
|
|
||||||
|
|
||||||
// 7.9
|
|
||||||
// Added Concussion Stats
|
|
||||||
// Invy use stat
|
|
||||||
//
|
|
||||||
// 8.0
|
|
||||||
// Added check for teams for concuss
|
|
||||||
// Adjust crash log player count to > 1
|
|
||||||
//
|
|
||||||
// 8.1
|
|
||||||
// Misc stat fixes
|
|
||||||
// Added mpb glitch stat
|
|
||||||
// Added flag tossing and catching stats
|
|
||||||
//
|
|
||||||
// 8.2
|
|
||||||
// Misc Fixes and clean up
|
|
||||||
// Removed beta tags
|
|
||||||
// Added seconed pages to leaderboards and rearranged them
|
|
||||||
// Added few new misc stats
|
|
||||||
// Packet loss and high ping avg added to server monitor
|
|
||||||
//
|
|
||||||
// 8.3
|
|
||||||
// Removed client crash code, does not catch anything
|
|
||||||
// Added event logs to server panel
|
|
||||||
// Added server event for tracking when ping stops updateing do to loss of transmission
|
|
||||||
// Added Projecitle tracking function for wierd edge cases when it comes to stats
|
|
||||||
// Added second page to lctf stats
|
|
||||||
// Eight new stats
|
|
||||||
//
|
|
||||||
//-----------Settings------------
|
//-----------Settings------------
|
||||||
//Notes score ui width is 592
|
//Notes score ui width is 592
|
||||||
$dtStats::version = 8.3;
|
$dtStats::version = 8.4;
|
||||||
//disable stats system
|
//disable stats system
|
||||||
$dtStats::Enable = 1;
|
$dtStats::Enable = 1;
|
||||||
//enable disable map stats
|
//enable disable map stats
|
||||||
|
|
@ -1070,37 +877,37 @@ $dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "onInput";
|
||||||
$dtStats::FV[$dtStats::FC["Avg"]++,"Avg"] = "onInput";
|
$dtStats::FV[$dtStats::FC["Avg"]++,"Avg"] = "onInput";
|
||||||
|
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitHead";
|
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitHead";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenHead";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenHead";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitHeadFront";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitHeadFront";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenHeadFront";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenHeadFront";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitHeadBack";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitHeadBack";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenHeadBack";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenHeadBack";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitHeadRight";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitHeadRight";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenHeadRight";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenHeadRight";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitHeadLeft";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitHeadLeft";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenHeadLeft";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenHeadLeft";
|
||||||
|
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTorso";
|
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTorso";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenTorso";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenTorso";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTorsoFrontR";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTorsoFrontR";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenTorsoFrontR";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenTorsoFrontR";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTorsoFrontL";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTorsoFrontL";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenTorsoFrontL";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenTorsoFrontL";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTorsoBackR";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTorsoBackR";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenTorsoBackR";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenTorsoBackR";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTorsoBackL";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTorsoBackL";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenTorsoBackL";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenTorsoBackL";
|
||||||
|
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitLegs";
|
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitLegs";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenLegs";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenLegs";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitLegFrontR";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitLegFrontR";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenLegFrontR";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenLegFrontR";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitLegFrontL";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitLegFrontL";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenLegFrontL";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenLegFrontL";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitLegBackR";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitLegBackR";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenLegBackR";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenLegBackR";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitLegBackL";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitLegBackL";
|
||||||
$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenLegBackL";
|
//$dtStats::FV[$dtStats::FC["TG"]++,"TG"] = "hitTakenLegBackL";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -2088,29 +1895,37 @@ package dtStats{
|
||||||
case "DiscProjectile":
|
case "DiscProjectile":
|
||||||
%vec = vectorNormalize(vectorSub(%pos,%proj.initialPosition));
|
%vec = vectorNormalize(vectorSub(%pos,%proj.initialPosition));
|
||||||
%initVec = %proj.initialDirection;
|
%initVec = %proj.initialDirection;
|
||||||
%angleDeg = mRadToDeg(mACos(vectorDot(%vec, %initVec)));
|
%ray = containerRayCast(%proj.initialPosition, VectorAdd(%proj.initialPosition, VectorScale(VectorNormalize(%initVec), 5000)), $TypeMasks::WaterObjectType);
|
||||||
if(%angleDeg > 1)
|
if(%ray){
|
||||||
%sourceClient.discReflect = getSimTime();
|
%angleRad = mACos(vectorDot(%initVec, "0 0 1"));
|
||||||
|
%angleDeg = mRadToDeg(%angleRad)-90;
|
||||||
|
//echo(%angleDeg);
|
||||||
|
if(%angleDeg <= 15 && %angleDeg > 0){
|
||||||
|
%sourceClient.discReflect = getSimTime();
|
||||||
|
//error("disc bounce" SPC %angleDeg);
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
%sourceClient.discReflect = 0;
|
%sourceClient.discReflect = 0;
|
||||||
|
|
||||||
if(vectorDist(%pos,%proj.sourceObject.getPosition()) < 4){
|
if(vectorDist(%pos,%proj.sourceObject.getPosition()) < 4){
|
||||||
%sourceClient.lastDiscJump = getSimTime();
|
%sourceClient.lastDiscJump = getSimTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
case "EnergyBolt":
|
case "EnergyBolt":
|
||||||
%vec = vectorNormalize(vectorSub(%pos,%proj.initialPosition));
|
%vec = vectorNormalize(vectorSub(%pos,%proj.initialPosition));
|
||||||
%initVec = %proj.initialDirection;
|
%initVec = %proj.initialDirection;
|
||||||
%angleRad = mACos(vectorDot(%vec, %initVec));
|
%angleRad = mACos(vectorDot(%vec, %initVec));
|
||||||
%angleDeg = mRadToDeg(%angleRad);
|
%angleDeg = mRadToDeg(%angleRad);
|
||||||
if(%angleDeg > 1)
|
//error(%angleDeg);
|
||||||
|
if(%angleDeg > 10){
|
||||||
%sourceClient.blasterReflect = getSimTime();
|
%sourceClient.blasterReflect = getSimTime();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
%sourceClient.blasterReflect = 0;
|
%sourceClient.blasterReflect = 0;
|
||||||
case "ShoulderMissile":
|
case "ShoulderMissile":
|
||||||
error(%proj.lastTargetType);
|
|
||||||
if(%proj.lastTargetType $= "FlareProjectile"){
|
if(%proj.lastTargetType $= "FlareProjectile"){
|
||||||
%sourceClient.flareHit =getSimTime();
|
%sourceClient.flareHit = getSimTime();
|
||||||
|
%sourceClient.flareSource = %proj.targetSource.client;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
%sourceClient.flareHit = 0;
|
%sourceClient.flareHit = 0;
|
||||||
|
|
@ -2329,6 +2144,7 @@ function projectileTracker(%p){
|
||||||
if(isObject(%p)){
|
if(isObject(%p)){
|
||||||
if(isObject(%p.getTargetObject())){
|
if(isObject(%p.getTargetObject())){
|
||||||
%p.lastTargetType = %p.getTargetObject().getClassName();
|
%p.lastTargetType = %p.getTargetObject().getClassName();
|
||||||
|
%p.targetSource = %p.getTargetObject().sourceObject;
|
||||||
//error(%p.lastTargetType);
|
//error(%p.lastTargetType);
|
||||||
}
|
}
|
||||||
schedule(256,0,"projectileTracker",%p);
|
schedule(256,0,"projectileTracker",%p);
|
||||||
|
|
@ -5527,8 +5343,12 @@ function clientKillStats(%game,%clVictim, %clKiller, %damageType, %implement, %d
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
if(%clKiller.team == %clVictim.team && %clKiller != %clVictim){
|
if(%clKiller.team == %clVictim.team && %clKiller != %clVictim){
|
||||||
%killerDT.teamkillCount++;
|
%killerDT.teamkillCount++;
|
||||||
if(%damageType == $DamageType::Missile)
|
if(%damageType == $DamageType::Missile){
|
||||||
%killerDT.missileTK++;
|
%killerDT.missileTK++;
|
||||||
|
if(getSimTime() - %clKiller.flareHit < 256){
|
||||||
|
%clKiller.flareSource.dtStats.flareKill++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(getSimtime() - %clKiller.lastDiscJump < 256){
|
if(getSimtime() - %clKiller.lastDiscJump < 256){
|
||||||
if(%clKiller == %clVictim){
|
if(%clKiller == %clVictim){
|
||||||
|
|
@ -5729,7 +5549,6 @@ function clientKillStats(%game,%clVictim, %clKiller, %damageType, %implement, %d
|
||||||
else if(%kcAir == 2 && %vcAir == 1){%killerDT.missileKillAir++;%victimDT.missileDeathAir++;%killerDT.missileKillGroundAir++;%victimDT.missileDeathGroundAir++;}
|
else if(%kcAir == 2 && %vcAir == 1){%killerDT.missileKillAir++;%victimDT.missileDeathAir++;%killerDT.missileKillGroundAir++;%victimDT.missileDeathGroundAir++;}
|
||||||
else if(%kcAir == 1 && %vcAir == 2){%killerDT.missileKillGround++;%victimDT.missileDeathGround++;%killerDT.missileKillAirGround++;%victimDT.missileDeathAirGround++;}
|
else if(%kcAir == 1 && %vcAir == 2){%killerDT.missileKillGround++;%victimDT.missileDeathGround++;%killerDT.missileKillAirGround++;%victimDT.missileDeathAirGround++;}
|
||||||
else if(%kcAir == 2 && %vcAir == 2){%killerDT.missileKillGround++;%victimDT.missileDeathGround++;%killerDT.missileKillGroundGround++; %victimDT.missileDeathGroundGround++;}
|
else if(%kcAir == 2 && %vcAir == 2){%killerDT.missileKillGround++;%victimDT.missileDeathGround++;%killerDT.missileKillGroundGround++; %victimDT.missileDeathGroundGround++;}
|
||||||
if(getSimTime() - %clKiller.flareHit < 256){%killerDT.flareKill++;}
|
|
||||||
case $DamageType::ShockLance:
|
case $DamageType::ShockLance:
|
||||||
%killerDT.shockKills++;
|
%killerDT.shockKills++;
|
||||||
%victimDT.shockDeaths++;
|
%victimDT.shockDeaths++;
|
||||||
|
|
@ -6047,8 +5866,10 @@ function clientDmgStats(%data, %position, %sourceObject, %targetObject, %damageT
|
||||||
if(getSimtime() - %sourceClient.lastDiscJump < 256)
|
if(getSimtime() - %sourceClient.lastDiscJump < 256)
|
||||||
%sourceDT.discJump++;
|
%sourceDT.discJump++;
|
||||||
}
|
}
|
||||||
if(%sourceClass $= "Player" && %targetClient.team == %sourceClient.team && %sourceObject != %targetObject)
|
if(%sourceClass $= "Player" && %targetClient.team == %sourceClient.team && %sourceObject != %targetObject){
|
||||||
%sourceDT.friendlyFire++;
|
%sourceDT.friendlyFire++;
|
||||||
|
if(getSimTime() - %sourceClient.flareHit < 256){%sourceClient.flareSource.dtStats.flareHit++;}
|
||||||
|
}
|
||||||
if(%sourceClass $= "Player" && %targetClient.team != %sourceClient.team && %sourceObject != %targetObject){
|
if(%sourceClass $= "Player" && %targetClient.team != %sourceClient.team && %sourceObject != %targetObject){
|
||||||
%dis = vectorDist(%targetObject.getPosition(),%sourceObject.getPosition());
|
%dis = vectorDist(%targetObject.getPosition(),%sourceObject.getPosition());
|
||||||
if(!%targetObject.combo[%sourceClient,%damageType]){
|
if(!%targetObject.combo[%sourceClient,%damageType]){
|
||||||
|
|
@ -6081,27 +5902,27 @@ function clientDmgStats(%data, %position, %sourceObject, %targetObject, %damageT
|
||||||
|
|
||||||
%dmgL = %targetObject.getDamageLocation(%position);
|
%dmgL = %targetObject.getDamageLocation(%position);
|
||||||
switch$(getWord(%dmgL,0)){
|
switch$(getWord(%dmgL,0)){
|
||||||
case "legs": %sourceDT.hitLegs++;%targetDT.hitTakenLegs++;
|
case "legs": %sourceDT.hitLegs++;//%targetDT.hitTakenLegs++;
|
||||||
switch$(getWord(%dmgL,1)){
|
//switch$(getWord(%dmgL,1)){
|
||||||
case "front_right":%sourceDT.hitLegFrontR++;%targetDT.hitTakenLegFrontR++;
|
//case "front_right":%sourceDT.hitLegFrontR++;%targetDT.hitTakenLegFrontR++;
|
||||||
case "front_Left":%sourceDT.hitLegFrontL++;%targetDT.hitTakenLegFrontL++;
|
//case "front_Left":%sourceDT.hitLegFrontL++;%targetDT.hitTakenLegFrontL++;
|
||||||
case "back_right":%sourceDT.hitLegBackR++;%targetDT.hitTakenLegBackR++;
|
//case "back_right":%sourceDT.hitLegBackR++;%targetDT.hitTakenLegBackR++;
|
||||||
case "back_Left":%sourceDT.hitLegBackL++;%targetDT.hitTakenLegBackL++;
|
//case "back_Left":%sourceDT.hitLegBackL++;%targetDT.hitTakenLegBackL++;
|
||||||
}
|
//}
|
||||||
case "torso": %sourceDT.hitTorso++;%targetDT.hitTakenTorso++;
|
case "torso": %sourceDT.hitTorso++;//%targetDT.hitTakenTorso++;
|
||||||
switch$(getWord(%dmgL,1)){
|
//switch$(getWord(%dmgL,1)){
|
||||||
case "front_right":%sourceDT.hitTorsoFrontR++;%targetDT.hitTakenTorsoFrontR++;
|
//case "front_right":%sourceDT.hitTorsoFrontR++;%targetDT.hitTakenTorsoFrontR++;
|
||||||
case "front_Left":%sourceDT.hitTorsoFrontL++;%targetDT.hitTakenTorsoFrontL++;
|
//case "front_Left":%sourceDT.hitTorsoFrontL++;%targetDT.hitTakenTorsoFrontL++;
|
||||||
case "back_right":%sourceDT.hitTorsoBackR++;%targetDT.hitTakenTorsoBackR++;
|
//case "back_right":%sourceDT.hitTorsoBackR++;%targetDT.hitTakenTorsoBackR++;
|
||||||
case "back_Left":%sourceDT.hitTorsoBackL++;%targetDT.hitTakenTorsoBackL++;
|
//case "back_Left":%sourceDT.hitTorsoBackL++;%targetDT.hitTakenTorsoBackL++;
|
||||||
}
|
//}
|
||||||
case "head":%sourceDT.hitHead++; %targetDT.hitTakenHead++;
|
case "head":%sourceDT.hitHead++; //%targetDT.hitTakenHead++;
|
||||||
switch$(getWord(%dmgL,1)){
|
//switch$(getWord(%dmgL,1)){
|
||||||
case "middle_front":%sourceDT.hitHeadFront++;%targetDT.hitTakenHeadFront++;
|
//case "middle_front":%sourceDT.hitHeadFront++;%targetDT.hitTakenHeadFront++;
|
||||||
case "middle_back":%sourceDT.hitHeadBack++; %targetDT.hitTakenHeadBack++;
|
//case "middle_back":%sourceDT.hitHeadBack++; %targetDT.hitTakenHeadBack++;
|
||||||
case "right_middle":%sourceDT.hitHeadRight++;%targetDT.hitTakenHeadRight++;
|
//case "right_middle":%sourceDT.hitHeadRight++;%targetDT.hitTakenHeadRight++;
|
||||||
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){
|
||||||
|
|
@ -6264,7 +6085,6 @@ function clientDmgStats(%data, %position, %sourceObject, %targetObject, %damageT
|
||||||
}
|
}
|
||||||
if(%sourceDT.missileHitSV < %sourceObject.client.dtShotSpeed){%sourceDT.missileHitSV = %sourceObject.client.dtShotSpeed;}
|
if(%sourceDT.missileHitSV < %sourceObject.client.dtShotSpeed){%sourceDT.missileHitSV = %sourceObject.client.dtShotSpeed;}
|
||||||
if(%sourceDT.missileHitVV < %vv){%sourceDT.missileHitVV = %vv;}
|
if(%sourceDT.missileHitVV < %vv){%sourceDT.missileHitVV = %vv;}
|
||||||
if(getSimTime() - %sourceObject.client.flareHit < 256){%sourceDT.flareHit++;}
|
|
||||||
case $DamageType::ShockLance:
|
case $DamageType::ShockLance:
|
||||||
if(%targetClient.rearshot){
|
if(%targetClient.rearshot){
|
||||||
%sourceDT.shockRearShot++;
|
%sourceDT.shockRearShot++;
|
||||||
|
|
@ -6669,10 +6489,6 @@ function statsMenu(%client,%game){
|
||||||
%b3 = (($dtServer::hostHangLast !$= "") ? "<color:00FF00>" @ $dtServer::hostHangLast : 0);
|
%b3 = (($dtServer::hostHangLast !$= "") ? "<color:00FF00>" @ $dtServer::hostHangLast : 0);
|
||||||
%b4 = ($dtServer::hostHangTime ? "<color:00FF00>" @ $dtServer::hostHangTime : 0);
|
%b4 = ($dtServer::hostHangTime ? "<color:00FF00>" @ $dtServer::hostHangTime : 0);
|
||||||
|
|
||||||
//%c1 = ($dtStats::pingAvg ? $dtStats::pingAvg : 0);
|
|
||||||
//%line = 'Server Ping Avg = %1';
|
|
||||||
//messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%c1@"ms");
|
|
||||||
|
|
||||||
%line = '<color:0befe7>Server Hangs - This Map = %1<color:0befe7> - All Time = %2';
|
%line = '<color:0befe7>Server Hangs - This Map = %1<color:0befe7> - All Time = %2';
|
||||||
messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%a1,%a2);
|
messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%a1,%a2);
|
||||||
%line = '<color:0befe7>Server Hangs - Time = %1<color:0befe7> - Delay Time = %2';
|
%line = '<color:0befe7>Server Hangs - Time = %1<color:0befe7> - Delay Time = %2';
|
||||||
|
|
@ -9364,84 +9180,84 @@ function statsMenu(%client,%game){
|
||||||
%nameTitle3 = "<color:0befe7>" @ %var3Title SPC "<color:03d597>" @ %i3;
|
%nameTitle3 = "<color:0befe7>" @ %var3Title SPC "<color:03d597>" @ %i3;
|
||||||
messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
||||||
|
|
||||||
%var1 = "discReflectHitTG"; %var1Title = "Disc Reflect Hit:"; %var1Name = "Disc Reflect Hit"; %var1TypeName = "Total";
|
//%var1 = "discReflectHitTG"; %var1Title = "Disc Reflect Hit:"; %var1Name = "Disc Reflect Hit"; %var1TypeName = "Total";
|
||||||
%var2 = "discReflectKillTG"; %var2Title = "Disc Reflect Kill:"; %var2Name = "Disc Reflect Kill"; %var2TypeName = "Total";
|
//%var2 = "discReflectKillTG"; %var2Title = "Disc Reflect Kill:"; %var2Name = "Disc Reflect Kill"; %var2TypeName = "Total";
|
||||||
%var3 = "killerDiscJumpTG"; %var3Title = "Disc Jump Kill:"; %var3Name = "Disc Jump Kill"; %var3TypeName = "Total";
|
//%var3 = "killerDiscJumpTG"; %var3Title = "Disc Jump Kill:"; %var3Name = "Disc Jump Kill"; %var3TypeName = "Total";
|
||||||
%i1 = getField($lData::data[%var1,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var1,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i1 = getField($lData::data[%var1,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var1,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%i2 = getField($lData::data[%var2,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var2,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i2 = getField($lData::data[%var2,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var2,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%i3 = getField($lData::data[%var3,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var3,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i3 = getField($lData::data[%var3,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var3,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%client.statsFieldSet[%vsc1 = %f++] = %var1 TAB %var1Name TAB %var1TypeName;
|
//%client.statsFieldSet[%vsc1 = %f++] = %var1 TAB %var1Name TAB %var1TypeName;
|
||||||
%client.statsFieldSet[%vsc2 = %f++] = %var2 TAB %var2Name TAB %var2TypeName;
|
//%client.statsFieldSet[%vsc2 = %f++] = %var2 TAB %var2Name TAB %var2TypeName;
|
||||||
%client.statsFieldSet[%vsc3 = %f++] = %var3 TAB %var3Name TAB %var3TypeName;
|
//%client.statsFieldSet[%vsc3 = %f++] = %var3 TAB %var3Name TAB %var3TypeName;
|
||||||
%line = '<tab:1,198,395><font:univers condensed:18>\t<a:gamelink\tS\tLB\t%1\t%2\t%6><clip:197>%3</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%7><clip:197>%4</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%8><clip:197>%5</clip></a>';
|
//%line = '<tab:1,198,395><font:univers condensed:18>\t<a:gamelink\tS\tLB\t%1\t%2\t%6><clip:197>%3</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%7><clip:197>%4</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%8><clip:197>%5</clip></a>';
|
||||||
%nameTitle1 = "<color:0befe7>" @ %var1Title SPC "<color:03d597>" @ %i1;
|
//%nameTitle1 = "<color:0befe7>" @ %var1Title SPC "<color:03d597>" @ %i1;
|
||||||
%nameTitle2 = "<color:0befe7>" @ %var2Title SPC "<color:03d597>" @ %i2;
|
//%nameTitle2 = "<color:0befe7>" @ %var2Title SPC "<color:03d597>" @ %i2;
|
||||||
%nameTitle3 = "<color:0befe7>" @ %var3Title SPC "<color:03d597>" @ %i3;
|
//%nameTitle3 = "<color:0befe7>" @ %var3Title SPC "<color:03d597>" @ %i3;
|
||||||
messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
//messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
||||||
|
//
|
||||||
%var1 = "blasterReflectHitTG"; %var1Title = "Blaster Bounce Hit:"; %var1Name = "Blaster Bounce Hit"; %var1TypeName = "Total";
|
//%var1 = "blasterReflectHitTG"; %var1Title = "Blaster Bounce Hit:"; %var1Name = "Blaster Bounce Hit"; %var1TypeName = "Total";
|
||||||
%var2 = "blasterReflectKillTG"; %var2Title = "Blaster Bounce Kill:"; %var2Name = "Blaster Bounce Kill"; %var2TypeName = "Total";
|
//%var2 = "blasterReflectKillTG"; %var2Title = "Blaster Bounce Kill:"; %var2Name = "Blaster Bounce Kill"; %var2TypeName = "Total";
|
||||||
%var3 = "discJumpTG"; %var3Title = "Disc Jumps:"; %var3Name = "Disc Jumps"; %var3TypeName = "Total";
|
//%var3 = "discJumpTG"; %var3Title = "Disc Jumps:"; %var3Name = "Disc Jumps"; %var3TypeName = "Total";
|
||||||
%i1 = getField($lData::data[%var1,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var1,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i1 = getField($lData::data[%var1,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var1,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%i2 = getField($lData::data[%var2,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var2,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i2 = getField($lData::data[%var2,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var2,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%i3 = getField($lData::data[%var3,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var3,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i3 = getField($lData::data[%var3,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var3,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%client.statsFieldSet[%vsc1 = %f++] = %var1 TAB %var1Name TAB %var1TypeName;
|
//%client.statsFieldSet[%vsc1 = %f++] = %var1 TAB %var1Name TAB %var1TypeName;
|
||||||
%client.statsFieldSet[%vsc2 = %f++] = %var2 TAB %var2Name TAB %var2TypeName;
|
//%client.statsFieldSet[%vsc2 = %f++] = %var2 TAB %var2Name TAB %var2TypeName;
|
||||||
%client.statsFieldSet[%vsc3 = %f++] = %var3 TAB %var3Name TAB %var3TypeName;
|
//%client.statsFieldSet[%vsc3 = %f++] = %var3 TAB %var3Name TAB %var3TypeName;
|
||||||
%line = '<tab:1,198,395><font:univers condensed:18>\t<a:gamelink\tS\tLB\t%1\t%2\t%6><clip:197>%3</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%7><clip:197>%4</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%8><clip:197>%5</clip></a>';
|
//%line = '<tab:1,198,395><font:univers condensed:18>\t<a:gamelink\tS\tLB\t%1\t%2\t%6><clip:197>%3</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%7><clip:197>%4</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%8><clip:197>%5</clip></a>';
|
||||||
%nameTitle1 = "<color:0befe7>" @ %var1Title SPC "<color:03d597>" @ %i1;
|
//%nameTitle1 = "<color:0befe7>" @ %var1Title SPC "<color:03d597>" @ %i1;
|
||||||
%nameTitle2 = "<color:0befe7>" @ %var2Title SPC "<color:03d597>" @ %i2;
|
//%nameTitle2 = "<color:0befe7>" @ %var2Title SPC "<color:03d597>" @ %i2;
|
||||||
%nameTitle3 = "<color:0befe7>" @ %var3Title SPC "<color:03d597>" @ %i3;
|
//%nameTitle3 = "<color:0befe7>" @ %var3Title SPC "<color:03d597>" @ %i3;
|
||||||
messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
//messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
||||||
|
//
|
||||||
%var1 = "flareKillTG"; %var1Title = "Flare Kills:"; %var1Name = "Flare Kills"; %var1TypeName = "Total";
|
//%var1 = "flareKillTG"; %var1Title = "Flare Kills:"; %var1Name = "Flare Kills"; %var1TypeName = "Total";
|
||||||
%var2 = "flareHitTG"; %var2Title = "Flare Hits:"; %var2Name = "Flare Hits"; %var2TypeName = "Total";
|
//%var2 = "flareHitTG"; %var2Title = "Flare Hits:"; %var2Name = "Flare Hits"; %var2TypeName = "Total";
|
||||||
%var3 = "missileTKTG"; %var3Title = "Missile TKs:"; %var3Name = "Missile Team Kills"; %var3TypeName = "Total";
|
//%var3 = "missileTKTG"; %var3Title = "Missile TKs:"; %var3Name = "Missile Team Kills"; %var3TypeName = "Total";
|
||||||
%i1 = getField($lData::data[%var1,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var1,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i1 = getField($lData::data[%var1,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var1,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%i2 = getField($lData::data[%var2,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var2,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i2 = getField($lData::data[%var2,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var2,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%i3 = getField($lData::data[%var3,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var3,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i3 = getField($lData::data[%var3,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var3,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%client.statsFieldSet[%vsc1 = %f++] = %var1 TAB %var1Name TAB %var1TypeName;
|
//%client.statsFieldSet[%vsc1 = %f++] = %var1 TAB %var1Name TAB %var1TypeName;
|
||||||
%client.statsFieldSet[%vsc2 = %f++] = %var2 TAB %var2Name TAB %var2TypeName;
|
//%client.statsFieldSet[%vsc2 = %f++] = %var2 TAB %var2Name TAB %var2TypeName;
|
||||||
%client.statsFieldSet[%vsc3 = %f++] = %var3 TAB %var3Name TAB %var3TypeName;
|
//%client.statsFieldSet[%vsc3 = %f++] = %var3 TAB %var3Name TAB %var3TypeName;
|
||||||
%line = '<tab:1,198,395><font:univers condensed:18>\t<a:gamelink\tS\tLB\t%1\t%2\t%6><clip:197>%3</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%7><clip:197>%4</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%8><clip:197>%5</clip></a>';
|
//%line = '<tab:1,198,395><font:univers condensed:18>\t<a:gamelink\tS\tLB\t%1\t%2\t%6><clip:197>%3</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%7><clip:197>%4</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%8><clip:197>%5</clip></a>';
|
||||||
%nameTitle1 = "<color:0befe7>" @ %var1Title SPC "<color:03d597>" @ %i1;
|
//%nameTitle1 = "<color:0befe7>" @ %var1Title SPC "<color:03d597>" @ %i1;
|
||||||
%nameTitle2 = "<color:0befe7>" @ %var2Title SPC "<color:03d597>" @ %i2;
|
//%nameTitle2 = "<color:0befe7>" @ %var2Title SPC "<color:03d597>" @ %i2;
|
||||||
%nameTitle3 = "<color:0befe7>" @ %var3Title SPC "<color:03d597>" @ %i3;
|
//%nameTitle3 = "<color:0befe7>" @ %var3Title SPC "<color:03d597>" @ %i3;
|
||||||
messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
//messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
||||||
|
//
|
||||||
|
|
||||||
case "SCtfGame":
|
case "SCtfGame":
|
||||||
|
messageClient( %client, 'SetLineHud', "", %tag, %index++, "Dont look not done yet :( ",%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
||||||
%var1 = "discReflectHitTG"; %var1Title = "Disc Reflect Hit:"; %var1Name = "Disc Reflect Hit"; %var1TypeName = "Total";
|
//%var1 = "discReflectHitTG"; %var1Title = "Disc Reflect Hit:"; %var1Name = "Disc Reflect Hit"; %var1TypeName = "Total";
|
||||||
%var2 = "discReflectKillTG"; %var2Title = "Disc Reflect Kill:"; %var2Name = "Disc Reflect Kill"; %var2TypeName = "Total";
|
//%var2 = "discReflectKillTG"; %var2Title = "Disc Reflect Kill:"; %var2Name = "Disc Reflect Kill"; %var2TypeName = "Total";
|
||||||
%var3 = "killerDiscJumpTG"; %var3Title = "Disc Jump Kill:"; %var3Name = "Disc Jump Kill"; %var3TypeName = "Total";
|
//%var3 = "killerDiscJumpTG"; %var3Title = "Disc Jump Kill:"; %var3Name = "Disc Jump Kill"; %var3TypeName = "Total";
|
||||||
%i1 = getField($lData::data[%var1,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var1,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i1 = getField($lData::data[%var1,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var1,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%i2 = getField($lData::data[%var2,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var2,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i2 = getField($lData::data[%var2,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var2,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%i3 = getField($lData::data[%var3,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var3,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i3 = getField($lData::data[%var3,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var3,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%client.statsFieldSet[%vsc1 = %f++] = %var1 TAB %var1Name TAB %var1TypeName;
|
//%client.statsFieldSet[%vsc1 = %f++] = %var1 TAB %var1Name TAB %var1TypeName;
|
||||||
%client.statsFieldSet[%vsc2 = %f++] = %var2 TAB %var2Name TAB %var2TypeName;
|
//%client.statsFieldSet[%vsc2 = %f++] = %var2 TAB %var2Name TAB %var2TypeName;
|
||||||
%client.statsFieldSet[%vsc3 = %f++] = %var3 TAB %var3Name TAB %var3TypeName;
|
//%client.statsFieldSet[%vsc3 = %f++] = %var3 TAB %var3Name TAB %var3TypeName;
|
||||||
%line = '<tab:1,198,395><font:univers condensed:18>\t<a:gamelink\tS\tLB\t%1\t%2\t%6><clip:197>%3</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%7><clip:197>%4</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%8><clip:197>%5</clip></a>';
|
//%line = '<tab:1,198,395><font:univers condensed:18>\t<a:gamelink\tS\tLB\t%1\t%2\t%6><clip:197>%3</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%7><clip:197>%4</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%8><clip:197>%5</clip></a>';
|
||||||
%nameTitle1 = "<color:0befe7>" @ %var1Title SPC "<color:03d597>" @ %i1;
|
//%nameTitle1 = "<color:0befe7>" @ %var1Title SPC "<color:03d597>" @ %i1;
|
||||||
%nameTitle2 = "<color:0befe7>" @ %var2Title SPC "<color:03d597>" @ %i2;
|
//%nameTitle2 = "<color:0befe7>" @ %var2Title SPC "<color:03d597>" @ %i2;
|
||||||
%nameTitle3 = "<color:0befe7>" @ %var3Title SPC "<color:03d597>" @ %i3;
|
//%nameTitle3 = "<color:0befe7>" @ %var3Title SPC "<color:03d597>" @ %i3;
|
||||||
messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
//messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
||||||
|
//
|
||||||
%var1 = "blasterReflectHitTG"; %var1Title = "Blaster Bounce Hit:"; %var1Name = "Blaster Bounce Hit"; %var1TypeName = "Total";
|
//%var1 = "blasterReflectHitTG"; %var1Title = "Blaster Bounce Hit:"; %var1Name = "Blaster Bounce Hit"; %var1TypeName = "Total";
|
||||||
%var2 = "blasterReflectKillTG"; %var2Title = "Blaster Bounce Kill:"; %var2Name = "Blaster Bounce Kill"; %var2TypeName = "Total";
|
//%var2 = "blasterReflectKillTG"; %var2Title = "Blaster Bounce Kill:"; %var2Name = "Blaster Bounce Kill"; %var2TypeName = "Total";
|
||||||
%var3 = "discJumpTG"; %var3Title = "Disc Jumps:"; %var3Name = "Disc Jumps"; %var3TypeName = "Total";
|
//%var3 = "discJumpTG"; %var3Title = "Disc Jumps:"; %var3Name = "Disc Jumps"; %var3TypeName = "Total";
|
||||||
%i1 = getField($lData::data[%var1,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var1,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i1 = getField($lData::data[%var1,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var1,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%i2 = getField($lData::data[%var2,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var2,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i2 = getField($lData::data[%var2,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var2,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%i3 = getField($lData::data[%var3,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var3,%client.lgame,%lType,%mon,%year],0) : %NA;
|
//%i3 = getField($lData::data[%var3,%client.lgame,%lType,%mon,%year],0) ? getField($lData::name[%var3,%client.lgame,%lType,%mon,%year],0) : %NA;
|
||||||
%client.statsFieldSet[%vsc1 = %f++] = %var1 TAB %var1Name TAB %var1TypeName;
|
//%client.statsFieldSet[%vsc1 = %f++] = %var1 TAB %var1Name TAB %var1TypeName;
|
||||||
%client.statsFieldSet[%vsc2 = %f++] = %var2 TAB %var2Name TAB %var2TypeName;
|
//%client.statsFieldSet[%vsc2 = %f++] = %var2 TAB %var2Name TAB %var2TypeName;
|
||||||
%client.statsFieldSet[%vsc3 = %f++] = %var3 TAB %var3Name TAB %var3TypeName;
|
//%client.statsFieldSet[%vsc3 = %f++] = %var3 TAB %var3Name TAB %var3TypeName;
|
||||||
%line = '<tab:1,198,395><font:univers condensed:18>\t<a:gamelink\tS\tLB\t%1\t%2\t%6><clip:197>%3</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%7><clip:197>%4</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%8><clip:197>%5</clip></a>';
|
//%line = '<tab:1,198,395><font:univers condensed:18>\t<a:gamelink\tS\tLB\t%1\t%2\t%6><clip:197>%3</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%7><clip:197>%4</clip></a>\t<a:gamelink\tS\tLB\t%1\t%2\t%8><clip:197>%5</clip></a>';
|
||||||
%nameTitle1 = "<color:0befe7>" @ %var1Title SPC "<color:03d597>" @ %i1;
|
//%nameTitle1 = "<color:0befe7>" @ %var1Title SPC "<color:03d597>" @ %i1;
|
||||||
%nameTitle2 = "<color:0befe7>" @ %var2Title SPC "<color:03d597>" @ %i2;
|
//%nameTitle2 = "<color:0befe7>" @ %var2Title SPC "<color:03d597>" @ %i2;
|
||||||
%nameTitle3 = "<color:0befe7>" @ %var3Title SPC "<color:03d597>" @ %i3;
|
//%nameTitle3 = "<color:0befe7>" @ %var3Title SPC "<color:03d597>" @ %i3;
|
||||||
messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
//messageClient( %client, 'SetLineHud', "", %tag, %index++, %line,%vClient,0,%nameTitle1,%nameTitle2,%nameTitle3,%vsc1,%vsc2,%vsc3);
|
||||||
|
//
|
||||||
//case "LakRabbitGame":
|
//case "LakRabbitGame":
|
||||||
|
|
||||||
default:// the rest
|
default:// the rest
|
||||||
|
|
@ -12443,6 +12259,7 @@ $dtStats::prefTestTime = 512;// the lower the better tracking
|
||||||
$dtStats::prefTestIdleTime = 10*1000;// if no one is playing just run slow
|
$dtStats::prefTestIdleTime = 10*1000;// if no one is playing just run slow
|
||||||
$dtStats::prefTolerance = 128;//this number is to account for base line preformance and differences between engine simTime and realtime
|
$dtStats::prefTolerance = 128;//this number is to account for base line preformance and differences between engine simTime and realtime
|
||||||
$dtStats::prefLog = 0; // enable logging of server hangs
|
$dtStats::prefLog = 0; // enable logging of server hangs
|
||||||
|
$dtStats::eventLockout = 5*1000;//every 5 sec
|
||||||
function prefTest(%time,%skip){
|
function prefTest(%time,%skip){
|
||||||
%real = getRealTime();
|
%real = getRealTime();
|
||||||
%plCount = $HostGamePlayerCount - $HostGameBotCount;
|
%plCount = $HostGamePlayerCount - $HostGameBotCount;
|
||||||
|
|
@ -12455,7 +12272,7 @@ function prefTest(%time,%skip){
|
||||||
$dtServer::serverHangMap[cleanMapName($CurrentMission),Game.class]++;
|
$dtServer::serverHangMap[cleanMapName($CurrentMission),Game.class]++;
|
||||||
$dtServer::serverHangLast = formattimestring("hh:nn:a mm-dd-yy");
|
$dtServer::serverHangLast = formattimestring("hh:nn:a mm-dd-yy");
|
||||||
$dtServer::serverHangTime = %dif;
|
$dtServer::serverHangTime = %dif;
|
||||||
dtEventLog("Server Hang" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Delay =" SPC %dif @ "ms" SPC "Player Count =" SPC %plCount);
|
dtEventLog("Server Hang" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Delay =" SPC %dif @ "ms" SPC "Player Count =" SPC %plCount, 0);
|
||||||
%skip = 1;
|
%skip = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -12470,7 +12287,7 @@ function prefTest(%time,%skip){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function dtPingAvg(){
|
function dtPingAvg(){
|
||||||
%ping = %pingT = %pc = 0;
|
%ping = %pingT = %pc = %txStop = 0;
|
||||||
%plCount = 0;
|
%plCount = 0;
|
||||||
for(%i = 0; %i < ClientGroup.getCount(); %i++){
|
for(%i = 0; %i < ClientGroup.getCount(); %i++){
|
||||||
%cl = ClientGroup.getObject(%i);
|
%cl = ClientGroup.getObject(%i);
|
||||||
|
|
@ -12486,6 +12303,7 @@ function dtPingAvg(){
|
||||||
|
|
||||||
if(!%cl.isAIControlled()){
|
if(!%cl.isAIControlled()){
|
||||||
%ping = %cl.getPing();
|
%ping = %cl.getPing();
|
||||||
|
|
||||||
if(%ping == %cl.lastPing){
|
if(%ping == %cl.lastPing){
|
||||||
%cl.lpC++;
|
%cl.lpC++;
|
||||||
if(%cl.lpC > 2){
|
if(%cl.lpC > 2){
|
||||||
|
|
@ -12495,7 +12313,9 @@ function dtPingAvg(){
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
%cl.lpC = 0;
|
%cl.lpC = 0;
|
||||||
|
|
||||||
%cl.lastPing = %ping;
|
%cl.lastPing = %ping;
|
||||||
|
|
||||||
if(%ping > 500)
|
if(%ping > 500)
|
||||||
%cl.dtStats.lagSpikes++;
|
%cl.dtStats.lagSpikes++;
|
||||||
if( %cl.getPacketLoss() > 0){
|
if( %cl.getPacketLoss() > 0){
|
||||||
|
|
@ -12506,51 +12326,67 @@ function dtPingAvg(){
|
||||||
%pingT += %ping;
|
%pingT += %ping;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(%pc > 0){
|
|
||||||
$dtStats::pingAvg = %pingT / %pc;
|
|
||||||
}
|
|
||||||
if(%pc > 3){
|
if(%pc > 3){
|
||||||
if(%txStop > 1){
|
$dtStats::pingAvg = %pingT / %pc;
|
||||||
%msg = "Transmission Loss Event" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "TX Count / Player Count" SPC %txStop @ "/" @ %pc SPC "UpTime:" SPC dtFormatTime(getSimTime());
|
if(%txStop / %pc > 0.5){
|
||||||
if($dtStats::debugEchos){error(%msg);}
|
if(getSimTime() - $dtStats:evTime[0] > $dtStats::eventLockout){
|
||||||
dtEventLog("TX Loss" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "TX Loss Count =" SPC %txStop SPC "Player Count =" SPC %pc);
|
%msg = "Transmission Loss Event" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "TX Count" SPC %txStop SPC "Player Count" SPC %pc SPC "UpTime:" SPC dtFormatTime(getSimTime());
|
||||||
|
if($dtStats::debugEchos){error(%msg);}
|
||||||
|
dtEventLog("TX Loss" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "TX Loss Count =" SPC %txStop SPC "Player Count =" SPC %pc, 0);
|
||||||
|
$dtStats:evTime[0] = getSimTime();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(%plCount > 1){
|
|
||||||
%msg = "Packet Loss Event" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Pl Count / Player Count" SPC %plCount @ "/" @ %pc SPC "UpTime:" SPC dtFormatTime(getSimTime());
|
if(%plCount / %pc > 0.5){
|
||||||
dtEventLog("Packet Loss" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Packet Loss Count =" SPC %plCount SPC "Player Count =" SPC %pc);
|
if(getSimTime() - $dtStats:evTime[1] > $dtStats::eventLockout){
|
||||||
if($dtStats::debugEchos){error(%msg);}
|
%msg = "Packet Loss Event" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Pl Count" SPC %plCount SPC "PlayerCount" SPC %pc SPC "UpTime:" SPC dtFormatTime(getSimTime());
|
||||||
|
dtEventLog("Packet Loss" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Packet Loss Count =" SPC %plCount SPC "Player Count =" SPC %pc, 0);
|
||||||
|
if($dtStats::debugEchos){error(%msg);}
|
||||||
|
$dtStats:evTime[1] = getSimTime();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($dtStats::pingAvg > 1000){//network issues
|
if($dtStats::pingAvg > 1000){//network issues
|
||||||
%msg = "Host Hang Event" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "PingAvg" SPC $dtStats::pingAvg @ "ms" SPC "Player Count" SPC %pc SPC "UpTime:" SPC dtFormatTime(getSimTime());
|
if(getSimTime() - $dtStats:evTime[2] > $dtStats::eventLockout){
|
||||||
if($dtStats::debugEchos){error(%msg);}
|
%msg = "Host Hang Event" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "PingAvg" SPC $dtStats::pingAvg @ "ms" SPC "Player Count" SPC %pc SPC "UpTime:" SPC dtFormatTime(getSimTime());
|
||||||
dtEventLog("Host Hang" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Ping Avg =" SPC $dtStats::pingAvg @ "ms" SPC "Player Count =" SPC %pc);
|
if($dtStats::debugEchos){error(%msg);}
|
||||||
$dtServer::hostHangMap[cleanMapName($CurrentMission),Game.class]++;
|
dtEventLog("Host Hang" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Ping Avg =" SPC $dtStats::pingAvg @ "ms" SPC "Player Count =" SPC %pc, 0);
|
||||||
$dtServer::hostHangTotal++;
|
$dtServer::hostHangMap[cleanMapName($CurrentMission),Game.class]++;
|
||||||
$dtServer::hostHangLast = formattimestring("hh:nn:a mm-dd-yy");
|
$dtServer::hostHangTotal++;
|
||||||
$dtServer::hostHangTime = %pingT / %pc;
|
$dtServer::hostHangLast = formattimestring("hh:nn:a mm-dd-yy");
|
||||||
|
$dtServer::hostHangTime = %pingT / %pc;
|
||||||
|
$dtStats:evTime[2] = getSimTime();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if($dtStats::pingAvg > 500){
|
else if($dtStats::pingAvg > 500){
|
||||||
%msg = "500+ Ping Avg" SPC formattimestring("hh:nn:a mm-dd-yy") SPC $dtStats::pingAvg SPC "ms" SPC "Player Count" SPC %pc;
|
if(getSimTime() - $dtStats:evTime[3] > $dtStats::eventLockout){
|
||||||
if($dtStats::debugEchos){error(%msg);}
|
%msg = "500+ Ping Avg" SPC formattimestring("hh:nn:a mm-dd-yy") SPC $dtStats::pingAvg SPC "ms" SPC "Player Count" SPC %pc;
|
||||||
dtEventLog("500+ Ping Avg" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Ping Avg =" SPC $dtStats::pingAvg @ "ms" SPC "Player Count =" SPC %pc);
|
if($dtStats::debugEchos){error(%msg);}
|
||||||
|
dtEventLog("500+ Ping Avg" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Ping Avg =" SPC $dtStats::pingAvg @ "ms" SPC "Player Count =" SPC %pc, 0);
|
||||||
|
$dtStats:evTime[3] = getSimTime();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if($dtStats::pingAvg > 200){
|
else if($dtStats::pingAvg > 200){
|
||||||
%msg = "200+ Ping Avg" SPC formattimestring("hh:nn:a mm-dd-yy") SPC $dtStats::pingAvg SPC "ms" SPC "Player Count" SPC %pc;
|
if(getSimTime() - $dtStats:evTime[4] > $dtStats::eventLockout){
|
||||||
if($dtStats::debugEchos){error(%msg);}
|
%msg = "200+ Ping Avg" SPC formattimestring("hh:nn:a mm-dd-yy") SPC $dtStats::pingAvg SPC "ms" SPC "Player Count" SPC %pc;
|
||||||
dtEventLog("200+ Ping Avg" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Ping Avg =" SPC $dtStats::pingAvg @ "ms" SPC "Player Count =" SPC %pc);
|
if($dtStats::debugEchos){error(%msg);}
|
||||||
|
dtEventLog("200+ Ping Avg" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Ping Avg =" SPC $dtStats::pingAvg @ "ms" SPC "Player Count =" SPC %pc, 0);
|
||||||
|
$dtStats:evTime[4] = getSimTime();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$dtStats::eventMax = 200;
|
$dtStats::eventMax = 100;
|
||||||
function dtEventLog(%log){
|
function dtEventLog(%log,%save){
|
||||||
%count = $dtServer::eventLogCount++;
|
%count = $dtServer::eventLogCount++;
|
||||||
if($dtServer::eventMax < $dtStats::eventMax)
|
if($dtServer::eventMax < $dtStats::eventMax)
|
||||||
$dtServer::eventMax++;
|
$dtServer::eventMax++;
|
||||||
if(%count > $dtStats::eventMax-1)
|
if(%count > $dtStats::eventMax-1)
|
||||||
%count = $dtServer::eventLogCount = 0;
|
%count = $dtServer::eventLogCount = 0;
|
||||||
$dtServer::eventLog[%count] = %log;
|
$dtServer::eventLog[%count] = %log;
|
||||||
export("$dtServer::event*", "serverStats/eventLog.cs", false );
|
|
||||||
$dtStats:lastEvent = getSimTime();
|
$dtStats:lastEvent = getSimTime();
|
||||||
|
if(%save)
|
||||||
|
export("$dtServer::event*", "serverStats/eventLog.cs", false );
|
||||||
}
|
}
|
||||||
function startMonitor(){
|
function startMonitor(){
|
||||||
if(!$dtStats::prefEnable){// if we are running dont start again
|
if(!$dtStats::prefEnable){// if we are running dont start again
|
||||||
|
|
@ -12577,6 +12413,7 @@ function dtSaveServerVars(){
|
||||||
schedule(7000,0,"export", "$dtServer::skipCount*", "serverStats/skipCount.cs", false );
|
schedule(7000,0,"export", "$dtServer::skipCount*", "serverStats/skipCount.cs", false );
|
||||||
schedule(8000,0,"export", "$dtServer::maxPlayers*", "serverStats/maxPlayers.cs", false );
|
schedule(8000,0,"export", "$dtServer::maxPlayers*", "serverStats/maxPlayers.cs", false );
|
||||||
schedule(9000,0,"export", "$mapID::*", "serverStats/mapIDList.cs", false );
|
schedule(9000,0,"export", "$mapID::*", "serverStats/mapIDList.cs", false );
|
||||||
|
//schedule(10000,0,"export", "$dtServer::event*", "serverStats/eventLog.cs", false );
|
||||||
}
|
}
|
||||||
function dtLoadServerVars(){// keep function at the bottom
|
function dtLoadServerVars(){// keep function at the bottom
|
||||||
if($dtStats::Enable){
|
if($dtStats::Enable){
|
||||||
|
|
@ -12625,12 +12462,12 @@ function dtLoadServerVars(){// keep function at the bottom
|
||||||
if(isFile("serverStats/maxPlayers.cs"))
|
if(isFile("serverStats/maxPlayers.cs"))
|
||||||
exec("serverStats/maxPlayers.cs");
|
exec("serverStats/maxPlayers.cs");
|
||||||
$dtServer::eventLogCount = -1;
|
$dtServer::eventLogCount = -1;
|
||||||
if(isFile("serverStats/eventLog.cs"))
|
//if(isFile("serverStats/eventLog.cs"))
|
||||||
exec("serverStats/eventLog.cs");
|
//exec("serverStats/eventLog.cs");
|
||||||
if(%crash)
|
if(%crash)
|
||||||
dtEventLog("Server Crash" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Plr Count =" SPC $dtServerVars::lastPlayerCount SPC "Map =" SPC $dtServerVars::lastMission);
|
dtEventLog("Server Crash" SPC formattimestring("hh:nn:a mm-dd-yy") SPC "Plr Count =" SPC $dtServerVars::lastPlayerCount SPC "Map =" SPC $dtServerVars::lastMission, 0);
|
||||||
|
|
||||||
dtEventLog("Server Start" SPC formattimestring("hh:nn:a mm-dd-yy"));
|
dtEventLog("Server Start" SPC formattimestring("hh:nn:a mm-dd-yy"), 0);
|
||||||
|
|
||||||
genBlanks();
|
genBlanks();
|
||||||
buildVarList();
|
buildVarList();
|
||||||
|
|
@ -12653,3 +12490,206 @@ function testVarsRandomAll(%max){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//ChangeLog
|
||||||
|
// 4.0
|
||||||
|
// *Removed most redudent/repeating code
|
||||||
|
// *Menus - removed redudent menus
|
||||||
|
// *Global arrays - reorganized to get rid of repeating field values
|
||||||
|
// *Save Load - removed unused functions from the load/save fast methods
|
||||||
|
// *Stats - condensed the stats handling code by 50%
|
||||||
|
// *Fixed bug with saveing weapon stats after a person has left
|
||||||
|
// *Removed $dtStats::fullGames, as it was not necessary becuase $dtStats::fgPercentage gives the same level of contorl
|
||||||
|
// *Null GUID protection, just to prevent garbage or null data
|
||||||
|
//
|
||||||
|
// 5.0
|
||||||
|
// Rework functions to remove dependencies on other .vl2 this script now works in base, classic, and some variants of the two.
|
||||||
|
// Arena and Duel Mod Support added
|
||||||
|
// MA stats across all weapons/items
|
||||||
|
// Mine Grenades Satchel Turrets Vehicles stats added
|
||||||
|
// Stats menu clean up and rework, some stuff was not even working
|
||||||
|
// Remvoed ProjectileData::onCollision hook for stats collection, everything is now under clientDmg
|
||||||
|
// Make processGameLink into one funciton for all game types
|
||||||
|
// Added fail safe to getCNameToCID to prevent blank names
|
||||||
|
// Reduce decimal places and scale down large numbers in the menus
|
||||||
|
// Added $dtStats::debugEchos for debuging issues
|
||||||
|
// Fix issue with reset when player joins the game
|
||||||
|
// Fix issue with back button bricking the score hud, as well as add a fail safe so this cant happen
|
||||||
|
// Added to options to control whats displayed
|
||||||
|
// Reworked history to remove redudent menus and to add the ablity to view weapon history, may expand on later
|
||||||
|
// Cleaned up the field value array removed unused and unnecessary values
|
||||||
|
// Total stats now reset onces a value has getting near the 32 bit int limit
|
||||||
|
// Added Live View so players can watch there stats in realtime with the added feature of being able to pin it and keep that window in place
|
||||||
|
// Added Player/Armror kill stats
|
||||||
|
//
|
||||||
|
// 5.5 fixes
|
||||||
|
// Rework hand grenade stats collection
|
||||||
|
// Moved commonly overridden functions in its own package and uses DefaultGame-
|
||||||
|
// -activate/deactivatePackages to correctly postion them on top of gameType
|
||||||
|
// -overrides this fixes issues with lakRabbitGame overrides
|
||||||
|
// Reworked some of the values on live screen to be more correct
|
||||||
|
// Moved resetDtStats to MissionDropReady so that liveStats work in lan game
|
||||||
|
//
|
||||||
|
// 6.0
|
||||||
|
// Full lan/no guid support - function will gen a uid and associate it with the players name
|
||||||
|
// Overhall of the way we store stats - NOTE this breaks compatibility with older versions so delete serverStats folder
|
||||||
|
// Leader Board/Best Of System - this info is compled during non peak server hours see $dtStats::buildSetTime
|
||||||
|
// Rename set/getFieldValue to set/getDynamicField to be less confuseing with the other field functions that deal with strings
|
||||||
|
// Added setValueField function to handel the new way of stats storage
|
||||||
|
// Made skip zeros the the only method for running averages there for removed extra code
|
||||||
|
// Removed timeLimitReached and scoreLimitReached, not sure why i needed them in the first place everything runs threw gameover anyways
|
||||||
|
// Removed $dtStats::slowLoadTime its not used any more with the new system as theres only 2 files to load vs 11 at a given time
|
||||||
|
// History menu redone added a page system to allow for larger then 10 game history
|
||||||
|
// System now self maintains files and will delete when out of date see $dtStats::expireMax
|
||||||
|
// Removed AI checks and added in ai support for better testing
|
||||||
|
// Fix some divide by zero issues useing conditional ternary operator example condition ? result1 : result2
|
||||||
|
// Fix few dynamic fields that were named wrong resulting in stats just showing 0
|
||||||
|
// Score resetting is handeld in script to better handel end game saving
|
||||||
|
// Added unused varable array uFV for short, this is only to reset the values we dont track directly or unused gametype values
|
||||||
|
// Renamed the arrays to keep them shorter, example fieldValue is now FV
|
||||||
|
// Added max array to allow recording of varables we only want the max of example being longest sniper shot
|
||||||
|
// Added an averaging array to be able to store current averages, keeps code complexity down on loaderboard stuff, may rework later
|
||||||
|
// setValueField will now default to 0 is value is ""
|
||||||
|
// Fixed mine disc code forgot to add %targetClient to the resetCode
|
||||||
|
// Replaced gameWinStat with postGameStats were custom stuff can added up or handled at the end of the game
|
||||||
|
// Added Armor::onTrigger to better track stats on player, and to remove duplicate code
|
||||||
|
// Added a handfull of new varables to track, too many to list.
|
||||||
|
// Surival time is now acurite also simplified the code
|
||||||
|
// Removed turrets stats other then kills death
|
||||||
|
//
|
||||||
|
// 6.5 Fixes
|
||||||
|
// Misc fixes from 6.0 additions/changes
|
||||||
|
// Added option to view the other game types within the leaderboard stuff
|
||||||
|
// Bumped up distance for mortar midAirs so it's just outside its damage radius something strange is going on there
|
||||||
|
// Added game type arrays for display and processing
|
||||||
|
//
|
||||||
|
// 6.6
|
||||||
|
// Added game id to track individual games
|
||||||
|
// Removed misc turret stuff
|
||||||
|
// Removed vehicle menus
|
||||||
|
// Misc fixes
|
||||||
|
//
|
||||||
|
// 6.7
|
||||||
|
// Escort fix moved
|
||||||
|
// Stats now allways save no matter the condition, this should reduce some edge cases problems and to have a more complete data set
|
||||||
|
// Added gamePCT becuase of the change to always save to track witch maps/games were cut short or joined in the middle of a match
|
||||||
|
// MapID Gen to track map specific stats
|
||||||
|
//
|
||||||
|
// 7.0
|
||||||
|
// Way to many changes to list so here are the major changes
|
||||||
|
// Super heavy opmtiation and rework, new changes has improved some areas by 25-75% in terms of speed/impact on the server
|
||||||
|
// Player Map Stats - like totals but done per map, this is also used to build map based leaderboards
|
||||||
|
// Server/Map Stats - track whats being played and whats being skipped as well as server health
|
||||||
|
// Added fail safe options load after and load slow in case the amount of stat tracking grows too large
|
||||||
|
// Ton of new stat values added
|
||||||
|
// Score hud UI mostly Reworked
|
||||||
|
//
|
||||||
|
// 7.1
|
||||||
|
// Combined save game and save total into one function
|
||||||
|
// Switched client leave for onDrop as client leave is tied to game type and does not work in between maps
|
||||||
|
// changed vote override too serverCmdStartNewVote just so this script works in base and default classic
|
||||||
|
// Few misc stats fixes
|
||||||
|
// Vote for map stat now gens an map id, so it will now show on the list
|
||||||
|
// Renamed var for server hangs and host hangs, as they were not saving
|
||||||
|
// Removed a few stats that have no relevance
|
||||||
|
// Typo for ping avg var fix
|
||||||
|
// Fixed gameID now saves and was moved to MissonLoadDone
|
||||||
|
// Added mapGameID for parsers
|
||||||
|
// Fixed chat stats
|
||||||
|
// Added LeftID to better track what game the client left mainly for stat resetting
|
||||||
|
// Added deploy stats
|
||||||
|
// Fixed issue were if a player left during the game over screen and it hasent saved yet, it would delete the stats before saving
|
||||||
|
// Score restore optimization
|
||||||
|
//
|
||||||
|
// 7.2
|
||||||
|
// Map stats sorting and load optimization
|
||||||
|
// Added version number global, and saved in player stats
|
||||||
|
// Added lastPlay, mapReconnects and mapDisconnectsScore for server stats
|
||||||
|
// Stats ui cleanup
|
||||||
|
// Fix for onDeploy was missing return %obj;
|
||||||
|
// incGameStats now has $dtStats::mapStats to completely disable this feature if need be
|
||||||
|
// Fixed armor vs armor total
|
||||||
|
// Added a global var to control build/sort speed of stats and set it back to 128
|
||||||
|
// Few new stats
|
||||||
|
// Disabled some mine disc stats as they were not accurate, may revisit later
|
||||||
|
// Fixed Flipflop stat
|
||||||
|
//
|
||||||
|
// 7.3
|
||||||
|
// Stat fixes to do copy paste mistakes
|
||||||
|
//
|
||||||
|
// 7.35
|
||||||
|
// Mine Disc Kill Stat
|
||||||
|
// Some extra lightning stats
|
||||||
|
// Stat name and rename fixes
|
||||||
|
// Fixed pixel margin on LMB and LB page
|
||||||
|
// clientDmgStats optimization and cleanup
|
||||||
|
// Score hud bug with viewing last month map stats
|
||||||
|
// Remove dtTurret stat unused
|
||||||
|
//
|
||||||
|
// 7.4
|
||||||
|
// Fix for mine disc kill stat
|
||||||
|
// Fix for name to client id function not working in lak
|
||||||
|
// Reworked a ugly fix for %kPlayer var in clientKillStats
|
||||||
|
// Lightning stats tweak
|
||||||
|
// Changed time restriction on flag escort from 3 to 5
|
||||||
|
// Adjusted clientShotsFired, to fix warnings, still unsure why flyingVehicleObject is getting passed into a onFire?
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
// 7.6
|
||||||
|
// Removed the cross check form mine disc, as the timer cross check is enough
|
||||||
|
// Converted kdr to decimal to better match website and is less confusing
|
||||||
|
// Commented out nexusCampingKills/Deaths as we currenlty dont support hunters
|
||||||
|
// Commented out server stat client crash, it will just echo to the console if it sees any
|
||||||
|
// Removed lockout schedule on chain kills, left the multi kill one in as its kind of nessaary in how it functions
|
||||||
|
// Renamed mid air distance vars to know at a glance how its tracking, Ex: instead of cgMaDist renamed to cgMAHitDist
|
||||||
|
// Fixed land spike turret stats
|
||||||
|
//
|
||||||
|
// 7.7
|
||||||
|
// Added teamScore to player game files for correct team scores
|
||||||
|
// KDR adjustment
|
||||||
|
// Adjusted cleanup function
|
||||||
|
// Mine disc kill fix
|
||||||
|
//
|
||||||
|
// 7.8
|
||||||
|
// Added Armor Timers
|
||||||
|
|
||||||
|
// 7.9
|
||||||
|
// Added Concussion Stats
|
||||||
|
// Invy use stat
|
||||||
|
//
|
||||||
|
// 8.0
|
||||||
|
// Added check for teams for concuss
|
||||||
|
// Adjust crash log player count to > 1
|
||||||
|
//
|
||||||
|
// 8.1
|
||||||
|
// Misc stat fixes
|
||||||
|
// Added mpb glitch stat
|
||||||
|
// Added flag tossing and catching stats
|
||||||
|
//
|
||||||
|
// 8.2
|
||||||
|
// Misc Fixes and clean up
|
||||||
|
// Removed beta tags
|
||||||
|
// Added seconed pages to leaderboards and rearranged them
|
||||||
|
// Added few new misc stats
|
||||||
|
// Packet loss and high ping avg added to server monitor
|
||||||
|
//
|
||||||
|
// 8.3
|
||||||
|
// Removed client crash code, does not catch anything
|
||||||
|
// Added event logs to server panel
|
||||||
|
// Added server event for tracking when ping stops updateing do to loss of transmission
|
||||||
|
// Added Projecitle tracking function for wierd edge cases when it comes to stats
|
||||||
|
// Added second page to lctf stats
|
||||||
|
// Eight new stats
|
||||||
|
//
|
||||||
|
// 8.4
|
||||||
|
// Stat Fixes
|
||||||
|
// Tweaks to event logging to be less spammy
|
||||||
|
// Disabled eventlog saving as its meant to monitor the server on the fly and the console log keeps a record of the events
|
||||||
|
// Comment out hit locaiton stats
|
||||||
Loading…
Add table
Add a link
Reference in a new issue