demoinfocs-golang icon indicating copy to clipboard operation
demoinfocs-golang copied to clipboard

How to get crc-map code?

Open NintyS opened this issue 1 year ago • 8 comments
trafficstars

How to get CRC code of map in CS2 version of the library? The msgs2.CSVCMsg_ServerInfo don't have a GetMapCrc() function as I see

NintyS avatar Nov 23 '23 00:11 NintyS

@NintyS were you ever able to figure out?

dankotov avatar Dec 09 '23 14:12 dankotov

Nah, probably you can't. But I get from CS:GO the CRC codes and they works so for now I'm good.

var (
	Mirage   uint32 = 1936772555
	Anubis   uint32 = 3934213780
	Nuke     uint32 = 4081488007
	Inferno  uint32 = 3201302029
	Ancient  uint32 = 4262714479
	Overpass uint32 = 2863184063
	Vertigo  uint32 = 970160341
)

NintyS avatar Dec 09 '23 15:12 NintyS

Understood! Thanks for the list. However, how do you get the map name from the demo to get the corresponding crc? header.MapName returning nil for me.

dankotov avatar Dec 09 '23 22:12 dankotov

Sorry for delay, I didn't get notification until I open mail. AFAIK header is deprecated / returns nothing because new header is different than old one.

This is my code: ` var mapName string var mapMetaData ex.Map

p.RegisterNetMessageHandler(func(msg *msgs2.CSVCMsg_ServerInfo) {

	var mapCode uint32 = 0

	if strings.Contains(msg.GetMapName(), "mirage") {
		mapCode = Mirage
	}

	if strings.Contains(msg.GetMapName(), "overpass") {
		mapCode = Overpass
	}

	if strings.Contains(msg.GetMapName(), "inferno") {
		mapCode = Inferno
	}

	if strings.Contains(msg.GetMapName(), "vertigo") {
		mapCode = Vertigo
	}

	if strings.Contains(msg.GetMapName(), "anubis") {
		mapCode = Anubis
	}

	if strings.Contains(msg.GetMapName(), "nuke") {
		mapCode = Nuke
	}

	if strings.Contains(msg.GetMapName(), "ancient") {
		mapCode = Ancient
	}

	mapMetaData = ex.GetMapMetadata(msg.GetMapName(), mapCode)

	fmt.Println(mapMetaData)

	mapName = msg.GetMapName()
})`

NintyS avatar Dec 12 '23 11:12 NintyS

It's shit but for now this is only thing I can do I guess. Maybe I will post my repo with code as a example for people.

NintyS avatar Dec 12 '23 12:12 NintyS

Understood! Thanks for sharing

dankotov avatar Dec 15 '23 15:12 dankotov

Out of curiosity, is there any reason you dont do it like this?

var mapCodes = map[string]uint32{
	"de_mirage":   1936772555,
	"de_anubis":   3934213780,
	"de_nuke":     4081488007,
	"de_inferno":  3201302029,
	"de_ancient":  4262714479,
	"de_overpass": 2863184063,
	"de_vertigo":  970160341,
}

var mapMetadata ex.Map

p.RegisterNetMessageHandler(func(msg *msgs2.CSVCMsg_ServerInfo) {
	mapName := msg.GetMapName() // change if you want mapName to be available somewhere else as well
	mapMetadata = ex.GetMapMetadata(mapName, mapCodes[mapName])
})

dankotov avatar Dec 16 '23 03:12 dankotov

Yes, because I forgot that Key-Value dictionaries exists XD

NintyS avatar Dec 17 '23 01:12 NintyS