Printable Version of Topic

Click here to view this topic in its original format

RCBot Forums _ Source _ RCBot 2 crashed by 'The Classless Update'?

Posted by: JohnnyAxe Aug 14 2009, 03:09 AM

Since 'The Classless Update' was released, I can't play with bots anymore.

It's the usual 'hl2.exe has stopped working' message as soon as I try adding bots.

Posted by: bir3yk Aug 14 2009, 06:42 AM

need to compile RCbot2, on a dedicated server linux is not working. SDK changed like.

Posted by: MacinSam Aug 14 2009, 01:54 PM

Yup, it's broke.

Posted by: Cheeseh Aug 14 2009, 02:02 PM

QUOTE(MacinSam @ Aug 14 2009, 01:54 PM) *

Yup, it's broke.

great, someone else will need to recompile with the sdk updates, cos my laptop broke and had to reinstall, and lost visual studio CD ... sad.gif

Posted by: bir3yk Aug 14 2009, 02:11 PM

where you can download SDK update? Give the link. I compile under linux smile.gif

Posted by: Fillmore Aug 14 2009, 02:12 PM

QUOTE(bir3yk @ Aug 14 2009, 02:11 PM) *

where you can download SDK update? Give the link. I compil by linux smile.gif

Didn't you need to have Source SDK for that particular update?

Posted by: bir3yk Aug 14 2009, 02:15 PM

In SVN some of the SDK that is:)

Posted by: Cheeseh Aug 14 2009, 02:32 PM

QUOTE(bir3yk @ Aug 14 2009, 02:15 PM) *

In SVN some of the SDK that is:)

get it from Steam source SDK Tools (in steam), "create new mod", source code only.

Although i can't guarantee that this will fix the problem, i dont know if that will work. some one needs to debug it by using ms visual studio when a bot is added.

just typical of valve though.... how many workarounds have I been through now, surely they're not intentionally trying to break the bot from working!

Posted by: bir3yk Aug 14 2009, 02:38 PM

already try:)

Posted by: JohnnyAxe Aug 14 2009, 02:57 PM

Keep yer fingers crossed boys.

Posted by: Weasel Aug 14 2009, 08:27 PM

Quote from the SourceMod forums, I assume RCBot is similarly effected ...

QUOTE
As Team Fortress and Day of Defeat server operators have noticed, Valve released an update tonight that broke SourceMod.

Usually we are able to handle updates very quickly. This one was different. There was no public beta, so we had no way of testing or preparing. To make things worse, Valve actually forked their Orange Box engine, broke compatibility, and didn't release new headers or any information about the changes.

With absolutely no warning, we had to reverse engineer these changes and update our source/build infrastructure for a new engine configuration. It's a testament to how seriously we take update parity that we were able to do this in one night on such short notice. But more on that further down. What you've all been waiting for:

There are now 1.2.2-dev snapshots available that will load on the new TF/DoD engines. We will get the 1.3 branch at parity tomorrow.

For users who have custom gamedata files, please note that we have separated TF/DoD into a new "orangebox_valve" engine property. The Orange Box engine that non-Valve games use is still "orangebox".

We are going to wait a few days to do an official 1.2.2 release. Sometime in the next two weeks there will be a Metamod:Source release as well - it's not needed, but we want to prepare for the worst. After this release we're going to redo our build infrastructure so adding new engine updates is very fast, both to wait for new builds and to support new games across the entire source tree.

This kind of update is extremely stressful on all of us - that includes you! We want to get things right in these situations, rather than damage the product integrity. The community was great in being both supportive and patient while we rushed to get something working. It means a lot both to moral and productivity that we didn't have to put out any fires on the forums or mailing lists.

In particular, it was amazing to see everyone on the SourceMod team work in unison tonight. We were all available for disparate chunks of time across random timezones, and we all have Real Lives to maintain. Despite this everyone pitched in (sometimes chaotically) and everything stitched together. So I would like to give a huge thanks to team members Fyren, pRED, DS, and bl4nk - and #smdevs participants Nephyrin, Drunken_F00l, and voogru.



Posted by: Cheeseh Aug 14 2009, 11:43 PM

QUOTE
In dt_send.h, in the SendProp class, add 4 bytes just before "const char
*m_pVarName;".

There appears to be one more change that just might be the SendPropType, on
DataTables the "SendPropType" comes up as DPT_NUMSendPropType.

- voogru.

