源代码修改-第2部分-一切都是本质

在本教程半部分,我们学习了VPC的基本工作以及将消息打印到开发人员控制台。



在本教程的这一部分中,我们将分析实体系统,学习如何创建类,以及创建我们的第一个逻辑实体。





再次条款



概要实体(entity)-在主要对象级别。

I / O系统是一个设计用于实体相互“通信”的系统。

输入是用于更改实体行为的命令。有时玩家会通过控制台或输出调用它。

输出(输出)-实体状态更改时调用的事件。



一般来说,它如何运作?



Source中的任何级别都是一组实体。



在每个级别上,至少有一个称为的实体worldspawn实际上,这个本质是整个“实体”世界,即:



  • 原始物又名刷子-立方体,球,拱形等
  • 所谓的位移(disps, 掌柜) — , ( CS:GO !) . , "" .
  • (prop_static). prop_dynamic, .


( !) .



:





  • — , .
  • — , .


/Hammer: displacement , (vbsp)!





— , . !



, logic_auto .



logic_5 —



, .



  1. logic_5.cpp.

    , : src/game/server/logic_5.cpp.



  2. :



    // cbase.h -  .
    //           .
    #include "cbase.h"
    // memdbgon.h -     new  delete
    // memdbgon must be the last include file in a .cpp file!!!
    #include "tier0/memdbgon.h"


  3. CLogicFive CLogicEntity:



    class CLogicFive : public CLogicEntity {
        DECLARE_CLASS( CLogicFive, CLogicEntity );
    public:
        // ...
    private:
        // ...
    };


    -! DECLARE_CLASS()? , . — ThisClass BaseClass ( ...).



  4. public:



    public:
        DECLARE_DATADESC();
        void Input_Tick( inputdata_t &id );


    ?



    • DECLARE_DATADESC() , .
    • void Input_Tick( inputdata_t &id ) , tick.


  5. private:



    private:
        int m_iTicks = 0;


  6. " " logic_5.

    ( !) — LINK_ENTITY_TO_CLASS()!

    :



        // ...
        int m_iTicks = 0;
    };
    LINK_ENTITY_TO_CLASS( logic_5, CLogicFive );


  7. , 4:



    BEGIN_DATADESC( CLogicFive )
        DEFINE_FIELD( m_iTicks, FIELD_INTEGER ), //   
        DEFINE_INPUTFUNC( FIELD_VOID, "tick", Input_Tick ), //  
    END_DATADESC();


    • BEGIN_DATADESC() — , .
    • DEFINE_FIELD() — , . , !
    • DEFINE_INPUTFUNC() — , . (FIELD_VOID), tick Input_Tick.
    • END_DATADESC() — , .


  8. Input_Tick:



    //   tick()
    void CLogicFive::Input_Tick( inputdata_t &id )
    {
        m_iTicks++;
        if( m_iTicks % 5 == 0 )
            //       ,   !
            ConColorMsg( Color( 255, 255, 0 ), "logic_five: Another fifth tick!\n" );
    }


  9. [] VPC :



    // src/game/server/server_episodic.vpc
    // -  $Folder "Source Files"
    $File "$SRCDIR/game/server/logic_5.cpp


    , , .





logic_5 —



  1. (sdk_vehicles dm_lockdown, )
  2. :



    ent_create logic_5
  3. tick :



    ent_fire logic_5 tick
  4. ( ) !




?



[ , ] :



  • -


?



Valve Hammer Editor FGD .

, , .








All Articles