Git Product home page Git Product logo

cs-go-observer-custom-hud's Introduction

DEPRECATED - USE LEXOGRINE HUD MANAGER

CS:GO Observer Custom HUD

Shout-out to RedSparr0w for base code and idea! You are the best, man.

How does it work?

Basically, CS:GO is streaming data to local app-server, that transformes data and then load it to local webpage.

To-do before running

  • Node.js needs to be installed
  • public/files/cfg/gamestate_integration_observerspectator.cfg needs to be placed in cfg folder in CS:GO location
  • public/files/cfg/observer.cfg needs to be placed in cfg folder in CS:GO location
  • CS:GO needs to run on Fullscreen Windowed (I know people may dislike it, but since it's only for observation, soo...)
  • After running CS:GO and connecting to match (or replaying a demo, you can use this in it too), type to console exec observer.cfg, it makes everything default disappear besides map and killfeed

Configuration

//config.json
{
    "GameStateIntegrationPort":1337, //This must be the same as in gamestate_integration_observerspectator.cfg,
    "ServerPort":2626, //Some free port on your PC
    "SteamApiKey":"ABCDEFGIJK12345678", //Steam API Key, without it avatars won't work
    "DisplayAvatars":true, // true for yes, false for no
    "AvatarDirectory":"./public/files/avatars/", // Local storage for avatars
    "GSIToken":"120987" //This must be the same as in gamestate_integration_observerspectator.cfg
}

Examples

Here

Video example Video^ So this is possible to do with everything below.

Setting up video

Video example

How to make it run?

  • Install NodeJS (nodejs.org)
  • Download this repo somewhere
  • Start RUN file (.bat for Windows, .sh for Linux)
  • Run Overlay Exe from here: OVERLAY DOWNLOAD

There are propably milions of bugs and different things, so be prepared.

Admin Panel

After starting the code go to address showing up in terminal/command prompt. You should see Admin Panel divided in three parts - Teams, Players, Create Match and HUDs. In here you can manage data used in HUDs during match ups.

Teams tab

You can here define teams, their name, short names (actually short names are not use anywhere for now), their country flag and logo. Files for teams' logos are being held in public/teams/ and their filename should start from logo-.

Players tab

In Players tab you can define player's real name, displayed name, country flag (can also be set to "The same as team"), their team and, to identify players, SteamID64.

Create match tab

Here you can set type of match - is this a map of BO2, BO3 or BO5, score for teams and which team it should load to HUD. In case players are on the wrong side (left/right) there is SWAP button to quickly tell the HUD to swap teams' name, logo and flag. Additionaly, if during the match you decide that there is a type in team's or player's information, you can change it (for example on mobile phone, if you allow Node through firewall and you are on the same local network) and then in this tab click the Force Refresh HUD, to make sure all the changes are applied.

HUDS

This tab shows local HUDs. They are not validated whether or not they actually work, but if any of the files is missing, it will notify you in Warnings column. You can enable/disable each HUD to make it accessible or not. There is also HUD URL information - if you click it, it will redirect you to local webpage, that's serving as a HUD. It is useful if streamer wants to stream HUD separately - for example it can be added in OBS as Browser Source, then you just need to set it to HUD's URL. It might be useful for bigger streaming workspaces, like for setups with different PC dedicated to replays - one server app will manage every HUD on local network, because all HUDs are available all the time, if they are not disabled.

Ex1 Ex2 Ex3 Ex4

How to create your own HUD

Go to public/huds and copy and paste default folder and rename it to your heart's content - that's how your HUD will display in Admin Panel. template.pug - template of your HUD in PUG, required. style.css - css to your template, reccomended. index.js - engine of your HUD. Look at the default one and at the template to get the idea how it works.

In index.js the most important part is updatePage() function. It is required for any HUD to work, because this function is called when data is coming from CS:GO.

All of main action that will take place on your screen happens in updatePage() function, so when you want to represent some information you will need to write your code within its boundaries.

function updatePage(data) {
	//Here happens magic
}

data argument is being passed to it, and from that we can take actions, such as getting informations about players, map, round phases, etc. Below you will find detailed information about received information :>

data

Methods to obtain different objects:

Method Description Example Returned objects
getTeamOne() Information about Team 1 defined in Admin Panel var teamOne = data.getTeamOne(); JSON:{team_name: "SK Gaming", short_name: "sk", country_code: "Brazil", logo: "logo-1527775279488.png", _id: "MT3xr6mb37o8Vbe3"}
getTeamTwo() Information about Team 2 defined in Admin Panel var players = data.getTeamTwo(); As above
loadTeam(id) id: String Information about team defined in Admin Panel with given id var players = data.loadTeam("MT3xr6mb37o8Vbe3"); As above
getMatchType() Information which matchup type is this var matchup = data.getMatchType(); String: bo2, bo3 lub bo5
getMatch() Information about match set up in panel var match = data.getMatch(); JSON: {match: "bo5", team_1: {map_score:1, team:"auto"}, team_2: {map_score:1, team:"MT3xr6mb37o8Vbe3"}}
getPlayers() List of players var players = data.getPlayers(); (Array of Players)
getCT() CT's informations var ct = data.getCT(); (Team)
getT() T's informations var t = data.getT(); (Team)
getObserved() Currently spectated player var player = data.getObserved(); (Player) If you are not spectating anyone, returned Player will have Steam ID 1 and name GOTV
getPlayer(observer_slot) observer_slot: Int Player with given observation slot (o-9) var first = data.getPlayer(1); (Player)
phase() Game's current phase var phase = data.phase(); (Phase)
round() Round's information var round = data.round(); (Round)
map() Map's information var map = data.map(); (Map)
previously() If anything changed since last update, it will contain the previous value var previously = data.previously(); (Array) More information about previously() you will find on the bottom

Example:

function updatePage(data) {
	var player = data.getObserved(); // Getting spectated players object
    var teamLeft = data.getTeamOne(); // Team 1's informations
    var teamRight = data.getTeamTwo(); // Team 2's informations
    
    var round = data.round();
    
    // Setting teams' names
    $("#team_one_name").html(teamLeft.team_name); 
    $("#team_two_score").html(teamRight.team_name);
    // Those might be null if none specified, then use getT() and getCT() 
    
    //Setting teams' flag
    if(teamLeft.country_code){
        $("#team_1 #team_flag").css("background-image", "url('/files/img/flags/"+teamLeft.country_code + ".png')");
    }
    if(teamRight.country_code){
        $("#team_2 #team_flag").css("background-image", "url('/files/img/flags/"+teamRight.country_code + ".png')";
    }
    
    var playerlist = data.getPlayers(); // Array of player objects
    if(playerlist){
        for(var steamid in playerlist){
        	/* Actions here will be taken for each player */
            let player = playerlist[steamid];
            
            let displayed_name = player.name;
            let real_name = player.real_name; // If real name isn't set, it will show player.name
        }
    }
    
    
}

Objects

Player

Properties

Property Description Example Values
name Player's steam name var name = player.name;//OLOF (String)
real_name Player's real name, if set up in panel var real_name = player.name;//Olof Kajbjer Gustafsson (String)
clan Player's current shown clan tag var clan = player.clan;//fnatic (String) or (NULL)
observer_slot Player's spectating number var slot = player.observer_slot;//3 (int) 0-9
team Player's side var team = player.team;//CT (String) CT/T
position Player's current position on map var pos = player.position;//-663.10, -198.32, 16.03 (String) x, y, z
steamid Player's SteamID64 var sid = player.steamid;//76561197988627193 (String)
teamData Player's personal team information, if set up in panel var team = player.teamData; (JSON):{team_name: "SK Gaming", short_name: "sk", country_code: "Brazil", logo: "logo-1527775279488.png", _id: "MT3xr6mb37o8Vbe3"}

Example:

function updatePage(data) {
	var player = data.getObserved(); //Getting spectated players object
    var name =  player.name; //Getting name of that player
    var slot = player.observer_slot; // Getting slot of that player
    
     if(player.team == "CT"){...}
}

Methods

Method Description Example Values
getWeapons() List of player's weapons var weapons = player.getWeapons(); (Array of Weapons)
getCurrentWeapon() Player's active weapon var holding = player.getCurrentWeapon(); (Weapon)
getGrenades() Player's grenades var grenades = player.getGrenades(); (Array of Weapons)
getStats() Player's current statistics (list below) var stats = player.getStats(); (Array)

Statistics:

Stat's name Description Example Values
health Player's health var health = player.getStats().health; (int) 0-100
armor Player's kevlar var armor = player.getStats().armor; (int) 0-100
helmet Player's helmet var helmet = player.getStats().helmet; (bool) True/False
defusekit Player's defuse kit var def = player.getStats().defusekit; (bool) True/False or (NULL)
smoked Level of being smoked var flashed = player.getStats().smoked; (int) 0-255 or (NULL)
flashed Level of being flashed var flashed = player.getStats().flashed; (int) 0-255
burning Level of being burned var burning = player.getStats().burning; (int) 0-255
money Player's money var money = player.getStats().money; (int) From 0 and up
round_kills Player's kills during round var round_kills = player.getStats().round_kills; (int) Usually 0-5
round_killhs Player's kills with headshot during round var round_killhs = player.getStats().round_killhs; (int) Usually 0-5
equip_value Value of player's equipment var equip_value = player.getStats().equip_value; (int) From 0 and up
kills Player's kills var kills = player.getStats().kills; (int)
assists Player's assists var assists = player.getStats().assists; (int)
deaths Player's deaths var deaths = player.getStats().deaths; (int)
mvps Player's MVPs var mvps = player.getStats().mvps; (int)
score Player's point score var points = player.getStats().score; (int)

Example:

function updatePage(data) {
	var player = data.getObserved(); //Getting spectated players object
    var stats =  player.getStats();
    var weapons = player.getWeapons();
    
    $("#health_box").html(stats.health);
    
    for(var k in weapons){...}
    
    if(stats.defusekit !== true){
    	$("#defusekit").css("display", "hidden");
    }
}

Weapon

Property Description Example Values
name Weapon's asset name var name = weapon.name;//weapon_awp (String) weapon_...
paintkit Weapon's skin's asset name var skin = weapon.paintkit;//cu_medusa_awp (String)
type Weapon's type var type = weapon.type; (String) Knife/Rifle/SniperRifle/Grenade
state State of being equiped var state = weapon.state; (String) holstered/active
ammo_clip Ammo in clip var clip = weapon.ammo_clip; (int)
ammo_clip_max Max ammount of ammo in clip var maxclip = weapon.ammo_clip_max; (int)
ammo_reserve Ammo outside of clip var res = weapon.ammo_reserve; (int)

Map

Property Description Example Values
name Map's name var name = map.name;//de_dust2 (String)
mode Game's current mode var mode = map.mode;//competitive (String) competitive/deathmatch/etc...
phase Game's current phase var phase = map.phase; (String) warmup/live/intermission/gameover
round How many rounds has been played, not which is it var round = map.round; (int) 0-15
num_matches_to_win_series How many matches needed to win series var need = map.num_matches_to_win_series; (int)
current_spectators Number of current live spectators var spec = map.current_spectators; (int)
souvenirs_total Number of dropped souvenirs (majors) var souv = map.souvenirs_total; (int)

Round

Property Description Example Values
phase Round's phase var phase = round.phase; (String) freezetime/live/over
win_team Side who's win var win_team = round.win_team; (String) CT/T
bomb State of bomb var bomb = round.bomb; (String) exploded/defused/planted or (NULL)

Team

Property Description Example Values
score Team's score var score_ct = team.score; (int) 0-16 without OTs
name Team's name var name_t = team.name; (String)
flag Team's flag var flag_ct = team.flag; (String) ISO 3166 Country Code
timeouts_remaining Team's remaining timeouts var timeouts_t = team.timeouts_remaining; (int)
matches_won_this_series Matches won this series by this team var won_ct = team.matches_won_this_series; (int)
equip_value Equipment value of team var ct_value = team.equip_value; (int)
team_money Sum of team's players' money var ct_money = team.team_money; (int)

Phase

Property Description Example Values
phase Team's score var phase = phase.phase; (String) freezetime/live/over/bomb/defuse/paused/timeout_t/timeout_ct
phase_ends_in Team's name var time = phase.phase_ends_in;//"8.9" (String) Time (seconds) with decimal

API Requests to databases

Player object example

{
    "sid":"76561198029090368",
    "real_name":"Hubert Walczak",
    "displayed_name":"osztenkurden",
    "country_code":"Poland",
    "team":"MT3xr6mb37o8Vbe3"
}

Team object example

{
    "team_name":"SK Gaming",
    "short_name":"sk",
    "country_code":"Brazil",
    "logo":"logo-1527775279488.png"
}

HUD object example

{
    "name":"default",
    "enabled":false
}
URL Method Request body Response
/api/players GET {players:[Array of Player objects with unique _id property]} or Status 500
/api/players POST Player object {id:String}, specifying new unique _id or Status 500
/api/players PATCH Player object with _id property Status 200 or 500
/api/players DELETE {userId: String} Status 200 or 500
/api/teams GET {players: [Array of Player objects with unique _id property]} or Status 500
/api/teams POST FormData object with fields: team_name, short_name, country_code, logo {id:String}, specifying new unique _id or Status 500
/api/teams PATCH FormData object with fields: team_name, short_name, country_code, logo Status 200 or 500
/api/teams DELETE {teamId: String} Status 200 or 500
/api/teams_logo DELETE {teamId: String} Status 200 or 500
/api/huds GET {players: [Array of HUD objects with unique _id property]} or Status 500
/api/huds POST {id: String, enabled: Boolean} Status 200 or 500

Credits

As I mentioned before, RedSparr0w is the man I wouldn't make it without.

Support/Donate

Paypal donate

cs-go-observer-custom-hud's People

Contributors

lukasw1337 avatar osztenkurden avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cs-go-observer-custom-hud's Issues

Win team message and defuse animation - Need Help

Hi all

Im trying to add something new since i dont program since more then 6+ years. I want to know how i can program the messages of the winning team + defuse timer to appear on the screen.

Best Regards

No exe file

no exe file?? i cant use it without since i dont have a 2nd monitor

Manifest file missing or unreadebel

screenshot

I have full access to all the files and are not read/Write protected.

nwjs.io is installed to c:\nw
and the PGL example is in c:\serer

I'm using Windows 10 and the latest update. Same whit Nodejs

Help me !

sir plz help me Step by Step video :D i want
i Fail ur script ....
very headcache !_!
i test 3 day this one !

becoz i'm organizer of mm league
i want to use ur hub in my league
ty sir

Vac issue and further HUD-generating feature request

Hey, I've watched your video on youtube, which looks great. But I'm wondering if it has vac or banned risks? Apparently it's gonna be used when observing a match on offical server, as well as platforms like faceit, In China, mostly b5 and 5e. If not, then it's gonna be great for private match observing(just some friends gather together and invite someone to broadcast&record it) and fun.


Another request is ...my issue. As a csgo video creators, I'm really hoping to make seperate HUD recorded. In this issue, I wonder if csgo or hlae could connect data to generate HUD images or videos in ALPHA CHANNEL!!!

As what I saw in your great video, it might be in alpha channel already, so another question is how to record it. Maybe could u come to our advancedfx discord and further communicate with technical supporter dugend? since I'm just an adviser in advancedfx team and doing with non-programming things xd

Can't open overlay.exe

I followed instruction, and GSI works fine for me.

But when I'm trying to open Overlay.exe, it just disappear (opens for sec, then crashes)

What do i have to do?

white pages not transparent

hi,
i got this white page when running overlay.exe and choosing hud..
its not transparent.. any guide to make it transparent?

Default Hud - always displaying avatars

Hey, I'm having a problem with the player information in the bottom middle it is always showing avatars. I go into config.json and change 'DisplayAvatars' from 'false' to 'true' and put in a 'SteamApiKey' and it shows perfectly centred with avatar but when 'DisplayAvatars' is set to 'false' the player information is still in the same place as if the avatar was there and when you have the SteamApiKey setup it shows avatars regardless of DisplayAvatars.

TLTR: The program isn't reading DisplayAvatars correctly and is always displaying for avatars

Bomb Payload SteamID last digit is wrong

The endpoint data.info.bomb.players sometimes gets the last digit of the steamID of the player wrong.

The data.info.allplayers endpoint has all the right steam ids.

I'm trying to do the "XY is planting/defusing" thing but as said, I get the wrong steam id sometimes.

This does not happen with valves node demo for gsi, the steam id is dead on everytime there.

How to display?

How can I single out a single player and give it "nick_also"?

Cant Remove Viewers / Drop from layout and other funcs

Hi,

I cant remove the top right tab of the layout that contains viewers and drops wich i want to. Im trying to add the functionality like the bar when defusing or planting, adding the avatar of steam on the player bar instead of flag and the timeouts remaining var timeouts_t = team.timeouts_remaining that isnt working.

If any of you can tell me what i should write for code, i appreciate.
Happy New Year

Team #2 logo can't be change

Team logo 2 can't be changed by "team2.json" because huds/Example_HUD_PGL/index.html 16line is incorrect.Please fix.

<div id="team_logo"><div id="team_flag"></div><img src="ok.png" id="team_2_logo"/></div>
sorry for my bad english.
Best of Luck :)

Money error

On a recent update of the CS:GO Hud, I was trying to edit and I realize that the player with the number "0" has the money spent bugged.

On a future update, try to fix that please.

If anyone already fixed that problem, please tell me how you did that.

Thanks! :)

