Raised This Month: $12 Target: $400
 3% 

Newest CS:GO update crashing with SourceMod?


Post New Thread Closed Thread   
 
Thread Tools Display Modes
SliderOverride
Junior Member
Join Date: Oct 2012
Old 12-25-2012 , 19:09   Re: Newest CS:GO update crashing with SourceMod?
#91

Quote:
Originally Posted by Zephyrus View Post
it wont work because SteamCEG generates a unique executable for every steam user so the other players to be able to play need a unique executable but if you connect to steam their client will update
Fu** so the only thing i can do is wait and hope for a update in 24h
SliderOverride is offline
dordnung
Veteran Member
Join Date: Apr 2010
Old 12-25-2012 , 19:13   Re: Newest CS:GO update crashing with SourceMod?
#92

They use now the Google Protobuf from here https://code.google.com/p/protobuf/

There is also the google::protobuf::Message class

And Here they use it in Dota2:

https://developer.valvesoftware.com/..._2_Demo_Format

Here is the API of the Message Class

https://developers.google.com/protoc...otobuf.message

This seems interesting, too:

PHP Code:
//====== Copyright (c) 2012, Valve Corporation, All rights reserved. ========//
//
// Redistribution and use in source and binary forms, with or without 
// modification, are permitted provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
// Redistributions in binary form must reproduce the above copyright notice, 
// this list of conditions and the following disclaimer in the documentation 
// and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
// THE POSSIBILITY OF SUCH DAMAGE.
//===========================================================================//
//
// Purpose: The file defines our Google Protocol Buffers which are used in over 
// the wire messages for the Source engine.
//
//=============================================================================

// We care more about speed than code size
option optimize_for SPEED;

// We don't use the service generation functionality
option cc_generic_services false;


// 
// STYLE NOTES:
//
// Use CamelCase CMsgMyMessageName style names for messages.
// 
// Use lowercase _ delimited names like my_steam_id for field names, this is non-standard for Steam,
// but plays nice with the Google formatted code generation.  
// 
// Try not to use required fields ever. Only do so if you are really really sure you'll never want them removed. 
// Optional should be preffered as it will make versioning easier and cleaner in the future if someone refactors
// your message and wants to remove or rename fields.
//
// Use fixed64 for JobId_t, GID_t, or SteamID.  This is appropriate for any field that is normally
// going to be larger than 2^56.  Otherwise use int64 for 64 bit values that are frequently smaller
// than 2^56 as it will safe space on the wire in those cases.
//
// Similar to fixed64, use fixed32 for RTime32 or other 32 bit values that are frequently larger than
// 2^28.  It will safe space in those cases, otherwise use int32 which will safe space for smaller values.
// An exception to this rule for RTime32 is if the value will frequently be zero rather than set to an actual 
// time.
//

import "google/protobuf/descriptor.proto";

// for CMsgVector, etc.
import "netmessages.proto";

//=============================================================================
// Base User Messages
//=============================================================================

enum EBaseUserMessages
{
    
UM_AchievementEvent =     1;
    
UM_CloseCaption =         2;
    
UM_CloseCaptionDirect =   3// Shares message def CUserMsg_CloseCaption
    
UM_CurrentTimescale =     4;
    
UM_DesiredTimescale =     5;
    
UM_Fade =                   6;
    
UM_GameTitle =            7;
    
UM_Geiger =               8;
    
UM_HintText =             9;
    
UM_HudMsg =               10;
    
UM_HudText =              11;
    
UM_KeyHintText =          12;
    
UM_MessageText =          13;
    
UM_RequestState =         14;
    
UM_ResetHUD =             15;
    
UM_Rumble =               16;
    
UM_SayText =              17;
    
UM_SayText2 =             18;
    
UM_SayTextChannel =       19;
    
UM_Shake =                20;
    
UM_ShakeDir =                21;
    
UM_StatsCrawlMsg =        22;
    
UM_StatsSkipState =       23;
    
UM_TextMsg =              24;
    
UM_Tilt =                 25;
    
UM_Train =                26;
    
UM_VGUIMenu =             27;
    
UM_VoiceMask =            28;
    
UM_VoiceSubtitle =        29;
    
UM_SendAudio =            30;

    
// Game specific user messages should start after this
    
UM_MAX_BASE    =             63;
}

//=============================================================================

