diff --git a/WebfrontCore/wwwroot/css/main.scss b/WebfrontCore/wwwroot/css/main.scss index d27b8e3c..1c1be06b 100644 --- a/WebfrontCore/wwwroot/css/main.scss +++ b/WebfrontCore/wwwroot/css/main.scss @@ -237,7 +237,7 @@ form *, select { } style { - background-color: darken($primary, 20%); + background-color: darken($primary, 10%); } .nav-tabs .nav-item { diff --git a/_commands.gsc b/_commands.gsc index 344aee64..25994f54 100644 --- a/_commands.gsc +++ b/_commands.gsc @@ -5,13 +5,15 @@ init() { +/* SetDvarIfUninitialized("sv_team_balance_assignments", ""); SetDvarIfUninitialized("sv_iw4madmin_serverid", 0); SetDvarIfUninitialized("sv_iw4madmin_apiurl", "http://127.0.0.1:1624/api/gsc/"); level.apiUrl = GetDvar("sv_iw4madmin_apiurl"); - //level thread WaitForCommand(); + level thread WaitForCommand(); level thread onPlayerConnect(); level thread onPlayerDisconnect(); +*/ } onPlayerConnect() diff --git a/_customcallbacks.gsc b/_customcallbacks.gsc index 90e3077f..6fb47463 100644 --- a/_customcallbacks.gsc +++ b/_customcallbacks.gsc @@ -4,103 +4,67 @@ init() { - SetDvarIfUninitialized("sv_customcallbacks", true); - SetDvarIfUninitialized("sv_framewaittime", 0.05); - SetDvarIfUninitialized("sv_additionalwaittime", 0.1); - SetDvarIfUninitialized("sv_maxstoredframes", 4); + return; + SetDvarIfUninitialized( "sv_customcallbacks", true ); + SetDvarIfUninitialized( "sv_framewaittime", 0.05 ); + SetDvarIfUninitialized( "sv_additionalwaittime", 0.05 ); + SetDvarIfUninitialized( "sv_maxstoredframes", 4 ); + SetDvarIfUninitialized( "sv_printradarupdates", false ); + SetDvarIfUninitialized( "sv_printradar_updateinterval", 500 ); + SetDvarIfUninitialized( "sv_iw4madmin_url", "http://127.0.0.1:1624" ); level thread onPlayerConnect(); + if (getDvarInt("sv_printradarupdates") == 1) + { + level thread runRadarUpdates(); + } - level waittill("prematch_over"); + level waittill( "prematch_over" ); level.callbackPlayerKilled = ::Callback_PlayerKilled; level.callbackPlayerDamage = ::Callback_PlayerDamage; level.callbackPlayerDisconnect = ::Callback_PlayerDisconnect; - - level.playerTags = []; - level.playerTags[0] = "j_head"; - level.playerTags[1] = "j_neck"; - level.playerTags[2] = "j_spineupper"; - level.playerTags[3] = "j_spinelower"; - level.playerTags[4] = "j_shoulder_ri"; - level.playerTags[5] = "j_shoulder_le"; - level.playerTags[6] = "j_elbow_ri"; - level.playerTags[7] = "j_elbow_le"; - level.playerTags[8] = "j_wrist_ri"; - level.playerTags[9] = "j_wrist_le"; - level.playerTags[10] = "j_hip_ri"; - level.playerTags[11] = "j_hip_le"; - level.playerTags[12] = "j_knee_ri"; - level.playerTags[13] = "j_knee_le"; - level.playerTags[14] = "j_ankle_ri"; - level.playerTags[15] = "j_ankle_le"; - level.playerTags[16] = "j_helmet"; } - -onPlayerConnect(player) +onPlayerConnect( player ) { - for(;;) + for( ;; ) { level waittill( "connected", player ); player thread waitForFrameThread(); } } -visibilityMultiplierForBone(bone) +getHttpString( url ) { - multiplier = 0; - - switch (bone) - { - case "none": - break; - case "j_helmet": - case "j_head": - multiplier = 0.0216; - break; - case "j_neck": - multiplier = 0.0236; - break; - case "j_spineupper": - multiplier = 0.1977; - break; - case "j_spinelower": - multiplier = 0.2202; - break; - case "j_shoulder_ri": - case "j_shoulder_le": - multiplier = 0.0344; - break; - case "j_elbow_ri": - case "j_elbow_le": - multiplier = 0.03394; - break; - case "j_wrist_ri": - case "j_wrist_le": - multiplier = 0.01296; - break; - case "j_hip_ri": - case "j_hip_le": - multiplier = 0.0860; - break; - case "j_knee_ri": - case "j_knee_le": - multiplier = 0.0782; - break; - case "j_ankle_ri": - case "j_ankle_le": - multiplier = 0.0118; - break; - case "gun": - break; - } - - return multiplier; + request = httpGet( url ); + request waittill( "done", success, data ); + request destroy(); } -hitLocationToBone(hitloc) +runRadarUpdates() { - switch(hitloc) + interval = int(getDvar("sv_printradar_updateinterval")); + + for ( ;; ) + { + for ( i = 0; i <= 17; i++ ) + { + player = level.players[i]; + + if ( isDefined( player ) ) + { + payload = player.guid + ";" + player.origin + ";" + player getPlayerAngles() + ";" + player.team + ";" + player.kills + ";" + player.deaths + ";" + player.score + ";" + player GetCurrentWeapon() + ";" + player.health + ";" + isAlive(player) + ";" + player.timePlayed["total"]; + logPrint( "LiveRadar;" + payload + "\n" ); + } + } + + wait( interval / 1000 ); + } +} + +hitLocationToBone( hitloc ) +{ + switch( hitloc ) { case "helmet": return "j_helmet"; @@ -143,26 +107,26 @@ hitLocationToBone(hitloc) waitForFrameThread() { - self endon("disconnect"); + self endon( "disconnect" ); self.currentAnglePosition = 0; self.anglePositions = []; - for(;;) + for( ;; ) { self.anglePositions[self.currentAnglePosition] = self getPlayerAngles(); - wait(getDvarFloat("sv_framewaittime")); - self.currentAnglePosition = (self.currentAnglePosition + 1) % getDvarInt("sv_maxstoredframes"); + wait( getDvarFloat( "sv_framewaittime" ) ); + self.currentAnglePosition = (self.currentAnglePosition + 1) % getDvarInt( "sv_maxstoredframes" ); } } -waitForAdditionalAngles(logString) +waitForAdditionalAngles( logString ) { - wait(getDvarFloat("sv_additionalwaittime")); + wait( getDvarFloat( "sv_additionalwaittime" ) ); self.angleSnapshot = []; - for(i = 0; i < getDvarInt("sv_maxstoredframes"); i++) + for( i = 0; i < getDvarInt( "sv_maxstoredframes" ); i++ ) { self.angleSnapshot[i] = self.anglePositions[i]; } @@ -172,82 +136,70 @@ waitForAdditionalAngles(logString) i = 0; - if (currentPos < getDvarInt("sv_maxstoredframes") - 1) + if ( currentPos < getDvarInt( "sv_maxstoredframes" ) - 1 ) { i = currentPos + 1; } - while(i != currentPos) + while( i != currentPos ) { anglesStr += self.angleSnapshot[i] + ":"; - i = (i + 1) % getDvarInt("sv_maxstoredframes"); + i = (i + 1) % getDvarInt( "sv_maxstoredframes" ); } - logPrint(logString + ";" + anglesStr + "\n"); + logPrint( logString + ";" + anglesStr + "\n" ); } -runVisibilityCheck(attacker, victim) +vectorScale( vector, scale ) { - start = attacker getTagOrigin("tag_eye"); - traceVisibilityAmount = 0; - - for (i = 0; i < 17; i++) - { - if (sightTracePassed(start, victim getTagOrigin(level.playerTags[i]), false, attacker)) - { - traceVisibilityAmount += 1.0 * visibilityMultiplierForBone(level.playerTags[i]); - } - } - return traceVisibilityAmount; + return ( vector[0] * scale, vector[1] * scale, vector[2] * scale ); } -vectorScale(vector, scale) -{ - return (vector[0] * scale, vector[1] * scale, vector[2] * scale); -} - -Process_Hit(type, attacker, sHitLoc, sMeansOfDeath, iDamage, sWeapon) +Process_Hit( type, attacker, sHitLoc, sMeansOfDeath, iDamage, sWeapon ) { victim = self; _attacker = attacker; - if (!isPlayer(attacker) && isDefined(attacker.owner)) + + if ( !isPlayer( attacker ) && isDefined( attacker.owner ) ) + { _attacker = attacker.owner; - else if(!isPlayer(attacker) && sMeansOfDeath == "MOD_FALLING") + } + + else if( !isPlayer( attacker ) && sMeansOfDeath == "MOD_FALLING" ) + { _attacker = victim; + } - location = victim GetTagOrigin(hitLocationToBone(sHitLoc)); - isKillstreakKill = !isPlayer(attacker) || isKillstreakWeapon(sWeapon); + location = victim GetTagOrigin( hitLocationToBone( sHitLoc ) ); + isKillstreakKill = !isPlayer( attacker ) || isKillstreakWeapon( sWeapon ); - // do the tracing stuff - start = _attacker getTagOrigin("tag_eye"); - end = location; - trace = bulletTrace(start, end, true, _attacker); - - playerVisibilityPercentage = runVisibilityCheck(_attacker, victim); - logLine = "Script" + type + ";" + _attacker.guid + ";" + victim.guid + ";" + _attacker GetTagOrigin("tag_eye") + ";" + location + ";" + iDamage + ";" + sWeapon + ";" + sHitLoc + ";" + sMeansOfDeath + ";" + _attacker getPlayerAngles() + ";" + gettime() + ";" + isKillstreakKill + ";" + _attacker playerADS() + ";" + trace["fraction"] + ";" + playerVisibilityPercentage; - attacker thread waitForAdditionalAngles(logLine); + logLine = "Script" + type + ";" + _attacker.guid + ";" + victim.guid + ";" + _attacker GetTagOrigin("tag_eye") + ";" + location + ";" + iDamage + ";" + sWeapon + ";" + sHitLoc + ";" + sMeansOfDeath + ";" + _attacker getPlayerAngles() + ";" + gettime() + ";" + isKillstreakKill + ";" + _attacker playerADS() + ";" + 0 + ";" + 0; + attacker thread waitForAdditionalAngles( logLine ); } Callback_PlayerDamage( eInflictor, attacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime ) { - if (level.teamBased && isDefined( attacker ) && ( self != attacker ) && isDefined( attacker.team ) && ( self.pers[ "team" ] == attacker.team )) + if ( level.teamBased && isDefined( attacker ) && ( self != attacker ) && isDefined( attacker.team ) && ( self.pers[ "team" ] == attacker.team ) ) + { return; + } - if (self.health - iDamage > 0) - { - self Process_Hit("Damage", attacker, sHitLoc, sMeansOfDeath, iDamage, sWeapon); - } - self maps\mp\gametypes\_damage::Callback_PlayerDamage(eInflictor, attacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime ); + if ( self.health - iDamage > 0 ) + { + self Process_Hit( "Damage", attacker, sHitLoc, sMeansOfDeath, iDamage, sWeapon ); + } + + self maps\mp\gametypes\_damage::Callback_PlayerDamage( eInflictor, attacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime ); } Callback_PlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration ) { - Process_Hit("Kill", attacker, sHitLoc, sMeansOfDeath, iDamage, sWeapon); + Process_Hit( "Kill", attacker, sHitLoc, sMeansOfDeath, iDamage, sWeapon ); self maps\mp\gametypes\_damage::Callback_PlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration ); } Callback_PlayerDisconnect() { - level notify("disconnected", self); + level notify( "disconnected", self ); self maps\mp\gametypes\_playerlogic::Callback_PlayerDisconnect(); } \ No newline at end of file