Dont start up

Hi Guys,

i did everything like in the setup video and doesnt matter if I stay on the default config or take the vesper2. When i open the console and load the "observer" all overlay is gone. The Standard and the OBServer ones.
I copied all configs,using csgo in Fullscreen Windowed.
Can you please help me?

Thanks Guys

NPM can't find the files in system32 folder.

The error I get:
0 info it worked if it ends with ok 1 verbose cli [ 'C:\\Program Files (x86)\\nodejs\\node.exe', 1 verbose cli 'C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js', 1 verbose cli 'start' ] 2 info using [email protected] 3 info using [email protected] 4 verbose stack Error: ENOENT: no such file or directory, open 'C:\WINDOWS\system32\package.json' 5 verbose cwd C:\WINDOWS\system32 6 verbose Windows_NT 10.0.17134 7 verbose argv "C:\\Program Files (x86)\\nodejs\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "start" 8 verbose node v10.16.0 9 verbose npm v6.9.0 10 error path C:\WINDOWS\system32\package.json 11 error code ENOENT 12 error errno -4058 13 error syscall open 14 error enoent ENOENT: no such file or directory, open 'C:\WINDOWS\system32\package.json' 15 error enoent This is related to npm not being able to find a file. 16 verbose exit [ -4058, true ]

About Flashes