message CUserMsg_AchievementEvent
{
    
optional uint32 achievement 1;
}

message CUserMsg_CloseCaption
{
    
optional fixed32 hash 1;
    
optional float duration 2;
    
optional bool from_player 3;
}

message CUserMsg_CurrentTimescale
{
    
optional float current 1;
}

message CUserMsg_DesiredTimescale
{
    
optional float desired 1;
    
optional float duration 2;
    
optional uint32 interpolator 3;
    
optional float start_blend_time 4;
}

message CUserMsg_Fade
{
    
optional uint32 duration 1;
    
optional uint32 hold_time 2;
    
optional uint32 flags 3;
    
optional fixed32 color 4;
}

message CUserMsg_Shake
{
    
optional uint32 command 1;
    
optional float amplitude 2;
    
optional float frequency 3;
    
optional float duration 4;
}

message CUserMsg_ShakeDir
{
    
optional CUserMsg_Shake shake 1;
    
optional CMsgVector direction 2;
}

message CUserMsg_Tilt
{
    
optional uint32 command 1;
    
optional bool ease_in_out 2;
    
optional CMsgVector angle 3;
    
optional float duration 4;
    
optional float time 5;
}

message CUserMsg_SayText
{
    
optional uint32 client 1;
    
optional string text 2;
    
optional bool chat 3;
}

message CUserMsg_SayText2
{
    
optional uint32 client 1;
    
optional bool chat 2;
    
optional string format 3;
    
optional string prefix 4;
    
optional string text 5;
    
optional string location 6;
}

message CUserMsg_HudMsg
{
    
optional uint32 channel 1;
    
optional float x 2;
    
optional float y 3;
    
optional uint32 color1 4;
    
optional uint32 color2 5;
    
optional uint32 effect 6;
    
optional float fade_in_time 7;
    
optional float fade_out_time 8;
    
optional float hold_time 9;
    
optional float fx_time 10;
    
optional string message 11;
}

message CUserMsg_HudText
{
    
optional string message 1;
}

message CUserMsg_TextMsg
{
    
optional uint32 dest 1;
    
repeated string param 2;
}

message CUserMsg_GameTitle
{
}

message CUserMsg_ResetHUD
{
}

message CUserMsg_SendAudio
{
    
///optional fixed32 hash = 1; // sound hash
    
optional bool stop 2;
    
optional string name 3// sound name
}

message CUserMsg_VoiceMask
{
    
repeated int32 audible_players_mask 1;
    
optional bool player_mod_enabled 2;
}

message CUserMsg_RequestState
{
}

message CUserMsg_HintText
{
    
optional string message 1;
}

message CUserMsg_KeyHintText
{
    
repeated string messages 1;
}

message CUserMsg_StatsCrawlMsg
{
}

message CUserMsg_StatsSkipState
{
    
optional int32 num_skips 1;
    
optional int32 num_players 2;
}

message CUserMsg_VoiceSubtitle
{
    
optional int32 ent_index 1;
    
optional int32 menu 2;
    
optional int32 item 3;
}

message CUserMsg_VGUIMenu
{
    
optional string name 1;
    
optional bool show 2;

    
message Keys
    
{
        
optional string name 1;
        
optional string value 2;
    }

    
repeated Keys keys 3;
}

message CUserMsg_Geiger
{
    
optional int32 range 1;
}

message CUserMsg_Rumble
{
    
optional int32 index 1;
    
optional int32 data 2;
    
optional int32 flags 3;
}

message CUserMsg_Train
{
    
optional int32 train 1;
}

message CUserMsg_SayTextChannel
{
    
optional int32 player 1;
    
optional int32 channel 2;
    
optional string text 3;
}

message CUserMsg_MessageText
{
    
optional uint32 color 1;
    
optional string text 2;

__________________

Last edited by dordnung; 12-25-2012 at 21:01.
dordnung is offline
Zephyrus
Cool Pig B)
Join Date: Jun 2010
Location: Hungary
Old 12-25-2012 , 21:03   Re: Newest CS:GO update crashing with SourceMod?
#93

Quote:
Originally Posted by Popoklopsi View Post
They use now the Google Protobuf from here https://code.google.com/p/protobuf/

There is also the google::protobuf::Message class

And Here they use it in Dota2:

https://developer.valvesoftware.com/..._2_Demo_Format

Here is the API of the Message Class

https://developers.google.com/protoc...otobuf.message