-----Original Message-----
On Behalf Of Keeper
Sent: Thursday, August 13, 2009 8:26 PM
To: 'Discussion of Half-Life Programming'
Subject: [hlcoders] New Headers?

Is there any chance we can get an updated SDK for our plugins?  This latest
OB update killed most of the plugins out there.

Thanks,
Keeper


_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives,
please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders


_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Posted by: bir3yk Aug 15 2009, 06:29 AM

CODE
// -------------------------------------------------------------------------------------------------------------- //

// SendProp.

// -------------------------------------------------------------------------------------------------------------- //



// If SendProp::GetDataTableProxyIndex() returns this, then the proxy is one that always sends

// the data to all clients, so we don't need to store the results.

#define DATATABLE_PROXY_INDEX_NOPROXY    255

#define DATATABLE_PROXY_INDEX_INVALID    254



class SendProp

{

public:

                        SendProp();

    virtual                ~SendProp();



    void                Clear();



    int                    GetOffset() const;

    void                SetOffset( int i );



    SendVarProxyFn        GetProxyFn() const;

    void                SetProxyFn( SendVarProxyFn f );

    

    SendTableProxyFn    GetDataTableProxyFn() const;

    void                SetDataTableProxyFn( SendTableProxyFn f );

    

    SendTable*            GetDataTable() const;

    void                SetDataTable( SendTable *pTable );



    char const*            GetExcludeDTName() const;

    

    // If it's one of the numbered "000", "001", etc properties in an array, then

    // these can be used to get its array property name for debugging.

    const char*            GetParentArrayPropName();

    void                SetParentArrayPropName( char *pArrayPropName );



    const char*            GetName() const;



    bool                IsSigned() const;

    

    bool                IsExcludeProp() const;

    

    bool                IsInsideArray() const;    // Returns true if SPROP_INSIDEARRAY is set.

    void                SetInsideArray();



    // Arrays only.

    void                SetArrayProp( SendProp *pProp );

    SendProp*            GetArrayProp() const;



    // Arrays only.

    void                    SetArrayLengthProxy( ArrayLengthSendProxyFn fn );

    ArrayLengthSendProxyFn    GetArrayLengthProxy() const;



    int                    GetNumElements() const;

    void                SetNumElements( int nElements );



    // Return the # of bits to encode an array length (must hold GetNumElements()).

    int                    GetNumArrayLengthBits() const;



    int                    GetElementStride() const;



    SendPropType        GetType() const;



    int                    GetFlags() const;

    void                SetFlags( int flags );    



    // Some property types bind more data to the SendProp in here.

    const void*            GetExtraData() const;

    void                SetExtraData( const void *pData );



public:



    RecvProp        *m_pMatchingRecvProp;    // This is temporary and only used while precalculating

                                                // data for the decoders.



    SendPropType    m_Type;

    int                m_nBits;

    float            m_fLowValue;

    float            m_fHighValue;

    

    SendProp        *m_pArrayProp;                    // If this is an array, this is the property that defines each array element.

    ArrayLengthSendProxyFn    m_ArrayLengthProxy;    // This callback returns the array length.

    

    int                m_nElements;        // Number of elements in the array (or 1 if it's not an array).

    int                m_ElementStride;    // Pointer distance between array elements.



    union

    {

        char *m_pExcludeDTName;            // If this is an exclude prop, then this is the name of the datatable to exclude a prop from.

        char *m_pParentArrayPropName;

    };



    char            *m_pVarName;

    float            m_fHighLowMul;

    

private:



    int                    m_Flags;                // SPROP_ flags.



    SendVarProxyFn        m_ProxyFn;                // NULL for DPT_DataTable.

    SendTableProxyFn    m_DataTableProxyFn;        // Valid for DPT_DataTable.

    

    SendTable            *m_pDataTable;

    

    // SENDPROP_VECTORELEM makes this negative to start with so we can detect that and

    // set the SPROP_IS_VECTOR_ELEM flag.

    int                    m_Offset;



    // Extra data bound to this property.

    const void            *m_pExtraData;

};



are 4 bytes must be added?

Posted by: Cheeseh Aug 15 2009, 08:48 AM


CODE
// -------------------------------------------------------------------------------------------------------------- //

// SendProp.

// -------------------------------------------------------------------------------------------------------------- //
// If SendProp::GetDataTableProxyIndex() returns this, then the proxy is one that always sends

// the data to all clients, so we don't need to store the results.