Hello,
In /public/flases folder we have flashbang images, I saw these images in ESL csgo broadcasts. We have that images but there is no code for adding these images when someone blind. Can someone explain to me how can I add these flashbang images properly?

Thanks.

Edited: @osztenkurden can you explain please :)

Add support for ADR

I saw in an earlier issue that ADR is not supported in the current version because you don't get it form the game data.

Well, since you are getting round_totaldmg, you can easily add this to a variable match_totaldmg and then simply do match_totaldmg / map.round to get the ADR.

I hope you will add this as a native variable to player.match_stats

New Game State Integration field, how to use?

The newest update to CSGO included this change:

  • Game state integration includes a field “round_totaldmg” to track total damage the player dealt.

Does this need an update to the source code to use? or is it just available by default now?

"found 3 high severity vulnerabilities" when starting via .bat file

When running the .bat file node tells me there are "high severity vulnerabilities". Basically it comes from using old versions of socket.io and lodash. I set the socket.io version to "latest" in the package.json and it seems to work fine still but I'm pretty clueless about lodash. Now I know this is supposed to run locally and stuff but still it would be nice to not get these messages.

Exe

I'm trying to execute .exe but it open and close immediately and I have read a fixed issue but I don't understand very well how to fix it, can anybody can explain me how to do it?