This seems interesting, too:

PHP Code:
//====== Copyright (c) 2012, Valve Corporation, All rights reserved. ========//
//
// Redistribution and use in source and binary forms, with or without 
// modification, are permitted provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
// Redistributions in binary form must reproduce the above copyright notice, 
// this list of conditions and the following disclaimer in the documentation 
// and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
// THE POSSIBILITY OF SUCH DAMAGE.
//===========================================================================//
//
// Purpose: The file defines our Google Protocol Buffers which are used in over 
// the wire messages for the Source engine.
//
//=============================================================================

// We care more about speed than code size
option optimize_for SPEED;

// We don't use the service generation functionality
option cc_generic_services false;


// 
// STYLE NOTES:
//
// Use CamelCase CMsgMyMessageName style names for messages.
// 
// Use lowercase _ delimited names like my_steam_id for field names, this is non-standard for Steam,
// but plays nice with the Google formatted code generation.  
// 
// Try not to use required fields ever. Only do so if you are really really sure you'll never want them removed. 
// Optional should be preffered as it will make versioning easier and cleaner in the future if someone refactors
// your message and wants to remove or rename fields.
//
// Use fixed64 for JobId_t, GID_t, or SteamID.  This is appropriate for any field that is normally
// going to be larger than 2^56.  Otherwise use int64 for 64 bit values that are frequently smaller
// than 2^56 as it will safe space on the wire in those cases.
//
// Similar to fixed64, use fixed32 for RTime32 or other 32 bit values that are frequently larger than
// 2^28.  It will safe space in those cases, otherwise use int32 which will safe space for smaller values.
// An exception to this rule for RTime32 is if the value will frequently be zero rather than set to an actual 
// time.
//

import "google/protobuf/descriptor.proto";

// for CMsgVector, etc.
import "netmessages.proto";

//=============================================================================
// Base User Messages
//=============================================================================

enum EBaseUserMessages
{
    
UM_AchievementEvent =     1;
    
UM_CloseCaption =         2;
    
UM_CloseCaptionDirect =   3// Shares message def CUserMsg_CloseCaption
    
UM_CurrentTimescale =     4;
    
UM_DesiredTimescale =     5;
    
UM_Fade =                   6;
    
UM_GameTitle =            7;
    
UM_Geiger =               8;
    
UM_HintText =             9;
    
UM_HudMsg =               10;
    
UM_HudText =              11;
    
UM_KeyHintText =          12;
    
UM_MessageText =          13;
    
UM_RequestState =         14;
    
UM_ResetHUD =             15;
    
UM_Rumble =               16;
    
UM_SayText =              17;
    
UM_SayText2 =             18;
    
UM_SayTextChannel =       19;
    
UM_Shake =                20;
    
UM_ShakeDir =                21;
    
UM_StatsCrawlMsg =        22;
    
UM_StatsSkipState =       23;
    
UM_TextMsg =              24;
    
UM_Tilt =                 25;
    
UM_Train =                26;
    
UM_VGUIMenu =             27;
    
UM_VoiceMask =            28;
    
UM_VoiceSubtitle =        29;
    
UM_SendAudio =            30;

    
// Game specific user messages should start after this
    
UM_MAX_BASE    =             63;
}

//=============================================================================

message CUserMsg_AchievementEvent
{
    
optional uint32 achievement 1;
}

message CUserMsg_CloseCaption
{
    
optional fixed32 hash 1;
    
optional float duration 2;
    
optional bool from_player 3;
}

message CUserMsg_CurrentTimescale
{
    
optional float current 1;
}

message CUserMsg_DesiredTimescale
{
    
optional float desired 1;
    
optional float duration 2;
    
optional uint32 interpolator 3;
    
optional float start_blend_time 4;
}

message CUserMsg_Fade
{
    
optional uint32 duration 1;
    
optional uint32 hold_time 2;
    
optional uint32 flags 3;
    
optional fixed32 color 4;
}

message CUserMsg_Shake
{
    
optional uint32 command 1;
    
optional float amplitude 2;
    
optional float frequency 3;
    
optional float duration 4;
}

message CUserMsg_ShakeDir
{
    
optional CUserMsg_Shake shake 1;
    
optional CMsgVector direction 2;
}