#define DATATABLE_PROXY_INDEX_NOPROXY    255

#define DATATABLE_PROXY_INDEX_INVALID    254
class SendProp

{

public:

                        SendProp();

    virtual                ~SendProp();
    void                Clear();
    int                    GetOffset() const;

    void                SetOffset( int i );
    SendVarProxyFn        GetProxyFn() const;

    void                SetProxyFn( SendVarProxyFn f );

    

    SendTableProxyFn    GetDataTableProxyFn() const;

    void                SetDataTableProxyFn( SendTableProxyFn f );

    

    SendTable*            GetDataTable() const;

    void                SetDataTable( SendTable *pTable );
    char const*            GetExcludeDTName() const;

    

    // If it's one of the numbered "000", "001", etc properties in an array, then

    // these can be used to get its array property name for debugging.

    const char*            GetParentArrayPropName();

    void                SetParentArrayPropName( char *pArrayPropName );
    const char*            GetName() const;
    bool                IsSigned() const;

    

    bool                IsExcludeProp() const;

    

    bool                IsInsideArray() const;    // Returns true if SPROP_INSIDEARRAY is set.

    void                SetInsideArray();
    // Arrays only.

    void                SetArrayProp( SendProp *pProp );

    SendProp*            GetArrayProp() const;
    // Arrays only.

    void                    SetArrayLengthProxy( ArrayLengthSendProxyFn fn );

    ArrayLengthSendProxyFn    GetArrayLengthProxy() const;
    int                    GetNumElements() const;

    void                SetNumElements( int nElements );
    // Return the # of bits to encode an array length (must hold GetNumElements()).

    int                    GetNumArrayLengthBits() const;
    int                    GetElementStride() const;
    SendPropType        GetType() const;
    int                    GetFlags() const;

    void                SetFlags( int flags );    
    // Some property types bind more data to the SendProp in here.

    const void*            GetExtraData() const;

    void                SetExtraData( const void *pData );
public:
    RecvProp        *m_pMatchingRecvProp;    // This is temporary and only used while precalculating

                                                // data for the decoders.
    SendPropType    m_Type;

    int                m_nBits;

    float            m_fLowValue;

    float            m_fHighValue;

    

    SendProp        *m_pArrayProp;                    // If this is an array, this is the property that defines each array element.

    ArrayLengthSendProxyFn    m_ArrayLengthProxy;    // This callback returns the array length.

    

    int                m_nElements;        // Number of elements in the array (or 1 if it's not an array).

    int                m_ElementStride;    // Pointer distance between array elements.
    union

    {

        char *m_pExcludeDTName;            // If this is an exclude prop, then this is the name of the datatable to exclude a prop from.

        char *m_pParentArrayPropName;

    };

        char                  m_FourBytesHere[4]; // 4 bytes added

    char            *m_pVarName;

    float            m_fHighLowMul;

    

private:
    int                    m_Flags;                // SPROP_ flags.
    SendVarProxyFn        m_ProxyFn;                // NULL for DPT_DataTable.

    SendTableProxyFn    m_DataTableProxyFn;        // Valid for DPT_DataTable.

    

    SendTable            *m_pDataTable;

    

    // SENDPROP_VECTORELEM makes this negative to start with so we can detect that and

    // set the SPROP_IS_VECTOR_ELEM flag.

    int                    m_Offset;
    // Extra data bound to this property.

    const void            *m_pExtraData;

};



Posted by: 343N Aug 15 2009, 11:32 AM

IS that the fix'd code Cheeseh? Because i went to Source SDK to Decompile, Create mod, Use source code (advanced) and then didn't know what to do... So how do I decompile it, if its the fix'd code?

Posted by: bir3yk Aug 15 2009, 02:03 PM

Cheeseh everything is good to compile in linux works. wink.gif

Posted by: DrPuffinKind Aug 15 2009, 04:55 PM

has anyone had any luck with windows?... i will happily do it if someone can shoot me a basic how-2 on the compiling process... I host a server 2003 machine and all the sdk tools are installed, i just have not played around with the mod creation tools as of yet... (im just a mapper to date...) however i will happily put my tools to work with a smile smile.gif

Posted by: bir3yk Aug 15 2009, 05:02 PM

sorry, I can not compile under windows.

Posted by: Paul Aug 16 2009, 04:07 AM

I have made a recompilation under Windows, check my thread here at
http://rcbot.bots-united.com/forums/index.php?showtopic=1295