defuse time

how to i add milliseconds to the defusing time

Display Avatar

i changed "DisplayAvatars":true in config.js but still no avatar profile in hud. Someone help

So do you guys know how to properly do the average damage per round?

How to fetch this kinda info? I saw that inside the code is just some randomness generation

Is this the most detailed GSI output possible?

{
"provider":{
"name":"Counter-Strike: Global Offensive",
"appid":730,
"version":13616,
"steamid":"76561197989040134",
"timestamp":1512022104
},
"map":{
"mode":"competitive",
"name":"de_cbble",
"phase":"live",
"round":1,
"team_ct":{
"score":1,
"name":"FURIA!",
"flag":"BR",
"timeouts_remaining":1,
"matches_won_this_series":0
},
"team_t":{
"score":0,
"name":"oNe",
"flag":"BR",
"timeouts_remaining":1,
"matches_won_this_series":0
},
"num_matches_to_win_series":0,
"current_spectators":1,
"souvenirs_total":0
},
"round":{
"phase":"freezetime"
},
"player":{
"steamid":"76561198066701530",
"clan":"oNe ∙",
"name":"iDk",
"observer_slot":0,
"team":"T",
"activity":"playing",
"state":{
"health":100,
"armor":0,
"helmet":false,
"flashed":0,
"smoked":0,
"burning":0,
"money":2700,
"round_kills":0,
"round_killhs":0,
"equip_value":200
}
},
"allplayers":{
"76561198002284085":{
"name":"FURIA! bLdV-",
"observer_slot":1,
"team":"CT",
"state":{
"health":100,
"armor":97,
"helmet":false,
"flashed":0,
"burning":0,
"money":4850,
"round_kills":0,
"round_killhs":0,
"equip_value":850
},
"match_stats":{
"kills":1,
"assists":2,
"deaths":0,
"mvps":0,
"score":4
},
"weapons":{
"weapon_0":{
"name":"weapon_knife",
"paintkit":"default",
"type":"Knife",
"state":"active"
},
"weapon_1":{
"name":"weapon_usp_silencer",
"paintkit":"default",
"type":"Pistol",
"ammo_clip":12,
"ammo_clip_max":12,
"ammo_reserve":24,
"state":"holstered"
}
},
"position":"-2280.00, -1696.00, -24.08"
},
"76561197996321741":{
"clan":"oNe ∙",
"name":"Maluk3",
"observer_slot":6,
"team":"T",
"state":{
"health":100,
"armor":0,
"helmet":false,
"flashed":0,
"burning":0,
"money":1500,
"round_kills":0,
"round_killhs":0,
"equip_value":200
},
"match_stats":{
"kills":0,
"assists":0,
"deaths":1,
"mvps":0,
"score":0
},
"weapons":{
"weapon_0":{
"name":"weapon_knife_butterfly",
"paintkit":"am_zebra",
"type":"Knife",
"state":"holstered"
},
"weapon_1":{
"name":"weapon_glock",
"paintkit":"am_nuclear_pattern1_glock",
"type":"Pistol",
"ammo_clip_max":20,
"ammo_reserve":120,
"state":"active"
}
},
"position":"-498.00, 2184.00, -223.72"
},
"76561198164970560":{
"name":"FURIA! yuurih",
"observer_slot":2,
"team":"CT",
"state":{
"health":100,
"armor":0,
"helmet":false,
"flashed":0,
"burning":0,
"money":3350,
"round_kills":0,
"round_killhs":0,
"equip_value":200
},
"match_stats":{
"kills":0,
"assists":0,
"deaths":1,
"mvps":0,
"score":0
},
"weapons":{
"weapon_0":{
"name":"weapon_knife_karambit",
"paintkit":"am_sapphire_marbleized",
"type":"Knife",
"state":"holstered"
},
"weapon_1":{
"name":"weapon_usp_silencer",
"paintkit":"default",
"type":"Pistol",
"ammo_clip":12,
"ammo_clip_max":12,
"ammo_reserve":24,
"state":"active"
}
},
"position":"-2360.00, -1656.00, -20.92"
},
"76561197987300415":{
"name":"FURIA! sparticcho",
"observer_slot":3,
"team":"CT",
"state":{
"health":100,
"armor":100,
"helmet":false,
"flashed":0,
"burning":0,
"money":3350,
"round_kills":0,
"round_killhs":0,
"equip_value":850
},
"match_stats":{
"kills":0,
"assists":1,
"deaths":0,
"mvps":0,
"score":1
},
"weapons":{
"weapon_0":{
"name":"weapon_knife_butterfly",
"paintkit":"am_zebra",
"type":"Knife",
"state":"holstered"
},
"weapon_1":{
"name":"weapon_usp_silencer",
"paintkit":"aq_usp_stainless",
"type":"Pistol",
"ammo_clip":12,
"ammo_clip_max":12,
"ammo_reserve":24,
"state":"active"
}
},
"position":"-2208.00, -1648.00, -20.57"
},
"76561197996370184":{
"name":"FURIA! VINI",
"observer_slot":4,
"team":"CT",
"state":{
"health":100,
"armor":91,
"helmet":false,
"flashed":0,
"burning":0,
"money":6350,
"round_kills":0,
"round_killhs":0,
"equip_value":850
},
"match_stats":{
"kills":2,
"assists":0,
"mvps":1,
"score":4
},
"weapons":{
"weapon_0":{
"name":"weapon_knife_karambit",
"paintkit":"default",
"type":"Knife",
"state":"active"
},
"weapon_1":{
"name":"weapon_usp_silencer",
"paintkit":"cu_usp_elegant",
"type":"Pistol",
"ammo_clip":12,
"ammo_clip_max":12,
"ammo_reserve":24,
"state":"holstered"
}
},
"position":"-2384.00, -1577.00, -16.80"
},
"76561197965021087":{
"name":"FURIA! guerri",
"observer_slot":5,
"team":"CT",
"state":{
"health":100,
"armor":0,
"helmet":false,
"flashed":0,
"burning":0,
"money":4850,
"round_kills":0,
"round_killhs":0,
"equip_value":200
},
"match_stats":{
"kills":1,
"assists":0,
"deaths":1,
"mvps":0,
"score":2
},
"weapons":{
"weapon_0":{
"name":"weapon_knife_karambit",
"paintkit":"am_marble_fade",
"type":"Knife",
"state":"holstered"
},
"weapon_1":{
"name":"weapon_usp_silencer",
"paintkit":"cu_usp_cyrex",
"type":"Pistol",
"ammo_clip":12,
"ammo_clip_max":12,
"ammo_reserve":24,
"state":"active"
}
},
"position":"-2192.00, -1577.00, -14.56"
},
"76561198034379704":{
"clan":"oNe ∙",
"name":"trk",
"observer_slot":7,
"team":"T",
"state":{
"health":100,
"armor":0,
"helmet":false,
"flashed":0,
"burning":0,
"money":3000,
"round_kills":0,
"round_killhs":0,
"equip_value":200
},
"match_stats":{
"kills":1,
"assists":0,
"deaths":1,
"mvps":0,
"score":2
},
"weapons":{
"weapon_0":{
"name":"weapon_knife_t",
"paintkit":"default",
"type":"Knife",
"state":"holstered"
},
"weapon_1":{
"name":"weapon_glock",
"paintkit":"cu_glock_indigo",
"type":"Pistol",
"ammo_clip":20,
"ammo_clip_max":20,
"ammo_reserve":120,
"state":"holstered"
},
"weapon_2":{
"name":"weapon_c4",
"paintkit":"default",
"type":"C4",
"state":"active"
}
},
"position":"-746.00, 2324.00, -182.76"
},
"76561197974487712":{
"clan":"oNe ∙",
"name":"mch",
"observer_slot":8,
"team":"T",
"state":{
"health":100,
"armor":0,
"helmet":false,
"flashed":0,
"burning":0,
"money":1500,
"round_kills":0,
"round_killhs":0,
"equip_value":200
},
"match_stats":{
"kills":0,
"assists":0,
"deaths":1,
"mvps":0,
"score":0
},
"weapons":{
"weapon_0":{
"name":"weapon_knife_karambit",
"paintkit":"aa_fade",
"type":"Knife",
"state":"holstered"
},
"weapon_1":{
"name":"weapon_glock",
"paintkit":"default",
"type":"Pistol",
"ammo_clip":20,
"ammo_clip_max":20,
"ammo_reserve":120,
"state":"active"
}
},
"position":"-722.00, 2424.00, -189.49"
},
"76561197988396483":{
"clan":"oNe ∙",
"name":"caik3",
"observer_slot":9,
"team":"T",
"state":{
"health":100,
"armor":0,
"flashed":0,
"burning":0,
"money":1500,
"round_kills":0,
"round_killhs":0,
"equip_value":200
},
"match_stats":{
"kills":0,
"assists":0,
"deaths":1,
"mvps":0,
"score":0
},
"weapons":{
"weapon_0":{
"name":"weapon_bayonet",
"paintkit":"default",
"type":"Knife",
"state":"holstered"
},
"weapon_1":{
"name":"weapon_glock",
"paintkit":"gs_glock18_award",
"type":"Pistol",
"ammo_clip":20,
"ammo_clip_max":20,
"ammo_reserve":120,
"state":"active"
}
},
"position":"-626.00, 2200.00, -207.72"
},
"76561198066701530":{
"clan":"oNe ∙",
"name":"iDk",
"observer_slot":0,
"team":"T",
"state":{
"health":100,
"armor":0,
"helmet":false,
"flashed":0,
"burning":0,
"money":2700,
"round_kills":0,
"round_killhs":0,
"equip_value":200
},
"match_stats":{
"kills":0,
"assists":0,
"deaths":1,
"mvps":0,
"score":0
},
"weapons":{
"weapon_0":{
"name":"weapon_knife_m9_bayonet",
"paintkit":"aq_damascus_90",
"type":"Knife",
"state":"active"
},
"weapon_1":{
"name":"weapon_glock",
"paintkit":"hy_craquelure",
"type":"Pistol",
"ammo_clip":20,
"ammo_clip_max":20,
"ammo_reserve":120,
"state":"holstered"
}
},
"position":"-774.00, 2216.00, -177.94"
}
},
"phase_countdowns":{
"phase":"freezetime",
"phase_ends_in":"17.5"
},
"auth":{
"token":"Q79v5tcxVQ8u"
}
}