message CUserMsg_Tilt
{
    
optional uint32 command 1;
    
optional bool ease_in_out 2;
    
optional CMsgVector angle 3;
    
optional float duration 4;
    
optional float time 5;
}

message CUserMsg_SayText
{
    
optional uint32 client 1;
    
optional string text 2;
    
optional bool chat 3;
}

message CUserMsg_SayText2
{
    
optional uint32 client 1;
    
optional bool chat 2;
    
optional string format 3;
    
optional string prefix 4;
    
optional string text 5;
    
optional string location 6;
}

message CUserMsg_HudMsg
{
    
optional uint32 channel 1;
    
optional float x 2;
    
optional float y 3;
    
optional uint32 color1 4;
    
optional uint32 color2 5;
    
optional uint32 effect 6;
    
optional float fade_in_time 7;
    
optional float fade_out_time 8;
    
optional float hold_time 9;
    
optional float fx_time 10;
    
optional string message 11;
}

message CUserMsg_HudText
{
    
optional string message 1;
}

message CUserMsg_TextMsg
{
    
optional uint32 dest 1;
    
repeated string param 2;
}

message CUserMsg_GameTitle
{
}

message CUserMsg_ResetHUD
{
}

message CUserMsg_SendAudio
{
    
///optional fixed32 hash = 1; // sound hash
    
optional bool stop 2;
    
optional string name 3// sound name
}

message CUserMsg_VoiceMask
{
    
repeated int32 audible_players_mask 1;
    
optional bool player_mod_enabled 2;
}

message CUserMsg_RequestState
{
}

message CUserMsg_HintText
{
    
optional string message 1;
}

message CUserMsg_KeyHintText
{
    
repeated string messages 1;
}

message CUserMsg_StatsCrawlMsg
{
}

message CUserMsg_StatsSkipState
{
    
optional int32 num_skips 1;
    
optional int32 num_players 2;
}

message CUserMsg_VoiceSubtitle
{
    
optional int32 ent_index 1;
    
optional int32 menu 2;
    
optional int32 item 3;
}

message CUserMsg_VGUIMenu
{
    
optional string name 1;
    
optional bool show 2;

    
message Keys
    
{
        
optional string name 1;
        
optional string value 2;
    }

    
repeated Keys keys 3;
}

message CUserMsg_Geiger
{
    
optional int32 range 1;
}

message CUserMsg_Rumble
{
    
optional int32 index 1;
    
optional int32 data 2;
    
optional int32 flags 3;
}

message CUserMsg_Train
{
    
optional int32 train 1;
}

message CUserMsg_SayTextChannel
{
    
optional int32 player 1;
    
optional int32 channel 2;
    
optional string text 3;
}

