Aug 11 11:03:34.483 INFO checking insim-0.3.1 against try#a77dfcc79fe3e7e1a10ae4dccfd4b2e5e0e49195+tmplazy for libc-1 Aug 11 11:03:34.483 INFO running: cargo +a77dfcc79fe3e7e1a10ae4dccfd4b2e5e0e49195-alt check --frozen --all --all-targets Aug 11 11:03:34.483 INFO creating container for: cargo +a77dfcc79fe3e7e1a10ae4dccfd4b2e5e0e49195-alt check --frozen --all --all-targets Aug 11 11:03:34.483 INFO running `"docker" "create" "-v" "/tmp/crater.S86OSWBWZMl4:/source:ro,Z" "-v" "/home/ec2-user/crater/./work/local/target-dirs/libc-1/worker-2/try#a77dfcc79fe3e7e1a10ae4dccfd4b2e5e0e49195+tmplazy:/target:rw,Z" "-v" "/home/ec2-user/crater/./work/local/cargo-home:/cargo-home:ro,Z" "-v" "/home/ec2-user/crater/./work/local/rustup-home:/rustup-home:ro,Z" "-v" "/home/ec2-user/crater/./work/local/cargo-home/git:/cargo-home/git:rw,Z" "-e" "USER_ID=500" "-e" "CMD=cargo +a77dfcc79fe3e7e1a10ae4dccfd4b2e5e0e49195-alt check --frozen --all --all-targets" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "crater"` Aug 11 11:03:34.743 INFO blam! eac2a4a9b9b104b8a07465919afddd4681b85c731f9553d4ee2a951c7b1178a9 Aug 11 11:03:34.746 INFO running `"docker" "start" "-a" "eac2a4a9b9b104b8a07465919afddd4681b85c731f9553d4ee2a951c7b1178a9"` Aug 11 11:03:35.829 INFO kablam! Compiling regex v1.0.2 Aug 11 11:03:56.640 INFO kablam! Compiling insim v0.3.1 (file:///source) Aug 11 11:04:05.884 INFO kablam! error: failed to run custom build command for `insim v0.3.1 (file:///source)` Aug 11 11:04:05.884 INFO kablam! process didn't exit successfully: `/target/debug/build/insim-4bca957e1fe8c9af/build-script-build` (exit code: 101) Aug 11 11:04:05.884 INFO kablam! --- stderr Aug 11 11:04:05.885 INFO kablam! line 1: #ifndef _ISPACKETS_H_ Aug 11 11:04:05.885 INFO kablam! line 2: #define _ISPACKETS_H_ Aug 11 11:04:05.885 INFO kablam! line 3: ///////////////////// Aug 11 11:04:05.885 INFO kablam! line 4: Aug 11 11:04:05.885 INFO kablam! line 5: // InSim for Live for Speed Aug 11 11:04:05.885 INFO kablam! line 6: Aug 11 11:04:05.885 INFO kablam! line 7: // InSim allows communication between up to 8 external programs and LFS. Aug 11 11:04:05.885 INFO kablam! line 8: Aug 11 11:04:05.885 INFO kablam! line 9: // TCP or UDP packets can be sent in both directions, LFS reporting various Aug 11 11:04:05.885 INFO kablam! line 10: // things about its state, and the external program requesting info and Aug 11 11:04:05.885 INFO kablam! line 11: // controlling LFS with special packets, text commands or keypresses. Aug 11 11:04:05.885 INFO kablam! line 12: Aug 11 11:04:05.885 INFO kablam! line 13: // NOTE : This text file was written with a TAB size equal to 4 spaces. Aug 11 11:04:05.885 INFO kablam! line 14: Aug 11 11:04:05.885 INFO kablam! line 15: Aug 11 11:04:05.885 INFO kablam! line 16: // INSIM VERSION NUMBER (updated for version 0.6T) Aug 11 11:04:05.885 INFO kablam! line 17: // ==================== Aug 11 11:04:05.885 INFO kablam! line 18: Aug 11 11:04:05.885 INFO kablam! line 19: const int INSIM_VERSION = 8; Aug 11 11:04:05.885 INFO kablam! line 20: Aug 11 11:04:05.885 INFO kablam! line 21: Aug 11 11:04:05.885 INFO kablam! line 22: // CHANGES Aug 11 11:04:05.885 INFO kablam! line 23: // ======= Aug 11 11:04:05.885 INFO kablam! line 24: Aug 11 11:04:05.885 INFO kablam! line 25: // Version 0.6T (INSIM_VERSION increased to 8) Aug 11 11:04:05.885 INFO kablam! line 26: // ------------ Aug 11 11:04:05.885 INFO kablam! line 27: // New value PMO_POSITION for IS_AXM packet to report a blank position Aug 11 11:04:05.885 INFO kablam! line 28: // New packet IS_CIM reports a connection's interface mode Aug 11 11:04:05.885 INFO kablam! line 29: // New values TTC_SEL_START and TTC_SEL_STOP for IS_TTC Aug 11 11:04:05.886 INFO kablam! line 30: // New value PMO_GET_Z for IS_AXM packet to report Z values Aug 11 11:04:05.886 INFO kablam! line 31: // New values PMO_SELECTION_REAL, PMO_MOVE_MODIFY, PMO_AVOID_CHECK Aug 11 11:04:05.886 INFO kablam! line 32: Aug 11 11:04:05.886 INFO kablam! line 33: // Version 0.6N Aug 11 11:04:05.886 INFO kablam! line 34: // ------------ Aug 11 11:04:05.886 INFO kablam! line 35: // Added ISS_DIALOG and ISS_TEXT_ENTRY to the ISS state flags Aug 11 11:04:05.886 INFO kablam! line 36: // New packet SMALL_LCS - set local car switches (lights, horn, siren) Aug 11 11:04:05.886 INFO kablam! line 37: Aug 11 11:04:05.886 INFO kablam! line 38: // Version 0.6M (INSIM_VERSION increased to 7) Aug 11 11:04:05.886 INFO kablam! line 39: // ------------ Aug 11 11:04:05.886 INFO kablam! line 40: // Backward compatibility system - send INSIM_VERSION in the IS_ISI Aug 11 11:04:05.886 INFO kablam! line 41: // Older programs (that send zero) are assumed to require version 6 Aug 11 11:04:05.896 INFO kablam! line 42: // New join request system enabled if ISF_REQ_JOIN is set in IS_ISI Aug 11 11:04:05.896 INFO kablam! line 43: // IS_JRR can also be used to reset a car at a specified location Aug 11 11:04:05.896 INFO kablam! line 44: // Packet IS_CSC to report changes in car state (currently start or stop) Aug 11 11:04:05.896 INFO kablam! line 45: // Zbyte added to CarContObject structure to report car's altitude Aug 11 11:04:05.896 INFO kablam! line 46: // Zbyte added to IS_OBH so the layout object can be identified Aug 11 11:04:05.896 INFO kablam! line 47: // IS_MSO / IS_III / IS_ACR message out packets now have variable size Aug 11 11:04:05.896 INFO kablam! line 48: // IS_BFN can now be used to delete a range of buttons with a single packet Aug 11 11:04:05.896 INFO kablam! line 49: // New packet IS_OCO can be used to override specific or all start lights Aug 11 11:04:05.896 INFO kablam! line 50: // New IS_AXM option PMO_SELECTION to set the current editor selection Aug 11 11:04:05.896 INFO kablam! line 51: // Added TTC_SEL to request an IS_AXM with layout editor selection Aug 11 11:04:05.896 INFO kablam! line 52: // Added TINY_AXM to request IS_AXM packets for the entire layout Aug 11 11:04:05.897 INFO kablam! line 53: // IS_SSH documentation updated as it is no longer only for bmp files Aug 11 11:04:05.897 INFO kablam! line 54: // New packet IS_UCO sends info about InSim checkpoints and circles Aug 11 11:04:05.897 INFO kablam! line 55: // New packet IS_SLC reports a connection's currently selected car Aug 11 11:04:05.897 INFO kablam! line 56: // Packet TINY_SLC to request an IS_SLC for all connections Aug 11 11:04:05.897 INFO kablam! line 57: // Added TINY_ALC and SMALL_ALC to get and set allowed cars (like /cars) Aug 11 11:04:05.897 INFO kablam! line 58: // Value 5 (out of bounds) added to the IS_HLV packet Aug 11 11:04:05.897 INFO kablam! line 59: Aug 11 11:04:05.897 INFO kablam! line 60: // Version 0.6H (INSIM_VERSION increased to 6) Aug 11 11:04:05.897 INFO kablam! line 61: // ------------ Aug 11 11:04:05.897 INFO kablam! line 62: // IS_REO and IS_NLP increased in size to allow 40 drivers Aug 11 11:04:05.897 INFO kablam! line 63: // ObjectInfo Zchar is now Zbyte - see layout file description Aug 11 11:04:05.897 INFO kablam! line 64: // ISP_NCI packet added to give host more info about new guest Aug 11 11:04:05.897 INFO kablam! line 65: Aug 11 11:04:05.897 INFO kablam! line 66: // Version 0.6C Aug 11 11:04:05.897 INFO kablam! line 67: // ------------ Aug 11 11:04:05.897 INFO kablam! line 68: // Small change to the in-game usage of IS_REO - only valid after SMALL_VTA Aug 11 11:04:05.897 INFO kablam! line 69: // Some more values (CPW / OOS / JOOS / HACK) added to the leave reasons Aug 11 11:04:05.897 INFO kablam! line 70: Aug 11 11:04:05.897 INFO kablam! line 71: // Version 0.6B (INSIM_VERSION increased to 5) Aug 11 11:04:05.897 INFO kablam! line 72: // ------------ Aug 11 11:04:05.897 INFO kablam! line 73: // Lap timing info added to IS_RST (Timing byte) Aug 11 11:04:05.897 INFO kablam! line 74: // NLP / MCI minimum time interval reduced to 40 ms (was 50 ms) Aug 11 11:04:05.897 INFO kablam! line 75: // IS_VTC now cancels game votes even if the majority has not been reached Aug 11 11:04:05.897 INFO kablam! line 76: // IS_MTC (Msg To Connection) now has a variable length (up to 128 characters) Aug 11 11:04:05.897 INFO kablam! line 77: // IS_MTC can be sent to all (UCID = 255) and sound effect can be specified Aug 11 11:04:05.897 INFO kablam! line 78: // IS_CON reports contact between two cars (if ISF_CON is set) Aug 11 11:04:05.897 INFO kablam! line 79: // IS_OBH reports information about any object hit (if ISF_OBH is set) Aug 11 11:04:05.898 INFO kablam! line 80: // IS_HLV reports incidents that would violate HLVC (if ISF_HLV is set) Aug 11 11:04:05.898 INFO kablam! line 81: // IS_PLC sets allowed cars for individual players Aug 11 11:04:05.898 INFO kablam! line 82: // IS_AXM to add / remove / clear autocross objects Aug 11 11:04:05.898 INFO kablam! line 83: // IS_ACR reports successful or attempted admin commands Aug 11 11:04:05.898 INFO kablam! line 84: // OG_SHIFT and OG_CTRL (keys) bits added to OutGaugePack Aug 11 11:04:05.898 INFO kablam! line 85: // New IS_RIP option RIPOPT_FULL_PHYS to use full physics when searching Aug 11 11:04:05.898 INFO kablam! line 86: // ISS_SHIFTU_HIGH is no longer used (no high / low view distinction) Aug 11 11:04:05.898 INFO kablam! line 87: // FIX : Clutch axis / button was not reported from Controls screen Aug 11 11:04:05.898 INFO kablam! line 88: // FIX : TTime in IS_RIP was wrong in mid-joined Multiplayer Replays Aug 11 11:04:05.898 INFO kablam! line 89: // FIX : IS_BTN did not allow the documented limit of 240 characters Aug 11 11:04:05.898 INFO kablam! line 90: // FIX : OutGaugePack ID was always zero regardless of ID in cfg.txt Aug 11 11:04:05.898 INFO kablam! line 91: // FIX : InSim camera with vertical pitch would cause LFS to crash Aug 11 11:04:05.898 INFO kablam! line 92: Aug 11 11:04:05.898 INFO kablam! line 93: // Version 0.5Z (no change to INSIM_VERSION) Aug 11 11:04:05.898 INFO kablam! line 94: // ------------ Aug 11 11:04:05.898 INFO kablam! line 95: // NLP / MCI packets are now output at regular intervals Aug 11 11:04:05.898 INFO kablam! line 96: // CCI_LAG bit added to the CompCar structure Aug 11 11:04:05.898 INFO kablam! line 97: Aug 11 11:04:05.898 INFO kablam! line 98: Aug 11 11:04:05.898 INFO kablam! line 99: // TYPES : (all multi-byte types are PC style - lowest byte first) Aug 11 11:04:05.898 INFO kablam! line 100: // ===== Aug 11 11:04:05.898 INFO kablam! line 101: Aug 11 11:04:05.898 INFO kablam! line 102: // char 1-byte character Aug 11 11:04:05.898 INFO kablam! line 103: // byte 1-byte unsigned integer Aug 11 11:04:05.898 INFO kablam! line 104: // word 2-byte unsigned integer Aug 11 11:04:05.898 INFO kablam! line 105: // short 2-byte signed integer Aug 11 11:04:05.898 INFO kablam! line 106: // unsigned 4-byte unsigned integer Aug 11 11:04:05.899 INFO kablam! line 107: // int 4-byte signed integer Aug 11 11:04:05.899 INFO kablam! line 108: // float 4-byte float Aug 11 11:04:05.899 INFO kablam! line 109: Aug 11 11:04:05.899 INFO kablam! line 110: // RaceLaps (rl) : (various meanings depending on range) Aug 11 11:04:05.899 INFO kablam! line 111: Aug 11 11:04:05.899 INFO kablam! line 112: // 0 : practice Aug 11 11:04:05.899 INFO kablam! line 113: // 1-99 : number of laps... laps = rl Aug 11 11:04:05.899 INFO kablam! line 114: // 100-190 : 100 to 1000 laps... laps = (rl - 100) * 10 + 100 Aug 11 11:04:05.899 INFO kablam! line 115: // 191-238 : 1 to 48 hours... hours = rl - 190 Aug 11 11:04:05.899 INFO kablam! line 116: Aug 11 11:04:05.899 INFO kablam! line 117: Aug 11 11:04:05.899 INFO kablam! line 118: // InSim PACKETS Aug 11 11:04:05.899 INFO kablam! line 119: // ============= Aug 11 11:04:05.899 INFO kablam! line 120: Aug 11 11:04:05.899 INFO kablam! line 121: // All InSim packets use a four byte header Aug 11 11:04:05.899 INFO kablam! line 122: Aug 11 11:04:05.899 INFO kablam! line 123: // Size : total packet size - a multiple of 4 Aug 11 11:04:05.899 INFO kablam! line 124: // Type : packet identifier from the ISP_ enum (see below) Aug 11 11:04:05.899 INFO kablam! line 125: // ReqI : non zero if the packet is a packet request or a reply to a request Aug 11 11:04:05.899 INFO kablam! line 126: // Data : the first data byte Aug 11 11:04:05.899 INFO kablam! line 127: Aug 11 11:04:05.899 INFO kablam! line 128: // Spare bytes and Zero bytes must be filled with ZERO Aug 11 11:04:05.899 INFO kablam! line 129: Aug 11 11:04:05.899 INFO kablam! line 130: Aug 11 11:04:05.899 INFO kablam! line 131: // INITIALISING InSim Aug 11 11:04:05.899 INFO kablam! line 132: // ================== Aug 11 11:04:05.900 INFO kablam! line 133: Aug 11 11:04:05.900 INFO kablam! line 134: // To initialise the InSim system, type into LFS : /insim xxxxx Aug 11 11:04:05.900 INFO kablam! line 135: // where xxxxx is the TCP and UDP port you want LFS to open. Aug 11 11:04:05.900 INFO kablam! line 136: Aug 11 11:04:05.900 INFO kablam! line 137: // OR start LFS with the command line option : LFS /insim=xxxxx Aug 11 11:04:05.900 INFO kablam! line 138: // This will make LFS listen for packets on that TCP and UDP port. Aug 11 11:04:05.900 INFO kablam! line 139: Aug 11 11:04:05.900 INFO kablam! line 140: Aug 11 11:04:05.900 INFO kablam! line 141: // TO START COMMUNICATION Aug 11 11:04:05.900 INFO kablam! line 142: // ====================== Aug 11 11:04:05.900 INFO kablam! line 143: Aug 11 11:04:05.900 INFO kablam! line 144: // TCP : Connect to LFS using a TCP connection, then send this packet : Aug 11 11:04:05.900 INFO kablam! line 145: // UDP : No connection required, just send this packet to LFS : Aug 11 11:04:05.900 INFO kablam! line 146: Aug 11 11:04:05.900 INFO kablam! line 147: struct IS_ISI // InSim Init - packet to initialise the InSim system Aug 11 11:04:05.900 INFO kablam! line 148: { Aug 11 11:04:05.900 INFO kablam! line 149: byte Size; // 44 Aug 11 11:04:05.900 INFO kablam! line 150: byte Type; // ISP_ISI Aug 11 11:04:05.900 INFO kablam! line 151: byte ReqI; // If non-zero LFS will send an IS_VER packet Aug 11 11:04:05.900 INFO kablam! line 152: byte Zero; // 0 Aug 11 11:04:05.900 INFO kablam! line 153: Aug 11 11:04:05.900 INFO kablam! line 154: word UDPPort; // Port for UDP replies from LFS (0 to 65535) Aug 11 11:04:05.900 INFO kablam! line 155: word Flags; // Bit flags for options (see below) Aug 11 11:04:05.900 INFO kablam! line 156: Aug 11 11:04:05.901 INFO kablam! line 157: byte InSimVer; // The INSIM_VERSION used by your program Aug 11 11:04:05.901 INFO kablam! line 158: byte Prefix; // Special host message prefix character Aug 11 11:04:05.901 INFO kablam! line 159: word Interval; // Time in ms between NLP or MCI (0 = none) Aug 11 11:04:05.901 INFO kablam! line 160: Aug 11 11:04:05.901 INFO kablam! line 161: char Admin[16]; // Admin password (if set in LFS) Aug 11 11:04:05.903 INFO kablam! line 162: char IName[16]; // A short name for your program Aug 11 11:04:05.903 INFO kablam! line 163: }; Aug 11 11:04:05.903 INFO kablam! line 164: Aug 11 11:04:05.903 INFO kablam! line 165: // NOTE 1) UDPPort field when you connect using UDP : Aug 11 11:04:05.903 INFO kablam! line 166: Aug 11 11:04:05.903 INFO kablam! line 167: // zero : LFS sends all packets to the port of the incoming packet Aug 11 11:04:05.904 INFO kablam! line 168: // non-zero : LFS sends all packets to the specified UDPPort Aug 11 11:04:05.904 INFO kablam! line 169: Aug 11 11:04:05.904 INFO kablam! line 170: // NOTE 2) UDPPort field when you connect using TCP : Aug 11 11:04:05.904 INFO kablam! line 171: Aug 11 11:04:05.904 INFO kablam! line 172: // zero : LFS sends NLP / MCI packets using your TCP connection Aug 11 11:04:05.904 INFO kablam! line 173: // non-zero : LFS sends NLP / MCI packets to the specified UDPPort Aug 11 11:04:05.904 INFO kablam! line 174: Aug 11 11:04:05.904 INFO kablam! line 175: // NOTE 3) Flags field (set the relevant bits to turn on the option) : Aug 11 11:04:05.904 INFO kablam! line 176: Aug 11 11:04:05.904 INFO kablam! line 177: #define ISF_RES_0 1 // bit 0 : spare Aug 11 11:04:05.904 INFO kablam! line 178: #define ISF_RES_1 2 // bit 1 : spare Aug 11 11:04:05.905 INFO kablam! line 179: #define ISF_LOCAL 4 // bit 2 : guest or single player Aug 11 11:04:05.905 INFO kablam! line 180: #define ISF_MSO_COLS 8 // bit 3 : keep colours in MSO text Aug 11 11:04:05.905 INFO kablam! line 181: #define ISF_NLP 16 // bit 4 : receive NLP packets Aug 11 11:04:05.906 INFO kablam! line 182: #define ISF_MCI 32 // bit 5 : receive MCI packets Aug 11 11:04:05.906 INFO kablam! line 183: #define ISF_CON 64 // bit 6 : receive CON packets Aug 11 11:04:05.906 INFO kablam! line 184: #define ISF_OBH 128 // bit 7 : receive OBH packets Aug 11 11:04:05.906 INFO kablam! line 185: #define ISF_HLV 256 // bit 8 : receive HLV packets Aug 11 11:04:05.906 INFO kablam! line 186: #define ISF_AXM_LOAD 512 // bit 9 : receive AXM when loading a layout Aug 11 11:04:05.906 INFO kablam! line 187: #define ISF_AXM_EDIT 1024 // bit 10 : receive AXM when changing objects Aug 11 11:04:05.906 INFO kablam! line 188: #define ISF_REQ_JOIN 2048 // bit 11 : process join requests Aug 11 11:04:05.906 INFO kablam! line 189: Aug 11 11:04:05.907 INFO kablam! line 190: // In most cases you should not set both ISF_NLP and ISF_MCI flags Aug 11 11:04:05.907 INFO kablam! line 191: // because all IS_NLP information is included in the IS_MCI packet. Aug 11 11:04:05.907 INFO kablam! line 192: Aug 11 11:04:05.907 INFO kablam! line 193: // The ISF_LOCAL flag is important if your program creates buttons. Aug 11 11:04:05.907 INFO kablam! line 194: // It should be set if your program is not a host control system. Aug 11 11:04:05.907 INFO kablam! line 195: // If set, then buttons are created in the local button area, so Aug 11 11:04:05.907 INFO kablam! line 196: // avoiding conflict with the host buttons and allowing the user Aug 11 11:04:05.908 INFO kablam! line 197: // to switch them with SHIFT+B rather than SHIFT+I. Aug 11 11:04:05.909 INFO kablam! line 198: Aug 11 11:04:05.909 INFO kablam! line 199: // NOTE 4) InSimVer field : Aug 11 11:04:05.909 INFO kablam! line 200: Aug 11 11:04:05.909 INFO kablam! line 201: // Provide the INSIM_VERSION that your program was designed for. Aug 11 11:04:05.909 INFO kablam! line 202: // Later LFS versions will try to retain backward compatibility Aug 11 11:04:05.909 INFO kablam! line 203: // if it can be provided, within reason. Not guaranteed. Aug 11 11:04:05.909 INFO kablam! line 204: Aug 11 11:04:05.909 INFO kablam! line 205: // NOTE 5) Prefix field, if set when initialising InSim on a host : Aug 11 11:04:05.909 INFO kablam! line 206: Aug 11 11:04:05.909 INFO kablam! line 207: // Messages typed with this prefix will be sent to your InSim program Aug 11 11:04:05.909 INFO kablam! line 208: // on the host (in IS_MSO) and not displayed on anyone's screen. Aug 11 11:04:05.909 INFO kablam! line 209: Aug 11 11:04:05.909 INFO kablam! line 210: Aug 11 11:04:05.909 INFO kablam! line 211: // ENUMERATIONS FOR PACKET TYPES Aug 11 11:04:05.909 INFO kablam! line 212: // ============================= Aug 11 11:04:05.909 INFO kablam! line 213: Aug 11 11:04:05.909 INFO kablam! line 214: enum // the second byte of any packet is one of these Aug 11 11:04:05.909 INFO kablam! line 215: { Aug 11 11:04:05.909 INFO kablam! line 216: ISP_NONE, // 0 : not used Aug 11 11:04:05.909 INFO kablam! line 217: ISP_ISI, // 1 - instruction : insim initialise Aug 11 11:04:05.909 INFO kablam! line 218: ISP_VER, // 2 - info : version info Aug 11 11:04:05.909 INFO kablam! line 219: ISP_TINY, // 3 - both ways : multi purpose Aug 11 11:04:05.909 INFO kablam! line 220: ISP_SMALL, // 4 - both ways : multi purpose Aug 11 11:04:05.909 INFO kablam! line 221: ISP_STA, // 5 - info : state info Aug 11 11:04:05.909 INFO kablam! line 222: ISP_SCH, // 6 - instruction : single character Aug 11 11:04:05.909 INFO kablam! line 223: ISP_SFP, // 7 - instruction : state flags pack Aug 11 11:04:05.910 INFO kablam! line 224: ISP_SCC, // 8 - instruction : set car camera Aug 11 11:04:05.910 INFO kablam! line 225: ISP_CPP, // 9 - both ways : cam pos pack Aug 11 11:04:05.910 INFO kablam! line 226: ISP_ISM, // 10 - info : start multiplayer Aug 11 11:04:05.910 INFO kablam! line 227: ISP_MSO, // 11 - info : message out Aug 11 11:04:05.910 INFO kablam! line 228: ISP_III, // 12 - info : hidden /i message Aug 11 11:04:05.910 INFO kablam! line 229: ISP_MST, // 13 - instruction : type message or /command Aug 11 11:04:05.910 INFO kablam! line 230: ISP_MTC, // 14 - instruction : message to a connection Aug 11 11:04:05.910 INFO kablam! line 231: ISP_MOD, // 15 - instruction : set screen mode Aug 11 11:04:05.910 INFO kablam! line 232: ISP_VTN, // 16 - info : vote notification Aug 11 11:04:05.910 INFO kablam! line 233: ISP_RST, // 17 - info : race start Aug 11 11:04:05.910 INFO kablam! line 234: ISP_NCN, // 18 - info : new connection Aug 11 11:04:05.910 INFO kablam! line 235: ISP_CNL, // 19 - info : connection left Aug 11 11:04:05.910 INFO kablam! line 236: ISP_CPR, // 20 - info : connection renamed Aug 11 11:04:05.910 INFO kablam! line 237: ISP_NPL, // 21 - info : new player (joined race) Aug 11 11:04:05.910 INFO kablam! line 238: ISP_PLP, // 22 - info : player pit (keeps slot in race) Aug 11 11:04:05.910 INFO kablam! line 239: ISP_PLL, // 23 - info : player leave (spectate - loses slot) Aug 11 11:04:05.910 INFO kablam! line 240: ISP_LAP, // 24 - info : lap time Aug 11 11:04:05.910 INFO kablam! line 241: ISP_SPX, // 25 - info : split x time Aug 11 11:04:05.910 INFO kablam! line 242: ISP_PIT, // 26 - info : pit stop start Aug 11 11:04:05.910 INFO kablam! line 243: ISP_PSF, // 27 - info : pit stop finish Aug 11 11:04:05.910 INFO kablam! line 244: ISP_PLA, // 28 - info : pit lane enter / leave Aug 11 11:04:05.910 INFO kablam! line 245: ISP_CCH, // 29 - info : camera changed Aug 11 11:04:05.911 INFO kablam! line 246: ISP_PEN, // 30 - info : penalty given or cleared Aug 11 11:04:05.911 INFO kablam! line 247: ISP_TOC, // 31 - info : take over car Aug 11 11:04:05.911 INFO kablam! line 248: ISP_FLG, // 32 - info : flag (yellow or blue) Aug 11 11:04:05.911 INFO kablam! line 249: ISP_PFL, // 33 - info : player flags (help flags) Aug 11 11:04:05.911 INFO kablam! line 250: ISP_FIN, // 34 - info : finished race Aug 11 11:04:05.911 INFO kablam! line 251: ISP_RES, // 35 - info : result confirmed Aug 11 11:04:05.911 INFO kablam! line 252: ISP_REO, // 36 - both ways : reorder (info or instruction) Aug 11 11:04:05.911 INFO kablam! line 253: ISP_NLP, // 37 - info : node and lap packet Aug 11 11:04:05.911 INFO kablam! line 254: ISP_MCI, // 38 - info : multi car info Aug 11 11:04:05.911 INFO kablam! line 255: ISP_MSX, // 39 - instruction : type message Aug 11 11:04:05.911 INFO kablam! line 256: ISP_MSL, // 40 - instruction : message to local computer Aug 11 11:04:05.911 INFO kablam! line 257: ISP_CRS, // 41 - info : car reset Aug 11 11:04:05.911 INFO kablam! line 258: ISP_BFN, // 42 - both ways : delete buttons / receive button requests Aug 11 11:04:05.911 INFO kablam! line 259: ISP_AXI, // 43 - info : autocross layout information Aug 11 11:04:05.911 INFO kablam! line 260: ISP_AXO, // 44 - info : hit an autocross object Aug 11 11:04:05.911 INFO kablam! line 261: ISP_BTN, // 45 - instruction : show a button on local or remote screen Aug 11 11:04:05.911 INFO kablam! line 262: ISP_BTC, // 46 - info : sent when a user clicks a button Aug 11 11:04:05.911 INFO kablam! line 263: ISP_BTT, // 47 - info : sent after typing into a button Aug 11 11:04:05.911 INFO kablam! line 264: ISP_RIP, // 48 - both ways : replay information packet Aug 11 11:04:05.911 INFO kablam! line 265: ISP_SSH, // 49 - both ways : screenshot Aug 11 11:04:05.911 INFO kablam! line 266: ISP_CON, // 50 - info : contact between cars (collision report) Aug 11 11:04:05.911 INFO kablam! line 267: ISP_OBH, // 51 - info : contact car + object (collision report) Aug 11 11:04:05.911 INFO kablam! line 268: ISP_HLV, // 52 - info : report incidents that would violate HLVC Aug 11 11:04:05.911 INFO kablam! line 269: ISP_PLC, // 53 - instruction : player cars Aug 11 11:04:05.911 INFO kablam! line 270: ISP_AXM, // 54 - both ways : autocross multiple objects Aug 11 11:04:05.911 INFO kablam! line 271: ISP_ACR, // 55 - info : admin command report Aug 11 11:04:05.911 INFO kablam! line 272: ISP_HCP, // 56 - instruction : car handicaps Aug 11 11:04:05.911 INFO kablam! line 273: ISP_NCI, // 57 - info : new connection - extra info for host Aug 11 11:04:05.911 INFO kablam! line 274: ISP_JRR, // 58 - instruction : reply to a join request (allow / disallow) Aug 11 11:04:05.912 INFO kablam! line 275: ISP_UCO, // 59 - info : report InSim checkpoint / InSim circle Aug 11 11:04:05.912 INFO kablam! line 276: ISP_OCO, // 60 - instruction : object control (currently used for lights) Aug 11 11:04:05.912 INFO kablam! line 277: ISP_TTC, // 61 - instruction : multi purpose - target to connection Aug 11 11:04:05.912 INFO kablam! line 278: ISP_SLC, // 62 - info : connection selected a car Aug 11 11:04:05.912 INFO kablam! line 279: ISP_CSC, // 63 - info : car state changed Aug 11 11:04:05.912 INFO kablam! line 280: ISP_CIM, // 64 - info : connection's interface mode Aug 11 11:04:05.912 INFO kablam! line 281: }; Aug 11 11:04:05.912 INFO kablam! line 282: Aug 11 11:04:05.912 INFO kablam! line 283: enum // the fourth byte of an IS_TINY packet is one of these Aug 11 11:04:05.912 INFO kablam! line 284: { Aug 11 11:04:05.912 INFO kablam! line 285: TINY_NONE, // 0 - keep alive : see "maintaining the connection" Aug 11 11:04:05.912 INFO kablam! line 286: TINY_VER, // 1 - info request : get version Aug 11 11:04:05.912 INFO kablam! line 287: TINY_CLOSE, // 2 - instruction : close insim Aug 11 11:04:05.912 INFO kablam! line 288: TINY_PING, // 3 - ping request : external progam requesting a reply Aug 11 11:04:05.912 INFO kablam! line 289: TINY_REPLY, // 4 - ping reply : reply to a ping request Aug 11 11:04:05.912 INFO kablam! line 290: TINY_VTC, // 5 - both ways : game vote cancel (info or request) Aug 11 11:04:05.912 INFO kablam! line 291: TINY_SCP, // 6 - info request : send camera pos Aug 11 11:04:05.912 INFO kablam! line 292: TINY_SST, // 7 - info request : send state info Aug 11 11:04:05.912 INFO kablam! line 293: TINY_GTH, // 8 - info request : get time in hundredths (i.e. SMALL_RTP) Aug 11 11:04:05.912 INFO kablam! line 294: TINY_MPE, // 9 - info : multi player end Aug 11 11:04:05.912 INFO kablam! line 295: TINY_ISM, // 10 - info request : get multiplayer info (i.e. ISP_ISM) Aug 11 11:04:05.912 INFO kablam! line 296: TINY_REN, // 11 - info : race end (return to race setup screen) Aug 11 11:04:05.912 INFO kablam! line 297: TINY_CLR, // 12 - info : all players cleared from race Aug 11 11:04:05.912 INFO kablam! line 298: TINY_NCN, // 13 - info request : get NCN for all connections Aug 11 11:04:05.912 INFO kablam! line 299: TINY_NPL, // 14 - info request : get all players Aug 11 11:04:05.912 INFO kablam! line 300: TINY_RES, // 15 - info request : get all results Aug 11 11:04:05.912 INFO kablam! line 301: TINY_NLP, // 16 - info request : send an IS_NLP Aug 11 11:04:05.912 INFO kablam! line 302: TINY_MCI, // 17 - info request : send an IS_MCI Aug 11 11:04:05.913 INFO kablam! line 303: TINY_REO, // 18 - info request : send an IS_REO Aug 11 11:04:05.913 INFO kablam! line 304: TINY_RST, // 19 - info request : send an IS_RST Aug 11 11:04:05.913 INFO kablam! line 305: TINY_AXI, // 20 - info request : send an IS_AXI - AutoX Info Aug 11 11:04:05.913 INFO kablam! line 306: TINY_AXC, // 21 - info : autocross cleared Aug 11 11:04:05.913 INFO kablam! line 307: TINY_RIP, // 22 - info request : send an IS_RIP - Replay Information Packet Aug 11 11:04:05.913 INFO kablam! line 308: TINY_NCI, // 23 - info request : get NCI for all guests (on host only) Aug 11 11:04:05.913 INFO kablam! line 309: TINY_ALC, // 24 - info request : send a SMALL_ALC (allowed cars) Aug 11 11:04:05.913 INFO kablam! line 310: TINY_AXM, // 25 - info request : send IS_AXM packets for the entire layout Aug 11 11:04:05.913 INFO kablam! line 311: TINY_SLC, // 26 - info request : send IS_SLC packets for all connections Aug 11 11:04:05.913 INFO kablam! line 312: }; Aug 11 11:04:05.913 INFO kablam! line 313: Aug 11 11:04:05.913 INFO kablam! line 314: enum // the fourth byte of an IS_SMALL packet is one of these Aug 11 11:04:05.913 INFO kablam! line 315: { Aug 11 11:04:05.913 INFO kablam! line 316: SMALL_NONE, // 0 : not used Aug 11 11:04:05.913 INFO kablam! line 317: SMALL_SSP, // 1 - instruction : start sending positions Aug 11 11:04:05.913 INFO kablam! line 318: SMALL_SSG, // 2 - instruction : start sending gauges Aug 11 11:04:05.913 INFO kablam! line 319: SMALL_VTA, // 3 - report : vote action Aug 11 11:04:05.913 INFO kablam! line 320: SMALL_TMS, // 4 - instruction : time stop Aug 11 11:04:05.913 INFO kablam! line 321: SMALL_STP, // 5 - instruction : time step Aug 11 11:04:05.913 INFO kablam! line 322: SMALL_RTP, // 6 - info : race time packet (reply to GTH) Aug 11 11:04:05.913 INFO kablam! line 323: SMALL_NLI, // 7 - instruction : set node lap interval Aug 11 11:04:05.913 INFO kablam! line 324: SMALL_ALC, // 8 - both ways : set or get allowed cars (TINY_ALC) Aug 11 11:04:05.913 INFO kablam! line 325: SMALL_LCS, // 9 - instruction : set local car switches (lights, horn, siren) Aug 11 11:04:05.913 INFO kablam! line 326: }; Aug 11 11:04:05.913 INFO kablam! line 327: Aug 11 11:04:05.913 INFO kablam! line 328: enum // the fourth byte of an IS_TTC packet is one of these Aug 11 11:04:05.913 INFO kablam! line 329: { Aug 11 11:04:05.913 INFO kablam! line 330: TTC_NONE, // 0 : not used Aug 11 11:04:05.913 INFO kablam! line 331: TTC_SEL, // 1 - info request : send IS_AXM for a layout editor selection Aug 11 11:04:05.914 INFO kablam! line 332: TTC_SEL_START, // 2 - info request : send IS_AXM every time the selection changes Aug 11 11:04:05.914 INFO kablam! line 333: TTC_SEL_STOP, // 3 - instruction : switch off IS_AXM requested by TTC_SEL_START Aug 11 11:04:05.914 INFO kablam! line 334: }; Aug 11 11:04:05.914 INFO kablam! line 335: Aug 11 11:04:05.914 INFO kablam! line 336: Aug 11 11:04:05.914 INFO kablam! line 337: // GENERAL PURPOSE PACKETS - IS_TINY (4 bytes) / IS_SMALL (8 bytes) / IS_TTC (8 bytes) Aug 11 11:04:05.914 INFO kablam! line 338: // ======================= Aug 11 11:04:05.914 INFO kablam! line 339: Aug 11 11:04:05.914 INFO kablam! line 340: // To avoid defining several packet structures that are exactly the same, and to avoid Aug 11 11:04:05.914 INFO kablam! line 341: // wasting the ISP_ enumeration, IS_TINY is used at various times when no additional data Aug 11 11:04:05.914 INFO kablam! line 342: // other than SubT is required. IS_SMALL is used when an additional integer is needed. Aug 11 11:04:05.914 INFO kablam! line 343: Aug 11 11:04:05.914 INFO kablam! line 344: // IS_TINY Aug 11 11:04:05.914 INFO kablam! line 345: Aug 11 11:04:05.914 INFO kablam! line 346: struct IS_TINY // General purpose 4 byte packet Aug 11 11:04:05.914 INFO kablam! line 347: { Aug 11 11:04:05.914 INFO kablam! line 348: byte Size; // 4 Aug 11 11:04:05.914 INFO kablam! line 349: byte Type; // ISP_TINY Aug 11 11:04:05.914 INFO kablam! line 350: byte ReqI; // 0 unless it is an info request or a reply to an info request Aug 11 11:04:05.914 INFO kablam! line 351: byte SubT; // subtype, from TINY_ enumeration (e.g. TINY_RACE_END) Aug 11 11:04:05.914 INFO kablam! line 352: }; Aug 11 11:04:05.914 INFO kablam! line 353: Aug 11 11:04:05.915 INFO kablam! line 354: // IS_SMALL Aug 11 11:04:05.915 INFO kablam! line 355: Aug 11 11:04:05.915 INFO kablam! line 356: struct IS_SMALL // General purpose 8 byte packet Aug 11 11:04:05.915 INFO kablam! line 357: { Aug 11 11:04:05.915 INFO kablam! line 358: byte Size; // 8 Aug 11 11:04:05.915 INFO kablam! line 359: byte Type; // ISP_SMALL Aug 11 11:04:05.915 INFO kablam! line 360: byte ReqI; // 0 unless it is an info request or a reply to an info request Aug 11 11:04:05.915 INFO kablam! line 361: byte SubT; // subtype, from SMALL_ enumeration (e.g. SMALL_SSP) Aug 11 11:04:05.915 INFO kablam! line 362: Aug 11 11:04:05.915 INFO kablam! line 363: unsigned UVal; // value (e.g. for SMALL_SSP this would be the OutSim packet rate) Aug 11 11:04:05.915 INFO kablam! line 364: }; Aug 11 11:04:05.915 INFO kablam! line 365: Aug 11 11:04:05.915 INFO kablam! line 366: // IS_TTC Aug 11 11:04:05.915 INFO kablam! line 367: Aug 11 11:04:05.915 INFO kablam! line 368: struct IS_TTC // General purpose 8 byte packet (Target To Connection) Aug 11 11:04:05.915 INFO kablam! line 369: { Aug 11 11:04:05.915 INFO kablam! line 370: byte Size; // 8 Aug 11 11:04:05.915 INFO kablam! line 371: byte Type; // ISP_TTC Aug 11 11:04:05.915 INFO kablam! line 372: byte ReqI; // 0 unless it is an info request or a reply to an info request Aug 11 11:04:05.915 INFO kablam! line 373: byte SubT; // subtype, from TTC_ enumeration (e.g. TTC_SEL) Aug 11 11:04:05.916 INFO kablam! line 374: Aug 11 11:04:05.916 INFO kablam! line 375: byte UCID; // connection's unique id (0 = local) Aug 11 11:04:05.916 INFO kablam! line 376: byte B1; // B1, B2, B3 may be used in various ways depending on SubT Aug 11 11:04:05.916 INFO kablam! line 377: byte B2; Aug 11 11:04:05.916 INFO kablam! line 378: byte B3; Aug 11 11:04:05.916 INFO kablam! line 379: }; Aug 11 11:04:05.916 INFO kablam! line 380: Aug 11 11:04:05.916 INFO kablam! line 381: Aug 11 11:04:05.916 INFO kablam! line 382: // VERSION REQUEST Aug 11 11:04:05.916 INFO kablam! line 383: // =============== Aug 11 11:04:05.916 INFO kablam! line 384: Aug 11 11:04:05.916 INFO kablam! line 385: // It is advisable to request version information as soon as you have connected, to Aug 11 11:04:05.916 INFO kablam! line 386: // avoid problems when connecting to a host with a later or earlier version. You will Aug 11 11:04:05.916 INFO kablam! line 387: // be sent a version packet on connection if you set ReqI in the IS_ISI packet. Aug 11 11:04:05.916 INFO kablam! line 388: Aug 11 11:04:05.916 INFO kablam! line 389: // This version packet is sent on request : Aug 11 11:04:05.916 INFO kablam! line 390: Aug 11 11:04:05.916 INFO kablam! line 391: struct IS_VER // VERsion Aug 11 11:04:05.916 INFO kablam! line 392: { Aug 11 11:04:05.916 INFO kablam! line 393: byte Size; // 20 Aug 11 11:04:05.916 INFO kablam! line 394: byte Type; // ISP_VERSION Aug 11 11:04:05.916 INFO kablam! line 395: byte ReqI; // ReqI as received in the request packet Aug 11 11:04:05.917 INFO kablam! line 396: byte Zero; Aug 11 11:04:05.917 INFO kablam! line 397: Aug 11 11:04:05.917 INFO kablam! line 398: char Version[8]; // LFS version, e.g. 0.3G Aug 11 11:04:05.918 INFO kablam! line 399: char Product[6]; // Product : DEMO / S1 / S2 / S3 Aug 11 11:04:05.918 INFO kablam! line 400: byte InSimVer; // InSim version (see below) Aug 11 11:04:05.918 INFO kablam! line 401: byte Spare; // Spare Aug 11 11:04:05.918 INFO kablam! line 402: }; Aug 11 11:04:05.918 INFO kablam! line 403: Aug 11 11:04:05.918 INFO kablam! line 404: // To request an IS_VER packet at any time, send this IS_TINY : Aug 11 11:04:05.918 INFO kablam! line 405: Aug 11 11:04:05.918 INFO kablam! line 406: // ReqI : non-zero (returned in the reply) Aug 11 11:04:05.918 INFO kablam! line 407: // SubT : TINY_VER (request an IS_VER) Aug 11 11:04:05.918 INFO kablam! line 408: Aug 11 11:04:05.918 INFO kablam! line 409: // NOTE : LFS tries to match InSimVer with the version requested in your program's IS_ISI Aug 11 11:04:05.918 INFO kablam! line 410: // packet if it is lower than the latest version known to LFS. If backward compatibility Aug 11 11:04:05.918 INFO kablam! line 411: // is no longer possible then this version may be higher than your program requested. Aug 11 11:04:05.918 INFO kablam! line 412: // In that case your program may not be able to read some packets sent to it by LFS. Aug 11 11:04:05.918 INFO kablam! line 413: // If you connect to an older LFS version then InSimVer may be lower than requested. Aug 11 11:04:05.918 INFO kablam! line 414: Aug 11 11:04:05.918 INFO kablam! line 415: // ReqI : non-zero (returned in the reply) Aug 11 11:04:05.918 INFO kablam! line 416: // SubT : TINY_PING (request a TINY_REPLY) Aug 11 11:04:05.918 INFO kablam! line 417: Aug 11 11:04:05.918 INFO kablam! line 418: Aug 11 11:04:05.918 INFO kablam! line 419: // CLOSING InSim Aug 11 11:04:05.918 INFO kablam! line 420: // ============= Aug 11 11:04:05.918 INFO kablam! line 421: Aug 11 11:04:05.918 INFO kablam! line 422: // You can send this IS_TINY to close the InSim connection to your program : Aug 11 11:04:05.919 INFO kablam! line 423: Aug 11 11:04:05.919 INFO kablam! line 424: // ReqI : 0 Aug 11 11:04:05.919 INFO kablam! line 425: // SubT : TINY_CLOSE (close this connection) Aug 11 11:04:05.919 INFO kablam! line 426: Aug 11 11:04:05.919 INFO kablam! line 427: // Another InSimInit packet is then required to start operating again. Aug 11 11:04:05.919 INFO kablam! line 428: Aug 11 11:04:05.919 INFO kablam! line 429: // You can shut down InSim completely and stop it listening at all by typing /insim=0 Aug 11 11:04:05.919 INFO kablam! line 430: // into LFS (or send a MsgTypePack to do the same thing). Aug 11 11:04:05.919 INFO kablam! line 431: Aug 11 11:04:05.919 INFO kablam! line 432: Aug 11 11:04:05.919 INFO kablam! line 433: // MAINTAINING THE CONNECTION - IMPORTANT Aug 11 11:04:05.920 INFO kablam! line 434: // ========================== Aug 11 11:04:05.920 INFO kablam! line 435: Aug 11 11:04:05.920 INFO kablam! line 436: // If InSim does not receive a packet for 70 seconds, it will close your connection. Aug 11 11:04:05.920 INFO kablam! line 437: // To open it again you would need to send another InSimInit packet. Aug 11 11:04:05.920 INFO kablam! line 438: Aug 11 11:04:05.920 INFO kablam! line 439: // LFS will send a blank IS_TINY packet like this every 30 seconds : Aug 11 11:04:05.920 INFO kablam! line 440: Aug 11 11:04:05.920 INFO kablam! line 441: // ReqI : 0 Aug 11 11:04:05.920 INFO kablam! line 442: // SubT : TINY_NONE (keep alive packet) Aug 11 11:04:05.920 INFO kablam! line 443: Aug 11 11:04:05.920 INFO kablam! line 444: // You should reply with a blank IS_TINY packet : Aug 11 11:04:05.920 INFO kablam! line 445: Aug 11 11:04:05.920 INFO kablam! line 446: // ReqI : 0 Aug 11 11:04:05.920 INFO kablam! line 447: // SubT : TINY_NONE (has no effect other than resetting the timeout) Aug 11 11:04:05.920 INFO kablam! line 448: Aug 11 11:04:05.920 INFO kablam! line 449: // NOTE : If you want to request a reply from LFS to check the connection Aug 11 11:04:05.920 INFO kablam! line 450: // at any time, you can send this IS_TINY : Aug 11 11:04:05.920 INFO kablam! line 451: Aug 11 11:04:05.920 INFO kablam! line 452: // ReqI : non-zero (returned in the reply) Aug 11 11:04:05.920 INFO kablam! line 453: // SubT : TINY_PING (request a TINY_REPLY) Aug 11 11:04:05.920 INFO kablam! line 454: Aug 11 11:04:05.920 INFO kablam! line 455: // LFS will reply with this IS_TINY : Aug 11 11:04:05.920 INFO kablam! line 456: Aug 11 11:04:05.920 INFO kablam! line 457: // ReqI : non-zero (as received in the request packet) Aug 11 11:04:05.920 INFO kablam! line 458: // SubT : TINY_REPLY (reply to ping) Aug 11 11:04:05.920 INFO kablam! line 459: Aug 11 11:04:05.920 INFO kablam! line 460: Aug 11 11:04:05.921 INFO kablam! line 461: // STATE REPORTING AND REQUESTS Aug 11 11:04:05.921 INFO kablam! line 462: // ============================ Aug 11 11:04:05.921 INFO kablam! line 463: Aug 11 11:04:05.921 INFO kablam! line 464: // LFS will send an IS_STA any time the info in it changes. Aug 11 11:04:05.921 INFO kablam! line 465: Aug 11 11:04:05.921 INFO kablam! line 466: struct IS_STA // STAte Aug 11 11:04:05.921 INFO kablam! line 467: { Aug 11 11:04:05.921 INFO kablam! line 468: byte Size; // 28 Aug 11 11:04:05.921 INFO kablam! line 469: byte Type; // ISP_STA Aug 11 11:04:05.921 INFO kablam! line 470: byte ReqI; // ReqI if replying to a request packet Aug 11 11:04:05.921 INFO kablam! line 471: byte Zero; Aug 11 11:04:05.921 INFO kablam! line 472: Aug 11 11:04:05.921 INFO kablam! line 473: float ReplaySpeed; // 4-byte float - 1.0 is normal speed Aug 11 11:04:05.921 INFO kablam! line 474: Aug 11 11:04:05.921 INFO kablam! line 475: word Flags; // ISS state flags (see below) Aug 11 11:04:05.921 INFO kablam! line 476: byte InGameCam; // Which type of camera is selected (see below) Aug 11 11:04:05.921 INFO kablam! line 477: byte ViewPLID; // Unique ID of viewed player (0 = none) Aug 11 11:04:05.921 INFO kablam! line 478: Aug 11 11:04:05.921 INFO kablam! line 479: byte NumP; // Number of players in race Aug 11 11:04:05.921 INFO kablam! line 480: byte NumConns; // Number of connections including host Aug 11 11:04:05.921 INFO kablam! line 481: byte NumFinished; // Number finished or qualified Aug 11 11:04:05.921 INFO kablam! line 482: byte RaceInProg; // 0 - no race / 1 - race / 2 - qualifying Aug 11 11:04:05.921 INFO kablam! line 483: Aug 11 11:04:05.921 INFO kablam! line 484: byte QualMins; Aug 11 11:04:05.921 INFO kablam! line 485: byte RaceLaps; // see "RaceLaps" near the top of this document Aug 11 11:04:05.921 INFO kablam! line 486: byte Spare2; Aug 11 11:04:05.921 INFO kablam! line 487: byte Spare3; Aug 11 11:04:05.921 INFO kablam! line 488: Aug 11 11:04:05.921 INFO kablam! line 489: char Track[6]; // short name for track e.g. FE2R Aug 11 11:04:05.921 INFO kablam! line 490: byte Weather; // 0,1,2... Aug 11 11:04:05.921 INFO kablam! line 491: byte Wind; // 0=off 1=weak 2=strong Aug 11 11:04:05.921 INFO kablam! line 492: }; Aug 11 11:04:05.922 INFO kablam! line 493: Aug 11 11:04:05.922 INFO kablam! line 494: // InGameCam is the in game selected camera mode (which is Aug 11 11:04:05.922 INFO kablam! line 495: // still selected even if LFS is actually in SHIFT+U mode). Aug 11 11:04:05.922 INFO kablam! line 496: // For InGameCam's values, see "View identifiers" below. Aug 11 11:04:05.922 INFO kablam! line 497: Aug 11 11:04:05.922 INFO kablam! line 498: // ISS state flags Aug 11 11:04:05.922 INFO kablam! line 499: Aug 11 11:04:05.922 INFO kablam! line 500: #define ISS_GAME 1 // in game (or MPR) Aug 11 11:04:05.922 INFO kablam! line 501: #define ISS_REPLAY 2 // in SPR Aug 11 11:04:05.922 INFO kablam! line 502: #define ISS_PAUSED 4 // paused Aug 11 11:04:05.922 INFO kablam! line 503: #define ISS_SHIFTU 8 // SHIFT+U mode Aug 11 11:04:05.922 INFO kablam! line 504: #define ISS_DIALOG 16 // in a dialog Aug 11 11:04:05.922 INFO kablam! line 505: #define ISS_SHIFTU_FOLLOW 32 // FOLLOW view Aug 11 11:04:05.922 INFO kablam! line 506: #define ISS_SHIFTU_NO_OPT 64 // SHIFT+U buttons hidden Aug 11 11:04:05.922 INFO kablam! line 507: #define ISS_SHOW_2D 128 // showing 2d display Aug 11 11:04:05.922 INFO kablam! line 508: #define ISS_FRONT_END 256 // entry screen Aug 11 11:04:05.922 INFO kablam! line 509: #define ISS_MULTI 512 // multiplayer mode Aug 11 11:04:05.922 INFO kablam! line 510: #define ISS_MPSPEEDUP 1024 // multiplayer speedup option Aug 11 11:04:05.922 INFO kablam! line 511: #define ISS_WINDOWED 2048 // LFS is running in a window Aug 11 11:04:05.922 INFO kablam! line 512: #define ISS_SOUND_MUTE 4096 // sound is switched off Aug 11 11:04:05.922 INFO kablam! line 513: #define ISS_VIEW_OVERRIDE 8192 // override user view Aug 11 11:04:05.922 INFO kablam! line 514: #define ISS_VISIBLE 16384 // InSim buttons visible Aug 11 11:04:05.922 INFO kablam! line 515: #define ISS_TEXT_ENTRY 32768 // in a text entry dialog Aug 11 11:04:05.922 INFO kablam! line 516: Aug 11 11:04:05.922 INFO kablam! line 517: // To request an IS_STA at any time, send this IS_TINY : Aug 11 11:04:05.922 INFO kablam! line 518: Aug 11 11:04:05.922 INFO kablam! line 519: // ReqI : non-zero (returned in the reply) Aug 11 11:04:05.922 INFO kablam! line 520: // SubT : TINY_SST (Send STate) Aug 11 11:04:05.922 INFO kablam! line 521: Aug 11 11:04:05.923 INFO kablam! line 522: // Setting states Aug 11 11:04:05.923 INFO kablam! line 523: Aug 11 11:04:05.923 INFO kablam! line 524: // These states can be set by a special packet : Aug 11 11:04:05.923 INFO kablam! line 525: Aug 11 11:04:05.923 INFO kablam! line 526: // ISS_SHIFTU_NO_OPT - SHIFT+U buttons hidden Aug 11 11:04:05.923 INFO kablam! line 527: // ISS_SHOW_2D - showing 2d display Aug 11 11:04:05.923 INFO kablam! line 528: // ISS_MPSPEEDUP - multiplayer speedup option Aug 11 11:04:05.923 INFO kablam! line 529: // ISS_SOUND_MUTE - sound is switched off Aug 11 11:04:05.923 INFO kablam! line 530: Aug 11 11:04:05.923 INFO kablam! line 531: struct IS_SFP // State Flags Pack Aug 11 11:04:05.923 INFO kablam! line 532: { Aug 11 11:04:05.923 INFO kablam! line 533: byte Size; // 8 Aug 11 11:04:05.923 INFO kablam! line 534: byte Type; // ISP_SFP Aug 11 11:04:05.923 INFO kablam! line 535: byte ReqI; // 0 Aug 11 11:04:05.923 INFO kablam! line 536: byte Zero; Aug 11 11:04:05.923 INFO kablam! line 537: Aug 11 11:04:05.923 INFO kablam! line 538: word Flag; // the state to set Aug 11 11:04:05.923 INFO kablam! line 539: byte OffOn; // 0 = off / 1 = on Aug 11 11:04:05.923 INFO kablam! line 540: byte Sp3; // spare Aug 11 11:04:05.923 INFO kablam! line 541: }; Aug 11 11:04:05.923 INFO kablam! line 542: Aug 11 11:04:05.923 INFO kablam! line 543: // Other states must be set by using keypresses or messages (see below) Aug 11 11:04:05.923 INFO kablam! line 544: Aug 11 11:04:05.923 INFO kablam! line 545: Aug 11 11:04:05.923 INFO kablam! line 546: // SCREEN MODE Aug 11 11:04:05.923 INFO kablam! line 547: // =========== Aug 11 11:04:05.923 INFO kablam! line 548: Aug 11 11:04:05.923 INFO kablam! line 549: // You can send this packet to LFS to set the screen mode : Aug 11 11:04:05.924 INFO kablam! line 550: Aug 11 11:04:05.924 INFO kablam! line 551: struct IS_MOD // MODe : send to LFS to change screen mode Aug 11 11:04:05.924 INFO kablam! line 552: { Aug 11 11:04:05.924 INFO kablam! line 553: byte Size; // 20 Aug 11 11:04:05.924 INFO kablam! line 554: byte Type; // ISP_MOD Aug 11 11:04:05.924 INFO kablam! line 555: byte ReqI; // 0 Aug 11 11:04:05.924 INFO kablam! line 556: byte Zero; Aug 11 11:04:05.924 INFO kablam! line 557: Aug 11 11:04:05.924 INFO kablam! line 558: int Bits16; // set to choose 16-bit Aug 11 11:04:05.924 INFO kablam! line 559: int RR; // refresh rate - zero for default Aug 11 11:04:05.924 INFO kablam! line 560: int Width; // 0 means go to window Aug 11 11:04:05.924 INFO kablam! line 561: int Height; // 0 means go to window Aug 11 11:04:05.924 INFO kablam! line 562: }; Aug 11 11:04:05.924 INFO kablam! line 563: Aug 11 11:04:05.924 INFO kablam! line 564: // The refresh rate actually selected by LFS will be the highest available rate Aug 11 11:04:05.924 INFO kablam! line 565: // that is less than or equal to the specified refresh rate. Refresh rate can Aug 11 11:04:05.924 INFO kablam! line 566: // be specified as zero in which case the default refresh rate will be used. Aug 11 11:04:05.924 INFO kablam! line 567: Aug 11 11:04:05.924 INFO kablam! line 568: // If Width and Height are both zero, LFS will switch to windowed mode. Aug 11 11:04:05.924 INFO kablam! line 569: Aug 11 11:04:05.924 INFO kablam! line 570: Aug 11 11:04:05.924 INFO kablam! line 571: // TEXT MESSAGES AND KEY PRESSES Aug 11 11:04:05.924 INFO kablam! line 572: // ============================== Aug 11 11:04:05.928 INFO kablam! line 573: Aug 11 11:04:05.928 INFO kablam! line 574: // You can send 64-byte text messages to LFS as if the user had typed them in. Aug 11 11:04:05.928 INFO kablam! line 575: // Messages that appear on LFS screen (up to 128 bytes) are reported to the Aug 11 11:04:05.928 INFO kablam! line 576: // external program. You can also send simulated keypresses to LFS. Aug 11 11:04:05.928 INFO kablam! line 577: Aug 11 11:04:05.928 INFO kablam! line 578: // MESSAGES OUT (FROM LFS) Aug 11 11:04:05.928 INFO kablam! line 579: // ------------ Aug 11 11:04:05.928 INFO kablam! line 580: Aug 11 11:04:05.928 INFO kablam! line 581: struct IS_MSO // MSg Out - system messages and user messages - variable size Aug 11 11:04:05.928 INFO kablam! line 582: { Aug 11 11:04:05.928 INFO kablam! line 583: byte Size; // 12, 16, 20... 136 depending on Msg Aug 11 11:04:05.929 INFO kablam! line 584: byte Type; // ISP_MSO Aug 11 11:04:05.929 INFO kablam! line 585: byte ReqI; // 0 Aug 11 11:04:05.929 INFO kablam! line 586: byte Zero; Aug 11 11:04:05.929 INFO kablam! line 587: Aug 11 11:04:05.929 INFO kablam! line 588: byte UCID; // connection's unique id (0 = host) Aug 11 11:04:05.929 INFO kablam! line 589: byte PLID; // player's unique id (if zero, use UCID) Aug 11 11:04:05.929 INFO kablam! line 590: byte UserType; // set if typed by a user (see User Values below) Aug 11 11:04:05.929 INFO kablam! line 591: byte TextStart; // first character of the actual text (after player name) Aug 11 11:04:05.929 INFO kablam! line 592: Aug 11 11:04:05.929 INFO kablam! line 593: char Msg[128]; // 4, 8, 12... 128 characters - last byte is zero Aug 11 11:04:05.929 INFO kablam! line 594: }; Aug 11 11:04:05.929 INFO kablam! line 595: Aug 11 11:04:05.929 INFO kablam! line 596: // User Values (for UserType byte) Aug 11 11:04:05.929 INFO kablam! line 597: Aug 11 11:04:05.929 INFO kablam! line 598: enum Aug 11 11:04:05.929 INFO kablam! line 599: { Aug 11 11:04:05.929 INFO kablam! line 600: MSO_SYSTEM, // 0 - system message Aug 11 11:04:05.929 INFO kablam! line 601: MSO_USER, // 1 - normal visible user message Aug 11 11:04:05.929 INFO kablam! line 602: MSO_PREFIX, // 2 - hidden message starting with special prefix (see ISI) Aug 11 11:04:05.929 INFO kablam! line 603: MSO_O, // 3 - hidden message typed on local pc with /o command Aug 11 11:04:05.929 INFO kablam! line 604: MSO_NUM Aug 11 11:04:05.929 INFO kablam! line 605: }; Aug 11 11:04:05.929 INFO kablam! line 606: Aug 11 11:04:05.929 INFO kablam! line 607: // NOTE : Typing "/o MESSAGE" into LFS will send an IS_MSO with UserType = MSO_O Aug 11 11:04:05.929 INFO kablam! line 608: Aug 11 11:04:05.929 INFO kablam! line 609: struct IS_III // InsIm Info - /i message from user to host's InSim - variable size Aug 11 11:04:05.929 INFO kablam! line 610: { Aug 11 11:04:05.929 INFO kablam! line 611: byte Size; // 12, 16, 20... 72 depending on Msg Aug 11 11:04:05.929 INFO kablam! line 612: byte Type; // ISP_III Aug 11 11:04:05.929 INFO kablam! line 613: byte ReqI; // 0 Aug 11 11:04:05.929 INFO kablam! line 614: byte Zero; Aug 11 11:04:05.930 INFO kablam! line 615: Aug 11 11:04:05.930 INFO kablam! line 616: byte UCID; // connection's unique id (0 = host) Aug 11 11:04:05.930 INFO kablam! line 617: byte PLID; // player's unique id (if zero, use UCID) Aug 11 11:04:05.930 INFO kablam! line 618: byte Sp2; Aug 11 11:04:05.930 INFO kablam! line 619: byte Sp3; Aug 11 11:04:05.930 INFO kablam! line 620: Aug 11 11:04:05.930 INFO kablam! line 621: char Msg[64]; // 4, 8, 12... 64 characters - last byte is zero Aug 11 11:04:05.930 INFO kablam! line 622: }; Aug 11 11:04:05.930 INFO kablam! line 623: Aug 11 11:04:05.930 INFO kablam! line 624: struct IS_ACR // Admin Command Report - a user typed an admin command - variable size Aug 11 11:04:05.930 INFO kablam! line 625: { Aug 11 11:04:05.930 INFO kablam! line 626: byte Size; // 12, 16, 20... 72 depending on Text Aug 11 11:04:05.930 INFO kablam! line 627: byte Type; // ISP_ACR Aug 11 11:04:05.930 INFO kablam! line 628: byte ReqI; // 0 Aug 11 11:04:05.930 INFO kablam! line 629: byte Zero; Aug 11 11:04:05.930 INFO kablam! line 630: Aug 11 11:04:05.930 INFO kablam! line 631: byte UCID; // connection's unique id (0 = host) Aug 11 11:04:05.930 INFO kablam! line 632: byte Admin; // set if user is an admin Aug 11 11:04:05.930 INFO kablam! line 633: byte Result; // 1 - processed / 2 - rejected / 3 - unknown command Aug 11 11:04:05.930 INFO kablam! line 634: byte Sp3; Aug 11 11:04:05.930 INFO kablam! line 635: Aug 11 11:04:05.930 INFO kablam! line 636: char Text[64]; // 4, 8, 12... 64 characters - last byte is zero Aug 11 11:04:05.930 INFO kablam! line 637: }; Aug 11 11:04:05.930 INFO kablam! line 638: Aug 11 11:04:05.930 INFO kablam! line 639: // MESSAGES IN (TO LFS) Aug 11 11:04:05.930 INFO kablam! line 640: // ----------- Aug 11 11:04:05.930 INFO kablam! line 641: Aug 11 11:04:05.930 INFO kablam! line 642: struct IS_MST // MSg Type - send to LFS to type message or command Aug 11 11:04:05.930 INFO kablam! line 643: { Aug 11 11:04:05.930 INFO kablam! line 644: byte Size; // 68 Aug 11 11:04:05.931 INFO kablam! line 645: byte Type; // ISP_MST Aug 11 11:04:05.931 INFO kablam! line 646: byte ReqI; // 0 Aug 11 11:04:05.931 INFO kablam! line 647: byte Zero; Aug 11 11:04:05.931 INFO kablam! line 648: Aug 11 11:04:05.931 INFO kablam! line 649: char Msg[64]; // last byte must be zero Aug 11 11:04:05.931 INFO kablam! line 650: }; Aug 11 11:04:05.931 INFO kablam! line 651: Aug 11 11:04:05.931 INFO kablam! line 652: struct IS_MSX // MSg eXtended - like MST but longer (not for commands) Aug 11 11:04:05.931 INFO kablam! line 653: { Aug 11 11:04:05.931 INFO kablam! line 654: byte Size; // 100 Aug 11 11:04:05.931 INFO kablam! line 655: byte Type; // ISP_MSX Aug 11 11:04:05.931 INFO kablam! line 656: byte ReqI; // 0 Aug 11 11:04:05.931 INFO kablam! line 657: byte Zero; Aug 11 11:04:05.931 INFO kablam! line 658: Aug 11 11:04:05.931 INFO kablam! line 659: char Msg[96]; // last byte must be zero Aug 11 11:04:05.931 INFO kablam! line 660: }; Aug 11 11:04:05.931 INFO kablam! line 661: Aug 11 11:04:05.931 INFO kablam! line 662: struct IS_MSL // MSg Local - message to appear on local computer only Aug 11 11:04:05.931 INFO kablam! line 663: { Aug 11 11:04:05.931 INFO kablam! line 664: byte Size; // 132 Aug 11 11:04:05.931 INFO kablam! line 665: byte Type; // ISP_MSL Aug 11 11:04:05.931 INFO kablam! line 666: byte ReqI; // 0 Aug 11 11:04:05.931 INFO kablam! line 667: byte Sound; // sound effect (see Message Sounds below) Aug 11 11:04:05.931 INFO kablam! line 668: Aug 11 11:04:05.931 INFO kablam! line 669: char Msg[128]; // last byte must be zero Aug 11 11:04:05.931 INFO kablam! line 670: }; Aug 11 11:04:05.931 INFO kablam! line 671: Aug 11 11:04:05.931 INFO kablam! line 672: struct IS_MTC // Msg To Connection - hosts only - send to a connection / a player / all Aug 11 11:04:05.931 INFO kablam! line 673: { Aug 11 11:04:05.931 INFO kablam! line 674: byte Size; // 8 + TEXT_SIZE (TEXT_SIZE = 4, 8, 12... 128) Aug 11 11:04:05.931 INFO kablam! line 675: byte Type; // ISP_MTC Aug 11 11:04:05.931 INFO kablam! line 676: byte ReqI; // 0 Aug 11 11:04:05.932 INFO kablam! line 677: byte Sound; // sound effect (see Message Sounds below) Aug 11 11:04:05.932 INFO kablam! line 678: Aug 11 11:04:05.932 INFO kablam! line 679: byte UCID; // connection's unique id (0 = host / 255 = all) Aug 11 11:04:05.932 INFO kablam! line 680: byte PLID; // player's unique id (if zero, use UCID) Aug 11 11:04:05.932 INFO kablam! line 681: byte Sp2; Aug 11 11:04:05.932 INFO kablam! line 682: byte Sp3; Aug 11 11:04:05.932 INFO kablam! line 683: Aug 11 11:04:05.932 INFO kablam! line 684: // char Text[TEXT_SIZE]; // up to 128 characters of text - last byte must be zero Aug 11 11:04:05.932 INFO kablam! line 685: }; Aug 11 11:04:05.932 INFO kablam! line 686: Aug 11 11:04:05.932 INFO kablam! line 687: // Message Sounds (for Sound byte) Aug 11 11:04:05.932 INFO kablam! line 688: Aug 11 11:04:05.932 INFO kablam! line 689: enum Aug 11 11:04:05.932 INFO kablam! line 690: { Aug 11 11:04:05.932 INFO kablam! line 691: SND_SILENT, Aug 11 11:04:05.932 INFO kablam! line 692: SND_MESSAGE, Aug 11 11:04:05.932 INFO kablam! line 693: SND_SYSMESSAGE, Aug 11 11:04:05.932 INFO kablam! line 694: SND_INVALIDKEY, Aug 11 11:04:05.932 INFO kablam! line 695: SND_ERROR, Aug 11 11:04:05.932 INFO kablam! line 696: SND_NUM Aug 11 11:04:05.932 INFO kablam! line 697: }; Aug 11 11:04:05.932 INFO kablam! line 698: Aug 11 11:04:05.932 INFO kablam! line 699: // You can send individual key presses to LFS with the IS_SCH packet. Aug 11 11:04:05.932 INFO kablam! line 700: // For standard keys (e.g. V and H) you should send a capital letter. Aug 11 11:04:05.932 INFO kablam! line 701: // This does not work with some keys like F keys, arrows or CTRL keys. Aug 11 11:04:05.932 INFO kablam! line 702: // You can also use IS_MST with the /press /shift /ctrl /alt commands. Aug 11 11:04:05.932 INFO kablam! line 703: Aug 11 11:04:05.932 INFO kablam! line 704: struct IS_SCH // Single CHaracter Aug 11 11:04:05.932 INFO kablam! line 705: { Aug 11 11:04:05.933 INFO kablam! line 706: byte Size; // 8 Aug 11 11:04:05.933 INFO kablam! line 707: byte Type; // ISP_SCH Aug 11 11:04:05.933 INFO kablam! line 708: byte ReqI; // 0 Aug 11 11:04:05.933 INFO kablam! line 709: byte Zero; Aug 11 11:04:05.933 INFO kablam! line 710: Aug 11 11:04:05.933 INFO kablam! line 711: byte CharB; // key to press Aug 11 11:04:05.933 INFO kablam! line 712: byte Flags; // bit 0 : SHIFT / bit 1 : CTRL Aug 11 11:04:05.933 INFO kablam! line 713: byte Spare2; Aug 11 11:04:05.933 INFO kablam! line 714: byte Spare3; Aug 11 11:04:05.933 INFO kablam! line 715: }; Aug 11 11:04:05.933 INFO kablam! line 716: Aug 11 11:04:05.933 INFO kablam! line 717: Aug 11 11:04:05.933 INFO kablam! line 718: // CAR SWITCHES Aug 11 11:04:05.933 INFO kablam! line 719: // ============ Aug 11 11:04:05.933 INFO kablam! line 720: Aug 11 11:04:05.933 INFO kablam! line 721: // To operate the local car's lights, horn or siren you can send this IS_SMALL : Aug 11 11:04:05.933 INFO kablam! line 722: Aug 11 11:04:05.933 INFO kablam! line 723: // ReqI : 0 Aug 11 11:04:05.933 INFO kablam! line 724: // SubT : SMALL_LCS (Local Car Switches) Aug 11 11:04:05.933 INFO kablam! line 725: // UVal : Switches (see below) Aug 11 11:04:05.933 INFO kablam! line 726: Aug 11 11:04:05.933 INFO kablam! line 727: // Switches bits Aug 11 11:04:05.933 INFO kablam! line 728: Aug 11 11:04:05.933 INFO kablam! line 729: // Bits 0 to 7 are a set of flags specifying which values to set. You can set as many Aug 11 11:04:05.933 INFO kablam! line 730: // as you like at a time. This is to allow you to set only the values you want to set Aug 11 11:04:05.933 INFO kablam! line 731: // while leaving the others to be controlled by the user. Aug 11 11:04:05.933 INFO kablam! line 732: Aug 11 11:04:05.933 INFO kablam! line 733: #define LCS_SET_SIGNALS 1 // bit 0 Aug 11 11:04:05.933 INFO kablam! line 734: #define LCS_SET_FLASH 2 // bit 1 Aug 11 11:04:05.934 INFO kablam! line 735: #define LCS_SET_HEADLIGHTS 4 // bit 2 Aug 11 11:04:05.934 INFO kablam! line 736: #define LCS_SET_HORN 8 // bit 3 Aug 11 11:04:05.934 INFO kablam! line 737: #define LCS_SET_SIREN 0x10 // bit 4 Aug 11 11:04:05.934 INFO kablam! line 738: Aug 11 11:04:05.934 INFO kablam! line 739: // Depending on the above values, InSim will read some of the following values and try Aug 11 11:04:05.938 INFO kablam! line 740: // to set them as required, if a real player is found on the local computer. Aug 11 11:04:05.938 INFO kablam! line 741: Aug 11 11:04:05.938 INFO kablam! line 742: // bits 8-9 (Switches & 0x0300) - Signal (0 off / 1 left / 2 right / 3 hazard) Aug 11 11:04:05.938 INFO kablam! line 743: // bit 10 (Switches & 0x0400) - Flash Aug 11 11:04:05.938 INFO kablam! line 744: // bit 11 (Switches & 0x0800) - Headlights Aug 11 11:04:05.939 INFO kablam! line 745: Aug 11 11:04:05.939 INFO kablam! line 746: // bits 16-18 (Switches & 0x070000) - Horn (0 off / 1 to 5 horn type) Aug 11 11:04:05.939 INFO kablam! line 747: // bits 20-21 (Switches & 0x300000) - Siren (0 off / 1 fast / 2 slow) Aug 11 11:04:05.939 INFO kablam! line 748: Aug 11 11:04:05.939 INFO kablam! line 749: Aug 11 11:04:05.939 INFO kablam! line 750: // MULTIPLAYER NOTIFICATION Aug 11 11:04:05.939 INFO kablam! line 751: // ======================== Aug 11 11:04:05.939 INFO kablam! line 752: Aug 11 11:04:05.939 INFO kablam! line 753: // LFS will send this packet when a host is started or joined : Aug 11 11:04:05.939 INFO kablam! line 754: Aug 11 11:04:05.939 INFO kablam! line 755: struct IS_ISM // InSim Multi Aug 11 11:04:05.939 INFO kablam! line 756: { Aug 11 11:04:05.939 INFO kablam! line 757: byte Size; // 40 Aug 11 11:04:05.939 INFO kablam! line 758: byte Type; // ISP_ISM Aug 11 11:04:05.939 INFO kablam! line 759: byte ReqI; // usually 0 / or if a reply : ReqI as received in the TINY_ISM Aug 11 11:04:05.939 INFO kablam! line 760: byte Zero; Aug 11 11:04:05.939 INFO kablam! line 761: Aug 11 11:04:05.939 INFO kablam! line 762: byte Host; // 0 = guest / 1 = host Aug 11 11:04:05.939 INFO kablam! line 763: byte Sp1; Aug 11 11:04:05.939 INFO kablam! line 764: byte Sp2; Aug 11 11:04:05.939 INFO kablam! line 765: byte Sp3; Aug 11 11:04:05.939 INFO kablam! line 766: Aug 11 11:04:05.939 INFO kablam! line 767: char HName[32]; // the name of the host joined or started Aug 11 11:04:05.940 INFO kablam! line 768: }; Aug 11 11:04:05.940 INFO kablam! line 769: Aug 11 11:04:05.940 INFO kablam! line 770: // On ending or leaving a host, LFS will send this IS_TINY : Aug 11 11:04:05.940 INFO kablam! line 771: Aug 11 11:04:05.940 INFO kablam! line 772: // ReqI : 0 Aug 11 11:04:05.940 INFO kablam! line 773: // SubT : TINY_MPE (MultiPlayerEnd) Aug 11 11:04:05.940 INFO kablam! line 774: Aug 11 11:04:05.940 INFO kablam! line 775: // To request an IS_ISM packet at any time, send this IS_TINY : Aug 11 11:04:05.940 INFO kablam! line 776: Aug 11 11:04:05.940 INFO kablam! line 777: // ReqI : non-zero (returned in the reply) Aug 11 11:04:05.940 INFO kablam! line 778: // SubT : TINY_ISM (request an IS_ISM) Aug 11 11:04:05.940 INFO kablam! line 779: Aug 11 11:04:05.940 INFO kablam! line 780: // NOTE : If LFS is not in multiplayer mode, the host name in the ISM will be empty. Aug 11 11:04:05.940 INFO kablam! line 781: Aug 11 11:04:05.940 INFO kablam! line 782: Aug 11 11:04:05.940 INFO kablam! line 783: // VOTE NOTIFY AND CANCEL Aug 11 11:04:05.940 INFO kablam! line 784: // ====================== Aug 11 11:04:05.940 INFO kablam! line 785: Aug 11 11:04:05.940 INFO kablam! line 786: // LFS notifies the external program of any votes to restart or qualify Aug 11 11:04:05.940 INFO kablam! line 787: Aug 11 11:04:05.940 INFO kablam! line 788: // The Vote Actions are defined as : Aug 11 11:04:05.940 INFO kablam! line 789: Aug 11 11:04:05.940 INFO kablam! line 790: enum Aug 11 11:04:05.941 INFO kablam! line 791: { Aug 11 11:04:05.941 INFO kablam! line 792: VOTE_NONE, // 0 - no vote Aug 11 11:04:05.941 INFO kablam! line 793: VOTE_END, // 1 - end race Aug 11 11:04:05.941 INFO kablam! line 794: VOTE_RESTART, // 2 - restart Aug 11 11:04:05.941 INFO kablam! line 795: VOTE_QUALIFY, // 3 - qualify Aug 11 11:04:05.941 INFO kablam! line 796: VOTE_NUM Aug 11 11:04:05.941 INFO kablam! line 797: }; Aug 11 11:04:05.941 INFO kablam! line 798: Aug 11 11:04:05.941 INFO kablam! line 799: struct IS_VTN // VoTe Notify Aug 11 11:04:05.941 INFO kablam! line 800: { Aug 11 11:04:05.941 INFO kablam! line 801: byte Size; // 8 Aug 11 11:04:05.941 INFO kablam! line 802: byte Type; // ISP_VTN Aug 11 11:04:05.941 INFO kablam! line 803: byte ReqI; // 0 Aug 11 11:04:05.941 INFO kablam! line 804: byte Zero; Aug 11 11:04:05.941 INFO kablam! line 805: Aug 11 11:04:05.941 INFO kablam! line 806: byte UCID; // connection's unique id Aug 11 11:04:05.941 INFO kablam! line 807: byte Action; // VOTE_X (Vote Action as defined above) Aug 11 11:04:05.941 INFO kablam! line 808: byte Spare2; Aug 11 11:04:05.941 INFO kablam! line 809: byte Spare3; Aug 11 11:04:05.941 INFO kablam! line 810: }; Aug 11 11:04:05.941 INFO kablam! line 811: Aug 11 11:04:05.941 INFO kablam! line 812: // When a vote is cancelled, LFS sends this IS_TINY Aug 11 11:04:05.941 INFO kablam! line 813: Aug 11 11:04:05.941 INFO kablam! line 814: // ReqI : 0 Aug 11 11:04:05.942 INFO kablam! line 815: // SubT : TINY_VTC (VoTe Cancelled) Aug 11 11:04:05.942 INFO kablam! line 816: Aug 11 11:04:05.942 INFO kablam! line 817: // When a vote is completed, LFS sends this IS_SMALL Aug 11 11:04:05.942 INFO kablam! line 818: Aug 11 11:04:05.942 INFO kablam! line 819: // ReqI : 0 Aug 11 11:04:05.942 INFO kablam! line 820: // SubT : SMALL_VTA (VoTe Action) Aug 11 11:04:05.942 INFO kablam! line 821: // UVal : action (VOTE_X - Vote Action as defined above) Aug 11 11:04:05.942 INFO kablam! line 822: Aug 11 11:04:05.942 INFO kablam! line 823: // You can instruct LFS host to cancel a vote using an IS_TINY Aug 11 11:04:05.942 INFO kablam! line 824: Aug 11 11:04:05.942 INFO kablam! line 825: // ReqI : 0 Aug 11 11:04:05.942 INFO kablam! line 826: // SubT : TINY_VTC (VoTe Cancel) Aug 11 11:04:05.942 INFO kablam! line 827: Aug 11 11:04:05.942 INFO kablam! line 828: Aug 11 11:04:05.942 INFO kablam! line 829: // ALLOWED CARS Aug 11 11:04:05.942 INFO kablam! line 830: // ============ Aug 11 11:04:05.942 INFO kablam! line 831: Aug 11 11:04:05.942 INFO kablam! line 832: // To set the allowed cars on the host (like /cars command) you can send this IS_SMALL : Aug 11 11:04:05.942 INFO kablam! line 833: Aug 11 11:04:05.942 INFO kablam! line 834: // ReqI : 0 Aug 11 11:04:05.942 INFO kablam! line 835: // SubT : SMALL_ALC (ALlowed Cars) Aug 11 11:04:05.942 INFO kablam! line 836: // UVal : Cars (see below) Aug 11 11:04:05.942 INFO kablam! line 837: Aug 11 11:04:05.942 INFO kablam! line 838: // To find out the allowed cars at any time (on guest or host) send this IS_TINY : Aug 11 11:04:05.943 INFO kablam! line 839: Aug 11 11:04:05.943 INFO kablam! line 840: // ReqI : non-zero (returned in the reply) Aug 11 11:04:05.943 INFO kablam! line 841: // SubT : TINY_ALC (request a SMALL_ALC) Aug 11 11:04:05.943 INFO kablam! line 842: Aug 11 11:04:05.943 INFO kablam! line 843: // LFS will reply with this IS_SMALL : Aug 11 11:04:05.943 INFO kablam! line 844: Aug 11 11:04:05.943 INFO kablam! line 845: // ReqI : non-zero (as received in the request packet) Aug 11 11:04:05.943 INFO kablam! line 846: // SubT : SMALL_ALC (ALlowed Cars) Aug 11 11:04:05.943 INFO kablam! line 847: // UVal : Cars (see below) Aug 11 11:04:05.943 INFO kablam! line 848: Aug 11 11:04:05.943 INFO kablam! line 849: // You can send a packet to limit the cars that can be used by a given connection Aug 11 11:04:05.943 INFO kablam! line 850: // The resulting set of selectable cars is a subset of the cars set to be available Aug 11 11:04:05.943 INFO kablam! line 851: // on the host (by the /cars command or SMALL_ALC) Aug 11 11:04:05.943 INFO kablam! line 852: Aug 11 11:04:05.943 INFO kablam! line 853: // For example : Aug 11 11:04:05.943 INFO kablam! line 854: // Cars = 0 ... no cars can be selected on the specified connection Aug 11 11:04:05.943 INFO kablam! line 855: // Cars = 0xffffffff ... all the host's available cars can be selected Aug 11 11:04:05.943 INFO kablam! line 856: Aug 11 11:04:05.943 INFO kablam! line 857: struct IS_PLC // PLayer Cars Aug 11 11:04:05.943 INFO kablam! line 858: { Aug 11 11:04:05.943 INFO kablam! line 859: byte Size; // 12 Aug 11 11:04:05.943 INFO kablam! line 860: byte Type; // ISP_PLC Aug 11 11:04:05.944 INFO kablam! line 861: byte ReqI; // 0 Aug 11 11:04:05.944 INFO kablam! line 862: byte Zero; Aug 11 11:04:05.944 INFO kablam! line 863: Aug 11 11:04:05.944 INFO kablam! line 864: byte UCID; // connection's unique id (0 = host / 255 = all) Aug 11 11:04:05.944 INFO kablam! line 865: byte Sp1; Aug 11 11:04:05.944 INFO kablam! line 866: byte Sp2; Aug 11 11:04:05.944 INFO kablam! line 867: byte Sp3; Aug 11 11:04:05.944 INFO kablam! line 868: Aug 11 11:04:05.944 INFO kablam! line 869: unsigned Cars; // allowed cars - see below Aug 11 11:04:05.944 INFO kablam! line 870: }; Aug 11 11:04:05.944 INFO kablam! line 871: Aug 11 11:04:05.944 INFO kablam! line 872: // XF GTI - 1 Aug 11 11:04:05.944 INFO kablam! line 873: // XR GT - 2 Aug 11 11:04:05.944 INFO kablam! line 874: // XR GT TURBO - 4 Aug 11 11:04:05.944 INFO kablam! line 875: // RB4 GT - 8 Aug 11 11:04:05.944 INFO kablam! line 876: // FXO TURBO - 0x10 Aug 11 11:04:05.944 INFO kablam! line 877: // LX4 - 0x20 Aug 11 11:04:05.944 INFO kablam! line 878: // LX6 - 0x40 Aug 11 11:04:05.944 INFO kablam! line 879: // MRT5 - 0x80 Aug 11 11:04:05.944 INFO kablam! line 880: // UF 1000 - 0x100 Aug 11 11:04:05.944 INFO kablam! line 881: // RACEABOUT - 0x200 Aug 11 11:04:05.945 INFO kablam! line 882: // FZ50 - 0x400 Aug 11 11:04:05.945 INFO kablam! line 883: // FORMULA XR - 0x800 Aug 11 11:04:05.945 INFO kablam! line 884: // XF GTR - 0x1000 Aug 11 11:04:05.945 INFO kablam! line 885: // UF GTR - 0x2000 Aug 11 11:04:05.945 INFO kablam! line 886: // FORMULA V8 - 0x4000 Aug 11 11:04:05.945 INFO kablam! line 887: // FXO GTR - 0x8000 Aug 11 11:04:05.945 INFO kablam! line 888: // XR GTR - 0x10000 Aug 11 11:04:05.945 INFO kablam! line 889: // FZ50 GTR - 0x20000 Aug 11 11:04:05.945 INFO kablam! line 890: // BMW SAUBER F1.06 - 0x40000 Aug 11 11:04:05.945 INFO kablam! line 891: // FORMULA BMW FB02 - 0x80000 Aug 11 11:04:05.945 INFO kablam! line 892: Aug 11 11:04:05.945 INFO kablam! line 893: Aug 11 11:04:05.945 INFO kablam! line 894: // HANDICAPS Aug 11 11:04:05.945 INFO kablam! line 895: // ========= Aug 11 11:04:05.945 INFO kablam! line 896: Aug 11 11:04:05.945 INFO kablam! line 897: // You can send a packet to add mass and restrict the intake on each car model Aug 11 11:04:05.945 INFO kablam! line 898: // The same restriction applies to all drivers using a particular car model Aug 11 11:04:05.945 INFO kablam! line 899: // This can be useful for creating multi class hosts Aug 11 11:04:05.945 INFO kablam! line 900: Aug 11 11:04:05.945 INFO kablam! line 901: struct CarHCP // Car handicaps in 2 bytes - there is an array of these in the HCP (below) Aug 11 11:04:05.945 INFO kablam! line 902: { Aug 11 11:04:05.945 INFO kablam! line 903: byte H_Mass; // 0 to 200 - added mass (kg) Aug 11 11:04:05.946 INFO kablam! line 904: byte H_TRes; // 0 to 50 - intake restriction Aug 11 11:04:05.946 INFO kablam! line 905: }; Aug 11 11:04:05.946 INFO kablam! line 906: Aug 11 11:04:05.946 INFO kablam! line 907: struct IS_HCP // HandiCaPs Aug 11 11:04:05.946 INFO kablam! line 908: { Aug 11 11:04:05.946 INFO kablam! line 909: byte Size; // 68 Aug 11 11:04:05.946 INFO kablam! line 910: byte Type; // ISP_HCP Aug 11 11:04:05.946 INFO kablam! line 911: byte ReqI; // 0 Aug 11 11:04:05.946 INFO kablam! line 912: byte Zero; Aug 11 11:04:05.946 INFO kablam! line 913: Aug 11 11:04:05.946 INFO kablam! line 914: CarHCP Info[32]; // H_Mass and H_TRes for each car : XF GTI = 0 / XR GT = 1 etc Aug 11 11:04:05.946 INFO kablam! line 915: }; Aug 11 11:04:05.946 INFO kablam! line 916: Aug 11 11:04:05.946 INFO kablam! line 917: Aug 11 11:04:05.946 INFO kablam! line 918: // RACE TRACKING Aug 11 11:04:05.946 INFO kablam! line 919: // ============= Aug 11 11:04:05.946 INFO kablam! line 920: Aug 11 11:04:05.946 INFO kablam! line 921: // In LFS there is a list of connections AND a list of players in the race Aug 11 11:04:05.946 INFO kablam! line 922: // Some packets are related to connections, some players, some both Aug 11 11:04:05.946 INFO kablam! line 923: Aug 11 11:04:05.946 INFO kablam! line 924: // If you are making a multiplayer InSim program, you must maintain two lists Aug 11 11:04:05.946 INFO kablam! line 925: // You should use the unique identifier UCID to identify a connection Aug 11 11:04:05.953 INFO kablam! line 926: Aug 11 11:04:05.953 INFO kablam! line 927: // Each player has a unique identifier PLID from the moment he joins the race, until he Aug 11 11:04:05.953 INFO kablam! line 928: // leaves. It's not possible for PLID and UCID to be the same thing, for two reasons : Aug 11 11:04:05.953 INFO kablam! line 929: Aug 11 11:04:05.953 INFO kablam! line 930: // 1) there may be more than one player per connection if AI drivers are used Aug 11 11:04:05.953 INFO kablam! line 931: // 2) a player can swap between connections, in the case of a driver swap (IS_TOC) Aug 11 11:04:05.953 INFO kablam! line 932: Aug 11 11:04:05.953 INFO kablam! line 933: // When all players are cleared from race (e.g. /clear) LFS sends this IS_TINY Aug 11 11:04:05.953 INFO kablam! line 934: Aug 11 11:04:05.953 INFO kablam! line 935: // ReqI : 0 Aug 11 11:04:05.953 INFO kablam! line 936: // SubT : TINY_CLR (CLear Race) Aug 11 11:04:05.953 INFO kablam! line 937: Aug 11 11:04:05.953 INFO kablam! line 938: // When a race ends (return to race setup screen) LFS sends this IS_TINY Aug 11 11:04:05.953 INFO kablam! line 939: Aug 11 11:04:05.953 INFO kablam! line 940: // ReqI : 0 Aug 11 11:04:05.953 INFO kablam! line 941: // SubT : TINY_REN (Race ENd) Aug 11 11:04:05.953 INFO kablam! line 942: Aug 11 11:04:05.953 INFO kablam! line 943: // You can instruct LFS host to cancel a vote using an IS_TINY Aug 11 11:04:05.953 INFO kablam! line 944: Aug 11 11:04:05.953 INFO kablam! line 945: // ReqI : 0 Aug 11 11:04:05.953 INFO kablam! line 946: // SubT : TINY_VTC (VoTe Cancel) Aug 11 11:04:05.953 INFO kablam! line 947: Aug 11 11:04:05.953 INFO kablam! line 948: // The following packets are sent when the relevant events take place : Aug 11 11:04:05.953 INFO kablam! line 949: Aug 11 11:04:05.953 INFO kablam! line 950: struct IS_RST // Race STart Aug 11 11:04:05.953 INFO kablam! line 951: { Aug 11 11:04:05.953 INFO kablam! line 952: byte Size; // 28 Aug 11 11:04:05.953 INFO kablam! line 953: byte Type; // ISP_RST Aug 11 11:04:05.953 INFO kablam! line 954: byte ReqI; // 0 unless this is a reply to an TINY_RST request Aug 11 11:04:05.954 INFO kablam! line 955: byte Zero; Aug 11 11:04:05.954 INFO kablam! line 956: Aug 11 11:04:05.954 INFO kablam! line 957: byte RaceLaps; // 0 if qualifying Aug 11 11:04:05.954 INFO kablam! line 958: byte QualMins; // 0 if race Aug 11 11:04:05.954 INFO kablam! line 959: byte NumP; // number of players in race Aug 11 11:04:05.954 INFO kablam! line 960: byte Timing; // lap timing (see below) Aug 11 11:04:05.954 INFO kablam! line 961: Aug 11 11:04:05.954 INFO kablam! line 962: char Track[6]; // short track name Aug 11 11:04:05.954 INFO kablam! line 963: byte Weather; Aug 11 11:04:05.954 INFO kablam! line 964: byte Wind; Aug 11 11:04:05.954 INFO kablam! line 965: Aug 11 11:04:05.954 INFO kablam! line 966: word Flags; // race flags (must pit, can reset, etc - see below) Aug 11 11:04:05.954 INFO kablam! line 967: word NumNodes; // total number of nodes in the path Aug 11 11:04:05.954 INFO kablam! line 968: word Finish; // node index - finish line Aug 11 11:04:05.954 INFO kablam! line 969: word Split1; // node index - split 1 Aug 11 11:04:05.954 INFO kablam! line 970: word Split2; // node index - split 2 Aug 11 11:04:05.954 INFO kablam! line 971: word Split3; // node index - split 3 Aug 11 11:04:05.954 INFO kablam! line 972: }; Aug 11 11:04:05.954 INFO kablam! line 973: Aug 11 11:04:05.954 INFO kablam! line 974: // Lap timing info (for Timing byte) Aug 11 11:04:05.954 INFO kablam! line 975: Aug 11 11:04:05.954 INFO kablam! line 976: // bits 6 and 7 (Timing & 0xc0) : Aug 11 11:04:05.954 INFO kablam! line 977: Aug 11 11:04:05.954 INFO kablam! line 978: // 0x40 : standard lap timing is being used Aug 11 11:04:05.954 INFO kablam! line 979: // 0x80 : custom timing - user checkpoints have been placed Aug 11 11:04:05.954 INFO kablam! line 980: // 0xc0 : no lap timing - e.g. open config with no user checkpoints Aug 11 11:04:05.954 INFO kablam! line 981: Aug 11 11:04:05.954 INFO kablam! line 982: // bits 0 and 1 (Timing & 0x03) : number of checkpoints if lap timing is enabled Aug 11 11:04:05.954 INFO kablam! line 983: Aug 11 11:04:05.954 INFO kablam! line 984: // To request an IS_RST packet at any time, send this IS_TINY : Aug 11 11:04:05.954 INFO kablam! line 985: Aug 11 11:04:05.954 INFO kablam! line 986: // ReqI : non-zero (returned in the reply) Aug 11 11:04:05.954 INFO kablam! line 987: // SubT : TINY_RST (request an IS_RST) Aug 11 11:04:05.954 INFO kablam! line 988: Aug 11 11:04:05.954 INFO kablam! line 989: struct IS_NCN // New ConN Aug 11 11:04:05.954 INFO kablam! line 990: { Aug 11 11:04:05.955 INFO kablam! line 991: byte Size; // 56 Aug 11 11:04:05.955 INFO kablam! line 992: byte Type; // ISP_NCN Aug 11 11:04:05.955 INFO kablam! line 993: byte ReqI; // 0 unless this is a reply to a TINY_NCN request Aug 11 11:04:05.955 INFO kablam! line 994: byte UCID; // new connection's unique id (0 = host) Aug 11 11:04:05.955 INFO kablam! line 995: Aug 11 11:04:05.955 INFO kablam! line 996: char UName[24]; // username Aug 11 11:04:05.955 INFO kablam! line 997: char PName[24]; // nickname Aug 11 11:04:05.955 INFO kablam! line 998: Aug 11 11:04:05.955 INFO kablam! line 999: byte Admin; // 1 if admin Aug 11 11:04:05.955 INFO kablam! line 1000: byte Total; // number of connections including host Aug 11 11:04:05.955 INFO kablam! line 1001: byte Flags; // bit 2 : remote Aug 11 11:04:05.955 INFO kablam! line 1002: byte Sp3; Aug 11 11:04:05.955 INFO kablam! line 1003: }; Aug 11 11:04:05.962 INFO kablam! line 1004: Aug 11 11:04:05.963 INFO kablam! line 1005: struct IS_NCI // New Conn Info - sent on host only if an admin password has been set Aug 11 11:04:05.963 INFO kablam! line 1006: { Aug 11 11:04:05.963 INFO kablam! line 1007: byte Size; // 16 Aug 11 11:04:05.963 INFO kablam! line 1008: byte Type; // ISP_NCI Aug 11 11:04:05.963 INFO kablam! line 1009: byte ReqI; // 0 unless this is a reply to a TINY_NCI request Aug 11 11:04:05.963 INFO kablam! line 1010: byte UCID; // connection's unique id (0 = host) Aug 11 11:04:05.963 INFO kablam! line 1011: Aug 11 11:04:05.963 INFO kablam! line 1012: byte Language; // see below : Languages Aug 11 11:04:05.963 INFO kablam! line 1013: byte Sp1; Aug 11 11:04:05.963 INFO kablam! line 1014: byte Sp2; Aug 11 11:04:05.963 INFO kablam! line 1015: byte Sp3; Aug 11 11:04:05.963 INFO kablam! line 1016: Aug 11 11:04:05.963 INFO kablam! line 1017: unsigned UserID; // LFS UserID Aug 11 11:04:05.963 INFO kablam! line 1018: unsigned IPAddress; Aug 11 11:04:05.963 INFO kablam! line 1019: }; Aug 11 11:04:05.963 INFO kablam! line 1020: Aug 11 11:04:05.963 INFO kablam! line 1021: struct IS_SLC // SeLected Car - sent when a connection selects a car (empty if no car) Aug 11 11:04:05.963 INFO kablam! line 1022: { Aug 11 11:04:05.963 INFO kablam! line 1023: byte Size; // 8 Aug 11 11:04:05.963 INFO kablam! line 1024: byte Type; // ISP_SLC Aug 11 11:04:05.963 INFO kablam! line 1025: byte ReqI; // 0 unless this is a reply to a TINY_SLC request Aug 11 11:04:05.963 INFO kablam! line 1026: byte UCID; // connection's unique id (0 = host) Aug 11 11:04:05.964 INFO kablam! line 1027: Aug 11 11:04:05.964 INFO kablam! line 1028: char CName[4]; // car name Aug 11 11:04:05.964 INFO kablam! line 1029: }; Aug 11 11:04:05.964 INFO kablam! line 1030: Aug 11 11:04:05.964 INFO kablam! line 1031: // NOTE : If a new guest joins and does have a car selected then an IS_SLC will be sent Aug 11 11:04:05.964 INFO kablam! line 1032: Aug 11 11:04:05.964 INFO kablam! line 1033: struct IS_CIM // Conn Interface Mode Aug 11 11:04:05.964 INFO kablam! line 1034: { Aug 11 11:04:05.964 INFO kablam! line 1035: byte Size; // 8 Aug 11 11:04:05.964 INFO kablam! line 1036: byte Type; // ISP_CIM Aug 11 11:04:05.964 INFO kablam! line 1037: byte ReqI; // 0 Aug 11 11:04:05.964 INFO kablam! line 1038: byte UCID; // connection's unique id (0 = local) Aug 11 11:04:05.964 INFO kablam! line 1039: Aug 11 11:04:05.964 INFO kablam! line 1040: byte Mode; // mode identifier (see below) Aug 11 11:04:05.964 INFO kablam! line 1041: byte SubMode; // submode identifier (see below) Aug 11 11:04:05.964 INFO kablam! line 1042: byte SelType; // selected object type (see below) Aug 11 11:04:05.964 INFO kablam! line 1043: byte Sp3; Aug 11 11:04:05.964 INFO kablam! line 1044: }; Aug 11 11:04:05.964 INFO kablam! line 1045: Aug 11 11:04:05.964 INFO kablam! line 1046: // Mode identifiers Aug 11 11:04:05.964 INFO kablam! line 1047: Aug 11 11:04:05.964 INFO kablam! line 1048: enum Aug 11 11:04:05.964 INFO kablam! line 1049: { Aug 11 11:04:05.964 INFO kablam! line 1050: CIM_NORMAL, // 0 - not in a special mode Aug 11 11:04:05.964 INFO kablam! line 1051: CIM_OPTIONS, // 1 Aug 11 11:04:05.964 INFO kablam! line 1052: CIM_HOST_OPTIONS, // 2 Aug 11 11:04:05.964 INFO kablam! line 1053: CIM_GARAGE, // 3 Aug 11 11:04:05.965 INFO kablam! line 1054: CIM_CAR_SELECT, // 4 Aug 11 11:04:05.965 INFO kablam! line 1055: CIM_TRACK_SELECT, // 5 Aug 11 11:04:05.965 INFO kablam! line 1056: CIM_SHIFTU, // 6 - free view mode Aug 11 11:04:05.965 INFO kablam! line 1057: CIM_NUM Aug 11 11:04:05.965 INFO kablam! line 1058: }; Aug 11 11:04:05.965 INFO kablam! line 1059: Aug 11 11:04:05.965 INFO kablam! line 1060: // Submode identifiers for CIM_NORMAL Aug 11 11:04:05.965 INFO kablam! line 1061: Aug 11 11:04:05.965 INFO kablam! line 1062: enum Aug 11 11:04:05.965 INFO kablam! line 1063: { Aug 11 11:04:05.965 INFO kablam! line 1064: NRM_NORMAL, Aug 11 11:04:05.965 INFO kablam! line 1065: NRM_WHEEL_TEMPS, // F9 Aug 11 11:04:05.965 INFO kablam! line 1066: NRM_WHEEL_DAMAGE, // F10 Aug 11 11:04:05.965 INFO kablam! line 1067: NRM_LIVE_SETTINGS, // F11 Aug 11 11:04:05.965 INFO kablam! line 1068: NRM_PIT_INSTRUCTIONS, // F12 Aug 11 11:04:05.965 INFO kablam! line 1069: NRM_NUM Aug 11 11:04:05.965 INFO kablam! line 1070: }; Aug 11 11:04:05.965 INFO kablam! line 1071: Aug 11 11:04:05.965 INFO kablam! line 1072: // SubMode identifiers for CIM_GARAGE Aug 11 11:04:05.965 INFO kablam! line 1073: Aug 11 11:04:05.965 INFO kablam! line 1074: enum Aug 11 11:04:05.965 INFO kablam! line 1075: { Aug 11 11:04:05.965 INFO kablam! line 1076: GRG_INFO, Aug 11 11:04:05.965 INFO kablam! line 1077: GRG_COLOURS, Aug 11 11:04:05.965 INFO kablam! line 1078: GRG_BRAKE_TC, Aug 11 11:04:05.965 INFO kablam! line 1079: GRG_SUSP, Aug 11 11:04:05.965 INFO kablam! line 1080: GRG_STEER, Aug 11 11:04:05.965 INFO kablam! line 1081: GRG_DRIVE, Aug 11 11:04:05.965 INFO kablam! line 1082: GRG_TYRES, Aug 11 11:04:05.966 INFO kablam! line 1083: GRG_AERO, Aug 11 11:04:05.966 INFO kablam! line 1084: GRG_PASS, Aug 11 11:04:05.966 INFO kablam! line 1085: GRG_NUM Aug 11 11:04:05.966 INFO kablam! line 1086: }; Aug 11 11:04:05.966 INFO kablam! line 1087: Aug 11 11:04:05.966 INFO kablam! line 1088: // SubMode identifiers for CIM_SHIFTU Aug 11 11:04:05.966 INFO kablam! line 1089: Aug 11 11:04:05.966 INFO kablam! line 1090: enum Aug 11 11:04:05.966 INFO kablam! line 1091: { Aug 11 11:04:05.966 INFO kablam! line 1092: FVM_PLAIN, // no buttons displayed Aug 11 11:04:05.966 INFO kablam! line 1093: FVM_BUTTONS, // buttons displayed (not editing) Aug 11 11:04:05.966 INFO kablam! line 1094: FVM_EDIT, // edit mode Aug 11 11:04:05.966 INFO kablam! line 1095: FVM_NUM Aug 11 11:04:05.966 INFO kablam! line 1096: }; Aug 11 11:04:05.966 INFO kablam! line 1097: Aug 11 11:04:05.966 INFO kablam! line 1098: // SelType is the selected object type or zero if unselected Aug 11 11:04:05.966 INFO kablam! line 1099: // It may be an AXO_x as in ObjectInfo or one of these : Aug 11 11:04:05.966 INFO kablam! line 1100: Aug 11 11:04:05.966 INFO kablam! line 1101: const int MARSH_IS_CP = 252; // insim checkpoint Aug 11 11:04:05.966 INFO kablam! line 1102: const int MARSH_IS_AREA = 253; // insim circle Aug 11 11:04:05.966 INFO kablam! line 1103: const int MARSH_MARSHALL = 254; // restricted area Aug 11 11:04:05.966 INFO kablam! line 1104: const int MARSH_ROUTE = 255; // route checker Aug 11 11:04:05.966 INFO kablam! line 1105: Aug 11 11:04:05.966 INFO kablam! line 1106: // Aug 11 11:04:05.966 INFO kablam! line 1107: Aug 11 11:04:05.966 INFO kablam! line 1108: struct IS_CNL // ConN Leave Aug 11 11:04:05.966 INFO kablam! line 1109: { Aug 11 11:04:05.966 INFO kablam! line 1110: byte Size; // 8 Aug 11 11:04:05.966 INFO kablam! line 1111: byte Type; // ISP_CNL Aug 11 11:04:05.967 INFO kablam! line 1112: byte ReqI; // 0 Aug 11 11:04:05.967 INFO kablam! line 1113: byte UCID; // unique id of the connection which left Aug 11 11:04:05.967 INFO kablam! line 1114: Aug 11 11:04:05.967 INFO kablam! line 1115: byte Reason; // leave reason (see below) Aug 11 11:04:05.967 INFO kablam! line 1116: byte Total; // number of connections including host Aug 11 11:04:05.967 INFO kablam! line 1117: byte Sp2; Aug 11 11:04:05.967 INFO kablam! line 1118: byte Sp3; Aug 11 11:04:05.967 INFO kablam! line 1119: }; Aug 11 11:04:05.967 INFO kablam! line 1120: Aug 11 11:04:05.967 INFO kablam! line 1121: struct IS_CPR // Conn Player Rename Aug 11 11:04:05.967 INFO kablam! line 1122: { Aug 11 11:04:05.967 INFO kablam! line 1123: byte Size; // 36 Aug 11 11:04:05.967 INFO kablam! line 1124: byte Type; // ISP_CPR Aug 11 11:04:05.967 INFO kablam! line 1125: byte ReqI; // 0 Aug 11 11:04:05.967 INFO kablam! line 1126: byte UCID; // unique id of the connection Aug 11 11:04:05.967 INFO kablam! line 1127: Aug 11 11:04:05.967 INFO kablam! line 1128: char PName[24]; // new name Aug 11 11:04:05.967 INFO kablam! line 1129: char Plate[8]; // number plate - NO ZERO AT END! Aug 11 11:04:05.967 INFO kablam! line 1130: }; Aug 11 11:04:05.967 INFO kablam! line 1131: Aug 11 11:04:05.967 INFO kablam! line 1132: struct IS_NPL // New PLayer joining race (if PLID already exists, then leaving pits) Aug 11 11:04:05.967 INFO kablam! line 1133: { Aug 11 11:04:05.967 INFO kablam! line 1134: byte Size; // 76 Aug 11 11:04:05.967 INFO kablam! line 1135: byte Type; // ISP_NPL Aug 11 11:04:05.967 INFO kablam! line 1136: byte ReqI; // 0 unless this is a reply to an TINY_NPL request Aug 11 11:04:05.967 INFO kablam! line 1137: byte PLID; // player's newly assigned unique id Aug 11 11:04:05.967 INFO kablam! line 1138: Aug 11 11:04:05.967 INFO kablam! line 1139: byte UCID; // connection's unique id Aug 11 11:04:05.967 INFO kablam! line 1140: byte PType; // bit 0 : female / bit 1 : AI / bit 2 : remote Aug 11 11:04:05.967 INFO kablam! line 1141: word Flags; // player flags Aug 11 11:04:05.967 INFO kablam! line 1142: Aug 11 11:04:05.967 INFO kablam! line 1143: char PName[24]; // nickname Aug 11 11:04:05.968 INFO kablam! line 1144: char Plate[8]; // number plate - NO ZERO AT END! Aug 11 11:04:05.968 INFO kablam! line 1145: Aug 11 11:04:05.968 INFO kablam! line 1146: char CName[4]; // car name Aug 11 11:04:05.968 INFO kablam! line 1147: char SName[16]; // skin name - MAX_CAR_TEX_NAME Aug 11 11:04:05.968 INFO kablam! line 1148: byte Tyres[4]; // compounds Aug 11 11:04:05.968 INFO kablam! line 1149: Aug 11 11:04:05.968 INFO kablam! line 1150: byte H_Mass; // added mass (kg) Aug 11 11:04:05.968 INFO kablam! line 1151: byte H_TRes; // intake restriction Aug 11 11:04:05.968 INFO kablam! line 1152: byte Model; // driver model Aug 11 11:04:05.968 INFO kablam! line 1153: byte Pass; // passengers byte Aug 11 11:04:05.968 INFO kablam! line 1154: Aug 11 11:04:05.968 INFO kablam! line 1155: int Spare; Aug 11 11:04:05.968 INFO kablam! line 1156: Aug 11 11:04:05.968 INFO kablam! line 1157: byte SetF; // setup flags (see below) Aug 11 11:04:05.968 INFO kablam! line 1158: byte NumP; // number in race - ZERO if this is a join request Aug 11 11:04:05.968 INFO kablam! line 1159: byte Sp2; Aug 11 11:04:05.968 INFO kablam! line 1160: byte Sp3; Aug 11 11:04:05.968 INFO kablam! line 1161: }; Aug 11 11:04:05.968 INFO kablam! line 1162: Aug 11 11:04:05.968 INFO kablam! line 1163: // NOTE : PType bit 0 (female) is not reported on dedicated host as humans are not loaded Aug 11 11:04:05.968 INFO kablam! line 1164: // You can use the driver model byte instead if required (and to force the use of helmets) Aug 11 11:04:05.968 INFO kablam! line 1165: Aug 11 11:04:05.968 INFO kablam! line 1166: // Setup flags (for SetF byte) Aug 11 11:04:05.968 INFO kablam! line 1167: Aug 11 11:04:05.968 INFO kablam! line 1168: #define SETF_SYMM_WHEELS 1 Aug 11 11:04:05.968 INFO kablam! line 1169: #define SETF_TC_ENABLE 2 Aug 11 11:04:05.968 INFO kablam! line 1170: #define SETF_ABS_ENABLE 4 Aug 11 11:04:05.968 INFO kablam! line 1171: Aug 11 11:04:05.968 INFO kablam! line 1172: // More... Aug 11 11:04:05.968 INFO kablam! line 1173: Aug 11 11:04:05.968 INFO kablam! line 1174: struct IS_PLP // PLayer Pits (go to settings - stays in player list) Aug 11 11:04:05.969 INFO kablam! line 1175: { Aug 11 11:04:05.969 INFO kablam! line 1176: byte Size; // 4 Aug 11 11:04:05.969 INFO kablam! line 1177: byte Type; // ISP_PLP Aug 11 11:04:05.969 INFO kablam! line 1178: byte ReqI; // 0 Aug 11 11:04:05.969 INFO kablam! line 1179: byte PLID; // player's unique id Aug 11 11:04:05.969 INFO kablam! line 1180: }; Aug 11 11:04:05.969 INFO kablam! line 1181: Aug 11 11:04:05.969 INFO kablam! line 1182: struct IS_PLL // PLayer Leave race (spectate - removed from player list) Aug 11 11:04:05.969 INFO kablam! line 1183: { Aug 11 11:04:05.969 INFO kablam! line 1184: byte Size; // 4 Aug 11 11:04:05.969 INFO kablam! line 1185: byte Type; // ISP_PLL Aug 11 11:04:05.969 INFO kablam! line 1186: byte ReqI; // 0 Aug 11 11:04:05.969 INFO kablam! line 1187: byte PLID; // player's unique id Aug 11 11:04:05.969 INFO kablam! line 1188: }; Aug 11 11:04:05.969 INFO kablam! line 1189: Aug 11 11:04:05.969 INFO kablam! line 1190: struct IS_CRS // Car ReSet Aug 11 11:04:05.969 INFO kablam! line 1191: { Aug 11 11:04:05.969 INFO kablam! line 1192: byte Size; // 4 Aug 11 11:04:05.969 INFO kablam! line 1193: byte Type; // ISP_CRS Aug 11 11:04:05.969 INFO kablam! line 1194: byte ReqI; // 0 Aug 11 11:04:05.969 INFO kablam! line 1195: byte PLID; // player's unique id Aug 11 11:04:05.969 INFO kablam! line 1196: }; Aug 11 11:04:05.969 INFO kablam! line 1197: Aug 11 11:04:05.969 INFO kablam! line 1198: struct IS_LAP // LAP time Aug 11 11:04:05.969 INFO kablam! line 1199: { Aug 11 11:04:05.969 INFO kablam! line 1200: byte Size; // 20 Aug 11 11:04:05.969 INFO kablam! line 1201: byte Type; // ISP_LAP Aug 11 11:04:05.969 INFO kablam! line 1202: byte ReqI; // 0 Aug 11 11:04:05.969 INFO kablam! line 1203: byte PLID; // player's unique id Aug 11 11:04:05.970 INFO kablam! line 1204: Aug 11 11:04:05.970 INFO kablam! line 1205: unsigned LTime; // lap time (ms) Aug 11 11:04:05.970 INFO kablam! line 1206: unsigned ETime; // total time (ms) Aug 11 11:04:05.970 INFO kablam! line 1207: Aug 11 11:04:05.970 INFO kablam! line 1208: word LapsDone; // laps completed Aug 11 11:04:05.970 INFO kablam! line 1209: word Flags; // player flags Aug 11 11:04:05.970 INFO kablam! line 1210: Aug 11 11:04:05.970 INFO kablam! line 1211: byte Sp0; Aug 11 11:04:05.970 INFO kablam! line 1212: byte Penalty; // current penalty value (see below) Aug 11 11:04:05.970 INFO kablam! line 1213: byte NumStops; // number of pit stops Aug 11 11:04:05.970 INFO kablam! line 1214: byte Sp3; Aug 11 11:04:05.970 INFO kablam! line 1215: }; Aug 11 11:04:05.970 INFO kablam! line 1216: Aug 11 11:04:05.970 INFO kablam! line 1217: struct IS_SPX // SPlit X time Aug 11 11:04:05.970 INFO kablam! line 1218: { Aug 11 11:04:05.970 INFO kablam! line 1219: byte Size; // 16 Aug 11 11:04:05.970 INFO kablam! line 1220: byte Type; // ISP_SPX Aug 11 11:04:05.970 INFO kablam! line 1221: byte ReqI; // 0 Aug 11 11:04:05.970 INFO kablam! line 1222: byte PLID; // player's unique id Aug 11 11:04:05.970 INFO kablam! line 1223: Aug 11 11:04:05.970 INFO kablam! line 1224: unsigned STime; // split time (ms) Aug 11 11:04:05.970 INFO kablam! line 1225: unsigned ETime; // total time (ms) Aug 11 11:04:05.970 INFO kablam! line 1226: Aug 11 11:04:05.970 INFO kablam! line 1227: byte Split; // split number 1, 2, 3 Aug 11 11:04:05.970 INFO kablam! line 1228: byte Penalty; // current penalty value (see below) Aug 11 11:04:05.971 INFO kablam! line 1229: byte NumStops; // number of pit stops Aug 11 11:04:05.971 INFO kablam! line 1230: byte Sp3; Aug 11 11:04:05.971 INFO kablam! line 1231: }; Aug 11 11:04:05.971 INFO kablam! line 1232: Aug 11 11:04:05.971 INFO kablam! line 1233: struct IS_PIT // PIT stop (stop at pit garage) Aug 11 11:04:05.971 INFO kablam! line 1234: { Aug 11 11:04:05.971 INFO kablam! line 1235: byte Size; // 24 Aug 11 11:04:05.971 INFO kablam! line 1236: byte Type; // ISP_PIT Aug 11 11:04:05.971 INFO kablam! line 1237: byte ReqI; // 0 Aug 11 11:04:05.971 INFO kablam! line 1238: byte PLID; // player's unique id Aug 11 11:04:05.971 INFO kablam! line 1239: Aug 11 11:04:05.971 INFO kablam! line 1240: word LapsDone; // laps completed Aug 11 11:04:05.971 INFO kablam! line 1241: word Flags; // player flags Aug 11 11:04:05.971 INFO kablam! line 1242: Aug 11 11:04:05.971 INFO kablam! line 1243: byte Sp0; Aug 11 11:04:05.971 INFO kablam! line 1244: byte Penalty; // current penalty value (see below) Aug 11 11:04:05.971 INFO kablam! line 1245: byte NumStops; // number of pit stops Aug 11 11:04:05.971 INFO kablam! line 1246: byte Sp3; Aug 11 11:04:05.971 INFO kablam! line 1247: Aug 11 11:04:05.971 INFO kablam! line 1248: byte Tyres[4]; // tyres changed Aug 11 11:04:05.971 INFO kablam! line 1249: Aug 11 11:04:05.971 INFO kablam! line 1250: unsigned Work; // pit work Aug 11 11:04:05.971 INFO kablam! line 1251: unsigned Spare; Aug 11 11:04:05.972 INFO kablam! line 1252: }; Aug 11 11:04:05.972 INFO kablam! line 1253: Aug 11 11:04:05.972 INFO kablam! line 1254: struct IS_PSF // Pit Stop Finished Aug 11 11:04:05.972 INFO kablam! line 1255: { Aug 11 11:04:05.972 INFO kablam! line 1256: byte Size; // 12 Aug 11 11:04:05.972 INFO kablam! line 1257: byte Type; // ISP_PSF Aug 11 11:04:05.972 INFO kablam! line 1258: byte ReqI; // 0 Aug 11 11:04:05.972 INFO kablam! line 1259: byte PLID; // player's unique id Aug 11 11:04:05.972 INFO kablam! line 1260: Aug 11 11:04:05.972 INFO kablam! line 1261: unsigned STime; // stop time (ms) Aug 11 11:04:05.972 INFO kablam! line 1262: unsigned Spare; Aug 11 11:04:05.972 INFO kablam! line 1263: }; Aug 11 11:04:05.972 INFO kablam! line 1264: Aug 11 11:04:05.972 INFO kablam! line 1265: struct IS_PLA // Pit LAne Aug 11 11:04:05.972 INFO kablam! line 1266: { Aug 11 11:04:05.972 INFO kablam! line 1267: byte Size; // 8 Aug 11 11:04:05.972 INFO kablam! line 1268: byte Type; // ISP_PLA Aug 11 11:04:05.972 INFO kablam! line 1269: byte ReqI; // 0 Aug 11 11:04:05.972 INFO kablam! line 1270: byte PLID; // player's unique id Aug 11 11:04:05.972 INFO kablam! line 1271: Aug 11 11:04:05.972 INFO kablam! line 1272: byte Fact; // pit lane fact (see below) Aug 11 11:04:05.972 INFO kablam! line 1273: byte Sp1; Aug 11 11:04:05.972 INFO kablam! line 1274: byte Sp2; Aug 11 11:04:05.972 INFO kablam! line 1275: byte Sp3; Aug 11 11:04:05.973 INFO kablam! line 1276: }; Aug 11 11:04:05.973 INFO kablam! line 1277: Aug 11 11:04:05.973 INFO kablam! line 1278: // IS_CCH : Camera CHange Aug 11 11:04:05.973 INFO kablam! line 1279: Aug 11 11:04:05.973 INFO kablam! line 1280: // To track cameras you need to consider 3 points Aug 11 11:04:05.973 INFO kablam! line 1281: Aug 11 11:04:05.973 INFO kablam! line 1282: // 1) The default camera : VIEW_DRIVER Aug 11 11:04:05.973 INFO kablam! line 1283: // 2) Player flags : CUSTOM_VIEW means VIEW_CUSTOM at start or pit exit Aug 11 11:04:05.973 INFO kablam! line 1284: // 3) IS_CCH : sent when an existing driver changes camera Aug 11 11:04:05.973 INFO kablam! line 1285: Aug 11 11:04:05.973 INFO kablam! line 1286: struct IS_CCH // Camera CHange Aug 11 11:04:05.973 INFO kablam! line 1287: { Aug 11 11:04:05.973 INFO kablam! line 1288: byte Size; // 8 Aug 11 11:04:05.973 INFO kablam! line 1289: byte Type; // ISP_CCH Aug 11 11:04:05.973 INFO kablam! line 1290: byte ReqI; // 0 Aug 11 11:04:05.973 INFO kablam! line 1291: byte PLID; // player's unique id Aug 11 11:04:05.973 INFO kablam! line 1292: Aug 11 11:04:05.973 INFO kablam! line 1293: byte Camera; // view identifier (see below) Aug 11 11:04:05.973 INFO kablam! line 1294: byte Sp1; Aug 11 11:04:05.973 INFO kablam! line 1295: byte Sp2; Aug 11 11:04:05.973 INFO kablam! line 1296: byte Sp3; Aug 11 11:04:05.973 INFO kablam! line 1297: }; Aug 11 11:04:05.973 INFO kablam! line 1298: Aug 11 11:04:05.973 INFO kablam! line 1299: struct IS_PEN // PENalty (given or cleared) Aug 11 11:04:05.973 INFO kablam! line 1300: { Aug 11 11:04:05.973 INFO kablam! line 1301: byte Size; // 8 Aug 11 11:04:05.974 INFO kablam! line 1302: byte Type; // ISP_PEN Aug 11 11:04:05.974 INFO kablam! line 1303: byte ReqI; // 0 Aug 11 11:04:05.974 INFO kablam! line 1304: byte PLID; // player's unique id Aug 11 11:04:05.974 INFO kablam! line 1305: Aug 11 11:04:05.974 INFO kablam! line 1306: byte OldPen; // old penalty value (see below) Aug 11 11:04:05.974 INFO kablam! line 1307: byte NewPen; // new penalty value (see below) Aug 11 11:04:05.974 INFO kablam! line 1308: byte Reason; // penalty reason (see below) Aug 11 11:04:05.974 INFO kablam! line 1309: byte Sp3; Aug 11 11:04:05.974 INFO kablam! line 1310: }; Aug 11 11:04:05.974 INFO kablam! line 1311: Aug 11 11:04:05.974 INFO kablam! line 1312: struct IS_TOC // Take Over Car Aug 11 11:04:05.974 INFO kablam! line 1313: { Aug 11 11:04:05.974 INFO kablam! line 1314: byte Size; // 8 Aug 11 11:04:05.974 INFO kablam! line 1315: byte Type; // ISP_TOC Aug 11 11:04:05.974 INFO kablam! line 1316: byte ReqI; // 0 Aug 11 11:04:05.974 INFO kablam! line 1317: byte PLID; // player's unique id Aug 11 11:04:05.974 INFO kablam! line 1318: Aug 11 11:04:05.974 INFO kablam! line 1319: byte OldUCID; // old connection's unique id Aug 11 11:04:05.974 INFO kablam! line 1320: byte NewUCID; // new connection's unique id Aug 11 11:04:05.974 INFO kablam! line 1321: byte Sp2; Aug 11 11:04:05.974 INFO kablam! line 1322: byte Sp3; Aug 11 11:04:05.974 INFO kablam! line 1323: }; Aug 11 11:04:05.974 INFO kablam! line 1324: Aug 11 11:04:05.974 INFO kablam! line 1325: struct IS_FLG // FLaG (yellow or blue flag changed) Aug 11 11:04:05.974 INFO kablam! line 1326: { Aug 11 11:04:05.974 INFO kablam! line 1327: byte Size; // 8 Aug 11 11:04:05.974 INFO kablam! line 1328: byte Type; // ISP_FLG Aug 11 11:04:05.974 INFO kablam! line 1329: byte ReqI; // 0 Aug 11 11:04:05.975 INFO kablam! line 1330: byte PLID; // player's unique id Aug 11 11:04:05.975 INFO kablam! line 1331: Aug 11 11:04:05.975 INFO kablam! line 1332: byte OffOn; // 0 = off / 1 = on Aug 11 11:04:05.975 INFO kablam! line 1333: byte Flag; // 1 = given blue / 2 = causing yellow Aug 11 11:04:05.975 INFO kablam! line 1334: byte CarBehind; // unique id of obstructed player Aug 11 11:04:05.975 INFO kablam! line 1335: byte Sp3; Aug 11 11:04:05.975 INFO kablam! line 1336: }; Aug 11 11:04:05.975 INFO kablam! line 1337: Aug 11 11:04:05.975 INFO kablam! line 1338: struct IS_PFL // Player FLags (help flags changed) Aug 11 11:04:05.975 INFO kablam! line 1339: { Aug 11 11:04:05.976 INFO kablam! line 1340: byte Size; // 8 Aug 11 11:04:05.976 INFO kablam! line 1341: byte Type; // ISP_PFL Aug 11 11:04:05.980 INFO kablam! line 1342: byte ReqI; // 0 Aug 11 11:04:05.980 INFO kablam! line 1343: byte PLID; // player's unique id Aug 11 11:04:05.980 INFO kablam! line 1344: Aug 11 11:04:05.980 INFO kablam! line 1345: word Flags; // player flags (see below) Aug 11 11:04:05.980 INFO kablam! line 1346: word Spare; Aug 11 11:04:05.980 INFO kablam! line 1347: }; Aug 11 11:04:05.980 INFO kablam! line 1348: Aug 11 11:04:05.980 INFO kablam! line 1349: struct IS_FIN // FINished race notification (not a final result - use IS_RES) Aug 11 11:04:05.980 INFO kablam! line 1350: { Aug 11 11:04:05.980 INFO kablam! line 1351: byte Size; // 20 Aug 11 11:04:05.980 INFO kablam! line 1352: byte Type; // ISP_FIN Aug 11 11:04:05.980 INFO kablam! line 1353: byte ReqI; // 0 Aug 11 11:04:05.980 INFO kablam! line 1354: byte PLID; // player's unique id (0 = player left before result was sent) Aug 11 11:04:05.980 INFO kablam! line 1355: Aug 11 11:04:05.981 INFO kablam! line 1356: unsigned TTime; // race time (ms) Aug 11 11:04:05.981 INFO kablam! line 1357: unsigned BTime; // best lap (ms) Aug 11 11:04:05.981 INFO kablam! line 1358: Aug 11 11:04:05.981 INFO kablam! line 1359: byte SpA; Aug 11 11:04:05.981 INFO kablam! line 1360: byte NumStops; // number of pit stops Aug 11 11:04:05.981 INFO kablam! line 1361: byte Confirm; // confirmation flags : disqualified etc - see below Aug 11 11:04:05.981 INFO kablam! line 1362: byte SpB; Aug 11 11:04:05.981 INFO kablam! line 1363: Aug 11 11:04:05.981 INFO kablam! line 1364: word LapsDone; // laps completed Aug 11 11:04:05.981 INFO kablam! line 1365: word Flags; // player flags : help settings etc - see below Aug 11 11:04:05.981 INFO kablam! line 1366: }; Aug 11 11:04:05.981 INFO kablam! line 1367: Aug 11 11:04:05.981 INFO kablam! line 1368: struct IS_RES // RESult (qualify or confirmed finish) Aug 11 11:04:05.981 INFO kablam! line 1369: { Aug 11 11:04:05.981 INFO kablam! line 1370: byte Size; // 84 Aug 11 11:04:05.981 INFO kablam! line 1371: byte Type; // ISP_RES Aug 11 11:04:05.981 INFO kablam! line 1372: byte ReqI; // 0 unless this is a reply to a TINY_RES request Aug 11 11:04:05.981 INFO kablam! line 1373: byte PLID; // player's unique id (0 = player left before result was sent) Aug 11 11:04:05.981 INFO kablam! line 1374: Aug 11 11:04:05.981 INFO kablam! line 1375: char UName[24]; // username Aug 11 11:04:05.981 INFO kablam! line 1376: char PName[24]; // nickname Aug 11 11:04:05.981 INFO kablam! line 1377: char Plate[8]; // number plate - NO ZERO AT END! Aug 11 11:04:05.981 INFO kablam! line 1378: char CName[4]; // skin prefix Aug 11 11:04:05.982 INFO kablam! line 1379: Aug 11 11:04:05.982 INFO kablam! line 1380: unsigned TTime; // race time (ms) Aug 11 11:04:05.982 INFO kablam! line 1381: unsigned BTime; // best lap (ms) Aug 11 11:04:05.982 INFO kablam! line 1382: Aug 11 11:04:05.982 INFO kablam! line 1383: byte SpA; Aug 11 11:04:05.982 INFO kablam! line 1384: byte NumStops; // number of pit stops Aug 11 11:04:05.982 INFO kablam! line 1385: byte Confirm; // confirmation flags : disqualified etc - see below Aug 11 11:04:05.982 INFO kablam! line 1386: byte SpB; Aug 11 11:04:05.982 INFO kablam! line 1387: Aug 11 11:04:05.982 INFO kablam! line 1388: word LapsDone; // laps completed Aug 11 11:04:05.982 INFO kablam! line 1389: word Flags; // player flags : help settings etc - see below Aug 11 11:04:05.982 INFO kablam! line 1390: Aug 11 11:04:05.982 INFO kablam! line 1391: byte ResultNum; // finish or qualify pos (0 = win / 255 = not added to table) Aug 11 11:04:05.982 INFO kablam! line 1392: byte NumRes; // total number of results (qualify doesn't always add a new one) Aug 11 11:04:05.982 INFO kablam! line 1393: word PSeconds; // penalty time in seconds (already included in race time) Aug 11 11:04:05.982 INFO kablam! line 1394: }; Aug 11 11:04:05.982 INFO kablam! line 1395: Aug 11 11:04:05.982 INFO kablam! line 1396: // IS_REO : REOrder - this packet can be sent in either direction Aug 11 11:04:05.982 INFO kablam! line 1397: Aug 11 11:04:05.982 INFO kablam! line 1398: // LFS sends one at the start of every race or qualifying session, listing the start order Aug 11 11:04:05.982 INFO kablam! line 1399: Aug 11 11:04:05.982 INFO kablam! line 1400: // You can send one to LFS in two different ways, to specify the starting order : Aug 11 11:04:05.982 INFO kablam! line 1401: // 1) In the race setup screen, to immediately rearrange the grid when the packet arrives Aug 11 11:04:05.983 INFO kablam! line 1402: // 2) In game, just before a restart or exit, to specify the order on the restart or exit Aug 11 11:04:05.983 INFO kablam! line 1403: // If you are sending an IS_REO in game, you should send it when you receive the SMALL_VTA Aug 11 11:04:05.983 INFO kablam! line 1404: // informing you that the Vote Action (VOTE_END / VOTE_RESTART / VOTE_QUALIFY) is about Aug 11 11:04:05.983 INFO kablam! line 1405: // to take place. Any IS_REO received before the SMALL_VTA is sent will be ignored. Aug 11 11:04:05.983 INFO kablam! line 1406: Aug 11 11:04:05.983 INFO kablam! line 1407: struct IS_REO // REOrder (when race restarts after qualifying) Aug 11 11:04:05.983 INFO kablam! line 1408: { Aug 11 11:04:05.983 INFO kablam! line 1409: byte Size; // 44 Aug 11 11:04:05.983 INFO kablam! line 1410: byte Type; // ISP_REO Aug 11 11:04:05.983 INFO kablam! line 1411: byte ReqI; // 0 unless this is a reply to an TINY_REO request Aug 11 11:04:05.983 INFO kablam! line 1412: byte NumP; // number of players in race Aug 11 11:04:05.983 INFO kablam! line 1413: Aug 11 11:04:05.983 INFO kablam! line 1414: byte PLID[40]; // all PLIDs in new order Aug 11 11:04:05.983 INFO kablam! line 1415: }; Aug 11 11:04:05.983 INFO kablam! line 1416: Aug 11 11:04:05.983 INFO kablam! line 1417: // To request an IS_REO packet at any time, send this IS_TINY : Aug 11 11:04:05.983 INFO kablam! line 1418: Aug 11 11:04:05.983 INFO kablam! line 1419: // ReqI : non-zero (returned in the reply) Aug 11 11:04:05.983 INFO kablam! line 1420: // SubT : TINY_REO (request an IS_REO) Aug 11 11:04:05.983 INFO kablam! line 1421: Aug 11 11:04:05.983 INFO kablam! line 1422: // Pit Lane Facts Aug 11 11:04:05.984 INFO kablam! line 1423: Aug 11 11:04:05.984 INFO kablam! line 1424: enum Aug 11 11:04:05.984 INFO kablam! line 1425: { Aug 11 11:04:05.984 INFO kablam! line 1426: PITLANE_EXIT, // 0 - left pit lane Aug 11 11:04:05.984 INFO kablam! line 1427: PITLANE_ENTER, // 1 - entered pit lane Aug 11 11:04:05.984 INFO kablam! line 1428: PITLANE_NO_PURPOSE, // 2 - entered for no purpose Aug 11 11:04:05.984 INFO kablam! line 1429: PITLANE_DT, // 3 - entered for drive-through Aug 11 11:04:05.984 INFO kablam! line 1430: PITLANE_SG, // 4 - entered for stop-go Aug 11 11:04:05.984 INFO kablam! line 1431: PITLANE_NUM Aug 11 11:04:05.984 INFO kablam! line 1432: }; Aug 11 11:04:05.984 INFO kablam! line 1433: Aug 11 11:04:05.984 INFO kablam! line 1434: // Pit Work Flags Aug 11 11:04:05.984 INFO kablam! line 1435: Aug 11 11:04:05.984 INFO kablam! line 1436: enum Aug 11 11:04:05.984 INFO kablam! line 1437: { Aug 11 11:04:05.984 INFO kablam! line 1438: PSE_NOTHING, // bit 0 (1) Aug 11 11:04:05.984 INFO kablam! line 1439: PSE_STOP, // bit 1 (2) Aug 11 11:04:05.984 INFO kablam! line 1440: PSE_FR_DAM, // bit 2 (4) Aug 11 11:04:05.984 INFO kablam! line 1441: PSE_FR_WHL, // etc... Aug 11 11:04:05.984 INFO kablam! line 1442: PSE_LE_FR_DAM, Aug 11 11:04:05.984 INFO kablam! line 1443: PSE_LE_FR_WHL, Aug 11 11:04:05.984 INFO kablam! line 1444: PSE_RI_FR_DAM, Aug 11 11:04:05.985 INFO kablam! line 1445: PSE_RI_FR_WHL, Aug 11 11:04:05.985 INFO kablam! line 1446: PSE_RE_DAM, Aug 11 11:04:05.985 INFO kablam! line 1447: PSE_RE_WHL, Aug 11 11:04:05.985 INFO kablam! line 1448: PSE_LE_RE_DAM, Aug 11 11:04:05.985 INFO kablam! line 1449: PSE_LE_RE_WHL, Aug 11 11:04:05.985 INFO kablam! line 1450: PSE_RI_RE_DAM, Aug 11 11:04:05.985 INFO kablam! line 1451: PSE_RI_RE_WHL, Aug 11 11:04:05.985 INFO kablam! line 1452: PSE_BODY_MINOR, Aug 11 11:04:05.985 INFO kablam! line 1453: PSE_BODY_MAJOR, Aug 11 11:04:05.985 INFO kablam! line 1454: PSE_SETUP, Aug 11 11:04:05.985 INFO kablam! line 1455: PSE_REFUEL, Aug 11 11:04:05.985 INFO kablam! line 1456: PSE_NUM Aug 11 11:04:05.985 INFO kablam! line 1457: }; Aug 11 11:04:05.985 INFO kablam! line 1458: Aug 11 11:04:05.985 INFO kablam! line 1459: // View identifiers Aug 11 11:04:05.985 INFO kablam! line 1460: Aug 11 11:04:05.985 INFO kablam! line 1461: enum Aug 11 11:04:05.985 INFO kablam! line 1462: { Aug 11 11:04:05.985 INFO kablam! line 1463: VIEW_FOLLOW, // 0 - arcade Aug 11 11:04:05.985 INFO kablam! line 1464: VIEW_HELI, // 1 - helicopter Aug 11 11:04:05.985 INFO kablam! line 1465: VIEW_CAM, // 2 - tv camera Aug 11 11:04:05.986 INFO kablam! line 1466: VIEW_DRIVER, // 3 - cockpit Aug 11 11:04:05.986 INFO kablam! line 1467: VIEW_CUSTOM, // 4 - custom Aug 11 11:04:05.986 INFO kablam! line 1468: VIEW_MAX Aug 11 11:04:05.986 INFO kablam! line 1469: }; Aug 11 11:04:05.986 INFO kablam! line 1470: Aug 11 11:04:05.986 INFO kablam! line 1471: const int VIEW_ANOTHER = 255; // viewing another car Aug 11 11:04:05.986 INFO kablam! line 1472: Aug 11 11:04:05.986 INFO kablam! line 1473: // Languages Aug 11 11:04:05.986 INFO kablam! line 1474: Aug 11 11:04:05.986 INFO kablam! line 1475: enum Aug 11 11:04:05.986 INFO kablam! line 1476: { Aug 11 11:04:05.986 INFO kablam! line 1477: LFS_ENGLISH, // 0 Aug 11 11:04:05.986 INFO kablam! line 1478: LFS_DEUTSCH, // 1 Aug 11 11:04:05.986 INFO kablam! line 1479: LFS_PORTUGUESE, // 2 Aug 11 11:04:05.986 INFO kablam! line 1480: LFS_FRENCH, // 3 Aug 11 11:04:05.986 INFO kablam! line 1481: LFS_SUOMI, // 4 Aug 11 11:04:05.986 INFO kablam! line 1482: LFS_NORSK, // 5 Aug 11 11:04:05.986 INFO kablam! line 1483: LFS_NEDERLANDS, // 6 Aug 11 11:04:05.986 INFO kablam! line 1484: LFS_CATALAN, // 7 Aug 11 11:04:05.986 INFO kablam! line 1485: LFS_TURKISH, // 8 Aug 11 11:04:05.986 INFO kablam! line 1486: LFS_CASTELLANO, // 9 Aug 11 11:04:05.986 INFO kablam! line 1487: LFS_ITALIANO, // 10 Aug 11 11:04:05.986 INFO kablam! line 1488: LFS_DANSK, // 11 Aug 11 11:04:05.987 INFO kablam! line 1489: LFS_CZECH, // 12 Aug 11 11:04:05.987 INFO kablam! line 1490: LFS_RUSSIAN, // 13 Aug 11 11:04:05.987 INFO kablam! line 1491: LFS_ESTONIAN, // 14 Aug 11 11:04:05.987 INFO kablam! line 1492: LFS_SERBIAN, // 15 Aug 11 11:04:05.987 INFO kablam! line 1493: LFS_GREEK, // 16 Aug 11 11:04:05.987 INFO kablam! line 1494: LFS_POLSKI, // 17 Aug 11 11:04:05.987 INFO kablam! line 1495: LFS_CROATIAN, // 18 Aug 11 11:04:05.987 INFO kablam! line 1496: LFS_HUNGARIAN, // 19 Aug 11 11:04:05.987 INFO kablam! line 1497: LFS_BRAZILIAN, // 20 Aug 11 11:04:05.987 INFO kablam! line 1498: LFS_SWEDISH, // 21 Aug 11 11:04:05.987 INFO kablam! line 1499: LFS_SLOVAK, // 22 Aug 11 11:04:05.987 INFO kablam! line 1500: LFS_GALEGO, // 23 Aug 11 11:04:05.987 INFO kablam! line 1501: LFS_SLOVENSKI, // 24 Aug 11 11:04:05.987 INFO kablam! line 1502: LFS_BELARUSSIAN, // 25 Aug 11 11:04:05.987 INFO kablam! line 1503: LFS_LATVIAN, // 26 Aug 11 11:04:05.987 INFO kablam! line 1504: LFS_LITHUANIAN, // 27 Aug 11 11:04:05.987 INFO kablam! line 1505: LFS_TRADITIONAL_CHINESE, // 28 Aug 11 11:04:05.987 INFO kablam! line 1506: LFS_SIMPLIFIED_CHINESE, // 29 Aug 11 11:04:05.987 INFO kablam! line 1507: LFS_JAPANESE, // 30 Aug 11 11:04:05.987 INFO kablam! line 1508: LFS_KOREAN, // 31 Aug 11 11:04:05.987 INFO kablam! line 1509: LFS_BULGARIAN, // 32 Aug 11 11:04:05.987 INFO kablam! line 1510: LFS_LATINO, // 33 Aug 11 11:04:05.987 INFO kablam! line 1511: LFS_UKRAINIAN, // 34 Aug 11 11:04:05.988 INFO kablam! line 1512: LFS_INDONESIAN, // 35 Aug 11 11:04:05.988 INFO kablam! line 1513: LFS_ROMANIAN, // 36 Aug 11 11:04:05.988 INFO kablam! line 1514: LFS_NUM_LANG // 37 Aug 11 11:04:05.988 INFO kablam! line 1515: }; Aug 11 11:04:05.988 INFO kablam! line 1516: Aug 11 11:04:05.988 INFO kablam! line 1517: // Leave reasons Aug 11 11:04:05.988 INFO kablam! line 1518: Aug 11 11:04:05.988 INFO kablam! line 1519: enum Aug 11 11:04:05.988 INFO kablam! line 1520: { Aug 11 11:04:05.988 INFO kablam! line 1521: LEAVR_DISCO, // 0 - none Aug 11 11:04:05.988 INFO kablam! line 1522: LEAVR_TIMEOUT, // 1 - timed out Aug 11 11:04:05.988 INFO kablam! line 1523: LEAVR_LOSTCONN, // 2 - lost connection Aug 11 11:04:05.988 INFO kablam! line 1524: LEAVR_KICKED, // 3 - kicked Aug 11 11:04:05.988 INFO kablam! line 1525: LEAVR_BANNED, // 4 - banned Aug 11 11:04:05.988 INFO kablam! line 1526: LEAVR_SECURITY, // 5 - security Aug 11 11:04:05.988 INFO kablam! line 1527: LEAVR_CPW, // 6 - cheat protection wrong Aug 11 11:04:05.988 INFO kablam! line 1528: LEAVR_OOS, // 7 - out of sync with host Aug 11 11:04:05.988 INFO kablam! line 1529: LEAVR_JOOS, // 8 - join OOS (initial sync failed) Aug 11 11:04:05.988 INFO kablam! line 1530: LEAVR_HACK, // 9 - invalid packet Aug 11 11:04:05.988 INFO kablam! line 1531: LEAVR_NUM Aug 11 11:04:05.988 INFO kablam! line 1532: }; Aug 11 11:04:05.988 INFO kablam! line 1533: Aug 11 11:04:05.989 INFO kablam! line 1534: // Penalty values (VALID means the penalty can now be cleared) Aug 11 11:04:05.989 INFO kablam! line 1535: Aug 11 11:04:05.989 INFO kablam! line 1536: enum Aug 11 11:04:05.989 INFO kablam! line 1537: { Aug 11 11:04:05.989 INFO kablam! line 1538: PENALTY_NONE, // 0 Aug 11 11:04:05.989 INFO kablam! line 1539: PENALTY_DT, // 1 Aug 11 11:04:05.989 INFO kablam! line 1540: PENALTY_DT_VALID, // 2 Aug 11 11:04:05.989 INFO kablam! line 1541: PENALTY_SG, // 3 Aug 11 11:04:05.989 INFO kablam! line 1542: PENALTY_SG_VALID, // 4 Aug 11 11:04:05.989 INFO kablam! line 1543: PENALTY_30, // 5 Aug 11 11:04:05.989 INFO kablam! line 1544: PENALTY_45, // 6 Aug 11 11:04:05.989 INFO kablam! line 1545: PENALTY_NUM Aug 11 11:04:05.989 INFO kablam! line 1546: }; Aug 11 11:04:05.989 INFO kablam! line 1547: Aug 11 11:04:05.989 INFO kablam! line 1548: // Penalty reasons Aug 11 11:04:05.989 INFO kablam! line 1549: Aug 11 11:04:05.989 INFO kablam! line 1550: enum Aug 11 11:04:05.989 INFO kablam! line 1551: { Aug 11 11:04:05.989 INFO kablam! line 1552: PENR_UNKNOWN, // 0 - unknown or cleared penalty Aug 11 11:04:05.989 INFO kablam! line 1553: PENR_ADMIN, // 1 - penalty given by admin Aug 11 11:04:05.989 INFO kablam! line 1554: PENR_WRONG_WAY, // 2 - wrong way driving Aug 11 11:04:05.989 INFO kablam! line 1555: PENR_FALSE_START, // 3 - starting before green light Aug 11 11:04:05.989 INFO kablam! line 1556: PENR_SPEEDING, // 4 - speeding in pit lane Aug 11 11:04:05.990 INFO kablam! line 1557: PENR_STOP_SHORT, // 5 - stop-go pit stop too short Aug 11 11:04:05.990 INFO kablam! line 1558: PENR_STOP_LATE, // 6 - compulsory stop is too late Aug 11 11:04:05.990 INFO kablam! line 1559: PENR_NUM Aug 11 11:04:05.990 INFO kablam! line 1560: }; Aug 11 11:04:05.990 INFO kablam! line 1561: Aug 11 11:04:05.990 INFO kablam! line 1562: // Player flags Aug 11 11:04:05.990 INFO kablam! line 1563: Aug 11 11:04:05.990 INFO kablam! line 1564: #define PIF_SWAPSIDE 1 Aug 11 11:04:05.990 INFO kablam! line 1565: #define PIF_RESERVED_2 2 Aug 11 11:04:05.990 INFO kablam! line 1566: #define PIF_RESERVED_4 4 Aug 11 11:04:05.990 INFO kablam! line 1567: #define PIF_AUTOGEARS 8 Aug 11 11:04:05.990 INFO kablam! line 1568: #define PIF_SHIFTER 16 Aug 11 11:04:05.990 INFO kablam! line 1569: #define PIF_RESERVED_32 32 Aug 11 11:04:05.990 INFO kablam! line 1570: #define PIF_HELP_B 64 Aug 11 11:04:05.990 INFO kablam! line 1571: #define PIF_AXIS_CLUTCH 128 Aug 11 11:04:05.990 INFO kablam! line 1572: #define PIF_INPITS 256 Aug 11 11:04:05.990 INFO kablam! line 1573: #define PIF_AUTOCLUTCH 512 Aug 11 11:04:05.990 INFO kablam! line 1574: #define PIF_MOUSE 1024 Aug 11 11:04:05.990 INFO kablam! line 1575: #define PIF_KB_NO_HELP 2048 Aug 11 11:04:05.990 INFO kablam! line 1576: #define PIF_KB_STABILISED 4096 Aug 11 11:04:05.990 INFO kablam! line 1577: #define PIF_CUSTOM_VIEW 8192 Aug 11 11:04:05.990 INFO kablam! line 1578: Aug 11 11:04:05.990 INFO kablam! line 1579: // Tyre compounds (4 byte order : rear L, rear R, front L, front R) Aug 11 11:04:05.990 INFO kablam! line 1580: Aug 11 11:04:05.990 INFO kablam! line 1581: enum Aug 11 11:04:05.990 INFO kablam! line 1582: { Aug 11 11:04:05.991 INFO kablam! line 1583: TYRE_R1, // 0 Aug 11 11:04:05.991 INFO kablam! line 1584: TYRE_R2, // 1 Aug 11 11:04:05.991 INFO kablam! line 1585: TYRE_R3, // 2 Aug 11 11:04:05.991 INFO kablam! line 1586: TYRE_R4, // 3 Aug 11 11:04:05.991 INFO kablam! line 1587: TYRE_ROAD_SUPER, // 4 Aug 11 11:04:05.991 INFO kablam! line 1588: TYRE_ROAD_NORMAL, // 5 Aug 11 11:04:05.991 INFO kablam! line 1589: TYRE_HYBRID, // 6 Aug 11 11:04:05.991 INFO kablam! line 1590: TYRE_KNOBBLY, // 7 Aug 11 11:04:05.991 INFO kablam! line 1591: TYRE_NUM Aug 11 11:04:05.991 INFO kablam! line 1592: }; Aug 11 11:04:05.991 INFO kablam! line 1593: Aug 11 11:04:05.991 INFO kablam! line 1594: const int NOT_CHANGED = 255; Aug 11 11:04:05.991 INFO kablam! line 1595: Aug 11 11:04:05.991 INFO kablam! line 1596: // Confirmation flags Aug 11 11:04:05.991 INFO kablam! line 1597: Aug 11 11:04:05.991 INFO kablam! line 1598: #define CONF_MENTIONED 1 Aug 11 11:04:05.991 INFO kablam! line 1599: #define CONF_CONFIRMED 2 Aug 11 11:04:05.991 INFO kablam! line 1600: #define CONF_PENALTY_DT 4 Aug 11 11:04:05.991 INFO kablam! line 1601: #define CONF_PENALTY_SG 8 Aug 11 11:04:05.991 INFO kablam! line 1602: #define CONF_PENALTY_30 16 Aug 11 11:04:05.991 INFO kablam! line 1603: #define CONF_PENALTY_45 32 Aug 11 11:04:05.991 INFO kablam! line 1604: #define CONF_DID_NOT_PIT 64 Aug 11 11:04:05.991 INFO kablam! line 1605: Aug 11 11:04:05.991 INFO kablam! line 1606: #define CONF_DISQ (CONF_PENALTY_DT | CONF_PENALTY_SG | CONF_DID_NOT_PIT) Aug 11 11:04:05.991 INFO kablam! line 1607: #define CONF_TIME (CONF_PENALTY_30 | CONF_PENALTY_45) Aug 11 11:04:05.992 INFO kablam! line 1608: Aug 11 11:04:05.992 INFO kablam! line 1609: // Race flags Aug 11 11:04:05.992 INFO kablam! line 1610: Aug 11 11:04:05.992 INFO kablam! line 1611: // HOSTF_CAN_VOTE 1 Aug 11 11:04:05.992 INFO kablam! line 1612: // HOSTF_CAN_SELECT 2 Aug 11 11:04:05.992 INFO kablam! line 1613: // HOSTF_MID_RACE 32 Aug 11 11:04:05.992 INFO kablam! line 1614: // HOSTF_MUST_PIT 64 Aug 11 11:04:05.992 INFO kablam! line 1615: // HOSTF_CAN_RESET 128 Aug 11 11:04:05.992 INFO kablam! line 1616: // HOSTF_FCV 256 Aug 11 11:04:05.992 INFO kablam! line 1617: // HOSTF_CRUISE 512 Aug 11 11:04:05.992 INFO kablam! line 1618: Aug 11 11:04:05.992 INFO kablam! line 1619: // Passengers byte Aug 11 11:04:05.992 INFO kablam! line 1620: Aug 11 11:04:05.992 INFO kablam! line 1621: // bit 0 female Aug 11 11:04:05.992 INFO kablam! line 1622: // bit 1 front Aug 11 11:04:05.992 INFO kablam! line 1623: // bit 2 female Aug 11 11:04:05.992 INFO kablam! line 1624: // bit 3 rear left Aug 11 11:04:05.992 INFO kablam! line 1625: // bit 4 female Aug 11 11:04:05.992 INFO kablam! line 1626: // bit 5 rear middle Aug 11 11:04:05.992 INFO kablam! line 1627: // bit 6 female Aug 11 11:04:05.993 INFO kablam! line 1628: // bit 7 rear right Aug 11 11:04:05.993 INFO kablam! line 1629: Aug 11 11:04:05.993 INFO kablam! line 1630: Aug 11 11:04:05.993 INFO kablam! line 1631: // TRACKING PACKET REQUESTS Aug 11 11:04:05.993 INFO kablam! line 1632: // ======================== Aug 11 11:04:05.993 INFO kablam! line 1633: Aug 11 11:04:05.993 INFO kablam! line 1634: // To request players, connections, results or a single NLP or MCI, send an IS_TINY Aug 11 11:04:05.993 INFO kablam! line 1635: Aug 11 11:04:05.993 INFO kablam! line 1636: // In each case, ReqI must be non-zero, and will be returned in the reply packet Aug 11 11:04:05.993 INFO kablam! line 1637: Aug 11 11:04:05.993 INFO kablam! line 1638: // SubT : TINT_NCN - request all connections Aug 11 11:04:05.993 INFO kablam! line 1639: // SubT : TINY_NPL - request all players Aug 11 11:04:05.993 INFO kablam! line 1640: // SubT : TINY_RES - request all results Aug 11 11:04:05.993 INFO kablam! line 1641: // SubT : TINY_NLP - request a single IS_NLP Aug 11 11:04:05.993 INFO kablam! line 1642: // SubT : TINY_MCI - request a set of IS_MCI Aug 11 11:04:05.993 INFO kablam! line 1643: Aug 11 11:04:05.993 INFO kablam! line 1644: Aug 11 11:04:05.993 INFO kablam! line 1645: // OBJECT INFO - for autocross objects - used in some packets and the layout file Aug 11 11:04:05.993 INFO kablam! line 1646: // =========== Aug 11 11:04:05.993 INFO kablam! line 1647: Aug 11 11:04:05.993 INFO kablam! line 1648: struct ObjectInfo // Info about a single object - explained in the layout file format Aug 11 11:04:05.994 INFO kablam! line 1649: { Aug 11 11:04:05.994 INFO kablam! line 1650: short X; Aug 11 11:04:05.994 INFO kablam! line 1651: short Y; Aug 11 11:04:05.994 INFO kablam! line 1652: Aug 11 11:04:05.994 INFO kablam! line 1653: byte Zbyte; Aug 11 11:04:05.994 INFO kablam! line 1654: byte Flags; Aug 11 11:04:05.994 INFO kablam! line 1655: byte Index; Aug 11 11:04:05.994 INFO kablam! line 1656: byte Heading; Aug 11 11:04:05.994 INFO kablam! line 1657: }; Aug 11 11:04:05.994 INFO kablam! line 1658: Aug 11 11:04:05.994 INFO kablam! line 1659: Aug 11 11:04:05.994 INFO kablam! line 1660: // JOIN REQUEST - allows external program to decide if a player can join Aug 11 11:04:05.994 INFO kablam! line 1661: // ============ Aug 11 11:04:05.994 INFO kablam! line 1662: Aug 11 11:04:05.994 INFO kablam! line 1663: // Set the ISF_REQ_JOIN flag in the IS_ISI to receive join requests Aug 11 11:04:05.994 INFO kablam! line 1664: // A join request is seen as an IS_NPL packet with ZERO in the NumP field Aug 11 11:04:05.994 INFO kablam! line 1665: // An immediate response (e.g. within 1 second) is required using an IS_JRR packet Aug 11 11:04:05.994 INFO kablam! line 1666: Aug 11 11:04:05.994 INFO kablam! line 1667: // In this case, PLID must be zero and JRRAction must be JRR_REJECT or JRR_SPAWN Aug 11 11:04:05.994 INFO kablam! line 1668: // If you allow the join and it is successful you will then get a normal IS_NPL with NumP set Aug 11 11:04:05.994 INFO kablam! line 1669: // You can also specify the start position of the car using the StartPos structure Aug 11 11:04:05.994 INFO kablam! line 1670: Aug 11 11:04:05.995 INFO kablam! line 1671: // IS_JRR can also be used to move an existing car to a different location Aug 11 11:04:05.995 INFO kablam! line 1672: // In this case, PLID must be set, JRRAction must be JRR_RESET or higher and StartPos must be set Aug 11 11:04:05.995 INFO kablam! line 1673: Aug 11 11:04:05.995 INFO kablam! line 1674: struct IS_JRR // Join Request Reply - send one of these back to LFS in response to a join request Aug 11 11:04:05.995 INFO kablam! line 1675: { Aug 11 11:04:05.995 INFO kablam! line 1676: byte Size; // 16 Aug 11 11:04:05.995 INFO kablam! line 1677: byte Type; // ISP_JRR Aug 11 11:04:05.995 INFO kablam! line 1678: byte ReqI; // 0 Aug 11 11:04:05.995 INFO kablam! line 1679: byte PLID; // ZERO when this is a reply to a join request - SET to move a car Aug 11 11:04:05.995 INFO kablam! line 1680: Aug 11 11:04:05.995 INFO kablam! line 1681: byte UCID; // set when this is a reply to a join request - ignored when moving a car Aug 11 11:04:05.995 INFO kablam! line 1682: byte JRRAction; // 1 - allow / 0 - reject (should send message to user) Aug 11 11:04:05.995 INFO kablam! line 1683: byte Sp2; Aug 11 11:04:05.995 INFO kablam! line 1684: byte Sp3; Aug 11 11:04:05.995 INFO kablam! line 1685: Aug 11 11:04:05.995 INFO kablam! line 1686: ObjectInfo StartPos; // 0 : use default start point / Flags = 0x80 : set start point Aug 11 11:04:05.995 INFO kablam! line 1687: }; Aug 11 11:04:05.995 INFO kablam! line 1688: Aug 11 11:04:05.995 INFO kablam! line 1689: // To use default start point, StartPos should be filled with zero values Aug 11 11:04:05.995 INFO kablam! line 1690: Aug 11 11:04:05.995 INFO kablam! line 1691: // To specify a start point, StartPos X, Y, Zbyte and Heading should be filled like an autocross Aug 11 11:04:05.996 INFO kablam! line 1692: // start position, Flags should be 0x80 and Index should be zero Aug 11 11:04:05.996 INFO kablam! line 1693: Aug 11 11:04:05.996 INFO kablam! line 1694: // Values for JRRAction byte Aug 11 11:04:05.996 INFO kablam! line 1695: Aug 11 11:04:05.996 INFO kablam! line 1696: enum Aug 11 11:04:05.996 INFO kablam! line 1697: { Aug 11 11:04:05.996 INFO kablam! line 1698: JRR_REJECT, Aug 11 11:04:05.996 INFO kablam! line 1699: JRR_SPAWN, Aug 11 11:04:05.996 INFO kablam! line 1700: JRR_2, Aug 11 11:04:05.996 INFO kablam! line 1701: JRR_3, Aug 11 11:04:05.996 INFO kablam! line 1702: JRR_RESET, Aug 11 11:04:05.996 INFO kablam! line 1703: JRR_RESET_NO_REPAIR, Aug 11 11:04:05.996 INFO kablam! line 1704: JRR_6, Aug 11 11:04:05.996 INFO kablam! line 1705: JRR_7, Aug 11 11:04:05.996 INFO kablam! line 1706: }; Aug 11 11:04:05.996 INFO kablam! line 1707: Aug 11 11:04:05.996 INFO kablam! line 1708: Aug 11 11:04:05.996 INFO kablam! line 1709: // AUTOCROSS Aug 11 11:04:05.996 INFO kablam! line 1710: // ========= Aug 11 11:04:05.996 INFO kablam! line 1711: Aug 11 11:04:05.996 INFO kablam! line 1712: // When all objects are cleared from a layout, LFS sends this IS_TINY : Aug 11 11:04:05.997 INFO kablam! line 1713: Aug 11 11:04:05.997 INFO kablam! line 1714: // ReqI : 0 Aug 11 11:04:05.997 INFO kablam! line 1715: // SubT : TINY_AXC (AutoX Cleared) Aug 11 11:04:05.997 INFO kablam! line 1716: Aug 11 11:04:05.997 INFO kablam! line 1717: // You can request information about the current layout with this IS_TINY : Aug 11 11:04:05.997 INFO kablam! line 1718: Aug 11 11:04:05.997 INFO kablam! line 1719: // ReqI : non-zero (returned in the reply) Aug 11 11:04:05.997 INFO kablam! line 1720: // SubT : TINY_AXI (AutoX Info) Aug 11 11:04:05.997 INFO kablam! line 1721: Aug 11 11:04:05.997 INFO kablam! line 1722: // The information will be sent back in this packet (also sent when a layout is loaded) : Aug 11 11:04:05.997 INFO kablam! line 1723: Aug 11 11:04:05.997 INFO kablam! line 1724: struct IS_AXI // AutoX Info Aug 11 11:04:05.997 INFO kablam! line 1725: { Aug 11 11:04:05.997 INFO kablam! line 1726: byte Size; // 40 Aug 11 11:04:05.997 INFO kablam! line 1727: byte Type; // ISP_AXI Aug 11 11:04:05.997 INFO kablam! line 1728: byte ReqI; // 0 unless this is a reply to an TINY_AXI request Aug 11 11:04:05.997 INFO kablam! line 1729: byte Zero; Aug 11 11:04:05.997 INFO kablam! line 1730: Aug 11 11:04:05.997 INFO kablam! line 1731: byte AXStart; // autocross start position Aug 11 11:04:05.997 INFO kablam! line 1732: byte NumCP; // number of checkpoints Aug 11 11:04:05.997 INFO kablam! line 1733: word NumO; // number of objects Aug 11 11:04:05.997 INFO kablam! line 1734: Aug 11 11:04:05.998 INFO kablam! line 1735: char LName[32]; // the name of the layout last loaded (if loaded locally) Aug 11 11:04:05.998 INFO kablam! line 1736: }; Aug 11 11:04:05.998 INFO kablam! line 1737: Aug 11 11:04:05.998 INFO kablam! line 1738: // On false start or wrong route / restricted area, an IS_PEN packet is sent : Aug 11 11:04:05.998 INFO kablam! line 1739: Aug 11 11:04:05.998 INFO kablam! line 1740: // False start : OldPen = 0 / NewPen = PENALTY_30 / Reason = PENR_FALSE_START Aug 11 11:04:05.998 INFO kablam! line 1741: // Wrong route : OldPen = 0 / NewPen = PENALTY_45 / Reason = PENR_WRONG_WAY Aug 11 11:04:05.998 INFO kablam! line 1742: Aug 11 11:04:05.998 INFO kablam! line 1743: // If an autocross object is hit (2 second time penalty) this packet is sent : Aug 11 11:04:05.998 INFO kablam! line 1744: Aug 11 11:04:05.998 INFO kablam! line 1745: struct IS_AXO // AutoX Object Aug 11 11:04:05.998 INFO kablam! line 1746: { Aug 11 11:04:05.998 INFO kablam! line 1747: byte Size; // 4 Aug 11 11:04:05.998 INFO kablam! line 1748: byte Type; // ISP_AXO Aug 11 11:04:05.998 INFO kablam! line 1749: byte ReqI; // 0 Aug 11 11:04:05.999 INFO kablam! line 1750: byte PLID; // player's unique id Aug 11 11:04:05.999 INFO kablam! line 1751: }; Aug 11 11:04:05.999 INFO kablam! line 1752: Aug 11 11:04:05.999 INFO kablam! line 1753: Aug 11 11:04:05.999 INFO kablam! line 1754: // CAR TRACKING - car position info sent at constant intervals Aug 11 11:04:05.999 INFO kablam! line 1755: // ============ Aug 11 11:04:05.999 INFO kablam! line 1756: Aug 11 11:04:06.000 INFO kablam! line 1757: // IS_NLP - compact, all cars in 1 variable sized packet Aug 11 11:04:06.000 INFO kablam! line 1758: // IS_MCI - detailed, max 8 cars per variable sized packet Aug 11 11:04:06.000 INFO kablam! line 1759: Aug 11 11:04:06.000 INFO kablam! line 1760: // To receive IS_NLP or IS_MCI packets at a specified interval : Aug 11 11:04:06.000 INFO kablam! line 1761: Aug 11 11:04:06.000 INFO kablam! line 1762: // 1) Set the Interval field in the IS_ISI (InSimInit) packet (40, 50, 60... 8000 ms) Aug 11 11:04:06.000 INFO kablam! line 1763: // 2) Set one of the flags ISF_NLP or ISF_MCI in the IS_ISI packet Aug 11 11:04:06.000 INFO kablam! line 1764: Aug 11 11:04:06.000 INFO kablam! line 1765: // If ISF_NLP flag is set, one IS_NLP packet is sent... Aug 11 11:04:06.000 INFO kablam! line 1766: Aug 11 11:04:06.000 INFO kablam! line 1767: struct NodeLap // Car info in 6 bytes - there is an array of these in the NLP (below) Aug 11 11:04:06.000 INFO kablam! line 1768: { Aug 11 11:04:06.000 INFO kablam! line 1769: word Node; // current path node Aug 11 11:04:06.000 INFO kablam! line 1770: word Lap; // current lap Aug 11 11:04:06.000 INFO kablam! line 1771: byte PLID; // player's unique id Aug 11 11:04:06.000 INFO kablam! line 1772: byte Position; // current race position : 0 = unknown, 1 = leader, etc... Aug 11 11:04:06.000 INFO kablam! line 1773: }; Aug 11 11:04:06.000 INFO kablam! line 1774: Aug 11 11:04:06.000 INFO kablam! line 1775: struct IS_NLP // Node and Lap Packet - variable size Aug 11 11:04:06.000 INFO kablam! line 1776: { Aug 11 11:04:06.000 INFO kablam! line 1777: byte Size; // 4 + NumP * 6 (PLUS 2 if needed to make it a multiple of 4) Aug 11 11:04:06.001 INFO kablam! line 1778: byte Type; // ISP_NLP Aug 11 11:04:06.001 INFO kablam! line 1779: byte ReqI; // 0 unless this is a reply to an TINY_NLP request Aug 11 11:04:06.001 INFO kablam! line 1780: byte NumP; // number of players in race Aug 11 11:04:06.001 INFO kablam! line 1781: Aug 11 11:04:06.001 INFO kablam! line 1782: NodeLap Info[40]; // node and lap of each player, 1 to 40 of these (NumP) Aug 11 11:04:06.001 INFO kablam! line 1783: }; Aug 11 11:04:06.001 INFO kablam! line 1784: Aug 11 11:04:06.001 INFO kablam! line 1785: // If ISF_MCI flag is set, a set of IS_MCI packets is sent... Aug 11 11:04:06.001 INFO kablam! line 1786: Aug 11 11:04:06.001 INFO kablam! line 1787: struct CompCar // Car info in 28 bytes - there is an array of these in the MCI (below) Aug 11 11:04:06.001 INFO kablam! line 1788: { Aug 11 11:04:06.001 INFO kablam! line 1789: word Node; // current path node Aug 11 11:04:06.001 INFO kablam! line 1790: word Lap; // current lap Aug 11 11:04:06.001 INFO kablam! line 1791: byte PLID; // player's unique id Aug 11 11:04:06.001 INFO kablam! line 1792: byte Position; // current race position : 0 = unknown, 1 = leader, etc... Aug 11 11:04:06.001 INFO kablam! line 1793: byte Info; // flags and other info - see below Aug 11 11:04:06.001 INFO kablam! line 1794: byte Sp3; Aug 11 11:04:06.001 INFO kablam! line 1795: int X; // X map (65536 = 1 metre) Aug 11 11:04:06.001 INFO kablam! line 1796: int Y; // Y map (65536 = 1 metre) Aug 11 11:04:06.001 INFO kablam! line 1797: int Z; // Z alt (65536 = 1 metre) Aug 11 11:04:06.001 INFO kablam! line 1798: word Speed; // speed (32768 = 100 m/s) Aug 11 11:04:06.001 INFO kablam! line 1799: word Direction; // car's motion if Speed > 0 : 0 = world y direction, 32768 = 180 deg Aug 11 11:04:06.002 INFO kablam! line 1800: word Heading; // direction of forward axis : 0 = world y direction, 32768 = 180 deg Aug 11 11:04:06.002 INFO kablam! line 1801: short AngVel; // signed, rate of change of heading : (16384 = 360 deg/s) Aug 11 11:04:06.002 INFO kablam! line 1802: }; Aug 11 11:04:06.002 INFO kablam! line 1803: Aug 11 11:04:06.002 INFO kablam! line 1804: // NOTE 1) Info byte - the bits in this byte have the following meanings : Aug 11 11:04:06.002 INFO kablam! line 1805: Aug 11 11:04:06.002 INFO kablam! line 1806: #define CCI_BLUE 1 // this car is in the way of a driver who is a lap ahead Aug 11 11:04:06.002 INFO kablam! line 1807: #define CCI_YELLOW 2 // this car is slow or stopped and in a dangerous place Aug 11 11:04:06.002 INFO kablam! line 1808: Aug 11 11:04:06.002 INFO kablam! line 1809: #define CCI_LAG 32 // this car is lagging (missing or delayed position packets) Aug 11 11:04:06.002 INFO kablam! line 1810: Aug 11 11:04:06.002 INFO kablam! line 1811: #define CCI_FIRST 64 // this is the first compcar in this set of MCI packets Aug 11 11:04:06.002 INFO kablam! line 1812: #define CCI_LAST 128 // this is the last compcar in this set of MCI packets Aug 11 11:04:06.002 INFO kablam! line 1813: Aug 11 11:04:06.002 INFO kablam! line 1814: // NOTE 2) Heading : 0 = world y axis direction, 32768 = 180 degrees, anticlockwise from above Aug 11 11:04:06.002 INFO kablam! line 1815: // NOTE 3) AngVel : 0 = no change in heading, 8192 = 180 degrees per second anticlockwise Aug 11 11:04:06.002 INFO kablam! line 1816: Aug 11 11:04:06.002 INFO kablam! line 1817: struct IS_MCI // Multi Car Info - if more than 8 in race then more than one of these is sent Aug 11 11:04:06.002 INFO kablam! line 1818: { Aug 11 11:04:06.002 INFO kablam! line 1819: byte Size; // 4 + NumC * 28 Aug 11 11:04:06.002 INFO kablam! line 1820: byte Type; // ISP_MCI Aug 11 11:04:06.002 INFO kablam! line 1821: byte ReqI; // 0 unless this is a reply to an TINY_MCI request Aug 11 11:04:06.003 INFO kablam! line 1822: byte NumC; // number of valid CompCar structs in this packet Aug 11 11:04:06.003 INFO kablam! line 1823: Aug 11 11:04:06.003 INFO kablam! line 1824: CompCar Info[8]; // car info for each player, 1 to 8 of these (NumC) Aug 11 11:04:06.003 INFO kablam! line 1825: }; Aug 11 11:04:06.003 INFO kablam! line 1826: Aug 11 11:04:06.003 INFO kablam! line 1827: // You can change the rate of NLP or MCI after initialisation by sending this IS_SMALL : Aug 11 11:04:06.003 INFO kablam! line 1828: Aug 11 11:04:06.003 INFO kablam! line 1829: // ReqI : 0 Aug 11 11:04:06.003 INFO kablam! line 1830: // SubT : SMALL_NLI (Node Lap Interval) Aug 11 11:04:06.003 INFO kablam! line 1831: // UVal : interval (0 means stop, otherwise time interval : 40, 50, 60... 8000 ms) Aug 11 11:04:06.003 INFO kablam! line 1832: Aug 11 11:04:06.003 INFO kablam! line 1833: Aug 11 11:04:06.003 INFO kablam! line 1834: // CONTACT - reports contacts between two cars if the closing speed is above 0.25 m/s Aug 11 11:04:06.003 INFO kablam! line 1835: // ======= Aug 11 11:04:06.003 INFO kablam! line 1836: Aug 11 11:04:06.003 INFO kablam! line 1837: // Set the ISF_CON flag in the IS_ISI to receive car contact reports Aug 11 11:04:06.003 INFO kablam! line 1838: Aug 11 11:04:06.003 INFO kablam! line 1839: struct CarContact // 16 bytes : one car in a contact - two of these in the IS_CON (below) Aug 11 11:04:06.003 INFO kablam! line 1840: { Aug 11 11:04:06.003 INFO kablam! line 1841: byte PLID; Aug 11 11:04:06.003 INFO kablam! line 1842: byte Info; // like Info byte in CompCar (CCI_BLUE / CCI_YELLOW / CCI_LAG) Aug 11 11:04:06.004 INFO kablam! line 1843: byte Sp2; // spare Aug 11 11:04:06.004 INFO kablam! line 1844: char Steer; // front wheel steer in degrees (right positive) Aug 11 11:04:06.004 INFO kablam! line 1845: Aug 11 11:04:06.004 INFO kablam! line 1846: byte ThrBrk; // high 4 bits : throttle / low 4 bits : brake (0 to 15) Aug 11 11:04:06.004 INFO kablam! line 1847: byte CluHan; // high 4 bits : clutch / low 4 bits : handbrake (0 to 15) Aug 11 11:04:06.004 INFO kablam! line 1848: byte GearSp; // high 4 bits : gear (15=R) / low 4 bits : spare Aug 11 11:04:06.004 INFO kablam! line 1849: byte Speed; // m/s Aug 11 11:04:06.004 INFO kablam! line 1850: Aug 11 11:04:06.004 INFO kablam! line 1851: byte Direction; // car's motion if Speed > 0 : 0 = world y direction, 128 = 180 deg Aug 11 11:04:06.004 INFO kablam! line 1852: byte Heading; // direction of forward axis : 0 = world y direction, 128 = 180 deg Aug 11 11:04:06.004 INFO kablam! line 1853: char AccelF; // m/s^2 longitudinal acceleration (forward positive) Aug 11 11:04:06.004 INFO kablam! line 1854: char AccelR; // m/s^2 lateral acceleration (right positive) Aug 11 11:04:06.004 INFO kablam! line 1855: Aug 11 11:04:06.004 INFO kablam! line 1856: short X; // position (1 metre = 16) Aug 11 11:04:06.004 INFO kablam! line 1857: short Y; // position (1 metre = 16) Aug 11 11:04:06.004 INFO kablam! line 1858: }; Aug 11 11:04:06.004 INFO kablam! line 1859: Aug 11 11:04:06.004 INFO kablam! line 1860: struct IS_CON // CONtact - between two cars (A and B are sorted by PLID) Aug 11 11:04:06.005 INFO kablam! line 1861: { Aug 11 11:04:06.005 INFO kablam! line 1862: byte Size; // 40 Aug 11 11:04:06.005 INFO kablam! line 1863: byte Type; // ISP_CON Aug 11 11:04:06.005 INFO kablam! line 1864: byte ReqI; // 0 Aug 11 11:04:06.005 INFO kablam! line 1865: byte Zero; Aug 11 11:04:06.005 INFO kablam! line 1866: Aug 11 11:04:06.005 INFO kablam! line 1867: word SpClose; // high 4 bits : reserved / low 12 bits : closing speed (10 = 1 m/s) Aug 11 11:04:06.005 INFO kablam! line 1868: word Time; // looping time stamp (hundredths - time since reset - like TINY_GTH) Aug 11 11:04:06.005 INFO kablam! line 1869: Aug 11 11:04:06.005 INFO kablam! line 1870: CarContact A; Aug 11 11:04:06.005 INFO kablam! line 1871: CarContact B; Aug 11 11:04:06.005 INFO kablam! line 1872: }; Aug 11 11:04:06.005 INFO kablam! line 1873: Aug 11 11:04:06.005 INFO kablam! line 1874: // Set the ISF_OBH flag in the IS_ISI to receive object contact reports Aug 11 11:04:06.005 INFO kablam! line 1875: Aug 11 11:04:06.005 INFO kablam! line 1876: struct CarContOBJ // 8 bytes : car in a contact with an object Aug 11 11:04:06.005 INFO kablam! line 1877: { Aug 11 11:04:06.005 INFO kablam! line 1878: byte Direction; // car's motion if Speed > 0 : 0 = world y direction, 128 = 180 deg Aug 11 11:04:06.006 INFO kablam! line 1879: byte Heading; // direction of forward axis : 0 = world y direction, 128 = 180 deg Aug 11 11:04:06.006 INFO kablam! line 1880: byte Speed; // m/s Aug 11 11:04:06.006 INFO kablam! line 1881: byte Zbyte; Aug 11 11:04:06.006 INFO kablam! line 1882: Aug 11 11:04:06.006 INFO kablam! line 1883: short X; // position (1 metre = 16) Aug 11 11:04:06.006 INFO kablam! line 1884: short Y; // position (1 metre = 16) Aug 11 11:04:06.006 INFO kablam! line 1885: }; Aug 11 11:04:06.006 INFO kablam! line 1886: Aug 11 11:04:06.006 INFO kablam! line 1887: struct IS_OBH // OBject Hit - car hit an autocross object or an unknown object Aug 11 11:04:06.006 INFO kablam! line 1888: { Aug 11 11:04:06.006 INFO kablam! line 1889: byte Size; // 24 Aug 11 11:04:06.006 INFO kablam! line 1890: byte Type; // ISP_OBH Aug 11 11:04:06.006 INFO kablam! line 1891: byte ReqI; // 0 Aug 11 11:04:06.006 INFO kablam! line 1892: byte PLID; // player's unique id Aug 11 11:04:06.006 INFO kablam! line 1893: Aug 11 11:04:06.006 INFO kablam! line 1894: word SpClose; // high 4 bits : reserved / low 12 bits : closing speed (10 = 1 m/s) Aug 11 11:04:06.006 INFO kablam! line 1895: word Time; // looping time stamp (hundredths - time since reset - like TINY_GTH) Aug 11 11:04:06.006 INFO kablam! line 1896: Aug 11 11:04:06.006 INFO kablam! line 1897: CarContOBJ C; Aug 11 11:04:06.006 INFO kablam! line 1898: Aug 11 11:04:06.006 INFO kablam! line 1899: short X; // as in ObjectInfo Aug 11 11:04:06.006 INFO kablam! line 1900: short Y; // as in ObjectInfo Aug 11 11:04:06.007 INFO kablam! line 1901: Aug 11 11:04:06.007 INFO kablam! line 1902: byte Zbyte; // if OBH_LAYOUT is set : Zbyte as in ObjectInfo Aug 11 11:04:06.007 INFO kablam! line 1903: byte Sp1; Aug 11 11:04:06.007 INFO kablam! line 1904: byte Index; // AXO_x as in ObjectInfo or zero if it is an unknown object Aug 11 11:04:06.007 INFO kablam! line 1905: byte OBHFlags; // see below Aug 11 11:04:06.007 INFO kablam! line 1906: }; Aug 11 11:04:06.007 INFO kablam! line 1907: Aug 11 11:04:06.007 INFO kablam! line 1908: // OBHFlags byte Aug 11 11:04:06.007 INFO kablam! line 1909: Aug 11 11:04:06.007 INFO kablam! line 1910: #define OBH_LAYOUT 1 // an added object Aug 11 11:04:06.007 INFO kablam! line 1911: #define OBH_CAN_MOVE 2 // a movable object Aug 11 11:04:06.007 INFO kablam! line 1912: #define OBH_WAS_MOVING 4 // was moving before this hit Aug 11 11:04:06.007 INFO kablam! line 1913: #define OBH_ON_SPOT 8 // object in original position Aug 11 11:04:06.007 INFO kablam! line 1914: Aug 11 11:04:06.007 INFO kablam! line 1915: // Set the ISF_HLV flag in the IS_ISI to receive reports of incidents that would violate HLVC Aug 11 11:04:06.007 INFO kablam! line 1916: Aug 11 11:04:06.007 INFO kablam! line 1917: struct IS_HLV // Hot Lap Validity - off track / hit wall / speeding in pits / out of bounds Aug 11 11:04:06.007 INFO kablam! line 1918: { Aug 11 11:04:06.007 INFO kablam! line 1919: byte Size; // 16 Aug 11 11:04:06.007 INFO kablam! line 1920: byte Type; // ISP_HLV Aug 11 11:04:06.007 INFO kablam! line 1921: byte ReqI; // 0 Aug 11 11:04:06.008 INFO kablam! line 1922: byte PLID; // player's unique id Aug 11 11:04:06.008 INFO kablam! line 1923: Aug 11 11:04:06.008 INFO kablam! line 1924: byte HLVC; // 0 : ground / 1 : wall / 4 : speeding / 5 : out of bounds Aug 11 11:04:06.008 INFO kablam! line 1925: byte Sp1; Aug 11 11:04:06.008 INFO kablam! line 1926: word Time; // looping time stamp (hundredths - time since reset - like TINY_GTH) Aug 11 11:04:06.008 INFO kablam! line 1927: Aug 11 11:04:06.008 INFO kablam! line 1928: CarContOBJ C; Aug 11 11:04:06.008 INFO kablam! line 1929: }; Aug 11 11:04:06.008 INFO kablam! line 1930: Aug 11 11:04:06.008 INFO kablam! line 1931: Aug 11 11:04:06.008 INFO kablam! line 1932: // CONTROL - reports crossing an InSim checkpoint / entering an InSim circle (from layout) Aug 11 11:04:06.008 INFO kablam! line 1933: // ======= Aug 11 11:04:06.008 INFO kablam! line 1934: Aug 11 11:04:06.008 INFO kablam! line 1935: struct IS_UCO // User Control Object Aug 11 11:04:06.008 INFO kablam! line 1936: { Aug 11 11:04:06.008 INFO kablam! line 1937: byte Size; // 28 Aug 11 11:04:06.008 INFO kablam! line 1938: byte Type; // ISP_UCO Aug 11 11:04:06.008 INFO kablam! line 1939: byte ReqI; // 0 Aug 11 11:04:06.008 INFO kablam! line 1940: byte PLID; // player's unique id Aug 11 11:04:06.008 INFO kablam! line 1941: Aug 11 11:04:06.008 INFO kablam! line 1942: byte Sp0; Aug 11 11:04:06.008 INFO kablam! line 1943: byte UCOAction; Aug 11 11:04:06.009 INFO kablam! line 1944: byte Sp2; Aug 11 11:04:06.009 INFO kablam! line 1945: byte Sp3; Aug 11 11:04:06.009 INFO kablam! line 1946: Aug 11 11:04:06.009 INFO kablam! line 1947: unsigned Time; // hundredths of a second since start (as in SMALL_RTP) Aug 11 11:04:06.009 INFO kablam! line 1948: Aug 11 11:04:06.009 INFO kablam! line 1949: CarContOBJ C; Aug 11 11:04:06.009 INFO kablam! line 1950: Aug 11 11:04:06.009 INFO kablam! line 1951: ObjectInfo Info; // Info about the checkpoint or circle (see below) Aug 11 11:04:06.009 INFO kablam! line 1952: }; Aug 11 11:04:06.009 INFO kablam! line 1953: Aug 11 11:04:06.009 INFO kablam! line 1954: // UCOAction byte Aug 11 11:04:06.009 INFO kablam! line 1955: Aug 11 11:04:06.009 INFO kablam! line 1956: enum Aug 11 11:04:06.009 INFO kablam! line 1957: { Aug 11 11:04:06.009 INFO kablam! line 1958: UCO_CIRCLE_ENTER, // entered a circle Aug 11 11:04:06.009 INFO kablam! line 1959: UCO_CIRCLE_LEAVE, // left a circle Aug 11 11:04:06.009 INFO kablam! line 1960: UCO_CP_FWD, // crossed cp in forward direction Aug 11 11:04:06.009 INFO kablam! line 1961: UCO_CP_REV, // crossed cp in reverse direction Aug 11 11:04:06.009 INFO kablam! line 1962: }; Aug 11 11:04:06.009 INFO kablam! line 1963: Aug 11 11:04:06.009 INFO kablam! line 1964: // Identifying an InSim checkpoint from the ObjectInfo : Aug 11 11:04:06.009 INFO kablam! line 1965: Aug 11 11:04:06.010 INFO kablam! line 1966: // Index is 252. Checkpoint index (seen in the layout editor) is stored in Flags bits 0 and 1 Aug 11 11:04:06.010 INFO kablam! line 1967: Aug 11 11:04:06.010 INFO kablam! line 1968: // 00 = finish line Aug 11 11:04:06.010 INFO kablam! line 1969: // 01 = 1st checkpoint Aug 11 11:04:06.010 INFO kablam! line 1970: // 10 = 2nd checkpoint Aug 11 11:04:06.010 INFO kablam! line 1971: // 11 = 3rd checkpoint Aug 11 11:04:06.010 INFO kablam! line 1972: Aug 11 11:04:06.010 INFO kablam! line 1973: // Note that the checkpoint index has no meaning in LFS and is provided only for your convenience. Aug 11 11:04:06.010 INFO kablam! line 1974: // If you use many InSim checkpoints you may need to identify them with the X and Y values. Aug 11 11:04:06.010 INFO kablam! line 1975: Aug 11 11:04:06.010 INFO kablam! line 1976: // Identifying an InSim circle from the ObjectInfo : Aug 11 11:04:06.010 INFO kablam! line 1977: Aug 11 11:04:06.010 INFO kablam! line 1978: // Index is 253. The circle index (seen in the layout editor) is stored in the Heading byte. Aug 11 11:04:06.010 INFO kablam! line 1979: Aug 11 11:04:06.010 INFO kablam! line 1980: struct IS_CSC // Car State Changed - reports a change in a car's state (currently start or stop) Aug 11 11:04:06.010 INFO kablam! line 1981: { Aug 11 11:04:06.010 INFO kablam! line 1982: byte Size; // 20 Aug 11 11:04:06.010 INFO kablam! line 1983: byte Type; // ISP_CSC Aug 11 11:04:06.010 INFO kablam! line 1984: byte ReqI; // 0 Aug 11 11:04:06.010 INFO kablam! line 1985: byte PLID; // player's unique id Aug 11 11:04:06.010 INFO kablam! line 1986: Aug 11 11:04:06.010 INFO kablam! line 1987: byte Sp0; Aug 11 11:04:06.010 INFO kablam! line 1988: byte CSCAction; Aug 11 11:04:06.011 INFO kablam! line 1989: byte Sp2; Aug 11 11:04:06.011 INFO kablam! line 1990: byte Sp3; Aug 11 11:04:06.011 INFO kablam! line 1991: Aug 11 11:04:06.011 INFO kablam! line 1992: unsigned Time; // hundredths of a second since start (as in SMALL_RTP) Aug 11 11:04:06.011 INFO kablam! line 1993: Aug 11 11:04:06.011 INFO kablam! line 1994: CarContOBJ C; Aug 11 11:04:06.011 INFO kablam! line 1995: }; Aug 11 11:04:06.011 INFO kablam! line 1996: Aug 11 11:04:06.011 INFO kablam! line 1997: // CSCAction byte Aug 11 11:04:06.011 INFO kablam! line 1998: Aug 11 11:04:06.011 INFO kablam! line 1999: enum Aug 11 11:04:06.011 INFO kablam! line 2000: { Aug 11 11:04:06.011 INFO kablam! line 2001: CSC_STOP, Aug 11 11:04:06.011 INFO kablam! line 2002: CSC_START, Aug 11 11:04:06.011 INFO kablam! line 2003: }; Aug 11 11:04:06.011 INFO kablam! line 2004: Aug 11 11:04:06.016 INFO kablam! line 2005: Aug 11 11:04:06.016 INFO kablam! line 2006: // OBJECT CONTROL - currently used for switching start lights Aug 11 11:04:06.016 INFO kablam! line 2007: // ============== Aug 11 11:04:06.016 INFO kablam! line 2008: Aug 11 11:04:06.016 INFO kablam! line 2009: struct IS_OCO // Object COntrol Aug 11 11:04:06.016 INFO kablam! line 2010: { Aug 11 11:04:06.016 INFO kablam! line 2011: byte Size; // 8 Aug 11 11:04:06.016 INFO kablam! line 2012: byte Type; // ISP_OCO Aug 11 11:04:06.016 INFO kablam! line 2013: byte ReqI; // 0 Aug 11 11:04:06.016 INFO kablam! line 2014: byte Zero; Aug 11 11:04:06.016 INFO kablam! line 2015: Aug 11 11:04:06.016 INFO kablam! line 2016: byte OCOAction; // see below Aug 11 11:04:06.017 INFO kablam! line 2017: byte Index; // see below Aug 11 11:04:06.017 INFO kablam! line 2018: byte Identifier; // identify particular start lights objects (0 to 63 or 255 = all) Aug 11 11:04:06.017 INFO kablam! line 2019: byte Data; // see below Aug 11 11:04:06.017 INFO kablam! line 2020: }; Aug 11 11:04:06.017 INFO kablam! line 2021: Aug 11 11:04:06.017 INFO kablam! line 2022: // OCOAction byte Aug 11 11:04:06.017 INFO kablam! line 2023: Aug 11 11:04:06.017 INFO kablam! line 2024: enum Aug 11 11:04:06.017 INFO kablam! line 2025: { Aug 11 11:04:06.017 INFO kablam! line 2026: OCO_ZERO, // reserved Aug 11 11:04:06.017 INFO kablam! line 2027: OCO_1, // Aug 11 11:04:06.017 INFO kablam! line 2028: OCO_2, // Aug 11 11:04:06.017 INFO kablam! line 2029: OCO_3, // Aug 11 11:04:06.017 INFO kablam! line 2030: OCO_LIGHTS_RESET, // give up control of all lights Aug 11 11:04:06.017 INFO kablam! line 2031: OCO_LIGHTS_SET, // use Data byte to set the bulbs Aug 11 11:04:06.017 INFO kablam! line 2032: OCO_LIGHTS_UNSET, // give up control of the specified lights Aug 11 11:04:06.017 INFO kablam! line 2033: OCO_NUM Aug 11 11:04:06.017 INFO kablam! line 2034: }; Aug 11 11:04:06.017 INFO kablam! line 2035: Aug 11 11:04:06.017 INFO kablam! line 2036: // Index byte specifies which lights you want to override Aug 11 11:04:06.017 INFO kablam! line 2037: Aug 11 11:04:06.017 INFO kablam! line 2038: // Currently the following values are supported : Aug 11 11:04:06.017 INFO kablam! line 2039: Aug 11 11:04:06.017 INFO kablam! line 2040: // AXO_START_LIGHTS (149) // overrides temporary start lights in the layout Aug 11 11:04:06.017 INFO kablam! line 2041: #define OCO_INDEX_MAIN 240 // special value to override the main start light system Aug 11 11:04:06.017 INFO kablam! line 2042: Aug 11 11:04:06.017 INFO kablam! line 2043: // Identifier byte can be used to override groups of temporary start lights Aug 11 11:04:06.018 INFO kablam! line 2044: Aug 11 11:04:06.018 INFO kablam! line 2045: // It refers to the temporary lights identifier (0 to 63) seen in the layout editor Aug 11 11:04:06.018 INFO kablam! line 2046: Aug 11 11:04:06.018 INFO kablam! line 2047: // Data byte specifies particular bulbs using the low 4 bits Aug 11 11:04:06.018 INFO kablam! line 2048: Aug 11 11:04:06.018 INFO kablam! line 2049: // Bulb bit values for the currently available lights : Aug 11 11:04:06.018 INFO kablam! line 2050: Aug 11 11:04:06.018 INFO kablam! line 2051: // OCO_INDEX_MAIN AXO_START_LIGHTS Aug 11 11:04:06.018 INFO kablam! line 2052: Aug 11 11:04:06.018 INFO kablam! line 2053: // bit 0 (1) : red1 bit 0 (1) : red Aug 11 11:04:06.018 INFO kablam! line 2054: // bit 1 (2) : red2 bit 1 (2) : amber Aug 11 11:04:06.018 INFO kablam! line 2055: // bit 2 (4) : red3 - Aug 11 11:04:06.018 INFO kablam! line 2056: // bit 3 (8) : green bit 3 (8) : green Aug 11 11:04:06.018 INFO kablam! line 2057: Aug 11 11:04:06.018 INFO kablam! line 2058: Aug 11 11:04:06.018 INFO kablam! line 2059: // AUTOCROSS OBJECTS - reporting / adding / removing Aug 11 11:04:06.018 INFO kablam! line 2060: // ================= Aug 11 11:04:06.018 INFO kablam! line 2061: Aug 11 11:04:06.018 INFO kablam! line 2062: // Set the ISF_AXM_LOAD flag in the IS_ISI for info about objects when a layout is loaded. Aug 11 11:04:06.018 INFO kablam! line 2063: // Set the ISF_AXM_EDIT flag in the IS_ISI for info about objects edited by user or InSim. Aug 11 11:04:06.018 INFO kablam! line 2064: Aug 11 11:04:06.018 INFO kablam! line 2065: // You can also add or remove objects by sending IS_AXM packets. Aug 11 11:04:06.018 INFO kablam! line 2066: // Some care must be taken with these - please read the notes below. Aug 11 11:04:06.018 INFO kablam! line 2067: Aug 11 11:04:06.018 INFO kablam! line 2068: // You can also get (TTC_SEL) or set (PMO_SELECTION) the current editor selection. Aug 11 11:04:06.018 INFO kablam! line 2069: Aug 11 11:04:06.018 INFO kablam! line 2070: struct IS_AXM // AutoX Multiple objects - variable size Aug 11 11:04:06.018 INFO kablam! line 2071: { Aug 11 11:04:06.018 INFO kablam! line 2072: byte Size; // 8 + NumO * 8 Aug 11 11:04:06.019 INFO kablam! line 2073: byte Type; // ISP_AXM Aug 11 11:04:06.019 INFO kablam! line 2074: byte ReqI; // 0 unless this is a reply to a TINY_AXM request Aug 11 11:04:06.019 INFO kablam! line 2075: byte NumO; // number of objects in this packet Aug 11 11:04:06.019 INFO kablam! line 2076: Aug 11 11:04:06.019 INFO kablam! line 2077: byte UCID; // unique id of the connection that sent the packet Aug 11 11:04:06.019 INFO kablam! line 2078: byte PMOAction; // see below Aug 11 11:04:06.019 INFO kablam! line 2079: byte PMOFlags; // see below Aug 11 11:04:06.019 INFO kablam! line 2080: byte Sp3; Aug 11 11:04:06.019 INFO kablam! line 2081: Aug 11 11:04:06.019 INFO kablam! line 2082: ObjectInfo Info[30]; // info about each object, 0 to 30 of these Aug 11 11:04:06.019 INFO kablam! line 2083: }; Aug 11 11:04:06.019 INFO kablam! line 2084: Aug 11 11:04:06.019 INFO kablam! line 2085: // Values for PMOAction byte Aug 11 11:04:06.019 INFO kablam! line 2086: Aug 11 11:04:06.019 INFO kablam! line 2087: enum Aug 11 11:04:06.019 INFO kablam! line 2088: { Aug 11 11:04:06.019 INFO kablam! line 2089: PMO_LOADING_FILE, // 0 - sent by the layout loading system only Aug 11 11:04:06.019 INFO kablam! line 2090: PMO_ADD_OBJECTS, // 1 - adding objects (from InSim or editor) Aug 11 11:04:06.019 INFO kablam! line 2091: PMO_DEL_OBJECTS, // 2 - delete objects (from InSim or editor) Aug 11 11:04:06.019 INFO kablam! line 2092: PMO_CLEAR_ALL, // 3 - clear all objects (NumO must be zero) Aug 11 11:04:06.019 INFO kablam! line 2093: PMO_TINY_AXM, // 4 - a reply to a TINY_AXM request Aug 11 11:04:06.019 INFO kablam! line 2094: PMO_TTC_SEL, // 5 - a reply to a TTC_SEL request Aug 11 11:04:06.019 INFO kablam! line 2095: PMO_SELECTION, // 6 - set a connection's layout editor selection Aug 11 11:04:06.019 INFO kablam! line 2096: PMO_POSITION, // 7 - user pressed O without anything selected Aug 11 11:04:06.019 INFO kablam! line 2097: PMO_GET_Z, // 8 - request Z values / reply with Z values Aug 11 11:04:06.019 INFO kablam! line 2098: PMO_NUM Aug 11 11:04:06.019 INFO kablam! line 2099: }; Aug 11 11:04:06.019 INFO kablam! line 2100: Aug 11 11:04:06.020 INFO kablam! line 2101: // Info about the PMOFlags byte Aug 11 11:04:06.020 INFO kablam! line 2102: Aug 11 11:04:06.020 INFO kablam! line 2103: #define PMO_FILE_END 1 Aug 11 11:04:06.020 INFO kablam! line 2104: #define PMO_MOVE_MODIFY 2 Aug 11 11:04:06.020 INFO kablam! line 2105: #define PMO_SELECTION_REAL 4 Aug 11 11:04:06.020 INFO kablam! line 2106: #define PMO_AVOID_CHECK 8 Aug 11 11:04:06.020 INFO kablam! line 2107: Aug 11 11:04:06.020 INFO kablam! line 2108: // PMO_FILE_END Aug 11 11:04:06.020 INFO kablam! line 2109: Aug 11 11:04:06.020 INFO kablam! line 2110: // If PMO_FILE_END is set in a PMO_LOADING_FILE packet, LFS has reached the end of Aug 11 11:04:06.020 INFO kablam! line 2111: // a layout file which it is loading. The added objects will then be optimised. Aug 11 11:04:06.020 INFO kablam! line 2112: Aug 11 11:04:06.020 INFO kablam! line 2113: // Optimised in this case means that static vertex buffers will be created for all Aug 11 11:04:06.020 INFO kablam! line 2114: // objects, to greatly improve the frame rate. The problem with this is that when Aug 11 11:04:06.020 INFO kablam! line 2115: // there are many objects loaded, optimisation causes a significant glitch which can Aug 11 11:04:06.020 INFO kablam! line 2116: // be long enough to cause a driver who is cornering to lose control and crash. Aug 11 11:04:06.020 INFO kablam! line 2117: Aug 11 11:04:06.020 INFO kablam! line 2118: // PMO_FILE_END can also be set in an IS_AXM with PMOAction of PMO_ADD_OBJECTS. Aug 11 11:04:06.020 INFO kablam! line 2119: // This causes all objects to be optimised. It is important not to set PMO_FILE_END Aug 11 11:04:06.020 INFO kablam! line 2120: // in every packet you send to add objects or you will cause severe glitches on the Aug 11 11:04:06.020 INFO kablam! line 2121: // clients computers. It is ok to have some objects on the track which are not Aug 11 11:04:06.020 INFO kablam! line 2122: // optimised. So if you have a few objects that are being removed and added Aug 11 11:04:06.020 INFO kablam! line 2123: // occasionally, the best advice is not to request optimisation at all. Only Aug 11 11:04:06.020 INFO kablam! line 2124: // request optimisation (by setting PMO_FILE_END) if you have added so many objects Aug 11 11:04:06.020 INFO kablam! line 2125: // that it is needed to improve the frame rate. Aug 11 11:04:06.020 INFO kablam! line 2126: Aug 11 11:04:06.020 INFO kablam! line 2127: // NOTE 1) LFS makes sure that all objects are optimised when the race restarts. Aug 11 11:04:06.021 INFO kablam! line 2128: // NOTE 2) In the 'more' section of SHIFT+U there is info about optimised objects. Aug 11 11:04:06.021 INFO kablam! line 2129: Aug 11 11:04:06.021 INFO kablam! line 2130: // If you are using InSim to send many packets of objects (for example loading an Aug 11 11:04:06.021 INFO kablam! line 2131: // entire layout through InSim) then you must take care of the bandwidth and buffer Aug 11 11:04:06.021 INFO kablam! line 2132: // overflows. You must not try to send all the objects at once. It's probably good Aug 11 11:04:06.021 INFO kablam! line 2133: // to use LFS's method of doing this : send the first packet of objects then wait for Aug 11 11:04:06.021 INFO kablam! line 2134: // the corresponding IS_AXM that will be output when the packet is processed. Then Aug 11 11:04:06.021 INFO kablam! line 2135: // you can send the second packet and again wait for the IS_AXM and so on. Aug 11 11:04:06.021 INFO kablam! line 2136: Aug 11 11:04:06.021 INFO kablam! line 2137: // PMO_MOVE_MODIFY Aug 11 11:04:06.021 INFO kablam! line 2138: Aug 11 11:04:06.021 INFO kablam! line 2139: // When objects are moved or modified in the layout editor, two IS_AXM packets are Aug 11 11:04:06.021 INFO kablam! line 2140: // sent. A PMO_DEL_OBJECTS followed by a PMO_ADD_OBJECTS. In this case the flag Aug 11 11:04:06.021 INFO kablam! line 2141: // PMO_MOVE_MODIFY is set in the PMOFlags byte of both packets. Aug 11 11:04:06.021 INFO kablam! line 2142: Aug 11 11:04:06.021 INFO kablam! line 2143: // PMO_SELECTION_REAL Aug 11 11:04:06.021 INFO kablam! line 2144: Aug 11 11:04:06.021 INFO kablam! line 2145: // If you send an IS_AXM with PMOAction of PMO_SELECTION it is possible for it to be Aug 11 11:04:06.021 INFO kablam! line 2146: // either a selection of real objects (as if the user selected several objects while Aug 11 11:04:06.021 INFO kablam! line 2147: // holding the CTRL key) or a clipboard selection (as if the user pressed CTRL+C after Aug 11 11:04:06.021 INFO kablam! line 2148: // selecting objects). Clipboard is the default selection mode. A real selection can Aug 11 11:04:06.021 INFO kablam! line 2149: // be set by using the PMO_SELECTION_REAL bit in the PMOFlags byte. Aug 11 11:04:06.022 INFO kablam! line 2150: Aug 11 11:04:06.022 INFO kablam! line 2151: // PMO_AVOID_CHECK Aug 11 11:04:06.022 INFO kablam! line 2152: Aug 11 11:04:06.022 INFO kablam! line 2153: // If you send an IS_AXM with PMOAction of PMO_ADD_OBJECTS you may wish to set the Aug 11 11:04:06.022 INFO kablam! line 2154: // UCID to one of the guest connections (for example if that user's action caused the Aug 11 11:04:06.022 INFO kablam! line 2155: // objects to be added). In this case some validity checks are done on the guest's Aug 11 11:04:06.022 INFO kablam! line 2156: // computer which may report "invalid position" or "intersecting object" and delete Aug 11 11:04:06.022 INFO kablam! line 2157: // the objects. This can be avoided by setting the PMO_AVOID_CHECK bit. Aug 11 11:04:06.022 INFO kablam! line 2158: Aug 11 11:04:06.022 INFO kablam! line 2159: Aug 11 11:04:06.022 INFO kablam! line 2160: // To request IS_AXM packets for all layout objects and circles send this IS_TINY : Aug 11 11:04:06.022 INFO kablam! line 2161: Aug 11 11:04:06.022 INFO kablam! line 2162: // ReqI : non-zero (returned in the reply) Aug 11 11:04:06.022 INFO kablam! line 2163: // SubT : TINY_AXM (request IS_AXM packets for the entire layout) Aug 11 11:04:06.022 INFO kablam! line 2164: Aug 11 11:04:06.022 INFO kablam! line 2165: // LFS will send as many IS_AXM packets as needed to describe the whole layout. Aug 11 11:04:06.022 INFO kablam! line 2166: // If there are no objects or circles, there will be one IS_AXM with zero NumO. Aug 11 11:04:06.022 INFO kablam! line 2167: // The final IS_AXM packet will have the PMO_FILE_END flag set. Aug 11 11:04:06.022 INFO kablam! line 2168: Aug 11 11:04:06.022 INFO kablam! line 2169: Aug 11 11:04:06.022 INFO kablam! line 2170: // To request an IS_AXM for a connection's layout editor selection send this IS_TTC : Aug 11 11:04:06.022 INFO kablam! line 2171: Aug 11 11:04:06.023 INFO kablam! line 2172: // ReqI : non-zero (returned in the reply) Aug 11 11:04:06.023 INFO kablam! line 2173: // SubT : TTC_SEL (request an IS_AXM for the current selection) Aug 11 11:04:06.023 INFO kablam! line 2174: // UCID : connection (0 = local / non-zero = guest) Aug 11 11:04:06.023 INFO kablam! line 2175: Aug 11 11:04:06.023 INFO kablam! line 2176: // An IS_AXM with PMO_POSITION is sent with a single object in the packet if a user Aug 11 11:04:06.023 INFO kablam! line 2177: // presses O without any object type selected. Information only - no object is added. Aug 11 11:04:06.023 INFO kablam! line 2178: // The only valid values in Info are X, Y, Zbyte and Heading. Aug 11 11:04:06.023 INFO kablam! line 2179: Aug 11 11:04:06.023 INFO kablam! line 2180: // PMO_GET_Z can be used to request the resulting Zbyte values for given X, Y, Zbyte Aug 11 11:04:06.023 INFO kablam! line 2181: // positions listed in the IS_AXM. A similar reply (information only) will be sent Aug 11 11:04:06.023 INFO kablam! line 2182: // with adjusted Zbyte values. Index and Heading are ignored and set to zero in the Aug 11 11:04:06.023 INFO kablam! line 2183: // reply. Flags is set to 0x80 if Zbyte was successfully adjusted, zero if not. Aug 11 11:04:06.023 INFO kablam! line 2184: // Suggested input values for Zbyte are either 240 to get the highest point at X, Y Aug 11 11:04:06.023 INFO kablam! line 2185: // or you may use the approximate altitude (see layout file format). Aug 11 11:04:06.023 INFO kablam! line 2186: Aug 11 11:04:06.023 INFO kablam! line 2187: Aug 11 11:04:06.023 INFO kablam! line 2188: // CAR POSITION PACKETS (Initialising OutSim from InSim - See "OutSim" below) Aug 11 11:04:06.023 INFO kablam! line 2189: // ==================== Aug 11 11:04:06.023 INFO kablam! line 2190: Aug 11 11:04:06.023 INFO kablam! line 2191: // To request Car Positions from the currently viewed car, send this IS_SMALL : Aug 11 11:04:06.023 INFO kablam! line 2192: Aug 11 11:04:06.024 INFO kablam! line 2193: // ReqI : 0 Aug 11 11:04:06.024 INFO kablam! line 2194: // SubT : SMALL_SSP (Start Sending Positions) Aug 11 11:04:06.024 INFO kablam! line 2195: // UVal : interval (time between updates - zero means stop sending) Aug 11 11:04:06.024 INFO kablam! line 2196: Aug 11 11:04:06.024 INFO kablam! line 2197: // If OutSim has not been setup in cfg.txt, the SSP packet makes LFS send UDP packets Aug 11 11:04:06.024 INFO kablam! line 2198: // if in game, using the OutSim system as documented near the end of this text file. Aug 11 11:04:06.024 INFO kablam! line 2199: Aug 11 11:04:06.024 INFO kablam! line 2200: // You do not need to set any OutSim values in LFS cfg.txt - OutSim is fully Aug 11 11:04:06.024 INFO kablam! line 2201: // initialised by the SSP packet. Aug 11 11:04:06.024 INFO kablam! line 2202: Aug 11 11:04:06.024 INFO kablam! line 2203: // The OutSim packets will be sent to the UDP port specified in the InSimInit packet. Aug 11 11:04:06.024 INFO kablam! line 2204: Aug 11 11:04:06.024 INFO kablam! line 2205: // NOTE : OutSim packets are not InSim packets and don't have a 4-byte header. Aug 11 11:04:06.024 INFO kablam! line 2206: Aug 11 11:04:06.024 INFO kablam! line 2207: Aug 11 11:04:06.024 INFO kablam! line 2208: // DASHBOARD PACKETS (Initialising OutGauge from InSim - See "OutGauge" below) Aug 11 11:04:06.024 INFO kablam! line 2209: // ================= Aug 11 11:04:06.024 INFO kablam! line 2210: Aug 11 11:04:06.024 INFO kablam! line 2211: // To request Dashboard Packets from the currently viewed car, send this IS_SMALL : Aug 11 11:04:06.024 INFO kablam! line 2212: Aug 11 11:04:06.024 INFO kablam! line 2213: // ReqI : 0 Aug 11 11:04:06.025 INFO kablam! line 2214: // SubT : SMALL_SSG (Start Sending Gauges) Aug 11 11:04:06.025 INFO kablam! line 2215: // UVal : interval (time between updates - zero means stop sending) Aug 11 11:04:06.025 INFO kablam! line 2216: Aug 11 11:04:06.025 INFO kablam! line 2217: // If OutGauge has not been setup in cfg.txt, the SSG packet makes LFS send UDP packets Aug 11 11:04:06.025 INFO kablam! line 2218: // if in game, using the OutGauge system as documented near the end of this text file. Aug 11 11:04:06.025 INFO kablam! line 2219: Aug 11 11:04:06.025 INFO kablam! line 2220: // You do not need to set any OutGauge values in LFS cfg.txt - OutGauge is fully Aug 11 11:04:06.025 INFO kablam! line 2221: // initialised by the SSG packet. Aug 11 11:04:06.025 INFO kablam! line 2222: Aug 11 11:04:06.025 INFO kablam! line 2223: // The OutGauge packets will be sent to the UDP port specified in the InSimInit packet. Aug 11 11:04:06.025 INFO kablam! line 2224: Aug 11 11:04:06.025 INFO kablam! line 2225: // NOTE : OutGauge packets are not InSim packets and don't have a 4-byte header. Aug 11 11:04:06.025 INFO kablam! line 2226: Aug 11 11:04:06.025 INFO kablam! line 2227: Aug 11 11:04:06.025 INFO kablam! line 2228: // CAMERA CONTROL Aug 11 11:04:06.025 INFO kablam! line 2229: // ============== Aug 11 11:04:06.025 INFO kablam! line 2230: Aug 11 11:04:06.025 INFO kablam! line 2231: // IN GAME camera control Aug 11 11:04:06.025 INFO kablam! line 2232: // ---------------------- Aug 11 11:04:06.025 INFO kablam! line 2233: Aug 11 11:04:06.025 INFO kablam! line 2234: // You can set the viewed car and selected camera directly with a special packet Aug 11 11:04:06.025 INFO kablam! line 2235: // These are the states normally set in game by using the TAB and V keys Aug 11 11:04:06.026 INFO kablam! line 2236: Aug 11 11:04:06.026 INFO kablam! line 2237: struct IS_SCC // Set Car Camera - Simplified camera packet (not SHIFT+U mode) Aug 11 11:04:06.026 INFO kablam! line 2238: { Aug 11 11:04:06.026 INFO kablam! line 2239: byte Size; // 8 Aug 11 11:04:06.026 INFO kablam! line 2240: byte Type; // ISP_SCC Aug 11 11:04:06.026 INFO kablam! line 2241: byte ReqI; // 0 Aug 11 11:04:06.026 INFO kablam! line 2242: byte Zero; Aug 11 11:04:06.026 INFO kablam! line 2243: Aug 11 11:04:06.026 INFO kablam! line 2244: byte ViewPLID; // Unique ID of player to view Aug 11 11:04:06.026 INFO kablam! line 2245: byte InGameCam; // InGameCam (as reported in StatePack) Aug 11 11:04:06.026 INFO kablam! line 2246: byte Sp2; Aug 11 11:04:06.026 INFO kablam! line 2247: byte Sp3; Aug 11 11:04:06.026 INFO kablam! line 2248: }; Aug 11 11:04:06.026 INFO kablam! line 2249: Aug 11 11:04:06.026 INFO kablam! line 2250: // NOTE : Set InGameCam or ViewPLID to 255 to leave that option unchanged. Aug 11 11:04:06.026 INFO kablam! line 2251: Aug 11 11:04:06.026 INFO kablam! line 2252: // DIRECT camera control Aug 11 11:04:06.026 INFO kablam! line 2253: // --------------------- Aug 11 11:04:06.026 INFO kablam! line 2254: Aug 11 11:04:06.026 INFO kablam! line 2255: // A Camera Position Packet can be used for LFS to report a camera position and state. Aug 11 11:04:06.026 INFO kablam! line 2256: // An InSim program can also send one to set LFS camera position in game or SHIFT+U mode. Aug 11 11:04:06.026 INFO kablam! line 2257: Aug 11 11:04:06.027 INFO kablam! line 2258: // Type : "Vec" : 3 ints (X, Y, Z) - 65536 means 1 metre Aug 11 11:04:06.027 INFO kablam! line 2259: Aug 11 11:04:06.027 INFO kablam! line 2260: struct IS_CPP // Cam Pos Pack - Full camera packet (in car OR SHIFT+U mode) Aug 11 11:04:06.027 INFO kablam! line 2261: { Aug 11 11:04:06.027 INFO kablam! line 2262: byte Size; // 32 Aug 11 11:04:06.027 INFO kablam! line 2263: byte Type; // ISP_CPP Aug 11 11:04:06.027 INFO kablam! line 2264: byte ReqI; // instruction : 0 / or reply : ReqI as received in the TINY_SCP Aug 11 11:04:06.027 INFO kablam! line 2265: byte Zero; Aug 11 11:04:06.027 INFO kablam! line 2266: Aug 11 11:04:06.027 INFO kablam! line 2267: Vec Pos; // Position vector Aug 11 11:04:06.027 INFO kablam! line 2268: Aug 11 11:04:06.027 INFO kablam! line 2269: word H; // heading - 0 points along Y axis Aug 11 11:04:06.027 INFO kablam! line 2270: word P; // pitch Aug 11 11:04:06.027 INFO kablam! line 2271: word R; // roll Aug 11 11:04:06.027 INFO kablam! line 2272: Aug 11 11:04:06.027 INFO kablam! line 2273: byte ViewPLID; // Unique ID of viewed player (0 = none) Aug 11 11:04:06.027 INFO kablam! line 2274: byte InGameCam; // InGameCam (as reported in StatePack) Aug 11 11:04:06.027 INFO kablam! line 2275: Aug 11 11:04:06.027 INFO kablam! line 2276: float FOV; // 4-byte float : FOV in degrees Aug 11 11:04:06.027 INFO kablam! line 2277: Aug 11 11:04:06.027 INFO kablam! line 2278: word Time; // Time in ms to get there (0 means instant) Aug 11 11:04:06.027 INFO kablam! line 2279: word Flags; // ISS state flags (see below) Aug 11 11:04:06.027 INFO kablam! line 2280: }; Aug 11 11:04:06.028 INFO kablam! line 2281: Aug 11 11:04:06.028 INFO kablam! line 2282: // The ISS state flags that can be set are : Aug 11 11:04:06.028 INFO kablam! line 2283: Aug 11 11:04:06.028 INFO kablam! line 2284: // ISS_SHIFTU - in SHIFT+U mode Aug 11 11:04:06.028 INFO kablam! line 2285: // ISS_SHIFTU_FOLLOW - FOLLOW view Aug 11 11:04:06.028 INFO kablam! line 2286: // ISS_VIEW_OVERRIDE - override user view Aug 11 11:04:06.028 INFO kablam! line 2287: Aug 11 11:04:06.028 INFO kablam! line 2288: // On receiving this packet, LFS will set up the camera to match the values in the packet, Aug 11 11:04:06.028 INFO kablam! line 2289: // including switching into or out of SHIFT+U mode depending on the ISS_SHIFTU flag. Aug 11 11:04:06.028 INFO kablam! line 2290: Aug 11 11:04:06.028 INFO kablam! line 2291: // If ISS_VIEW_OVERRIDE is set, the in-car view Heading Pitch and Roll (but not FOV) will Aug 11 11:04:06.028 INFO kablam! line 2292: // be taken from the values in this packet. Otherwise normal in game control will be used. Aug 11 11:04:06.028 INFO kablam! line 2293: Aug 11 11:04:06.028 INFO kablam! line 2294: // Position vector (Vec Pos) - in SHIFT+U mode, Pos can be either relative or absolute. Aug 11 11:04:06.028 INFO kablam! line 2295: Aug 11 11:04:06.028 INFO kablam! line 2296: // If ISS_SHIFTU_FOLLOW is set, it's a following camera, so the position is relative to Aug 11 11:04:06.028 INFO kablam! line 2297: // the selected car. Otherwise, the position is absolute, as used in normal SHIFT+U mode. Aug 11 11:04:06.028 INFO kablam! line 2298: Aug 11 11:04:06.028 INFO kablam! line 2299: // NOTE : Set InGameCam or ViewPLID to 255 to leave that option unchanged. Aug 11 11:04:06.028 INFO kablam! line 2300: Aug 11 11:04:06.029 INFO kablam! line 2301: // SMOOTH CAMERA POSITIONING Aug 11 11:04:06.029 INFO kablam! line 2302: // -------------------------- Aug 11 11:04:06.029 INFO kablam! line 2303: Aug 11 11:04:06.029 INFO kablam! line 2304: // The "Time" value in the packet is used for camera smoothing. A zero Time means instant Aug 11 11:04:06.029 INFO kablam! line 2305: // positioning. Any other value (milliseconds) will cause the camera to move smoothly to Aug 11 11:04:06.029 INFO kablam! line 2306: // the requested position in that time. This is most useful in SHIFT+U camera modes or Aug 11 11:04:06.029 INFO kablam! line 2307: // for smooth changes of internal view when using the ISS_VIEW_OVERRIDE flag. Aug 11 11:04:06.029 INFO kablam! line 2308: Aug 11 11:04:06.029 INFO kablam! line 2309: // NOTE : You can use frequently updated camera positions with a longer Time value than Aug 11 11:04:06.029 INFO kablam! line 2310: // the update frequency. For example, sending a camera position every 100 ms, with a Aug 11 11:04:06.029 INFO kablam! line 2311: // Time value of 1000 ms. LFS will make a smooth motion from the rough inputs. Aug 11 11:04:06.029 INFO kablam! line 2312: Aug 11 11:04:06.029 INFO kablam! line 2313: // If the requested camera mode is different from the one LFS is already in, it cannot Aug 11 11:04:06.029 INFO kablam! line 2314: // move smoothly to the new position, so in this case the "Time" value is ignored. Aug 11 11:04:06.029 INFO kablam! line 2315: Aug 11 11:04:06.029 INFO kablam! line 2316: // GETTING A CAMERA PACKET Aug 11 11:04:06.029 INFO kablam! line 2317: // ----------------------- Aug 11 11:04:06.029 INFO kablam! line 2318: Aug 11 11:04:06.029 INFO kablam! line 2319: // To GET a CamPosPack from LFS, send this IS_TINY : Aug 11 11:04:06.029 INFO kablam! line 2320: Aug 11 11:04:06.029 INFO kablam! line 2321: // ReqI : non-zero (returned in the reply) Aug 11 11:04:06.029 INFO kablam! line 2322: // SubT : TINY_SCP (Send Cam Pos) Aug 11 11:04:06.030 INFO kablam! line 2323: Aug 11 11:04:06.030 INFO kablam! line 2324: // LFS will reply with a CamPosPack as described above. You can store this packet Aug 11 11:04:06.030 INFO kablam! line 2325: // and later send back exactly the same packet to LFS and it will try to replicate Aug 11 11:04:06.030 INFO kablam! line 2326: // that camera position. Aug 11 11:04:06.030 INFO kablam! line 2327: Aug 11 11:04:06.030 INFO kablam! line 2328: Aug 11 11:04:06.030 INFO kablam! line 2329: // TIME CONTROL Aug 11 11:04:06.030 INFO kablam! line 2330: // ============ Aug 11 11:04:06.030 INFO kablam! line 2331: Aug 11 11:04:06.030 INFO kablam! line 2332: // Request the current time at any point with this IS_TINY : Aug 11 11:04:06.030 INFO kablam! line 2333: Aug 11 11:04:06.030 INFO kablam! line 2334: // ReqI : non-zero (returned in the reply) Aug 11 11:04:06.030 INFO kablam! line 2335: // SubT : TINY_GTH (Get Time in Hundredths) Aug 11 11:04:06.030 INFO kablam! line 2336: Aug 11 11:04:06.030 INFO kablam! line 2337: // The time will be sent back in this IS_SMALL : Aug 11 11:04:06.030 INFO kablam! line 2338: Aug 11 11:04:06.030 INFO kablam! line 2339: // ReqI : non-zero (as received in the request packet) Aug 11 11:04:06.030 INFO kablam! line 2340: // SubT : SMALL_RTP (Race Time Packet) Aug 11 11:04:06.030 INFO kablam! line 2341: // UVal : Time (hundredths of a second since start of race or replay) Aug 11 11:04:06.030 INFO kablam! line 2342: Aug 11 11:04:06.030 INFO kablam! line 2343: // You can stop or start time in LFS and while it is stopped you can send packets to move Aug 11 11:04:06.030 INFO kablam! line 2344: // time in steps. Time steps are specified in hundredths of a second. Aug 11 11:04:06.030 INFO kablam! line 2345: // Warning : unlike pausing, this is a "trick" to LFS and the program is unaware of time Aug 11 11:04:06.030 INFO kablam! line 2346: // passing so you must not leave it stopped because LFS is unusable in that state. Aug 11 11:04:06.030 INFO kablam! line 2347: // This packet is not available in live multiplayer mode. Aug 11 11:04:06.030 INFO kablam! line 2348: Aug 11 11:04:06.030 INFO kablam! line 2349: // Stop and Start with this IS_SMALL : Aug 11 11:04:06.031 INFO kablam! line 2350: Aug 11 11:04:06.031 INFO kablam! line 2351: // ReqI : 0 Aug 11 11:04:06.031 INFO kablam! line 2352: // SubT : SMALL_TMS (TiMe Stop) Aug 11 11:04:06.031 INFO kablam! line 2353: // UVal : stop (1 - stop / 0 - carry on) Aug 11 11:04:06.031 INFO kablam! line 2354: Aug 11 11:04:06.031 INFO kablam! line 2355: // When STOPPED, make time step updates with this IS_SMALL : Aug 11 11:04:06.031 INFO kablam! line 2356: Aug 11 11:04:06.031 INFO kablam! line 2357: // ReqI : 0 Aug 11 11:04:06.031 INFO kablam! line 2358: // SubT : SMALL_STP (STeP) Aug 11 11:04:06.031 INFO kablam! line 2359: // UVal : number (number of hundredths of a second to update) Aug 11 11:04:06.031 INFO kablam! line 2360: Aug 11 11:04:06.031 INFO kablam! line 2361: Aug 11 11:04:06.031 INFO kablam! line 2362: // REPLAY CONTROL Aug 11 11:04:06.031 INFO kablam! line 2363: // ============== Aug 11 11:04:06.031 INFO kablam! line 2364: Aug 11 11:04:06.031 INFO kablam! line 2365: // You can load a replay or set the position in a replay with an IS_RIP packet. Aug 11 11:04:06.031 INFO kablam! line 2366: // Replay positions and lengths are specified in hundredths of a second. Aug 11 11:04:06.031 INFO kablam! line 2367: // LFS will reply with another IS_RIP packet when the request is completed. Aug 11 11:04:06.031 INFO kablam! line 2368: Aug 11 11:04:06.031 INFO kablam! line 2369: struct IS_RIP // Replay Information Packet Aug 11 11:04:06.031 INFO kablam! line 2370: { Aug 11 11:04:06.031 INFO kablam! line 2371: byte Size; // 80 Aug 11 11:04:06.031 INFO kablam! line 2372: byte Type; // ISP_RIP Aug 11 11:04:06.031 INFO kablam! line 2373: byte ReqI; // request : non-zero / reply : same value returned Aug 11 11:04:06.031 INFO kablam! line 2374: byte Error; // 0 or 1 = OK / other values are listed below Aug 11 11:04:06.032 INFO kablam! line 2375: Aug 11 11:04:06.032 INFO kablam! line 2376: byte MPR; // 0 = SPR / 1 = MPR Aug 11 11:04:06.032 INFO kablam! line 2377: byte Paused; // request : pause on arrival / reply : paused state Aug 11 11:04:06.032 INFO kablam! line 2378: byte Options; // various options - see below Aug 11 11:04:06.032 INFO kablam! line 2379: byte Sp3; Aug 11 11:04:06.032 INFO kablam! line 2380: Aug 11 11:04:06.032 INFO kablam! line 2381: unsigned CTime; // (hundredths) request : destination / reply : position Aug 11 11:04:06.032 INFO kablam! line 2382: unsigned TTime; // (hundredths) request : zero / reply : replay length Aug 11 11:04:06.032 INFO kablam! line 2383: Aug 11 11:04:06.032 INFO kablam! line 2384: char RName[64]; // zero or replay name - last byte must be zero Aug 11 11:04:06.032 INFO kablam! line 2385: }; Aug 11 11:04:06.032 INFO kablam! line 2386: Aug 11 11:04:06.032 INFO kablam! line 2387: // NOTE about RName : Aug 11 11:04:06.032 INFO kablam! line 2388: // In a request, replay RName will be loaded. If zero then the current replay is used. Aug 11 11:04:06.032 INFO kablam! line 2389: // In a reply, RName is the name of the current replay, or zero if no replay is loaded. Aug 11 11:04:06.032 INFO kablam! line 2390: Aug 11 11:04:06.032 INFO kablam! line 2391: // You can request an IS_RIP packet at any time with this IS_TINY : Aug 11 11:04:06.032 INFO kablam! line 2392: Aug 11 11:04:06.032 INFO kablam! line 2393: // ReqI : non-zero (returned in the reply) Aug 11 11:04:06.032 INFO kablam! line 2394: // SubT : TINY_RIP (Replay Information Packet) Aug 11 11:04:06.032 INFO kablam! line 2395: Aug 11 11:04:06.032 INFO kablam! line 2396: // Error codes returned in IS_RIP replies : Aug 11 11:04:06.032 INFO kablam! line 2397: Aug 11 11:04:06.032 INFO kablam! line 2398: enum Aug 11 11:04:06.032 INFO kablam! line 2399: { Aug 11 11:04:06.032 INFO kablam! line 2400: RIP_OK, // 0 - OK : completed instruction Aug 11 11:04:06.033 INFO kablam! line 2401: RIP_ALREADY, // 1 - OK : already at the destination Aug 11 11:04:06.033 INFO kablam! line 2402: RIP_DEDICATED, // 2 - can't run a replay - dedicated host Aug 11 11:04:06.033 INFO kablam! line 2403: RIP_WRONG_MODE, // 3 - can't start a replay - not in a suitable mode Aug 11 11:04:06.033 INFO kablam! line 2404: RIP_NOT_REPLAY, // 4 - RName is zero but no replay is currently loaded Aug 11 11:04:06.033 INFO kablam! line 2405: RIP_CORRUPTED, // 5 - IS_RIP corrupted (e.g. RName does not end with zero) Aug 11 11:04:06.033 INFO kablam! line 2406: RIP_NOT_FOUND, // 6 - the replay file was not found Aug 11 11:04:06.033 INFO kablam! line 2407: RIP_UNLOADABLE, // 7 - obsolete / future / corrupted Aug 11 11:04:06.033 INFO kablam! line 2408: RIP_DEST_OOB, // 8 - destination is beyond replay length Aug 11 11:04:06.033 INFO kablam! line 2409: RIP_UNKNOWN, // 9 - unknown error found starting replay Aug 11 11:04:06.033 INFO kablam! line 2410: RIP_USER, // 10 - replay search was terminated by user Aug 11 11:04:06.033 INFO kablam! line 2411: RIP_OOS, // 11 - can't reach destination - SPR is out of sync Aug 11 11:04:06.033 INFO kablam! line 2412: }; Aug 11 11:04:06.033 INFO kablam! line 2413: Aug 11 11:04:06.033 INFO kablam! line 2414: // Options byte : some options Aug 11 11:04:06.033 INFO kablam! line 2415: Aug 11 11:04:06.033 INFO kablam! line 2416: #define RIPOPT_LOOP 1 // replay will loop if this bit is set Aug 11 11:04:06.033 INFO kablam! line 2417: #define RIPOPT_SKINS 2 // set this bit to download missing skins Aug 11 11:04:06.033 INFO kablam! line 2418: #define RIPOPT_FULL_PHYS 4 // use full physics when searching an MPR Aug 11 11:04:06.033 INFO kablam! line 2419: Aug 11 11:04:06.033 INFO kablam! line 2420: // NOTE : RIPOPT_FULL_PHYS makes MPR searching much slower so should not normally be used. Aug 11 11:04:06.033 INFO kablam! line 2421: // This flag was added to allow high accuracy MCI packets to be output when fast forwarding. Aug 11 11:04:06.033 INFO kablam! line 2422: Aug 11 11:04:06.033 INFO kablam! line 2423: Aug 11 11:04:06.033 INFO kablam! line 2424: // SCREENSHOTS Aug 11 11:04:06.033 INFO kablam! line 2425: // =========== Aug 11 11:04:06.034 INFO kablam! line 2426: Aug 11 11:04:06.034 INFO kablam! line 2427: // You can instuct LFS to save a screenshot in data\shots using the IS_SSH packet. Aug 11 11:04:06.034 INFO kablam! line 2428: // It will be saved as bmp / jpg / png as set in Misc Options. Aug 11 11:04:06.034 INFO kablam! line 2429: // Name can be a filename (excluding extension) or zero - LFS will create a name. Aug 11 11:04:06.034 INFO kablam! line 2430: // LFS will reply with another IS_SSH when the request is completed. Aug 11 11:04:06.034 INFO kablam! line 2431: Aug 11 11:04:06.034 INFO kablam! line 2432: struct IS_SSH // ScreenSHot Aug 11 11:04:06.034 INFO kablam! line 2433: { Aug 11 11:04:06.034 INFO kablam! line 2434: byte Size; // 40 Aug 11 11:04:06.034 INFO kablam! line 2435: byte Type; // ISP_SSH Aug 11 11:04:06.034 INFO kablam! line 2436: byte ReqI; // request : non-zero / reply : same value returned Aug 11 11:04:06.034 INFO kablam! line 2437: byte Error; // 0 = OK / other values are listed below Aug 11 11:04:06.034 INFO kablam! line 2438: Aug 11 11:04:06.034 INFO kablam! line 2439: byte Sp0; // 0 Aug 11 11:04:06.034 INFO kablam! line 2440: byte Sp1; // 0 Aug 11 11:04:06.034 INFO kablam! line 2441: byte Sp2; // 0 Aug 11 11:04:06.034 INFO kablam! line 2442: byte Sp3; // 0 Aug 11 11:04:06.034 INFO kablam! line 2443: Aug 11 11:04:06.034 INFO kablam! line 2444: char Name[32]; // name of screenshot file - last byte must be zero Aug 11 11:04:06.034 INFO kablam! line 2445: }; Aug 11 11:04:06.034 INFO kablam! line 2446: Aug 11 11:04:06.034 INFO kablam! line 2447: // Error codes returned in IS_SSH replies : Aug 11 11:04:06.034 INFO kablam! line 2448: Aug 11 11:04:06.034 INFO kablam! line 2449: enum Aug 11 11:04:06.034 INFO kablam! line 2450: { Aug 11 11:04:06.034 INFO kablam! line 2451: SSH_OK, // 0 - OK : completed instruction Aug 11 11:04:06.035 INFO kablam! line 2452: SSH_DEDICATED, // 1 - can't save a screenshot - dedicated host Aug 11 11:04:06.035 INFO kablam! line 2453: SSH_CORRUPTED, // 2 - IS_SSH corrupted (e.g. Name does not end with zero) Aug 11 11:04:06.035 INFO kablam! line 2454: SSH_NO_SAVE, // 3 - could not save the screenshot Aug 11 11:04:06.035 INFO kablam! line 2455: }; Aug 11 11:04:06.035 INFO kablam! line 2456: Aug 11 11:04:06.035 INFO kablam! line 2457: Aug 11 11:04:06.035 INFO kablam! line 2458: // BUTTONS Aug 11 11:04:06.035 INFO kablam! line 2459: // ======= Aug 11 11:04:06.035 INFO kablam! line 2460: Aug 11 11:04:06.035 INFO kablam! line 2461: // You can make up to 240 buttons appear on the host or guests (ID = 0 to 239). Aug 11 11:04:06.035 INFO kablam! line 2462: // You should set the ISF_LOCAL flag (in IS_ISI) if your program is not a host control Aug 11 11:04:06.035 INFO kablam! line 2463: // system, to make sure your buttons do not conflict with any buttons sent by the host. Aug 11 11:04:06.035 INFO kablam! line 2464: Aug 11 11:04:06.035 INFO kablam! line 2465: // LFS can display normal buttons in these four screens : Aug 11 11:04:06.035 INFO kablam! line 2466: Aug 11 11:04:06.035 INFO kablam! line 2467: // - main entry screen Aug 11 11:04:06.035 INFO kablam! line 2468: // - race setup screen Aug 11 11:04:06.035 INFO kablam! line 2469: // - in game Aug 11 11:04:06.035 INFO kablam! line 2470: // - SHIFT+U mode Aug 11 11:04:06.035 INFO kablam! line 2471: Aug 11 11:04:06.035 INFO kablam! line 2472: // The recommended area for most buttons is defined by : Aug 11 11:04:06.035 INFO kablam! line 2473: Aug 11 11:04:06.035 INFO kablam! line 2474: #define IS_X_MIN 0 Aug 11 11:04:06.035 INFO kablam! line 2475: #define IS_X_MAX 110 Aug 11 11:04:06.035 INFO kablam! line 2476: Aug 11 11:04:06.035 INFO kablam! line 2477: #define IS_Y_MIN 30 Aug 11 11:04:06.035 INFO kablam! line 2478: #define IS_Y_MAX 170 Aug 11 11:04:06.036 INFO kablam! line 2479: Aug 11 11:04:06.036 INFO kablam! line 2480: // If you draw buttons in this area, the area will be kept clear to Aug 11 11:04:06.036 INFO kablam! line 2481: // avoid overlapping LFS buttons with your InSim program's buttons. Aug 11 11:04:06.036 INFO kablam! line 2482: // Buttons outside that area will not have a space kept clear. Aug 11 11:04:06.036 INFO kablam! line 2483: // You can also make buttons visible in all screens - see below. Aug 11 11:04:06.036 INFO kablam! line 2484: Aug 11 11:04:06.036 INFO kablam! line 2485: // To delete one button or a range of buttons or clear all buttons, send this packet : Aug 11 11:04:06.036 INFO kablam! line 2486: Aug 11 11:04:06.036 INFO kablam! line 2487: struct IS_BFN // Button FunctioN - delete buttons / receive button requests Aug 11 11:04:06.036 INFO kablam! line 2488: { Aug 11 11:04:06.036 INFO kablam! line 2489: byte Size; // 8 Aug 11 11:04:06.036 INFO kablam! line 2490: byte Type; // ISP_BFN Aug 11 11:04:06.036 INFO kablam! line 2491: byte ReqI; // 0 Aug 11 11:04:06.036 INFO kablam! line 2492: byte SubT; // subtype, from BFN_ enumeration (see below) Aug 11 11:04:06.036 INFO kablam! line 2493: Aug 11 11:04:06.036 INFO kablam! line 2494: byte UCID; // connection to send to or received from (0 = local / 255 = all) Aug 11 11:04:06.036 INFO kablam! line 2495: byte ClickID; // if SubT is BFN_DEL_BTN : ID of single button to delete or first button in range Aug 11 11:04:06.036 INFO kablam! line 2496: byte ClickMax; // if SubT is BFN_DEL_BTN : ID of last button in range (if greater than ClickID) Aug 11 11:04:06.036 INFO kablam! line 2497: byte Inst; // used internally by InSim Aug 11 11:04:06.036 INFO kablam! line 2498: }; Aug 11 11:04:06.036 INFO kablam! line 2499: Aug 11 11:04:06.036 INFO kablam! line 2500: enum // the fourth byte of IS_BFN packets is one of these Aug 11 11:04:06.036 INFO kablam! line 2501: { Aug 11 11:04:06.037 INFO kablam! line 2502: BFN_DEL_BTN, // 0 - instruction : delete one button or range of buttons (must set ClickID) Aug 11 11:04:06.037 INFO kablam! line 2503: BFN_CLEAR, // 1 - instruction : clear all buttons made by this insim instance Aug 11 11:04:06.037 INFO kablam! line 2504: BFN_USER_CLEAR, // 2 - info : user cleared this insim instance's buttons Aug 11 11:04:06.037 INFO kablam! line 2505: BFN_REQUEST, // 3 - user request : SHIFT+B or SHIFT+I - request for buttons Aug 11 11:04:06.037 INFO kablam! line 2506: }; Aug 11 11:04:06.037 INFO kablam! line 2507: Aug 11 11:04:06.037 INFO kablam! line 2508: // NOTE : BFN_REQUEST allows the user to bring up buttons with SHIFT+B or SHIFT+I Aug 11 11:04:06.037 INFO kablam! line 2509: Aug 11 11:04:06.037 INFO kablam! line 2510: // SHIFT+I clears all host buttons if any - or sends a BFN_REQUEST to host instances Aug 11 11:04:06.037 INFO kablam! line 2511: // SHIFT+B is the same but for local buttons and local instances Aug 11 11:04:06.037 INFO kablam! line 2512: Aug 11 11:04:06.037 INFO kablam! line 2513: // To send a button to LFS, send this variable sized packet Aug 11 11:04:06.037 INFO kablam! line 2514: Aug 11 11:04:06.037 INFO kablam! line 2515: struct IS_BTN // BuTtoN - button header - followed by 0 to 240 characters Aug 11 11:04:06.037 INFO kablam! line 2516: { Aug 11 11:04:06.037 INFO kablam! line 2517: byte Size; // 12 + TEXT_SIZE (a multiple of 4) Aug 11 11:04:06.037 INFO kablam! line 2518: byte Type; // ISP_BTN Aug 11 11:04:06.037 INFO kablam! line 2519: byte ReqI; // non-zero (returned in IS_BTC and IS_BTT packets) Aug 11 11:04:06.037 INFO kablam! line 2520: byte UCID; // connection to display the button (0 = local / 255 = all) Aug 11 11:04:06.037 INFO kablam! line 2521: Aug 11 11:04:06.037 INFO kablam! line 2522: byte ClickID; // button ID (0 to 239) Aug 11 11:04:06.038 INFO kablam! line 2523: byte Inst; // some extra flags - see below Aug 11 11:04:06.038 INFO kablam! line 2524: byte BStyle; // button style flags - see below Aug 11 11:04:06.038 INFO kablam! line 2525: byte TypeIn; // max chars to type in - see below Aug 11 11:04:06.038 INFO kablam! line 2526: Aug 11 11:04:06.038 INFO kablam! line 2527: byte L; // left : 0 - 200 Aug 11 11:04:06.039 INFO kablam! line 2528: byte T; // top : 0 - 200 Aug 11 11:04:06.039 INFO kablam! line 2529: byte W; // width : 0 - 200 Aug 11 11:04:06.039 INFO kablam! line 2530: byte H; // height : 0 - 200 Aug 11 11:04:06.039 INFO kablam! line 2531: Aug 11 11:04:06.039 INFO kablam! line 2532: // char Text[TEXT_SIZE]; // 0 to 240 characters of text Aug 11 11:04:06.039 INFO kablam! line 2533: }; Aug 11 11:04:06.039 INFO kablam! line 2534: Aug 11 11:04:06.039 INFO kablam! line 2535: // ClickID byte : this value is returned in IS_BTC and IS_BTT packets. Aug 11 11:04:06.039 INFO kablam! line 2536: Aug 11 11:04:06.039 INFO kablam! line 2537: // Host buttons and local buttons are stored separately, so there is no chance of a conflict between Aug 11 11:04:06.039 INFO kablam! line 2538: // a host control system and a local system (although the buttons could overlap on screen). Aug 11 11:04:06.039 INFO kablam! line 2539: Aug 11 11:04:06.039 INFO kablam! line 2540: // Programmers of local InSim programs may wish to consider using a configurable button range and Aug 11 11:04:06.039 INFO kablam! line 2541: // possibly screen position, in case their users will use more than one local InSim program at once. Aug 11 11:04:06.040 INFO kablam! line 2542: Aug 11 11:04:06.040 INFO kablam! line 2543: // TypeIn byte : if set, the user can click this button to type in text. Aug 11 11:04:06.040 INFO kablam! line 2544: Aug 11 11:04:06.040 INFO kablam! line 2545: // Lowest 7 bits are the maximum number of characters to type in (0 to 95) Aug 11 11:04:06.040 INFO kablam! line 2546: // Highest bit (128) can be set to initialise dialog with the button's text Aug 11 11:04:06.040 INFO kablam! line 2547: Aug 11 11:04:06.040 INFO kablam! line 2548: // On clicking the button, a text entry dialog will be opened, allowing the specified number of Aug 11 11:04:06.040 INFO kablam! line 2549: // characters to be typed in. The caption on the text entry dialog is optionally customisable using Aug 11 11:04:06.040 INFO kablam! line 2550: // Text in the IS_BTN packet. If the first character of IS_BTN's Text field is zero, LFS will read Aug 11 11:04:06.040 INFO kablam! line 2551: // the caption up to the second zero. The visible button text then follows that second zero. Aug 11 11:04:06.040 INFO kablam! line 2552: Aug 11 11:04:06.040 INFO kablam! line 2553: // Text : 65-66-67-0 would display button text "ABC" and no caption Aug 11 11:04:06.040 INFO kablam! line 2554: Aug 11 11:04:06.040 INFO kablam! line 2555: // Text : 0-65-66-67-0-68-69-70-71-0-0-0 would display button text "DEFG" and caption "ABC" Aug 11 11:04:06.040 INFO kablam! line 2556: Aug 11 11:04:06.040 INFO kablam! line 2557: // Inst byte : mainly used internally by InSim but also provides some extra user flags Aug 11 11:04:06.041 INFO kablam! line 2558: Aug 11 11:04:06.041 INFO kablam! line 2559: #define INST_ALWAYS_ON 128 // if this bit is set the button is visible in all screens Aug 11 11:04:06.041 INFO kablam! line 2560: Aug 11 11:04:06.041 INFO kablam! line 2561: // NOTE : You should not use INST_ALWAYS_ON for most buttons. This is a special flag for buttons Aug 11 11:04:06.041 INFO kablam! line 2562: // that really must be on in all screens (including the garage and options screens). You will Aug 11 11:04:06.041 INFO kablam! line 2563: // probably need to confine these buttons to the top or bottom edge of the screen, to avoid Aug 11 11:04:06.041 INFO kablam! line 2564: // overwriting LFS buttons. Most buttons should be defined without this flag, and positioned Aug 11 11:04:06.041 INFO kablam! line 2565: // in the recommended area so LFS can keep a space clear in the main screens. Aug 11 11:04:06.042 INFO kablam! line 2566: Aug 11 11:04:06.042 INFO kablam! line 2567: // BStyle byte : style flags for the button Aug 11 11:04:06.042 INFO kablam! line 2568: Aug 11 11:04:06.042 INFO kablam! line 2569: #define ISB_C1 1 // you can choose a standard Aug 11 11:04:06.042 INFO kablam! line 2570: #define ISB_C2 2 // interface colour using Aug 11 11:04:06.042 INFO kablam! line 2571: #define ISB_C4 4 // these 3 lowest bits - see below Aug 11 11:04:06.042 INFO kablam! line 2572: #define ISB_CLICK 8 // click this button to send IS_BTC Aug 11 11:04:06.042 INFO kablam! line 2573: #define ISB_LIGHT 16 // light button Aug 11 11:04:06.042 INFO kablam! line 2574: #define ISB_DARK 32 // dark button Aug 11 11:04:06.042 INFO kablam! line 2575: #define ISB_LEFT 64 // align text to left Aug 11 11:04:06.042 INFO kablam! line 2576: #define ISB_RIGHT 128 // align text to right Aug 11 11:04:06.042 INFO kablam! line 2577: Aug 11 11:04:06.042 INFO kablam! line 2578: // colour 0 : light grey (not user editable) Aug 11 11:04:06.042 INFO kablam! line 2579: // colour 1 : title colour (default:yellow) Aug 11 11:04:06.042 INFO kablam! line 2580: // colour 2 : unselected text (default:black) Aug 11 11:04:06.042 INFO kablam! line 2581: // colour 3 : selected text (default:white) Aug 11 11:04:06.042 INFO kablam! line 2582: // colour 4 : ok (default:green) Aug 11 11:04:06.042 INFO kablam! line 2583: // colour 5 : cancel (default:red) Aug 11 11:04:06.042 INFO kablam! line 2584: // colour 6 : text string (default:pale blue) Aug 11 11:04:06.042 INFO kablam! line 2585: // colour 7 : unavailable (default:grey) Aug 11 11:04:06.042 INFO kablam! line 2586: Aug 11 11:04:06.042 INFO kablam! line 2587: // NOTE : If width or height are zero, this would normally be an invalid button. But in that case if Aug 11 11:04:06.042 INFO kablam! line 2588: // there is an existing button with the same ClickID, all the packet contents are ignored except the Aug 11 11:04:06.042 INFO kablam! line 2589: // Text field. This can be useful for updating the text in a button without knowing its position. Aug 11 11:04:06.042 INFO kablam! line 2590: // For example, you might reply to an IS_BTT using an IS_BTN with zero W and H to update the text. Aug 11 11:04:06.042 INFO kablam! line 2591: Aug 11 11:04:06.042 INFO kablam! line 2592: // Replies : If the user clicks on a clickable button, this packet will be sent : Aug 11 11:04:06.042 INFO kablam! line 2593: Aug 11 11:04:06.043 INFO kablam! line 2594: struct IS_BTC // BuTton Click - sent back when user clicks a button Aug 11 11:04:06.043 INFO kablam! line 2595: { Aug 11 11:04:06.043 INFO kablam! line 2596: byte Size; // 8 Aug 11 11:04:06.043 INFO kablam! line 2597: byte Type; // ISP_BTC Aug 11 11:04:06.043 INFO kablam! line 2598: byte ReqI; // ReqI as received in the IS_BTN Aug 11 11:04:06.043 INFO kablam! line 2599: byte UCID; // connection that clicked the button (zero if local) Aug 11 11:04:06.043 INFO kablam! line 2600: Aug 11 11:04:06.043 INFO kablam! line 2601: byte ClickID; // button identifier originally sent in IS_BTN Aug 11 11:04:06.043 INFO kablam! line 2602: byte Inst; // used internally by InSim Aug 11 11:04:06.043 INFO kablam! line 2603: byte CFlags; // button click flags - see below Aug 11 11:04:06.043 INFO kablam! line 2604: byte Sp3; Aug 11 11:04:06.043 INFO kablam! line 2605: }; Aug 11 11:04:06.043 INFO kablam! line 2606: Aug 11 11:04:06.043 INFO kablam! line 2607: // CFlags byte : click flags Aug 11 11:04:06.043 INFO kablam! line 2608: Aug 11 11:04:06.043 INFO kablam! line 2609: #define ISB_LMB 1 // left click Aug 11 11:04:06.043 INFO kablam! line 2610: #define ISB_RMB 2 // right click Aug 11 11:04:06.043 INFO kablam! line 2611: #define ISB_CTRL 4 // ctrl + click Aug 11 11:04:06.043 INFO kablam! line 2612: #define ISB_SHIFT 8 // shift + click Aug 11 11:04:06.043 INFO kablam! line 2613: Aug 11 11:04:06.043 INFO kablam! line 2614: // If the TypeIn byte is set in IS_BTN the user can type text into the button Aug 11 11:04:06.043 INFO kablam! line 2615: // In that case no IS_BTC is sent - an IS_BTT is sent when the user presses ENTER Aug 11 11:04:06.043 INFO kablam! line 2616: Aug 11 11:04:06.043 INFO kablam! line 2617: struct IS_BTT // BuTton Type - sent back when user types into a text entry button Aug 11 11:04:06.043 INFO kablam! line 2618: { Aug 11 11:04:06.043 INFO kablam! line 2619: byte Size; // 104 Aug 11 11:04:06.043 INFO kablam! line 2620: byte Type; // ISP_BTT Aug 11 11:04:06.043 INFO kablam! line 2621: byte ReqI; // ReqI as received in the IS_BTN Aug 11 11:04:06.043 INFO kablam! line 2622: byte UCID; // connection that typed into the button (zero if local) Aug 11 11:04:06.043 INFO kablam! line 2623: Aug 11 11:04:06.043 INFO kablam! line 2624: byte ClickID; // button identifier originally sent in IS_BTN Aug 11 11:04:06.044 INFO kablam! line 2625: byte Inst; // used internally by InSim Aug 11 11:04:06.044 INFO kablam! line 2626: byte TypeIn; // from original button specification Aug 11 11:04:06.044 INFO kablam! line 2627: byte Sp3; Aug 11 11:04:06.044 INFO kablam! line 2628: Aug 11 11:04:06.044 INFO kablam! line 2629: char Text[96]; // typed text, zero to TypeIn specified in IS_BTN Aug 11 11:04:06.044 INFO kablam! line 2630: }; Aug 11 11:04:06.044 INFO kablam! line 2631: Aug 11 11:04:06.044 INFO kablam! line 2632: Aug 11 11:04:06.044 INFO kablam! line 2633: // OutSim - MOTION SIMULATOR SUPPORT Aug 11 11:04:06.044 INFO kablam! line 2634: // ====== Aug 11 11:04:06.044 INFO kablam! line 2635: Aug 11 11:04:06.044 INFO kablam! line 2636: // The user's car in multiplayer or the viewed car in single player or Aug 11 11:04:06.044 INFO kablam! line 2637: // single player replay can output information to a motion system while Aug 11 11:04:06.044 INFO kablam! line 2638: // viewed from an internal view. Aug 11 11:04:06.044 INFO kablam! line 2639: Aug 11 11:04:06.044 INFO kablam! line 2640: // This can be controlled by 5 lines in the cfg.txt file : Aug 11 11:04:06.044 INFO kablam! line 2641: Aug 11 11:04:06.044 INFO kablam! line 2642: // OutSim Mode 0 :0-off 1-driving 2-driving+replay Aug 11 11:04:06.044 INFO kablam! line 2643: // OutSim Delay 1 :minimum delay between packets (100ths of a sec) Aug 11 11:04:06.044 INFO kablam! line 2644: // OutSim IP 0.0.0.0 :IP address to send the UDP packet Aug 11 11:04:06.044 INFO kablam! line 2645: // OutSim Port 0 :IP port Aug 11 11:04:06.044 INFO kablam! line 2646: // OutSim ID 0 :if not zero, adds an identifier to the packet Aug 11 11:04:06.044 INFO kablam! line 2647: Aug 11 11:04:06.044 INFO kablam! line 2648: // Each update sends the following UDP packet : Aug 11 11:04:06.044 INFO kablam! line 2649: Aug 11 11:04:06.044 INFO kablam! line 2650: struct OutSimPack Aug 11 11:04:06.044 INFO kablam! line 2651: { Aug 11 11:04:06.044 INFO kablam! line 2652: unsigned Time; // time in milliseconds (to check order) Aug 11 11:04:06.044 INFO kablam! line 2653: Aug 11 11:04:06.045 INFO kablam! line 2654: Vector AngVel; // 3 floats, angular velocity vector Aug 11 11:04:06.045 INFO kablam! line 2655: float Heading; // anticlockwise from above (Z) Aug 11 11:04:06.045 INFO kablam! line 2656: float Pitch; // anticlockwise from right (X) Aug 11 11:04:06.045 INFO kablam! line 2657: float Roll; // anticlockwise from front (Y) Aug 11 11:04:06.045 INFO kablam! line 2658: Vector Accel; // 3 floats X, Y, Z Aug 11 11:04:06.045 INFO kablam! line 2659: Vector Vel; // 3 floats X, Y, Z Aug 11 11:04:06.045 INFO kablam! line 2660: Vec Pos; // 3 ints X, Y, Z (1m = 65536) Aug 11 11:04:06.045 INFO kablam! line 2661: Aug 11 11:04:06.045 INFO kablam! line 2662: int ID; // optional - only if OutSim ID is specified Aug 11 11:04:06.045 INFO kablam! line 2663: }; Aug 11 11:04:06.045 INFO kablam! line 2664: Aug 11 11:04:06.045 INFO kablam! line 2665: // NOTE 1) X and Y axes are on the ground, Z is up. Aug 11 11:04:06.045 INFO kablam! line 2666: Aug 11 11:04:06.045 INFO kablam! line 2667: // NOTE 2) Motion simulators can be dangerous. The Live for Speed developers do Aug 11 11:04:06.045 INFO kablam! line 2668: // not support any motion systems in particular and cannot accept responsibility Aug 11 11:04:06.045 INFO kablam! line 2669: // for injuries or deaths connected with the use of such machinery. Aug 11 11:04:06.045 INFO kablam! line 2670: Aug 11 11:04:06.045 INFO kablam! line 2671: Aug 11 11:04:06.045 INFO kablam! line 2672: // OutGauge - EXTERNAL DASHBOARD SUPPORT Aug 11 11:04:06.045 INFO kablam! line 2673: // ======== Aug 11 11:04:06.045 INFO kablam! line 2674: Aug 11 11:04:06.045 INFO kablam! line 2675: // The user's car in multiplayer or the viewed car in single player or Aug 11 11:04:06.045 INFO kablam! line 2676: // single player replay can output information to a dashboard system Aug 11 11:04:06.045 INFO kablam! line 2677: // while viewed from an internal view. Aug 11 11:04:06.045 INFO kablam! line 2678: Aug 11 11:04:06.045 INFO kablam! line 2679: // This can be controlled by 5 lines in the cfg.txt file : Aug 11 11:04:06.045 INFO kablam! line 2680: Aug 11 11:04:06.045 INFO kablam! line 2681: // OutGauge Mode 0 :0-off 1-driving 2-driving+replay Aug 11 11:04:06.045 INFO kablam! line 2682: // OutGauge Delay 1 :minimum delay between packets (100ths of a sec) Aug 11 11:04:06.046 INFO kablam! line 2683: // OutGauge IP 0.0.0.0 :IP address to send the UDP packet Aug 11 11:04:06.046 INFO kablam! line 2684: // OutGauge Port 0 :IP port Aug 11 11:04:06.046 INFO kablam! line 2685: // OutGauge ID 0 :if not zero, adds an identifier to the packet Aug 11 11:04:06.046 INFO kablam! line 2686: Aug 11 11:04:06.046 INFO kablam! line 2687: // Each update sends the following UDP packet : Aug 11 11:04:06.046 INFO kablam! line 2688: Aug 11 11:04:06.046 INFO kablam! line 2689: struct OutGaugePack Aug 11 11:04:06.046 INFO kablam! line 2690: { Aug 11 11:04:06.046 INFO kablam! line 2691: unsigned Time; // time in milliseconds (to check order) Aug 11 11:04:06.046 INFO kablam! line 2692: Aug 11 11:04:06.046 INFO kablam! line 2693: char Car[4]; // Car name Aug 11 11:04:06.046 INFO kablam! line 2694: word Flags; // Info (see OG_x below) Aug 11 11:04:06.046 INFO kablam! line 2695: byte Gear; // Reverse:0, Neutral:1, First:2... Aug 11 11:04:06.046 INFO kablam! line 2696: byte PLID; // Unique ID of viewed player (0 = none) Aug 11 11:04:06.046 INFO kablam! line 2697: float Speed; // M/S Aug 11 11:04:06.046 INFO kablam! line 2698: float RPM; // RPM Aug 11 11:04:06.046 INFO kablam! line 2699: float Turbo; // BAR Aug 11 11:04:06.046 INFO kablam! line 2700: float EngTemp; // C Aug 11 11:04:06.046 INFO kablam! line 2701: float Fuel; // 0 to 1 Aug 11 11:04:06.046 INFO kablam! line 2702: float OilPressure; // BAR Aug 11 11:04:06.046 INFO kablam! line 2703: float OilTemp; // C Aug 11 11:04:06.047 INFO kablam! line 2704: unsigned DashLights; // Dash lights available (see DL_x below) Aug 11 11:04:06.047 INFO kablam! line 2705: unsigned ShowLights; // Dash lights currently switched on Aug 11 11:04:06.047 INFO kablam! line 2706: float Throttle; // 0 to 1 Aug 11 11:04:06.047 INFO kablam! line 2707: float Brake; // 0 to 1 Aug 11 11:04:06.047 INFO kablam! line 2708: float Clutch; // 0 to 1 Aug 11 11:04:06.047 INFO kablam! line 2709: char Display1[16]; // Usually Fuel Aug 11 11:04:06.047 INFO kablam! line 2710: char Display2[16]; // Usually Settings Aug 11 11:04:06.047 INFO kablam! line 2711: Aug 11 11:04:06.047 INFO kablam! line 2712: int ID; // optional - only if OutGauge ID is specified Aug 11 11:04:06.047 INFO kablam! line 2713: }; Aug 11 11:04:06.047 INFO kablam! line 2714: Aug 11 11:04:06.047 INFO kablam! line 2715: // OG_x - bits for OutGaugePack Flags Aug 11 11:04:06.047 INFO kablam! line 2716: Aug 11 11:04:06.047 INFO kablam! line 2717: #define OG_SHIFT 1 // key Aug 11 11:04:06.047 INFO kablam! line 2718: #define OG_CTRL 2 // key Aug 11 11:04:06.047 INFO kablam! line 2719: Aug 11 11:04:06.047 INFO kablam! line 2720: #define OG_TURBO 8192 // show turbo gauge Aug 11 11:04:06.047 INFO kablam! line 2721: #define OG_KM 16384 // if not set - user prefers MILES Aug 11 11:04:06.047 INFO kablam! line 2722: #define OG_BAR 32768 // if not set - user prefers PSI Aug 11 11:04:06.047 INFO kablam! line 2723: Aug 11 11:04:06.047 INFO kablam! line 2724: // DL_x - bits for OutGaugePack DashLights and ShowLights Aug 11 11:04:06.048 INFO kablam! line 2725: Aug 11 11:04:06.048 INFO kablam! line 2726: enum Aug 11 11:04:06.048 INFO kablam! line 2727: { Aug 11 11:04:06.048 INFO kablam! line 2728: DL_SHIFT, // bit 0 - shift light Aug 11 11:04:06.048 INFO kablam! line 2729: DL_FULLBEAM, // bit 1 - full beam Aug 11 11:04:06.048 INFO kablam! line 2730: DL_HANDBRAKE, // bit 2 - handbrake Aug 11 11:04:06.048 INFO kablam! line 2731: DL_PITSPEED, // bit 3 - pit speed limiter Aug 11 11:04:06.048 INFO kablam! line 2732: DL_TC, // bit 4 - TC active or switched off Aug 11 11:04:06.048 INFO kablam! line 2733: DL_SIGNAL_L, // bit 5 - left turn signal Aug 11 11:04:06.048 INFO kablam! line 2734: DL_SIGNAL_R, // bit 6 - right turn signal Aug 11 11:04:06.048 INFO kablam! line 2735: DL_SIGNAL_ANY, // bit 7 - shared turn signal Aug 11 11:04:06.048 INFO kablam! line 2736: DL_OILWARN, // bit 8 - oil pressure warning Aug 11 11:04:06.048 INFO kablam! line 2737: DL_BATTERY, // bit 9 - battery warning Aug 11 11:04:06.048 INFO kablam! line 2738: DL_ABS, // bit 10 - ABS active or switched off Aug 11 11:04:06.048 INFO kablam! line 2739: DL_SPARE, // bit 11 Aug 11 11:04:06.048 INFO kablam! line 2740: DL_NUM Aug 11 11:04:06.048 INFO kablam! line 2741: }; Aug 11 11:04:06.048 INFO kablam! line 2742: Aug 11 11:04:06.048 INFO kablam! line 2743: ////// Aug 11 11:04:06.048 INFO kablam! line 2744: #endif Aug 11 11:04:06.048 INFO kablam! lines completed Aug 11 11:04:06.049 INFO kablam! thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 30, kind: Other, message: "Read-only file system" }', libcore/result.rs:983:5 Aug 11 11:04:06.049 INFO kablam! stack backtrace: Aug 11 11:04:06.049 INFO kablam! 0: 0x56106b3c1e1e - std::sys::unix::backtrace::tracing::imp::unwind_backtrace::h56b478bd6261cdea Aug 11 11:04:06.049 INFO kablam! at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49 Aug 11 11:04:06.049 INFO kablam! 1: 0x56106b3b9516 - std::sys_common::backtrace::print::h8838f036695641c1 Aug 11 11:04:06.049 INFO kablam! at libstd/sys_common/backtrace.rs:71 Aug 11 11:04:06.049 INFO kablam! at libstd/sys_common/backtrace.rs:59 Aug 11 11:04:06.049 INFO kablam! 2: 0x56106b3b725d - std::panicking::default_hook::{{closure}}::h07e37170271eb3a7 Aug 11 11:04:06.049 INFO kablam! at libstd/panicking.rs:211 Aug 11 11:04:06.049 INFO kablam! 3: 0x56106b3b6fd0 - std::panicking::default_hook::h1ad13ac34d74cb6f Aug 11 11:04:06.049 INFO kablam! at libstd/panicking.rs:227 Aug 11 11:04:06.049 INFO kablam! 4: 0x56106b3b786c - std::panicking::rust_panic_with_hook::h07b48b4bcd79aad0 Aug 11 11:04:06.049 INFO kablam! at libstd/panicking.rs:475 Aug 11 11:04:06.049 INFO kablam! 5: 0x56106b3b7469 - std::panicking::continue_panic_fmt::hc4081a7dfb4b8a83 Aug 11 11:04:06.049 INFO kablam! at libstd/panicking.rs:390 Aug 11 11:04:06.049 INFO kablam! 6: 0x56106b3b7365 - rust_begin_unwind Aug 11 11:04:06.049 INFO kablam! at libstd/panicking.rs:325 Aug 11 11:04:06.049 INFO kablam! 7: 0x56106b400e0b - core::panicking::panic_fmt::h2e62773436200852 Aug 11 11:04:06.049 INFO kablam! at libcore/panicking.rs:77 Aug 11 11:04:06.049 INFO kablam! 8: 0x56106b1f41e5 - core::result::unwrap_failed::h3936aa9a11a34bc3 Aug 11 11:04:06.049 INFO kablam! at /checkout/src/libcore/macros.rs:26 Aug 11 11:04:06.049 INFO kablam! 9: 0x56106b1ec51d - >::unwrap::h97089673a4e6e57b Aug 11 11:04:06.049 INFO kablam! at /checkout/src/libcore/result.rs:782 Aug 11 11:04:06.049 INFO kablam! 10: 0x56106b1ce789 - build_script_build::main::hd2db4ab2111df36c Aug 11 11:04:06.050 INFO kablam! at gen/build.rs:980 Aug 11 11:04:06.050 INFO kablam! 11: 0x56106b1e1b5f - std::rt::lang_start::{{closure}}::h6f6c9be69c81e71f Aug 11 11:04:06.050 INFO kablam! at /checkout/src/libstd/rt.rs:74 Aug 11 11:04:06.050 INFO kablam! 12: 0x56106b3b7302 - std::panicking::try::do_call::haa9e0167fafd552a Aug 11 11:04:06.050 INFO kablam! at libstd/rt.rs:59 Aug 11 11:04:06.050 INFO kablam! at libstd/panicking.rs:310 Aug 11 11:04:06.050 INFO kablam! 13: 0x56106b3d0c99 - __rust_maybe_catch_panic Aug 11 11:04:06.050 INFO kablam! at libpanic_unwind/lib.rs:105 Aug 11 11:04:06.050 INFO kablam! 14: 0x56106b3bdb55 - std::rt::lang_start_internal::hfce2f8e9f7e3c6bc Aug 11 11:04:06.050 INFO kablam! at libstd/panicking.rs:289 Aug 11 11:04:06.050 INFO kablam! at libstd/panic.rs:392 Aug 11 11:04:06.050 INFO kablam! at libstd/rt.rs:58 Aug 11 11:04:06.050 INFO kablam! 15: 0x56106b1e1b37 - std::rt::lang_start::ha8d6d5245bc24738 Aug 11 11:04:06.050 INFO kablam! at /checkout/src/libstd/rt.rs:74 Aug 11 11:04:06.052 INFO kablam! 16: 0x56106b1cfc99 - main Aug 11 11:04:06.052 INFO kablam! 17: 0x7f29d923a82f - __libc_start_main Aug 11 11:04:06.052 INFO kablam! 18: 0x56106b1af068 - _start Aug 11 11:04:06.052 INFO kablam! 19: 0x0 - Aug 11 11:04:06.052 INFO kablam! Aug 11 11:04:06.052 INFO kablam! su: No module specific data is present Aug 11 11:04:06.659 INFO running `"docker" "rm" "-f" "eac2a4a9b9b104b8a07465919afddd4681b85c731f9553d4ee2a951c7b1178a9"` Aug 11 11:04:06.845 INFO blam! eac2a4a9b9b104b8a07465919afddd4681b85c731f9553d4ee2a951c7b1178a9