Where is the .json file?

Hey Guys!
Can anyone tell me, where i can find this .json file:

I have the .cfg in my CS Folder
Than this part is missing...
And i can get the data with my index.js to the template.pug in my /public/huds/Test

But where is this .json file? I want to have a look in this file.

I appreciate some kind of useful answers.
Thanks.

Can't start

I can't start, I get this error:

D:\LiveStream\Costum HUD\CS-GO-Observer-Custom-HUD-master>npm install   & node index.js
up to date in 1.3s
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::1337
    at Object._errnoException (util.js:992:11)
    at _exceptionWithHostPort (util.js:1014:20)
    at Server.setupListenHandle [as _listen2] (net.js:1355:14)
    at listenInCluster (net.js:1396:12)
    at Server.listen (net.js:1480:7)
    at Object.<anonymous> (D:\LiveStream\Costum HUD\CS-GO-Observer-Custom-HUD-master\index.js:208:8)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)

D:\LiveStream\Costum HUD\CS-GO-Observer-Custom-HUD-master>

I already deleted everything and tried again...

Does anyone know what to do?

Thanks

EXE not working

so ib ahve set everything up is in the video and the README, using port 2144, but when i run the exe it opens for 1 second then closes it self. no idea why. i really need this for my new casting deal

Setting images and team logos

