|
Server Install linuxRewrote most of the page to add some missing pieces and also include instructions for the 451 patch. Revision as of 15:03, 28 February 2010 Current revision Line 1: Line 1: -This guide will show you step by step how to install Unreal Tournament on a Linux box.+This guide will show you step by step how to install Unreal Tournament 99 on a Linux box. It will contain information about applying patch 451, because without it, there is no functioning webadmin. First and foremost, you need to create a regular user. **DO NOT** use ROOT to run the game server!! First and foremost, you need to create a regular user. **DO NOT** use ROOT to run the game server!! -If you know the root password and you need to setup a user, then use this command.+First you have to have a user which will run the server. Different Linux distributions each have their own way, but usually, you can do: + + adduser [username] -''useradd [username]''+This will run a scripts that will ask a few questions, like the password. - + -To give it a password, type this:+ - + -''passwd [username]'' + - + -It will then ask you to enter a password, then confirm it.+ Once that is done, login with that user. Easiest way to do this without logging out is to use the su command. Once that is done, login with that user. Easiest way to do this without logging out is to use the su command. -''su [username]''+ su - [username] -(It will ask you to enter the users password, unless you are in root.)+Ok so now that we have our user, we need to change directory to it's home directory. So lets do that: -Ok so now that we have our user, we need to change directory to it's home directory. So lets do that. Simply type cd+ # (note: with some distro's this will not work. You'll have to type cd /home/[username] ) + cd -''cd''+Next, we want to download the server, patches and abfackelns Server Utilities (ASU) (file locations may change in the future, which will cause the links not to work anymore. Change as needed): -(note: Some distros this will not work. You'll have to type ''cd /home/[username]'' )+ wget http://ut-files.com/Entire_Server_Download/ut-server-436.tar.gz + tar -zxf ut-server-436.tar.gz + cd ut-server + wget http://www.ut-files.com/Patches/UTPGPatch451LINUX.tar.tar # May be changed to .tar.bz2 by the admins soon + tar xfj UTPGPatch451LINUX.tar.tar + wget http://ut-files.com/Entire_Server_Download/server_scripts/asu-0.6.tar.gz + tar -zxf asu-0.6.tar.gz + chmod +x asu.sh + cd System + ln -s libSDL-1.1.so.0 libSDL-1.2.so.0 + cd $HOME/ut-server -This will bring you to the home directory of the user you are logged in with. Now we need to download the server packages, we will use wget for this.+Because of some error ([http://www.unrealadmin.org/forums/showthread.php?t=29770 as described]), map names with ][ in them, like DM-Deck16][, are 0 bytes. So, you have to copy them from some other UT installation. 2399Skillz on the forums said he'll fix it, so it might be fixed at some point. -''wget http://ut-files.com/Entire_Server_Download/ut-server-436.tar.gz''+The server (at moment of writing) has special net-textures, to reduce the size of the installation. Problems my occur when clients are using the high-res textures (see [http://www.unrealadmin.org/forums/showthread.php?t=29770 aforementioned topic]). To solve this, copy the normal CD1 textures to the server dir: -This will download the 436 patched dedicated Unreal Tournament Linux Server. Once it completes, you'll then want to extract it. We'll use this command to do that.+ # Can also be copied from an UT installation that doesn't have the CD2 textures. + cp -v /path/to/cd/System/Textures/* $HOME/ut-server/Textures/ -''tar -zxvf ut-server-436.tar.gz''+Now we need to run the server utilities: -This may take a moment depending on how fast the server you're installing this on is. Once this is done, you'll want to change directory to the server install. Simply use cd.+ ./asu.sh -''cd ut-server''+This should open a texted based menu. Just to get the server started, we're only going to focus on setting up the startup script. So choose option I. - + -Now that we are in here, you can do an ls command to display the contents of the directory.+ - + -''ls''+ - + -Now it's time to get the server started. There are multiple startup lines you can use, there are also more than one way to start the server. I'm going to install abfackelns Server Utilities (ASU) to start/stop/restart the server, as well as set the startup line. It's very simple. First we need to download asu.+ - + -''wget http://ut-files.com/Entire_Server_Download/server_scripts/asu-0.6.tar.gz''+ - + -Now we need to extract it, see if you can remember how to do this. If not, then here.+ - + -''tar -zxvf asu-0.6.tar.gz''+ - + -This will extract the archive. Shouldn't take too long, it's relatively small.+ - + -Now we need to make it executable. To do this, simply type this.+ - + -''chmod +x asu.sh''+ - + -This should make it executable. Now we need to run it.+ - + -''./asu.sh''+ - + -This should open a texted based menu. Just to get the server started, we're only going to focus on setting up the startup script. So press + - + -''I''+ It will tell you something about running as root or regular user, regardless of what it says. Do not run it as root. It will ask you what user will be running the script, enter the user name of the user you created earlier. It will tell you something about running as root or regular user, regardless of what it says. Do not run it as root. It will ask you what user will be running the script, enter the user name of the user you created earlier. -''[username]''+Next it will ask you to enter the IP-address it will listen on. You only need to do this if there are more than one IPs on the server. If in doubt, leave empty. -Now it will ask you to enter an IP. You only need to do this if there are more than one IPs on the server. If in doubt, then enter the IP you use to connect to the server.+Next it will ask you what game type you want to run, if you do not see the game type you plan on running, don't worry. Just select DM for now. -''[the server ip]''+Then it will ask you what map you want to start with. Just choose one of the maps shown. Doesn't matter, can be changed later. - + -Now it will ask you what game type you want to run, if you do not see the game type you plan on running, don't worry. Just select DM for now.+ - + -''[enter the number then press enter]''+ - + -Now it will ask you what map you want to start with. Just choose one of the maps shown. Doesn't matter, can be changed later.+ - + -''[type the map name then press enter]''+ If you plan to run mutators, then enter them now. Only enter one, then press enter. It'll keep asking this question till you submit a blank answer. If you don't want to run any mutators, then just press enter. If you plan to run mutators, then enter them now. Only enter one, then press enter. It'll keep asking this question till you submit a blank answer. If you don't want to run any mutators, then just press enter. -''[type the mutator or just press enter to skip]''+Once you are done with that, it should show you the configs/setup you just entered. Review it to make sure it looks right. Then you can exit the script. -Depending on how many mutators you wanted to enter, this could take some time. If you don't see your mutator listed, don't worry. We'll add it later.+The script will have made an ucc.init file. Important to know is, that the path of the server is set in it. So, if you want to move the server to another dir, you have to change that file. The path name is mentioned several times. -Once you are done with that, it should show you the configs/setup you just entered. Review it to make sure it looks right.+Next you want to enable the webadmin. You can do that by opening UnrealTournament.ini, going to the [UWeb.WebServer] section and setting bEnabled=True and choose a port (5080 is standard) (ListenPort line may need to be added): -''[press x to exit, then press enter]''+ [UWeb.WebServer] + Applications[0]=UTServerAdmin.UTServerAdmin + ApplicationPaths[0]=/ServerAdmin + Applications[1]=UTServerAdmin.UTImageServer + ApplicationPaths[1]=/images + DefaultApplication=0 + bEnabled=True + ListenPort=5080 -Now you should be back in the directory. Type out ls to list the contents of the directory, you should see a new file called ucc.init.+Also set a password in the UTServerAdmin.UTServerAdmin section (already defined), otherwise people will try to log in with the defaults: -''ls''+[UTServerAdmin.UTServerAdmin] +AdminUsername=admin +AdminPassword=mybiggestsecret -If you want to setup a custom startup command, then you can edit this file manually. Depending on what editor you use, open the file. I use pico.+When going to the webadmin, be sure to include /ServerAdmin/ in your address bar after the host, because otherwise it will try to redirect you to that, using a HTTP redirect, but that will fail because the server has no idea you’re using an internet hostname and therefore it will redirect you to it’s LAN-IP, which obviously won’t work if the server is not in your LAN. So, go to http://hostname:5080/ServerAdmin/ (Don't forget trailing slash). -''pico ucc.init''+As a security precaution, patch 451 adds brute force protection to the admin login. See the file Releasenotes.htm in the Help dir for more info. In the Engine.Gameinfo section, a few rules should be added/modified (depending on whether they’re already there or not): -It should show a bunch of stuff. What you are focusing on, if you want to change anything are the first few lines.+ [Engine.GameInfo] - + (snip) -MYGAME=Botpack.DeathMatchPlus+ ... -MYMAP=DM-Barricade+ LoginDelaySeconds=1.000000 -MYUSERID=unreal+ MaxLoginAttempts=50 -MYDIR=/home/unreal/ut-server/.+ ActionToTake=DO_KickBanPlayer -MYIP=+ -MYMODS=+ -MYINI=/home/unreal/ut-server/./System/UnrealTournament.ini+ -MYUSER=User.ini+ - + -Change them to your desire, separating mutators with commas.+ If all is well, then you can go ahead and skip that step and just start the server using this command. If all is well, then you can go ahead and skip that step and just start the server using this command. -''./ucc.init restart''+ ./ucc.init start - + -I prefer to use restart, just because it makes sure the process isn't already running, if it is it will kill it, then restart it.+ If you need to stop the server then type this If you need to stop the server then type this -''./ucc.init stop''+ ./ucc.init stop - + -Please note. You will have to be in the main directory the server is installed in. If you get an error, then simply type this+ - + -''cd''+ -''cd ut-server''+ -This will bring you back to your home directory, then to the ut-server directory assuming you followed this guide step by step.+Or restart: + ./ucc.init restart -I will update this tutorial later with better formatting and more options. This should get the average user who doesn't know anything about Linux up and running.+If you have issues with UT complaining about not being able to find it's data files (see the Logs dir for the error messages if it won't start), you need to set the UT_DATA_PATH variable. To do that, I added this line below MYUSER=User.ini in ucc.init: + export UT_DATA_PATH="$MYDIR/System/" == Discussion == == Discussion == halfgaar foobarUT3 ICMP FailNew page Here I will describe the bug that makes some servers invisible in server browser.== Symptom == Your server doesn't appear in the list of servers, and appears in favorites like offline one, with 999 ping, no player list, no map, etc. However, you can still join the server manually or through "Favorites". The server has its query port open, you can verify that using [[UT3_query_protocol | protocol description]]. The most interesting thing: if you run the game client with administrator rights, the server will appear in the list. == Introduction == This thing happened before, but it has been resolved pretty quickly so nobody noticed it. But around November 2009 it appeared again, and hasn't been fixed so far. == Technical Details == This bug has two sides: client and server. Server's part actually means GameSpy's one though, but it's closely related to server. === Client === It was easy to figure out with Wireshark that UT3 sends ICMP packets to some servers instead of using [[UT3_query_protocol | UDP query]]. ICMP is a control protocol and is unavailable to non-root users in most operating system. That applies to Windows too, since Winsock is based on Berkeley sockets. So when the game cannot send a packet, it consider the server offline. ICMP packets were just Echo Request, so they don't carry any data about player counts, etc. But response from GameSpy master server does. The more difficult part was to figure out how game exactly discriminate the servers. Using certain reverse-engineered tool to query the master server didn't yield any results, there were no difference between "normal" and "ICMP" servers. Then I have tried to compare request sent by that tool and by the game. There actually were some differences. (I won't go into details for now, but if you're interested, let me know). So I hacked into that tool since it's open-source and made it send request identical to that the game sends. The difference between responses became obvious. With that flag set, master server give only ip:port pairs for "normal" servers, but for "ICMP" ones it also gives information like mapname, player counts, etc. And then ICMP is used to determine ping. The fatal flaw was assumption that the game will always run with root rights. It wasn't true even for pre-Vista OSes. Most users did run everyting with admin rights, since entering admin password all the time was very inconvenient. And many application had and still have this flaw. Vista and later has some mechanism to work around this with VirtualStore, but XP didn't, and such legacy applications wouldn't run in XP at all with insufficient privileges. That's why very few people actually worked under limited account. But raw sockets cannot be worked around that easily, because they can be exploited to disturb the network. Well, back to the topic. === Server === The client side became clear. I thought I have gathered enough information so GameSpy or Epic Games could just fix it. I was wrong. After some useless [http://utforums.epicgames.com/showthread.php?t=708895 discussion at Epic's Forum] some guy from Gamespy named '''recurve7''' finally has shed some light. He said that the GameSpy uses certain probe packet to determine what kind of NAT the server has. If NAT appears to be strict, the server is flagged "ICMP". Note that it has nothing to do with STUN. The latter is implemented by Epic Games, and appears to do absolutely nothing. In my opinion, the probe makes no sense. He also said that strict firewall would prevent the client from getting information about the server. It could make sense in P2P games, but how's client supposed to connect to game port if the firewall is strict, then? "Game port is open, but query one - isn't" case is silly. It wouldn't be such problem if it really detected firewall correctly. But. I have launched a server behind a router, didn't forward or opened any ports. Started packet capture on the router. '''recurve7''' said that probe should come to the query port. Thanks to NAT, my query port became 61210 instead of 6500. My unjoinable server appeared in the "ICMP" list at the master server with port 61210, as predicted. I launched Wireshark on the router, but didn't see any incoming packets on this port, besides replies on advertising packets. He also said that they should come from another host, so there definitely weren't any. Where did they gone? I don't know. Despite there weren't any packets, it was indeed correct detection of my strict NAT. However, I wrote a simple script that fetches data from the master server, takes only "ICMP" servers and tries to use UDP query on them. The results were unsurprising. ''Almost all'' "ICMP" servers do have the query port open and responding. I guess the non-responding ones were firewalled listen servers, but it doesn't matter now. In short, probe is wrong, and ICMP isn't needed. The game worked without it before, and there were no problems. Apparently the code that makes ICMP requests existed in the game from the begginning, but only 'recent' changes on the master-server triggers it. == Their position== <blockquote style="max-width: 30%; float: right;"><p>'''Resolution''': UT3 must be run as Administrator.</p><div style="float: right;">''Flak''</div> <p style="clear: both;">...this is very likely a client-query issue and not a host-listing issue, and is likely <u>the result</u> of some subset <u>of</u> the player community <u>not running</u> the game client as Administrator.</p><div style="float: right;">''recurve7''</div></blockquote> Nor GameSpy nor Epic Games didn't acknowledge that this's their problem. They offered a work-around as a resolution. Obviously, average player sees no reason to run the game as Adminstrator. He's not even aware of servers he didn't see. If they released a patch that made UT3 request admin rights using Windows API, it would be a very bad solution, but still solution. After our attempts to make them change their mind, ''Flak'' suddenly closed the thread, stating that any further communication for ''recurve7'' should be sent to her via PM. I've sent a PM on the 13th of January, but got no answer so far. == Conclusion == This's a very nasty bug that affects roughly one sixths of servers. The number of affected players is unknown, but it will affect more of them as number of Windows 7 machines increases. Epic Games and GameSpy don't acknowledge it, but it's certainly a regression. It's not player's fault who doesn't run the game as Administrator. I thought that many players' opinion about GameSpy that ruins the game was biassed. How could unchangable nicknames really ruin the game? Server browser? It's Epic's code built on top of GameSpy API. Minor problems with login, etc.? Epic Games' implementation would probably had such issues, too. But now it's clear that GameSpy really kills the game. == Links == * [http://lists.unrealadmin.org/archive/ut3servers/ UT3Servers mailing list archive] - November-January, "Gamespy Weirdness" thread (if you don't have the password, nevermind) * [http://utforums.epicgames.com/showthread.php?t=708895 Discussion on Epic Games forums] [[Category:UT3]] WGH foobar UT2004/* Community links */ Revision as of 02:35, 1 January 2010 Current revision Line 42: Line 42: * http://www.beyondunreal.com * http://www.beyondunreal.com * http://www.planetunreal.com * http://www.planetunreal.com +* http://www.defconservers.com + [[Category:UT2004|*]] [[Category:UT2004|*]] [[Category:Games]] [[Category:Games]] defconservers foobarSmartCTF/* Options in the .ini file */ Revision as of 18:57, 27 December 2009 Current revision Line 8: Line 8: This mod was originally made by {PiN}Kev around January 2004 (versions 1 to 4). In January/March 2005 it was picked up by {DnF2}SiNiSTeR (versions 4A to 4C). [es]Rush released a version 4D which implemented his CountryFlags. This mod was originally made by {PiN}Kev around January 2004 (versions 1 to 4). In January/March 2005 it was picked up by {DnF2}SiNiSTeR (versions 4A to 4C). [es]Rush released a version 4D which implemented his CountryFlags. + +4 years after the last version, SmartCTF had it's comeback! In December 2009, }IN{The_Cowboy & Sp0ngeb0b released a new version, containing many new enhancements which have been added over the years in 'in-official' versions. [http://www.dnfclan.com/~sin/SmartCTF SmartCTF {DnF2}SiNiSTeR modifications Homepage] [http://www.dnfclan.com/~sin/SmartCTF SmartCTF {DnF2}SiNiSTeR modifications Homepage] Line 17: Line 19: == Changelog == == Changelog == + +=== SmartCTF 4E === +: ''Adminthis & }IN{The_Cowboy & Sp0ngeb0b, December 2009'' +# Added option to show SmartCTF scoreboard by default. +# Added option to show spectators on SmartCTF scoreboard. +# Added option to color the spectator-line on SmartCTF scoreboard. +# Added option to create keybind on client. Scoreboard can be changed by pressing F3. +# Added option to inform players about keybind. +# Added option to specify scoreboard initialization delay (required for compatibility with some server configurations). +# Added option to specify intro message delay (in case it is suppressed by a lot of other onjoin messages). +# Added score restoring feature +# Removed accessed none warnings +# Added Snowy SmartCTF scoreboard and santa images +<br> === SmartCTF 4D === === SmartCTF 4D === Line 143: Line 159: * Now open <tt>UnrealTournament.ini</tt> (in your <tt>UT\System</tt> folder) and look for <tt>[Engine.GameEngine]</tt>. * Now open <tt>UnrealTournament.ini</tt> (in your <tt>UT\System</tt> folder) and look for <tt>[Engine.GameEngine]</tt>. * Add the following to the list of <tt>ServerPackages=</tt>: * Add the following to the list of <tt>ServerPackages=</tt>: -*: <tt>ServerPackages=SmartCTF_4D</tt>+*: <tt>ServerPackages=SmartCTF_4E</tt> * If you want to use '''IpToCountry''' you also have to add these * If you want to use '''IpToCountry''' you also have to add these *: <tt>ServerPackages=CountryFlags2</tt> *: <tt>ServerPackages=CountryFlags2</tt> Line 149: Line 165: *: but that should be described in IpToCountry's readme, and besides you need the <tt>IpToCountry.u</tt>. *: but that should be described in IpToCountry's readme, and besides you need the <tt>IpToCountry.u</tt>. * Also, if you don't want to select the SmartCTF mutator each time but have it be added to CTF games by default, you have to add another line ''to the end'' of the list of <tt>ServerActors=</tt>: * Also, if you don't want to select the SmartCTF mutator each time but have it be added to CTF games by default, you have to add another line ''to the end'' of the list of <tt>ServerActors=</tt>: -*: <tt>ServerActors=SmartCTF_4D.SmartCTFServerActor</tt>+*: <tt>ServerActors=SmartCTF_4E.SmartCTFServerActor</tt> * There's a reason this has to be added at the end. The mutator will take the current scoreboard to show by default, but meanwhile replace it with the SmartCTF scoreboard. If say the ScoreBoard utility MODOSUtilV25 gets loaded after SmartCTF, the MODOS scoreboard won't get detected, or the SmartCTF scoreboard won't show. Note that UTPure also changes the scoreboard in Tournament games, for the clickboard. So place it after UTPure too. * There's a reason this has to be added at the end. The mutator will take the current scoreboard to show by default, but meanwhile replace it with the SmartCTF scoreboard. If say the ScoreBoard utility MODOSUtilV25 gets loaded after SmartCTF, the MODOS scoreboard won't get detected, or the SmartCTF scoreboard won't show. Note that UTPure also changes the scoreboard in Tournament games, for the clickboard. So place it after UTPure too. * Also, SmartCTF Server Info won't work if you insert the package in the list before UTPure! * Also, SmartCTF Server Info won't work if you insert the package in the list before UTPure! Line 159: Line 175: == Options in the .ini file == == Options in the .ini file == -Just open up the <tt>SmartCTF_4D.ini</tt> in the <tt>UT\System</tt> folder. If you can't find it, run a game with SmartCTF one time to generate it with the default options.+Just open up the <tt>SmartCTF_4E.ini</tt> in the <tt>UT\System</tt> folder. If you can't find it, run a game with SmartCTF one time to generate it with the default options. -[http://www.dnfclan.com/~sin/SmartCTF/readme/4D.htm#ini Documentation here]+[http://www.unrealriders.de/files/readme.html#ini Documentation here] <br> <br> Line 226: Line 242: * '''I want to edit or delete the SmartCTF F2 server stats. How?''' * '''I want to edit or delete the SmartCTF F2 server stats. How?''' -*: Open the server's <tt>User.ini</tt> file. Find the <tt>[SmartCTF_4D.SmartCTFEndStats]</tt> block near the end. Edit it or delete the whole block.+*: Open the server's <tt>User.ini</tt> file. Find the <tt>[SmartCTF_4E.SmartCTFEndStats]</tt> block near the end. Edit it or delete the whole block. <br> <br> Line 239: Line 255: Other sections to be copied from the documentation. Other sections to be copied from the documentation. [http://www.dnfclan.com/~sin/SmartCTF/readme/4D.htm See source documentation for now]. [http://www.dnfclan.com/~sin/SmartCTF/readme/4D.htm See source documentation for now]. + +[http://www.unrealriders.de/files/readme.html See 4E source documentation for now]. Sp0ngeb0b foobarUT3/* Patches */ Revision as of 07:07, 13 December 2009 Current revision Line 23: Line 23: === Patches === === Patches === *Current *Current -:N/A+* [http://www.defconservers.comgamepatches/ut3_patch5_v2.1.zip UT3 Patch 5 v.2.1] *Older *Older Line 32: Line 32: === Bonus Packages === === Bonus Packages === -*N/A+* [http://www.defconservers.comgamepatches/ut3_titan_bonuspack.rar Titan Bonus Pack] -:N/A+ == Community links == == Community links == Line 40: Line 39: * http://www.beyondunreal.com * http://www.beyondunreal.com * http://www.planetunreal.com * http://www.planetunreal.com +* http://www.defconservers.com [[Category:UT3|*]] [[Category:UT3|*]] [[Category:Games]] [[Category:Games]] defconservers foobarUnreal Tournament/* Community links */ Revision as of 06:51, 13 December 2009 Current revision Line 48: Line 48: * http://www.unrealplayground.com * http://www.unrealplayground.com * http://www.unrealaddicts.com * http://www.unrealaddicts.com +* http://www.defconservers.com [[Category:UT|*]] [[Category:UT|*]] [[Category:Games]] [[Category:Games]] defconservers foobarUT3 query protocol
Revision as of 13:47, 23 November 2009
Current revision
Line 21:
Line 21:
Byte 3 (09) indicate that the client wishes to receive the challenge string. Byte 3 (09) indicate that the client wishes to receive the challenge string.
-Bytes 4 to 7 (''XX XX XX XX'') are a timestamp, in milliseconds. It is overall ''and'' per byte big-endian. According to the available data on Gamespy protocol, this can be any value, and is only used as an identifier to distinguish between multiple packets from the same server. Apparently UT3 uses time to generate these timestamps.+Bytes 4 to 7 (''XX XX XX XX'') are a binary-packed timestamp, in seconds. According to the available data on Gamespy protocol, this can be any value, and is only used as an identifier to distinguish between multiple packets from the same server. Apparently UT3 uses time to generate these timestamps. Since time_t is a 4-byte signed integer data type, you should use such datatype here.
Line 33:
Line 33:
Bytes 7 to 18 (''YY YY YY YY YY YY YY YY YY YY YY YY'') is an ASCII represented number. Bytes 7 to 18 (''YY YY YY YY YY YY YY YY YY YY YY YY'') is an ASCII represented number.
-This number can start with a - sign (2D), and is padded with 00's at the end.+This number can start with a minus sign, and is null-padded at the end. You'll need to convert it to integer data type to use it later.
Line 44:
Line 44:
Byte 3 (00) indicates that this is a request for server information. Byte 3 (00) indicates that this is a request for server information.
-Bytes 4 to 7 (''WW WW WW WW'') is a new timestamp. It normally only changes in the first byte, as the 3rd request is usually sent within milliseconds of the first request.+Bytes 4 to 7 (''WW WW WW WW'') is a timestamp again.
-Bytes 8 to 11 (''ZZ ZZ ZZ ZZ'') is the hexadecimal representation of the number received from Packet 2. If that number was negative, it needs to be subtracted from 4294967296 before it is transcoded into the hexadecimal value. +Bytes 8 to 11 (''ZZ ZZ ZZ ZZ'') is binary packed number received from Packet 2 (signed 4-byte big-endian integer).
Bytes 12 to 15 are always (FF FF FF 01). Bytes 12 to 15 are always (FF FF FF 01).
WGH foobar
Talk:UT3 query protocolMilliseconds? Revision as of 13:20, 23 November 2009 Current revision Line 11: Line 11: --[[profile:18431|Cruz]]: --[[profile:18431|Cruz]]: + +== Milliseconds? == + +<blockquote>Bytes 4 to 7 (XX XX XX XX) are a timestamp, in milliseconds.</blockquote> +Really milliseconds? I doubt there is a way to put long in four-byte integer, even if it's unsigned. But seconds fit there perfectly. --[[profile:14212|WGH]] 13:20, 23 November 2009 (GMT) WGH foobar |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||