Ant, please note I am away from this Saturday so I will not be around if you have questions/problems with the app. Just email me and I will pick it up on my return.
Just tested and when "Voluntary added mass" = 0 kg the "Added mass position (front)" is greyed out and it makes no difference to the cars weight distribution when you move it.
This was tested offline. Maybe when online a server can force the mass and you do not see it. I can't test this 'cos my server is off.
I noticed this bug at our last league race (OLFSL 3 by 500servers - 19:26, 03 Jun 2007 - Fernbay Rallycrss Rev - 35 laps). During the race, I left and decided to watch the race in the Progress window. But it was very strange. There were about 15 in the race, only 3 were shown with positions, 1 was spectating (which he was) and the rest were all showing as "in pits".
Also, during the race, the positions of the three racers that had positions shown moved randomly all over the place.
I took screenshots as different times during the race (one on lap 16 and one on lap 18) and they are attached.
The race server was on Patch W at the time (with no test patches).
Well, I thought I would get the ball rolling on the next event...
First, a question - how to hell do you keep the MRT floored through the back complex (down and up "big dipper" part)! Everytime I try, I just spin around. I just watched Mooney's lap (53.66) and you are flat all the way through it!
Amazin'
Oh, well - more practice and hopefully I can get below the 56.00 where I am stuck at the moment. Then again, I don't fancy my chances of getting around this track sixty times!
I was really looking forward to this one and I had managed to claw my way into Pool 3 for only the second time ever
Unfortunately, I had installed an over-clocking utility which came with my motherboard and (even though it wasn't doing much) it caused me to "time travel" in LFS when connected to a server (because it couldn't keep in time with the server). This meant that after about 4 or 5 laps, I was just showing as lagging and I was running around on my own. I could still see other peoples chat and I could chat, but racing was out of the question.
It took me a while (and a system restore ) to get it back, but I am now ready for MRT at AS1R!
I know, don't worry I am just testing at the moment. And even when this is complete I do not intend releasing it to the masses - only a select few
This is the type of thing I need! I am not, by any means, an expert programmer. I know what I need to do when I get less data than I need - wait for some more and then add on the bits I am missing. BUT I can guarantee that it will not work if I code it and just wait for it to happen. I need to test it and make sure, and I can only do that when it happens.
I will try this, because the one thing I am so far unable to do is find out and change how big the receive buffer is. If I can do this, then I can test it and then I will know I am covered when it occurs.
Thanks, and yes that is exactly what I do. I have the routine that receives data from the TCP stream which passes the array of bytes received to a routine which checks the first byte ("size") and then checks it against the size of bytes received on the stream.
As you know, there are three possiblities:
1. The size received matches the size of the LFS packet. I then pass the data to the process routine. The process routine only knows how to deal with full and complete LFS packets.
2. The size received is greater than the size of the LFS packet. In this case, I pass the first LFS packet to the process routine and then re-process the rest of the actual data received.
3. The size received is less than the size of the LFS packet. In this case I know that I need to wait for more data and then add it to the end, and then process it. I have as yet, never encountered this case. All I have here is a message box waiting to pop up and say "Not enough data received".
Last night, I connected to a very full server, which had about 23 people connected and people joining and leaving and talking and pitting and racing and everything. Now, apart from my PC having some issues and my application not being able to keep up with where everybody was (but I know this is a limitation of what I have coded) then I never saw case 3 as described above.
I then connected to another server with about 7 racers and I got the same results again.
Like I say, I do not deny that this is not possible, I am just saying that I would have expected to have seen it by now with the amount of testing I have done.
I have been using the new insim over TCP/IP for quite some time now, including connecting to a local guest, a local host and a remote host over the internet and have yet to experience the "not receiving enough data" and have never yet had to buffer the received data and wait for some more to finish the LFS Packet.
Now, I am using VB6 with its standard WinSock control and it fires a routine called _DataArrival when data is received from the TCP socket. I do not know if this function somehow compensates for the fact that TCP can break up the initial "packet".
Getting a few LFS packets in altogether happens all the time and I have been able to accomodate this (as I had it happening and could test and debug it until it worked). However, with the split packet, I have never had it so I have not worked how what to do with it. I am of course looking for it and I just have a message box which will pop up the first time it happens!
Don't get me wrong, I fully understand the reasons that it can and will happen, I just wonder if VB6 compensates already.
I think I may have found a bug in InSim. I have a program which can talk to InSim and the first thing it does with received packets is check the amount of bytes received against byte 0 and byte 1 (using a lookup table) to ensure it has received enough or not.
This works fine everywhere apart from one place - when I start a multiplayer replay. I haven't tried it with a single player replay yet as I have been scratching my head hard to make sure I am not missing anything obvious (apologies again, if I have )
When I start a multiplayer replay I get a packet which is 40 bytes long (0 to 39) and the first two bytes are as follows:
byte(0) = 40
byte(1) = 10
The rest of the bytes from 2 to 39 are all = 0.
Now, this packet seems to be an ISP_ISM, but this should be 8 bytes in size, so I expect byte(0) to be 8 not 40. I can't see any LFS packets that are 40 bytes and there is nothing in the rest of the packet which gives me any clue as to what it is.
Can anyone else confirm this before Scawen takes a look? I am using W29.
AI dont have UCIDs so when the the connection that created them leaves, I would expect the AI to leave also. I can not confirm this at this moment, but I am fairly sure this will happen.
struct IS_RES // RESult (qualify or confirmed finish) { byte Size; // 84 byte Type; // [COLOR=red]ISP_PFL[/COLOR] byte ReqI; // 0 byte PLID; // player's unique id (0 = player left before result was sent)
byte Type should have ISP_RES not ISP_PFL as the comment.
Phew, I am glad you understand my reasons for re-posting.
The reason I ask for this is because I am writing a race control app which will be used for the hosts that watch and manage league races. By the term "host" I mean a guest connecting to the server with admin rights who then just spectates the entire race and ensures that rules etc are followed. In our league, the "hosts" are not hosts in the LFS sense of the word, they are guests who log on with admin rights. (I hope this makes sense so far).
Currently, re-ordering a race to start in the correct order is done by everyone joining in the correct order. The IS_REO function would simplify this immensly and streamline the hosting process.
I would be perfectly happy for an admin to be able to re-order the race, but I can see that there could be issues if there were multiple admins all trying to re-order the race at the same time. Perhaps only the first admin to connect could do the re-ordering or the admin with the lowest UCID only.
If not, then I will have to get the hosts to know the IP address of the server they are "hosting" and connect as the proper host.
I think that is enough uses of the word host now!
Can anyone else think of any issues this may cause?
I don't mean to be pushy, but I get the feeling that you missed my last post (quoted above). If you did notice it - then I am really sorry, but I don't want to keep coding this the way I am doing if it is not going to work.
I can confirm that it now works as expected. However, I now have another question about this IS_REO feature. When I connect InSim directly to the server, it works. When I connect InSim to a client connected to the server (logged in as admin) it does not work.
Is this by design?
EDIT: using W24 host and W24 client. By "does not work", I mean, nothing happens, no errors no nothing including no packets back from LFS.
I just changed the packet size to 32 (ie 28 cars) and I don't get the error any more. It doesn't reorder the grid for me, but that may be that I am not doing it at the right time.
The InSim.txt definately says 36 bytes for this struct.
EDIT: Packet size changed (using 32) and then connected to multiplayer host and it works!