Hey all, just having some struggles trying to set profile pictures to certain steam id's and can't manage to get Team logos on player containers.

Error Message

I get this error message when I ran the RUN.bat file in cmd and when I try to run it regularly it runs and then does not give me the IP and the closes.
7d9ec310136e59082999906911855069

Flags

Hello.

Problem with flags, whenever I make a team, the player flags won't apply, like I want to have a danish player but if the team flag is EU for instance it will make all player flags EU.

TLDR: Player flags are ignored, and it will just display team flag instead.

If you could help me out oszten to fix that issue it would be really helpful.

Thanks !

Overtime FIX

Hi,

Is there any chance to make overtime on the top bar?

Gradient hp bar isn't working

When I try making a hp gradient bar the health doesn't go down and at the end of the round isn't refreshed. Assuming it's something to do with the JS
rip

too many server commands issued per second

when executing exec gamestate_integration_observerspectator.cfg it prompt me this issue, is there a new version of that file? where can I get it?

Ignoring command ' "player_state" "1" ': too many server commands issued per second
Ignoring command ' "allplayers_state" "1" ': too many server commands issued per second
Ignoring command ' "allplayers_match_stats" "1" ': too many server commands issued per second
Ignoring command ' "allplayers_weapons" "1" ': too many server commands issued per second
Ignoring command ' "allplayers_position" "1" ': too many server commands issued per second
Ignoring command ' "phase_countdowns" "1" ': too many server commands issued per second
Ignoring command ' }': too many server commands issued per second
Ignoring command '}': too many server commands issued per second

image

Thanks in advance

Using CasparCG instead of Overlay exe

Hi,

I dont know if you are familar with the tool called "CasparCG". I want to use that for laying the live stats over the game. I have the following setup:

  • One Game PC, where CS:GO is running
  • One PC with the CasparCG Server on it, which is just sending the signal
  • One PC with the CasparCG Client, where the Node.js server is running.

Now I get all data on the client from the CS:GO pc and Im able to show the tab in the CasparCG window with the HTML template. The only problem is, that all values are basic and not dynamic. Any idea how I could fix it?

Can't change colour of and position of texts in container 1.

Got a couple problems.
1st of all is I can't change the colour of the ammo amount and move the the health for the armour. 2nd of all I'm trying to change the player container so it has a team's logo in the background, similar to the one present at the pgl major
logobackground
If anyone could get back to me that would be great! :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.