The online racing simulator
Searching in All forums
(384 results)
Kegetys
S2 licensed
Quote from Tweaker :BTW, Kegetys, I noticed in that one-handed preview video of yours, at the end you hit the metal wall and it makes a metal scratch/ding noise. Is that something you did??? (Also what was that cuckoo clock sound in the background, lol)

It's some old sound mod I made out of the crash sound effects from RBR. Dunno about cuckoo clock sounds, maybe the shifter whining? (I need to fix that someday...)
Kegetys
S2 licensed
I made a thread for the(now released) MOMO led program at http://www.lfsforum.net/showthread.php?p=124348
MOMO LEDs
Kegetys
S2 licensed
As discussed already in another thread, I made a little program that flashes the LEDs on Logitech MOMO and MOMO Racing based on events in LFS using OutGauge.

You can get it from my LFS site at http://www.kegetys.net/lfs/. It can be configured to display the shift light, handbrake, pitspeed limiter, tc, low fuel, RPM's, etc. individually for both leds and separately for all cars.

Note that it is somewhat experimental, I found the HID command to control the lights by half-accident, I do not have any documentation for the actual interface so there is a chance that something bad might happen for you. So if it blows up your wheel or opens a portal to hell or something, don't blame me, you have been warned. It works fine for me and a few "beta testers" though so it should be reasonably safe.

Also, while the light control seems to work on the DFP by changing the device ID, apparently the DFP drivers or the firmware control the lights all the time so it will only dimly flash the lights and thus is pretty much useless with them.
Kegetys
S2 licensed
Quote :It would be a lot cooler if you could have the leds on your DFP light up in this manner

Interesting idea, after some hours of fooling around with the HID interface I came up with this:

http://junk.kegetys.net/momo-valot.avi (Crap quality video but you get the idea)

I suppose it should be possible with the DFP too, though I dont know if it uses the same format messages to set the LED states... (I dont know if the one I'm using with the Momo are correct either but they seem to work, dunno if it has some side effects though )
Kegetys
S2 licensed
Quote from TagForce :Someone explain to me why NAT is an ugly hack to an ugly problem?

Wikipedia.
Kegetys
S2 licensed
Couldn't all this just be added to OutSim (Also with the data from tires and everything from the HUD)? I find the InSim and OutSim separation already a bit confusing since you need to use different methods and protocols to retrieve very similar things, like with InSim there's only two axis rotation data available so to get the third axis you need to add code to handle OutSim. With yet another protocol for gauges, and an extended outsim later on would just make things even more complicated when you need to use so many different ways to retrieve very similar data. Like laptimes = InSim, Car position = OutSim, Gauges = OutGauge... You often need data from all of these anyway so separating them to different protocols seems to me like it will just add unnecessary complications for people using them...
Kegetys
S2 licensed
Quote from NotAnIllusion :Ah guess it's a problem for your network then For LAN parties though that happen to use NAT perhaps still an option even if it's a dirty hack?

No, it isn't, since I have the extra network card for LAN For LAN parties using private ip's propably are not a problem, unless you have your LAN party at somewhere where you cannot change the infrastructure. Like I could imagine if we had kept a LAN party at my old school; "Can we have a weekend at the auditorium for a LAN party?" - "Sure you can, just dont break anything." - "Cool, now can we re-configure the whole school network so we can play LFS?"
Kegetys
S2 licensed
Quote from NotAnIllusion :What is wrong with this: your router gets its external IP from your ISP's DHCP server and assigns private IP addresses to the entire LAN (and depending on the router you can manage subnets and VLANs) from the IP pool you define. Logically this pool would consist of private IPs (10.* or 192.168.*).

Many things:
- The systems would need to use NAT to access the internet (which is an ugly hack and shouldn't even exist), and thus they would not have global IP addresses anymore which would mean quite many complications.
- My ADSL router is in bridged mode, and the configuration is turned off from the LAN side so only my ISP could change it.
- It would be a pretty crappy solution to get one game working, having to re-order your whole network?

And, again, I dont need to get LFS working on such a setup, Scawen just asked why someone would not use private ip's for a private network, and it is not that uncommon. The school I was in some years ago also had a system like this where all the computers had a global ip address. When they are on the same subnet they work on the LAN fine, NAT is not something you should be forced to use, it is just an ugly solution to an ugly problem. An assumption that computers on a LAN always use a private IP is wrong, plain and simple.
Kegetys
S2 licensed
Quote from danowat :But the guy was using a LAN, not a WAN, that and the fact it is possible to assign more than one IP address to a NIC (maybe a pro only feature) still makes it wierd why anyone trying to run LFS on a LAN would encouter problems.

My reply was to Scawen's question... And yes it is possible to assign more than one IP address to a NIC but not in Windows (if you have DHCP enabled). And LFS wouldn't work on my LAN(Not that I personally would really need it to either) if I wouldn't have the extra network card because I would need to use the global ip's and LFS doesn't let me do that.
Kegetys
S2 licensed
Quote from danowat :TBH I can't see any reason why anyone would set up there router/DHCP server or machine to use a non-private network IP range, there is just no valid reason I can think of.

Because private IP's dont get routed to the internet And I cant control the DHCP server, since it is at my ISP's end. From there my systems get a global ip address (212.149.x.x) and when I use this in Windows I cant use anything else at the same time without an extra network card.
Kegetys
S2 licensed
Quote from Scawen :What reason is there, for people not wanting to use the private network ranges, when they set up a private network?

Windows. If you have DHCP enabled Windows doesn't let you assign an additional private ip to the network card, so all the computers in the LAN will need to use the 'global' IP's to communicate. I used to have to do this, though now I have an extra network card (a pretty crappy solution to such an idiotic MS design problem) in my Windows system for LAN.
Kegetys
S2 licensed
I like to keep things tidy:


void nkfsDec(void *data, int size) {
BYTE *k = key;
for(int i=0;i<size;i++) {
((BYTE*) data)[i] -= *k++;
if(*k == 0x00) // End of key, loop
k=key;
}
}

I find this style of indenting to be very readable, and keep the code from being too 'loose' which I find makes it harder to read. I guess thats because the first C code I ever read was indented like this (I think)...
Kegetys
S2 licensed
Quote from Gunn :If you change the mirror positions it will no longer be a Sauber BMW F1 car.

Why wouldn't it be? If such small differences in the model make a difference then it already isn't a Sauber BMW F1 car since the black bar thing from the nose for example is missing as are some parts from the front wing (Though that could be just a different aerodynamics package for a different track). You can move the rear view mirror in the Raceabout too and I dont think that makes it any less Raceabout either.
Kegetys
S2 licensed
It is made for T and T != T4 so it wont work (Well, it might but that would be very unlikely). It is a bit of work to get all the mods updated so I only tend to do it for the non-test patches since the test patches usually have a very short "lifetime".
Kegetys
S2 licensed
I was annoyed by the BF1 mirrors being so far apart too (As they're fine in the other single seaters), so I modified the model a bit to get them closer... I guess the devs dont like modified car models though so I cant release it, but maybe it could be changed in the next patch. One option would maybe be to make the rear view mirror position setting move the side mirrors in the bf1 closer/farther away.
Kegetys
S2 licensed
You can do it by sending WM_KEYDOWN and WM_KEYUP messages to the LFS window.
Kegetys
S2 licensed
Those files have been in the dedicated server package before too, or at least in the P version.
Kegetys
S2 licensed
Quote from n2oaddict :Or just a colour selector like the one we already have for the needles colour, etc.

Yes, though I'd prefer a texture so I could put some shades and faint reflections to it to make it look better
Kegetys
S2 licensed
I hope there would be a texture mapped behind the LCD screen so we could just change that to whatever colour we want
Kegetys
S2 licensed
Its a fun game, at least until you find out that they ruined it with the automatic "difficulty" thing. That is, all the enemies, merchants, npc's, guards, etc. scale up with you. When you're a level 1 character the world is filled with easy to kill wolves, closing the oblivion gates are very easy, etc. but when you level up suddently there are much harder enemies everywhere. You can forget about ever being a super strong character in it since for example the guards are set to always be 10(?) levels above you so no matter how hard you train yourself you can never beat them unless you exploit the AI's weaknesses (like snipe them from a high position where they cant reach you).

All the items and merchants also scale, so even if you explore the whole world you will never find anything special or good until you level up enough at which point you find better stuff everywhere. The scaling also limits your choices, since the game becomes extremely difficult if you choose a character that isn't into fighting (Like a thief) since the enemies scale up even if you put your experience points to non-combat skills. I'm a level 12 thief now with quite poor combat skills and every time I face some enemy my best choice to survive is to run. When I was at level 1 I could freely explore the world and easily clear any dungeons or the oblivion gate things...

The fast travel and the GPS system that displays exactly where you need to go for the current quest are a bit crappy features too imo... The UI is also directly from the xbox version so it isn't very good to use either (I made a little mod for it to make it a bit better)... But overall it is still a fun game with nice graphics, I just hope there will be a (good) mod made for it that will remove all the dumb design choices they made. And they better not ruin Fallout 3 the same way!
Kegetys
S2 licensed
Quote from MagicFr :And, i dt think ODE is free with you use it for non-free products

It is licensed under the BSD license, so it is.
Kegetys
S2 licensed
Quote from MagicFr :Now.. i'm pretty sure Scawen will not use this kind of stuff.
1) They are pretty expensive

Even ODE? :smash:
Kegetys
S2 licensed
I wrote this but never used it for anything so I'm not 100% sure if it is all correct:


<?php 
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>

// PTH format header
typedef struct {
    
char            LFSPTH[6];
    
unsigned char    version;
    
unsigned char    revision;
    
int            numNodes;
    
int            finishLine;
PTHHEADER;

// PTH format block
typedef struct {
    
int    cXcYcZ;            // Centre
    
float    dirXdirYdirZ;    // Dir
    
float    limitLeftlimitRight;
    
float    driveLeftdriveRight;
NODEBLOCK;

// PTH file
typedef struct {
    
PTHHEADER header;
    
NODEBLOCK *nodes;
    
bool loaded;
PTHFILE;

#define    fptof(x) (float) x/65536

// Loads a pth file or releases if fname = null
bool loadPTH(PTHFILEpthfchar *fname) {
    
// Release memory if loaded
    
if(pthf->loaded && pthf->nodes != NULL) {
        
delete[] pthf->nodes;
        
pthf->nodes NULL;
        
pthf->loaded false;
    }

    if(!
fname)
        return 
false;

    
// Open file
    
FILE *fopen(fname"rb");
    if(!
f)
        return 
false;

    
// Load header
    
fread(&pthf->headersizeof(PTHHEADER), 1f);
    if(
strcmp(pthf->header.LFSPTH"LFSPTH")) {
        
// Not a pth file? TODO: add more checking here (file size etc.)
        
fclose(f);
        return 
false;
    }

    
// Allocate memory & load nodes
    
pthf->nodes = new NODEBLOCK[pthf->header.numNodes];
    for(
int i=0;i<pthf->header.numNodes;i++)
        
fread(&pthf->nodes[i], sizeof(NODEBLOCK), 1f);

    
pthf->loaded true;
    
fclose(f);
    return 
true;
}

void main(void) {
    
PTHFILE pthf;
    
pthf.loaded false;

    if(!
loadPTH(&pthf"FE1.pth")) {
        
printf("Cant load PTH\n");
        return;
    }

    
printf("PTH loaded, numnodes: %d, finishline: %d\n"pthf.header.numNodespthf.header.finishLine);
    for(
int i=0;i<pthf.header.numNodes;i++) {
        
NODEBLOCK= &pthf.nodes[i];
        
printf(" - node %04d: c(%.2f %.2f %.2f) dir(%.2f %.2f %.2f)\n"ifptof(n->cX), fptof(n->cY), fptof(n->cZ), n->dirXn->dirYn->dirZ);
        
printf("              limit(%.2f %.2f) drive(%.2f %.2f)\n"n->limitLeftn->limitRightn->driveLeftn->driveRight);
    }

    
// Release memory
    
loadPTH(&pthfNULL);
}
?>

Kegetys
S2 licensed
The basic concept used by the ghostcar mod for example is quite simple, you just place the D3D8.dll in the game directory, and because of the way LFS looks for the DLL's it will link that dll instead of the "real" one from the system32 dir.

Your DLL should export the same functions that the real one does, ie. Direct3DCreate8. When this function gets called you can do whatever you want in between and then call the real Direct3DCreate8 function and return whatever it returns to LFS. You can overwrite the COM interface function pointers to pointers to your own functions that again do what you want until doing the real thing.

The hardest part is knowing what to do and when, since what you get is a whole load of D3D functions passing through your DLL, with no idea what LFS is actually doing at that time. So you need to analyse all that data to find ways to recognise what LFS is doing. For example, you could detect that LFS is about to draw a car model by watching the currently active vertex shader ID's in SetVertexShader... GUI "additions" are somewhat easier, since you can just do your thing when LFS calls the Present function to display a completed frame. However you would still need to know when to do this so you wont draw over the options menus for example...
Kegetys
S2 licensed
Contact logitech, they'll most likely send you new pedals or maybe even a whole new wheel like they did for me.
FGED GREDG RDFGDR GSFDG