message CUserMsg_MessageText
{
    
optional uint32 color 1;
    
optional string text 2;

google protobufs are the least of the problem tbh, finding a way to dynamically discover the usermessages and their ids and compatibiltiy with the old API is the hard stuff
__________________
Taking private C++/PHP/SourcePawn requests, PM me.
Zephyrus is offline
SilentBr
Veteran Member
Join Date: Jan 2009
Old 12-25-2012 , 21:34   Re: Newest CS:GO update crashing with SourceMod?
#94

I want run my ZR server. No sourcemod, no zombies
SilentBr is offline
dordnung
Veteran Member
Join Date: Apr 2010
Old 12-25-2012 , 21:35   Re: Newest CS:GO update crashing with SourceMod?
#95

Hm i compiled the usermessages (given with dota2) with the protoc compiler (See attachment)

Then i builded the Protobuf lib and linked against it.

After that i added

PHP Code:
#include "usermessages.pb.h" 
and finally added:

PHP Code:
#if defined GAME_CSGO 

    
MRecipientFilter filter;

    
filter.AddAllPlayers();

    
CUserMsg_SayText text;
    
text.set_client((google::protobuf::uint32)pEntity);
    
text.set_chat(true);
    
text.set_text("WUI TESTING");

    
engine->SendUserMessage(filterUM_SayTexttext);
    
#endif 
In the compiled proto files, there you have a enum of all Usermessages types, like here: UM_SayText
Attached Files
File Type: zip google.zip (161.1 KB, 69 views)
__________________

Last edited by dordnung; 12-25-2012 at 21:43.
dordnung is offline
Cain
SourceMod Donor
Join Date: May 2005
Location: South Carolina, USA
Old 12-25-2012 , 21:35   Re: Newest CS:GO update crashing with SourceMod?
#96

Quote:
Originally Posted by SliderOverride View Post
i have see there is a update from 23te on http://www.sourcemm.net/ for MM:S 1.9.1, Windows

but i think this has nothing to do with CS:GO Server crash from yesterday or ?
Does this MM update fix the update problems, or not???

thx
Cain is offline
psychonic

BAFFLED
Join Date: May 2008
Old 12-25-2012 , 21:48   Re: Newest CS:GO update crashing with SourceMod?
#97

Quote:
Originally Posted by Popoklopsi View Post
Hm i compiled the usermessages (given with dota2) with the protoc compiler (See attachment)

Then i builded the Protobuf lib and linked against it.

After that i added

PHP Code:
#include "usermessages.pb.h" 
and finally added:

PHP Code:
#if defined GAME_CSGO 

    
MRecipientFilter filter;

    
filter.AddAllPlayers();

    
CUserMsg_SayText text;
    
text.set_client((google::protobuf::uint32)pEntity);
    
text.set_chat(true);
    
text.set_text("WUI TESTING");

    
engine->SendUserMessage(filterUM_SayTexttext);
    
#endif 
In the compiled proto files, there you have a enum of all Usermessages types, like here: UM_SayText
Yes, we've been able to do that as well since shortly after the update.

Zephyrus is talking about dynamically mapping the names (like "SayText2", or even "UM_SayText2") to then dynamically create a message.

We can actually already do this now with only a slight bit of hackery (comparing message type names in the file descriptor to the names in the enum descriptor). It then is still a matter of porting into the existing usermessage api. As I explained a page or two ago, you cannot just directly write data in. It needs to be correctly mapped to a field, either by index or name, unlike the old message which were just direct bitbuffers.
psychonic is offline
Avo
Senior Member
Join Date: Apr 2012
Old 12-25-2012 , 21:51   Re: Newest CS:GO update crashing with SourceMod?
#98

Quote:
Originally Posted by Cain View Post
Does this MM update fix the update problems, or not???

thx
A clue, this MM update is from 23rd, Valve breaking update is from 25th, think...

... exactly, it can't be. Besides you can see here SourceMod brains trying to figure out how to fix this. (Courage guys ! )
__________________

Last edited by Avo; 12-25-2012 at 21:54.
Avo is offline
dordnung
Veteran Member
Join Date: Apr 2010
Old 12-25-2012 , 22:07   Re: Newest CS:GO update crashing with SourceMod?
#99

Quote:
Originally Posted by psychonic View Post
Yes, we've been able to do that as well since shortly after the update.

Zephyrus is talking about dynamically mapping the names (like "SayText2", or even "UM_SayText2") to then dynamically create a message.

We can actually already do this now with only a slight bit of hackery (comparing message type names in the file descriptor to the names in the enum descriptor). It then is still a matter of porting into the existing usermessage api. As I explained a page or two ago, you cannot just directly write data in. It needs to be correctly mapped to a field, either by index or name, unlike the old message which were just direct bitbuffers.
I didn't get the reason valve change to it -.-
__________________

Last edited by dordnung; 12-25-2012 at 22:09.
dordnung is offline
Zephyrus
Cool Pig B)
Join Date: Jun 2010
Location: Hungary
Old 12-25-2012 , 22:20   Re: Newest CS:GO update crashing with SourceMod?
#100

Quote:
Originally Posted by psychonic View Post
Yes, we've been able to do that as well since shortly after the update.

Zephyrus is talking about dynamically mapping the names (like "SayText2", or even "UM_SayText2") to then dynamically create a message.

We can actually already do this now with only a slight bit of hackery (comparing message type names in the file descriptor to the names in the enum descriptor). It then is still a matter of porting into the existing usermessage api. As I explained a page or two ago, you cannot just directly write data in. It needs to be correctly mapped to a field, either by index or name, unlike the old message which were just direct bitbuffers.
i assume that they didnt change the order of fields, if we can use indexes cant we just keep track of the current index so the old natives would just work and introduce a new API as well in case someone wants more freedom

btw i missed that enum but i can see it now, how do you do read that part of the memory/file on the fly?
__________________
Taking private C++/PHP/SourcePawn requests, PM me.

Last edited by Zephyrus; 12-25-2012 at 22:30.
Zephyrus is offline
Closed Thread


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 07:28.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode