|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
CorDharel Junior JLI'ler
Anmeldedatum: 15.10.2002 Beiträge: 73 Wohnort: Winterthur, Zürich, CH Medaillen: Keine
|
Verfasst am: 16.07.2005, 13:36 Titel: Einfach mal ein BltFast |
|
|
Hallo zusammen!
Da das mit dem Bild kopieren noch nicht klappen wollte hab ich was einfacheres probiert:
Eine Oberfläche erstellen, mit blau füllen und in primäre Oberfläche kopieren. Genauso wie es in Kapitel 19 im Buch gezeigt wird. Aber nicht mal das geht Meine BltFast Funktion ist kaputt
Das ist der Code:
CPP: | DDBLTFX BlitFX;
//lpDDSurface erstellen
ZeroMemory(&SurfDesc, sizeof(SurfDesc));
SurfDesc.dwSize = sizeof(SurfDesc);
SurfDesc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
SurfDesc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY;
SurfDesc.dwWidth = 100;
SurfDesc.dwHeight = 100;
if(FAILED( lpDD7->CreateSurface(&SurfDesc,&lpDDSurface,NULL) ))
{
Error("Fehler beim erstellen der Oberfläche");
return;
}
ZeroMemory(&BlitFX,0);
BlitFX.dwSize = sizeof(BlitFX);
//hintergrundfarbe auf blau setzen
BlitFX.dwFillColor = CalcColor(0,0,255);
//die oberfläche blau füllen
lpDDSurface->Blt(NULL,NULL,NULL,DDBLT_COLORFILL,&BlitFX);
//in primäre oberfläche kopieren
lpDDSPrimary->BltFast(100,100,lpDDSurface,NULL,DDBLTFAST_WAIT); |
Und wenn ich in der zweitletzten Zeile statt lpDDSurface lpDDSPrimary angebe wird das ganze Fenster blau.
Also muss es doch am BltFast liegen, nicht?
Ich bin am verzweifeln _________________ Greetz CorDharel |
|
Nach oben |
|
|
HomeLess_PunkDrummer JLI Master Trainee
Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 16.07.2005, 16:18 Titel: |
|
|
Also die Oberfläche die du mit COLORFILL blittest wird selbstverständlich mit der angegebenen Farbe gefüllt... Ist doch logisch, und wenn du die Primary, also den Frontbuffer füllst ist alles voll.
Versuch doch in der letzten Zeile einfach mal ohne WAIT hinten.
Oder du blittest in den Backbuffer (also Secondary) und flippst dann.
Gruß _________________ "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz." |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 16.07.2005, 17:33 Titel: |
|
|
an dem wait liegts es galube ich net, hab ich auch imemr so gemacht. Vielleicht ist was mit der Gameloop net in Ordnung du blittest ja auch in den Frontbuffer net in den Backbuffer, zeig einfach mal noch die komplete Schleife, evtl. leigt da irgendwo n Fehler. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 17.07.2005, 15:35 Titel: |
|
|
hmm, gerade wieder da, code angeguckt und
Grund: CorDharel hat Folgendes geschrieben: | CPP: | ZeroMemory(&BlitFX,0); |
|
Gruß DirectXer |
|
Nach oben |
|
|
CorDharel Junior JLI'ler
Anmeldedatum: 15.10.2002 Beiträge: 73 Wohnort: Winterthur, Zürich, CH Medaillen: Keine
|
Verfasst am: 20.07.2005, 13:53 Titel: |
|
|
Öhm... Ich hab keine Ahnung was du meinst DirectXer, die Zeile
CPP: | ZeroMemory(&BlitFX,0); |
steht so im Buch auf Seite 322. Was hat dich denn zum gebracht?
Ich poste jetzt mal die ganze Datei. Sie kompiliert fehlerfrei und bringt einfach ein weisses Fenster, ich will aber dass links oben 100*100 Pixel blau sind. Wichtig ist einfach die Funktion Render().
CPP: | #include <ddraw.h>
#pragma comment(lib, "ddraw.lib")
#pragma comment(lib, "dxguid.lib")
#define COLOR_DEPTH 32
#define FRAME_RATE 30
//anwendungsfenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance);
// Farbe berechnen
int CalcColor(int r, int g, int b);
void DeterminePixelFormat(LPDIRECTDRAWSURFACE7 lpDDSurface);
LPDIRECTDRAWSURFACE7 CreateSurfaceFromBitmap(LPSTR File, int dWidth, int dHeight);
//globale variable für das fensterhandle
HWND hWnd = 0;
//directdraw interface
LPDIRECTDRAW7 lpDD7 = NULL;
//oberflächen
LPDIRECTDRAWSURFACE7 lpDDSPrimary;
LPDIRECTDRAWSURFACE7 lpDDSurface;
//clFipper
LPDIRECTDRAWCLIPPER lpDDClipper = NULL;
//struktur auf beschreibung von oberfläche
DDSURFACEDESC2 ddsd;
//sekundäre oberfläche
DDSURFACEDESC2 SurfDesc;
//farben
int ShiftRed = 0;
int ShiftGreen = 0;
int ShiftBlue = 0;
int PosRed = 0;
int PosGreen = 0;
int PosBlue = 0;
//positionen
int x = 0;
int y = 0;
//callback funktion
LRESULT CALLBACK MessageHandler( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
//die objekte freigeben
void CleanUpDirectDraw(void);
//error funktion
int Error( char *msg );
//ddrawbeispiel
void Render(void);
//main funktion
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
//fenster erzeugen und in handle speichern
hWnd = CreateMainWindow(hInstance);
if( 0 == hWnd )
{
MessageBox(0, "Fenster konnte nicht erzeugt werden",
"Fehler",MB_OK);
return 0;
}
//directdrawobjekt erzeugen
if(FAILED(DirectDrawCreateEx(NULL,(LPVOID*)&lpDD7,IID_IDirectDraw7,NULL)))
{
Error("ddobjekt konnte nicht angelegt werden");
return -1;
}
//kooperationsebene festlegen
if(FAILED(lpDD7->SetCooperativeLevel(hWnd,DDSCL_NORMAL)))
{
Error("kooperationsebene konnte nicht festgelegt werden");
return -1;
}
//struktur initialisieren
ZeroMemory(&ddsd,sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS;
//primäre oberfläche anlegen
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE |DDSCAPS_VIDEOMEMORY;
if( FAILED (lpDD7->CreateSurface(&ddsd,&lpDDSPrimary,NULL)))
{
Error("Primäre oberfläche konnte nicht erzeugt werden");
return -1;
}
//clipper anlegen
if(FAILED(lpDD7->CreateClipper(NULL,&lpDDClipper,NULL)))
{
Error("Clipper konnte nicht erzeugt werden");
return -1;
}
//clipper mit fenster verbinden
if(FAILED(lpDDClipper->SetHWnd(0,hWnd)))
{
Error("Clipper konnte nicht mit fenster verbunden werden");
return -1;
}
//clipper mit oberfläche verbinden
if(FAILED(lpDDSPrimary->SetClipper(lpDDClipper)))
{
Error("Clipper konnte nicht mit oberfläche verbunden werden");
return -1;
}
MSG msg;
//Spielschleife
LONGLONG Frequenz;
LONGLONG Abstand;
LONGLONG NaechstesFrame;
LONGLONG AktuelleZeit;
//wenn der counter vorhanden ist, frequenz speichern
if( !QueryPerformanceFrequency( (LARGE_INTEGER*)&Frequenz) )
{
Error("Performance Counter nicht vorhanden");
}
//abstand zwischen zwei frames berechnen
Abstand = Frequenz / FRAME_RATE;
//aktuelle zeit speichern
QueryPerformanceCounter((LARGE_INTEGER*)&AktuelleZeit) ;
//berechnen wann das nächste frame berechnet werden soll
NaechstesFrame = AktuelleZeit + Abstand;
while( TRUE )
{
if( PeekMessage(&msg,NULL,0,0,PM_REMOVE) )
{
//wenn WM_QUIT gesendet wird
if( msg.message == WM_QUIT )
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
//aktuelle zeit speichern
QueryPerformanceCounter((LARGE_INTEGER*)&AktuelleZeit) ;
//wenn es zeit für das nächste frame ist
if( AktuelleZeit > NaechstesFrame )
{
Render();
//verarbeite eingaben mit directinput
//generiere musik mit directxaudio
//bewege die gegner
//bewege den spieler
//generiere die grafik mit directdraw
//berechnen wann das nächste frame berechnet werden soll
NaechstesFrame = AktuelleZeit + Abstand;
}
}
}
return 0;
}
LPDIRECTDRAWSURFACE7 CreateSurfaceFromBitmap(LPSTR File, int dWidth, int dHeight)
{
//device context für das bild und die oberfläche
HDC hBmDC, hSurfDC;
//handle der zu ladenden bitmap
HBITMAP hBM;
//oberflächenbeschreibung
DDSURFACEDESC2 SurfDesc;
//zeiger auf die oberfläche
LPDIRECTDRAWSURFACE7 lpDDSurfaceTemp;
//bild laden
hBM = (HBITMAP)LoadImage(0,File, IMAGE_BITMAP,dWidth,dHeight,LR_LOADFROMFILE);
//ist ein fehler aufgetreten?
if(NULL == hBM)
{
Error("Fehler 1");
return NULL;
}
//oberflächenbeschreibung initialisierne
ZeroMemory(&SurfDesc,sizeof(SurfDesc));
SurfDesc.dwSize = sizeof(SurfDesc);
//Caps höhe und breite berücksichtigen
SurfDesc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
SurfDesc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
SurfDesc.dwWidth = dWidth;
SurfDesc.dwHeight = dHeight;
//oberfläche anlegen
if(FAILED(lpDD7->CreateSurface(&SurfDesc,&lpDDSurfaceTemp,NULL)))
{
Error("Fehler 2");
return NULL;
}
//device context von fläche holen
lpDDSurfaceTemp->GetDC(&hSurfDC);
//kompatiblen DC für bild anlegen
hBmDC = CreateCompatibleDC(hSurfDC);
//bild für DC holen
SelectObject(hBmDC,hBM);
//bild in oberfläche kopieren
BitBlt(hSurfDC,0,0,dWidth,dHeight,hBmDC,0,0,SRCCOPY);
//Device Context freigeben
lpDDSurfaceTemp->ReleaseDC(hSurfDC);
//DC und bild löschen
DeleteDC(hBmDC);
DeleteObject(hBM);
//zeiger zurückgeben
return lpDDSurfaceTemp;
}
void Render(void)
{
DDBLTFX BlitFX;
//lpDDSurface erstellen
ZeroMemory(&SurfDesc, sizeof(SurfDesc));
SurfDesc.dwSize = sizeof(SurfDesc);
SurfDesc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
SurfDesc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY | DDSCAPS_NONLOCALVIDMEM;
SurfDesc.dwWidth = 100;
SurfDesc.dwHeight = 100;
if(FAILED( lpDD7->CreateSurface(&SurfDesc,&lpDDSurface,NULL) ))
{
Error("Fehler beim erstellen der Oberfläche");
return;
}
ZeroMemory(&BlitFX,sizeof(BlitFX));
BlitFX.dwSize = sizeof(BlitFX);
//hintergrundfarbe auf blau setzen
DeterminePixelFormat(lpDDSurface);
BlitFX.dwFillColor = CalcColor(0,0,255);
//die oberfläche blau füllen
lpDDSurface->Blt(NULL,NULL,NULL,DDBLT_COLORFILL,&BlitFX);
//in primäre oberfläche kopieren
lpDDSPrimary->BltFast(0,0,lpDDSurface,NULL,DDBLTFAST_WAIT);
}
//callback funktion
LRESULT CALLBACK MessageHandler( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
CleanUpDirectDraw();
PostQuitMessage(0);
return 0;
break;
case WM_CREATE:
return 0;
break;
case WM_LBUTTONDBLCLK:
//mausposition in lParam
return 0;
break;
case WM_CLOSE:
PostQuitMessage(0);
return 0;
break;
}
//wenn andere nachricht > standardfunktion aufrufen
return DefWindowProc(hWnd,msg,wParam,lParam);
}
//create main window
HWND CreateMainWindow(HINSTANCE hInstance)
{
WNDCLASSEX wndClass; //WNDCLASSEX Struktur
//struktur initialisieren
wndClass.cbSize = sizeof(WNDCLASSEX); //grösse angeben
wndClass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
//callback funktion angeben
wndClass.lpfnWndProc = MessageHandler;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hInstance;
//weisser pinsel für hintergrund
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
//standard mauscursor verwenden
wndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
//das fenster soll kein menü haben
wndClass.lpszMenuName = NULL;
//name der fensterklasse für createwindowex
wndClass.lpszClassName = "WindowClass";
//icons für fenster anlegen
wndClass.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wndClass.hIconSm = LoadIcon ( NULL, IDI_WINLOGO);
//fensterklasse registrieren für createwindowex
RegisterClassEx(&wndClass);
return CreateWindowEx(
NULL,
"WindowClass",
"Ein einfaches Fenster",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0, 0,
800, 600,
NULL, NULL,
hInstance,
NULL);
}
//die objekte freigeben
void CleanUpDirectDraw(void)
{
//prüfen ob zeiger gültig sind
if( NULL != lpDDSPrimary )
{
lpDDSPrimary->Release();
lpDDSPrimary = NULL;
}
if( NULL != lpDDClipper )
{
lpDDClipper->Release();
lpDDClipper = NULL;
}
if( NULL != lpDD7 )
{
lpDD7->Release();
lpDD7 = NULL;
}
}
int Error( char *msg )
{
//nachricht ausgeben
OutputDebugString(msg);
OutputDebugString("\n");
//messagebox ausgeben
MessageBox(hWnd,msg,"Fehler",MB_OK);
return -1;
}
// Farbe berechnen
void DeterminePixelFormat(LPDIRECTDRAWSURFACE7 lpDDSurface)
{
//pixelformat bestimmen
DDPIXELFORMAT ddpf;
ddpf.dwSize = sizeof(ddpf);
lpDDSurface->GetPixelFormat(&ddpf);
//position der maske für rot bestimmen
while( 0 == (ddpf.dwRBitMask & 1) )
{
ddpf.dwRBitMask >>= 1;
PosRed++;
}
if( ddpf.dwRBitMask == 31)
ShiftRed = 3;
else
ShiftRed = 2;
//position der maske für grün bestimmen
while(0 == (ddpf.dwGBitMask & 1 ))
{
ddpf.dwGBitMask >>= 1;
PosGreen++;
}
if( ddpf.dwGBitMask == 31)
ShiftGreen = 3;
else
ShiftGreen = 2;
//make für blau beginnt immer bei 0
PosBlue = 0;
if( ddpf.dwBBitMask == 31)
ShiftRed = 3;
else
ShiftRed = 2;
}
int CalcColor(int r, int g, int b)
{
switch(COLOR_DEPTH)
{
case 32:
case 24:
return ((r<<16) + (g<<8) + b);
break;
case 16:
return ((( (r) >> ShiftRed) << PosRed) +
(( (g) >> ShiftGreen) << PosGreen) +
(( (b) >> ShiftBlue) << PosBlue));
default:
return 0;
}
}
|
Vielleicht könnt ihr damit mehr anfangen _________________ Greetz CorDharel
Zuletzt bearbeitet von CorDharel am 20.07.2005, 23:58, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Cyianor Super JLI'ler
Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 20.07.2005, 17:01 Titel: |
|
|
DirectXer meint das sich hier
CPP: | ZeroMemory(&BlitFX,0); |
vermutlich der Fehler befindet. Das müsste nämlich
CPP: | ZeroMemory(&BlitFX,sizeof(BlitFX)); |
heißen. Weil wenn du als zweiten Parameter 0 verwendest dann werden 0 Bytes von BlitFX auf Null gesetzt. Mit ZeroMemory will man aber normalerweise errichen das die Variable genullt wird. Also muss man auch soviele Bytes nullen wie die Variable groß ist.
Hoffe es ist jetzt verständlich. |
|
Nach oben |
|
|
CorDharel Junior JLI'ler
Anmeldedatum: 15.10.2002 Beiträge: 73 Wohnort: Winterthur, Zürich, CH Medaillen: Keine
|
Verfasst am: 20.07.2005, 17:26 Titel: |
|
|
Ja ist verständlich Christian hat das einfach so im Buch gemacht.
Hmm das ist aber nicht der Fehler _________________ Greetz CorDharel |
|
Nach oben |
|
|
Cyianor Super JLI'ler
Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 20.07.2005, 17:33 Titel: |
|
|
Ahhh, jetzt fällt mir was auf. Eigentlich gehörst du ja geschimpft weil du soviel Code unsortiert gepostet hast, aber jetzt hats einen Vorteil.
Ist dir schonmal aufgefallen das du diese Funktion nicht implementiert hast?
CPP: | void DeterminePixelFormat(LPDIRECTDRAWSURFACE7 lpDDSurface); |
Deshalb sind ShiftRed, ShiftGreen und ShiftBlue immer 0 und können somit bei CalcColor auch nicht das richtige Ergebnis liefern
[EDIT]
Und du solltest diese Funktion natürlich auch aufrufen bevor du CalcColor verwendest |
|
Nach oben |
|
|
CorDharel Junior JLI'ler
Anmeldedatum: 15.10.2002 Beiträge: 73 Wohnort: Winterthur, Zürich, CH Medaillen: Keine
|
Verfasst am: 20.07.2005, 23:19 Titel: |
|
|
He das könnte es sein! Ich werds gleich ausprobieren.
Das hat mit eh immer verwirrt mit dieser Funktion + CalcColor. Ich wollte dann das nachlesen, hab aber immer gedacht das kommt erst nach Kapitel 19 und habs nie gefunden. Heute hab ichs gesehen in Kapitel 17
Ich werd es gleich mal ausprobieren.
[Edit] Ok habs gemacht, aber die blaue Oberfläche wird immer noch nicht fastgeblittet
Ich habe den korrigierten Source oben reingepostet. BTW ist es ja nicht so schlimm, da es ja erst ein kleines Programm ist. Es ist ja nur diese eine Datei. Wer mir eine grosse Freude bereiten will darf gerne mal das Programm in MSVisual Studio laden und ausprobieren und schauen was nicht läuft
Eine gute Sache hat dies alles aber: Ich habe mittlerweile schon vieles über Surfaces, Farben und Blitten gelernt. Jetzt muss es nur noch funktionieren
Vielleicht ein paar Fragen:
- Stimmt es die Funktion Render() in der Spielschleife aufzurufen?
- Stimmt es DeterminePixelFormat genau vor CalcColor aufzuzeichnen?
BTW: Hat vielleicht jemand noch die CD vom ersten Buch? Da wäre der Source sicher drauf. Ich hab die CD leider nicht mehr sonst hätt ich da schon längstens schauen können
Zum Glück hab ich GTA San Andreas, das spiel ich wenn ich mich ärgere und bringe Leute um bei denen ich glaube dass sie schuld sind dass mein BltFast nicht geht _________________ Greetz CorDharel |
|
Nach oben |
|
|
CorDharel Junior JLI'ler
Anmeldedatum: 15.10.2002 Beiträge: 73 Wohnort: Winterthur, Zürich, CH Medaillen: Keine
|
Verfasst am: 21.07.2005, 00:33 Titel: |
|
|
YEEEEEEEEEEEAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!¨
Ich hab so ein Tutorial im Inet gemacht, und das erste mal hab ich ein Bild
in meinem Programm anzeigen können Wooohooo Party!!!!
Naja es ist zwar nur mit Blit statt fastblit, aber ich freue mich trotzdem
Ausserdem ist es direkt in die primäre Oberfläche kopiert worden und nicht zuerst in ne sekundäre und dann kopiert. Aber das kommt schon noch
BTW es ist jetzt 2:32 Uhr
[edit] ach ja, übrigens hab ich ein wenig gecheatet und nicht die selber programmierte CreateSurfaceFromBitmap Funktion benutzt sondern die von "ddutil.h", die früher noch im DX SDK zu finden war. Naja hauptsache es funzt
Hier ist das Tutorial das ich gemacht hab _________________ Greetz CorDharel |
|
Nach oben |
|
|
CorDharel Junior JLI'ler
Anmeldedatum: 15.10.2002 Beiträge: 73 Wohnort: Winterthur, Zürich, CH Medaillen: Keine
|
Verfasst am: 21.07.2005, 00:44 Titel: |
|
|
WOOOOOOOOOOOOOOOOOOOOOOOWWWWW!!!!!
ICH HABE ES GESCHAFFT!!!!! *trompetenmusik*
ICH HABE EIN BLTFAST HINGEKRIEGT!!!
Sorry für den neuen Post, aber das ist jetzt nötig. Das bringt mein Selbstwertgefühl wieder ein wenig nach oben
Und wisst ihr was der Fehler war?
Surf ich doch ganz fridliech zur MSDN, schau bei BltFast vorbei und finde folgenden Satz:
Zitat: | BltFast cannot be used on surfaces that have an attached clipper. |
D.h. Ich musste im Code vorhin nur den Clipper auskommentieren und schon kriege ich das wundervollste 100*100 Pixel grosse blaue Fenster das mein Computer jemals angezeigt hatte
Ha! Wieder was neues gelernt Auf jeden Fall danke ich allen die mir geholfen haben
BTW es ist jetzt 2:43 Uhr _________________ Greetz CorDharel |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 21.07.2005, 07:44 Titel: |
|
|
herzlichen Glückwunsch
Zu den Bsp. auf der JLI1 CD; die sind hier im JLI auch frei zum runterladen. Ich kenn leider den genauen Link nicht mehr, aber es gibt ja die such-funkrtion
Gruß DirectXer |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 21.07.2005, 10:29 Titel: |
|
|
CorDharel hat Folgendes geschrieben: |
Zum Glück hab ich GTA San Andreas, das spiel ich wenn ich mich ärgere und bringe Leute um bei denen ich glaube dass sie schuld sind dass mein BltFast nicht geht |
Das ist ja schon fast sadistisch arme unschuldige Passanten wegen den eigenen Fehlern umzubringen. Aber wenn du welche mit roten Pulli und weißen Handschuhen sehen solltest, bring die ruhig um, hab ich bei GTA2 auch immer gemacht, bis es keine mehr von der Sorte gab... _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
Kronos Senior JLI'ler
Anmeldedatum: 19.03.2004 Beiträge: 290
Medaillen: Keine
|
Verfasst am: 21.07.2005, 11:25 Titel: |
|
|
Der war mal gut Patrick . _________________
David hat Folgendes geschrieben: | Solang meine Beiträge konstruktiver sind als deiner bin ich zufrieden... |
Kein Kommentar notwendig. :rolleyes: |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|