Annotation of quakeworld/client/protocol.h, revision 1.1

1.1     ! root        1: /*
        !             2: Copyright (C) 1996-1997 Id Software, Inc.
        !             3: 
        !             4: This program is free software; you can redistribute it and/or
        !             5: modify it under the terms of the GNU General Public License
        !             6: as published by the Free Software Foundation; either version 2
        !             7: of the License, or (at your option) any later version.
        !             8: 
        !             9: This program is distributed in the hope that it will be useful,
        !            10: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
        !            12: 
        !            13: See the GNU General Public License for more details.
        !            14: 
        !            15: You should have received a copy of the GNU General Public License
        !            16: along with this program; if not, write to the Free Software
        !            17: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
        !            18: 
        !            19: */
        !            20: // protocol.h -- communications protocols
        !            21: 
        !            22: #define        PROTOCOL_VERSION        28
        !            23: 
        !            24: #define QW_CHECK_HASH 0x5157
        !            25: 
        !            26: //=========================================
        !            27: 
        !            28: #define        PORT_CLIENT     27001
        !            29: #define        PORT_MASTER     27000
        !            30: #define        PORT_SERVER     27500
        !            31: 
        !            32: //=========================================
        !            33: 
        !            34: // out of band message id bytes
        !            35: 
        !            36: // M = master, S = server, C = client, A = any
        !            37: // the second character will allways be \n if the message isn't a single
        !            38: // byte long (?? not true anymore?)
        !            39: 
        !            40: #define        S2C_CHALLENGE           'c'
        !            41: #define        S2C_CONNECTION          'j'
        !            42: #define        A2A_PING                        'k'     // respond with an A2A_ACK
        !            43: #define        A2A_ACK                         'l'     // general acknowledgement without info
        !            44: #define        A2A_NACK                        'm'     // [+ comment] general failure
        !            45: #define A2A_ECHO                       'e' // for echoing
        !            46: #define        A2C_PRINT                       'n'     // print a message on client
        !            47: 
        !            48: #define        S2M_HEARTBEAT           'a'     // + serverinfo + userlist + fraglist
        !            49: #define        A2C_CLIENT_COMMAND      'B'     // + command line
        !            50: #define        S2M_SHUTDOWN            'C'
        !            51: 
        !            52: 
        !            53: //==================
        !            54: // note that there are some defs.qc that mirror to these numbers
        !            55: // also related to svc_strings[] in cl_parse
        !            56: //==================
        !            57: 
        !            58: //
        !            59: // server to client
        !            60: //
        !            61: #define        svc_bad                         0
        !            62: #define        svc_nop                         1
        !            63: #define        svc_disconnect          2
        !            64: #define        svc_updatestat          3       // [byte] [byte]
        !            65: //define       svc_version                     4       // [long] server version
        !            66: #define        svc_setview                     5       // [short] entity number
        !            67: #define        svc_sound                       6       // <see code>
        !            68: //define       svc_time                        7       // [float] server time
        !            69: #define        svc_print                       8       // [byte] id [string] null terminated string
        !            70: #define        svc_stufftext           9       // [string] stuffed into client's console buffer
        !            71:                                                                // the string should be \n terminated
        !            72: #define        svc_setangle            10      // [angle3] set the view angle to this absolute value
        !            73:        
        !            74: #define        svc_serverdata          11      // [long] protocol ...
        !            75: #define        svc_lightstyle          12      // [byte] [string]
        !            76: //define       svc_updatename          13      // [byte] [string]
        !            77: #define        svc_updatefrags         14      // [byte] [short]
        !            78: //define       svc_clientdata          15      // <shortbits + data>
        !            79: #define        svc_stopsound           16      // <see code>
        !            80: //define       svc_updatecolors        17      // [byte] [byte] [byte]
        !            81: //define       svc_particle            18      // [vec3] <variable>
        !            82: #define        svc_damage                      19
        !            83:        
        !            84: #define        svc_spawnstatic         20
        !            85: //     svc_spawnbinary         21
        !            86: #define        svc_spawnbaseline       22
        !            87:        
        !            88: #define        svc_temp_entity         23      // variable
        !            89: #define        svc_setpause            24      // [byte] on / off
        !            90: //     svc_signonnum           25      // [byte]  used for the signon sequence
        !            91: 
        !            92: #define        svc_centerprint         26      // [string] to put in center of the screen
        !            93: 
        !            94: #define        svc_killedmonster       27
        !            95: #define        svc_foundsecret         28
        !            96: 
        !            97: #define        svc_spawnstaticsound    29      // [coord3] [byte] samp [byte] vol [byte] aten
        !            98: 
        !            99: #define        svc_intermission        30              // [vec3_t] origin [vec3_t] angle
        !           100: #define        svc_finale                      31              // [string] text
        !           101: 
        !           102: #define        svc_cdtrack                     32              // [byte] track
        !           103: #define svc_sellscreen         33
        !           104: 
        !           105: #define        svc_smallkick           34              // set client punchangle to 2
        !           106: #define        svc_bigkick                     35              // set client punchangle to 4
        !           107: 
        !           108: #define        svc_updateping          36              // [byte] [short]
        !           109: #define        svc_updateentertime     37              // [byte] [float]
        !           110: 
        !           111: #define        svc_updatestatlong      38              // [byte] [long]
        !           112: 
        !           113: #define        svc_muzzleflash         39              // [short] entity
        !           114: 
        !           115: #define        svc_updateuserinfo      40              // [byte] slot [long] uid
        !           116:                                                                        // [string] userinfo
        !           117: 
        !           118: #define        svc_download            41              // [short] size [size bytes]
        !           119: #define        svc_playerinfo          42              // variable
        !           120: #define        svc_nails                       43              // [byte] num [48 bits] xyzpy 12 12 12 4 8 
        !           121: #define        svc_chokecount          44              // [byte] packets choked
        !           122: #define        svc_modellist           45              // [strings]
        !           123: #define        svc_soundlist           46              // [strings]
        !           124: #define        svc_packetentities      47              // [...]
        !           125: #define        svc_deltapacketentities 48              // [...]
        !           126: #define svc_maxspeed           49              // maxspeed change, for prediction
        !           127: #define svc_entgravity         50              // gravity change, for prediction
        !           128: #define svc_setinfo                    51              // setinfo on a client
        !           129: #define svc_serverinfo         52              // serverinfo
        !           130: #define svc_updatepl           53              // [byte] [byte]
        !           131: 
        !           132: 
        !           133: //==============================================
        !           134: 
        !           135: //
        !           136: // client to server
        !           137: //
        !           138: #define        clc_bad                 0
        !           139: #define        clc_nop                 1
        !           140: //define       clc_doublemove  2
        !           141: #define        clc_move                3               // [[usercmd_t]
        !           142: #define        clc_stringcmd   4               // [string] message
        !           143: #define        clc_delta               5               // [byte] sequence number, requests delta compression of message
        !           144: #define clc_tmove              6               // teleport request, spectator only
        !           145: #define clc_upload             7               // teleport request, spectator only
        !           146: 
        !           147: 
        !           148: //==============================================
        !           149: 
        !           150: // playerinfo flags from server
        !           151: // playerinfo allways sends: playernum, flags, origin[] and framenumber
        !           152: 
        !           153: #define        PF_MSEC                 (1<<0)
        !           154: #define        PF_COMMAND              (1<<1)
        !           155: #define        PF_VELOCITY1    (1<<2)
        !           156: #define        PF_VELOCITY2    (1<<3)
        !           157: #define        PF_VELOCITY3    (1<<4)
        !           158: #define        PF_MODEL                (1<<5)
        !           159: #define        PF_SKINNUM              (1<<6)
        !           160: #define        PF_EFFECTS              (1<<7)
        !           161: #define        PF_WEAPONFRAME  (1<<8)          // only sent for view player
        !           162: #define        PF_DEAD                 (1<<9)          // don't block movement any more
        !           163: #define        PF_GIB                  (1<<10)         // offset the view height differently
        !           164: #define        PF_NOGRAV               (1<<11)         // don't apply gravity for prediction
        !           165: 
        !           166: //==============================================
        !           167: 
        !           168: // if the high bit of the client to server byte is set, the low bits are
        !           169: // client move cmd bits
        !           170: // ms and angle2 are allways sent, the others are optional
        !           171: #define        CM_ANGLE1       (1<<0)
        !           172: #define        CM_ANGLE3       (1<<1)
        !           173: #define        CM_FORWARD      (1<<2)
        !           174: #define        CM_SIDE         (1<<3)
        !           175: #define        CM_UP           (1<<4)
        !           176: #define        CM_BUTTONS      (1<<5)
        !           177: #define        CM_IMPULSE      (1<<6)
        !           178: #define        CM_ANGLE2       (1<<7)
        !           179: 
        !           180: //==============================================
        !           181: 
        !           182: // the first 16 bits of a packetentities update holds 9 bits
        !           183: // of entity number and 7 bits of flags
        !           184: #define        U_ORIGIN1       (1<<9)
        !           185: #define        U_ORIGIN2       (1<<10)
        !           186: #define        U_ORIGIN3       (1<<11)
        !           187: #define        U_ANGLE2        (1<<12)
        !           188: #define        U_FRAME         (1<<13)
        !           189: #define        U_REMOVE        (1<<14)         // REMOVE this entity, don't add it
        !           190: #define        U_MOREBITS      (1<<15)
        !           191: 
        !           192: // if MOREBITS is set, these additional flags are read in next
        !           193: #define        U_ANGLE1        (1<<0)
        !           194: #define        U_ANGLE3        (1<<1)
        !           195: #define        U_MODEL         (1<<2)
        !           196: #define        U_COLORMAP      (1<<3)
        !           197: #define        U_SKIN          (1<<4)
        !           198: #define        U_EFFECTS       (1<<5)
        !           199: #define        U_SOLID         (1<<6)          // the entity should be solid for prediction
        !           200: 
        !           201: //==============================================
        !           202: 
        !           203: // a sound with no channel is a local only sound
        !           204: // the sound field has bits 0-2: channel, 3-12: entity
        !           205: #define        SND_VOLUME              (1<<15)         // a byte
        !           206: #define        SND_ATTENUATION (1<<14)         // a byte
        !           207: 
        !           208: #define DEFAULT_SOUND_PACKET_VOLUME 255
        !           209: #define DEFAULT_SOUND_PACKET_ATTENUATION 1.0
        !           210: 
        !           211: // svc_print messages have an id, so messages can be filtered
        !           212: #define        PRINT_LOW                       0
        !           213: #define        PRINT_MEDIUM            1
        !           214: #define        PRINT_HIGH                      2
        !           215: #define        PRINT_CHAT                      3       // also go to chat buffer
        !           216: 
        !           217: //
        !           218: // temp entity events
        !           219: //
        !           220: #define        TE_SPIKE                        0
        !           221: #define        TE_SUPERSPIKE           1
        !           222: #define        TE_GUNSHOT                      2
        !           223: #define        TE_EXPLOSION            3
        !           224: #define        TE_TAREXPLOSION         4
        !           225: #define        TE_LIGHTNING1           5
        !           226: #define        TE_LIGHTNING2           6
        !           227: #define        TE_WIZSPIKE                     7
        !           228: #define        TE_KNIGHTSPIKE          8
        !           229: #define        TE_LIGHTNING3           9
        !           230: #define        TE_LAVASPLASH           10
        !           231: #define        TE_TELEPORT                     11
        !           232: #define        TE_BLOOD                        12
        !           233: #define        TE_LIGHTNINGBLOOD       13
        !           234: 
        !           235: 
        !           236: /*
        !           237: ==========================================================
        !           238: 
        !           239:   ELEMENTS COMMUNICATED ACROSS THE NET
        !           240: 
        !           241: ==========================================================
        !           242: */
        !           243: 
        !           244: #define        MAX_CLIENTS             32
        !           245: 
        !           246: #define        UPDATE_BACKUP   64      // copies of entity_state_t to keep buffered
        !           247:                                                        // must be power of two
        !           248: #define        UPDATE_MASK             (UPDATE_BACKUP-1)
        !           249: 
        !           250: // entity_state_t is the information conveyed from the server
        !           251: // in an update message
        !           252: typedef struct
        !           253: {
        !           254:        int             number;                 // edict index
        !           255: 
        !           256:        int             flags;                  // nolerp, etc
        !           257:        vec3_t  origin;
        !           258:        vec3_t  angles;
        !           259:        int             modelindex;
        !           260:        int             frame;
        !           261:        int             colormap;
        !           262:        int             skinnum;
        !           263:        int             effects;
        !           264: } entity_state_t;
        !           265: 
        !           266: 
        !           267: #define        MAX_PACKET_ENTITIES     64      // doesn't count nails
        !           268: typedef struct
        !           269: {
        !           270:        int             num_entities;
        !           271:        entity_state_t  entities[MAX_PACKET_ENTITIES];
        !           272: } packet_entities_t;
        !           273: 
        !           274: typedef struct usercmd_s
        !           275: {
        !           276:        byte    msec;
        !           277:        vec3_t  angles;
        !           278:        short   forwardmove, sidemove, upmove;
        !           279:        byte    buttons;
        !           280:        byte    impulse;
        !           281: } usercmd_t;
        !           282: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.