Ferby-Fall II
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
Ich habe vor längeren schon ein Spiel progammiert, dass ich Ferby-Fall nannte (zu finden unter www.Ferby.at). Jetzt habe ich Ferby-Fall II fertig bekommen. Das Spielprinzip ist zimlich gleich geblieben: Ein Raumschiff muss Steine abschiessen, bevor diese hinter das Raumschiff gelangen. Steuerung: Pfeiltasten und Leertaste. Ich bitte um Testen des Programmes und Verbesserungsvorschläge. Danke, Ferby |
Re: Ferby-Fall II
Muss dass denn unbedingt ein Setup sein?
|
Re: Ferby-Fall II
Warum läuft das so wahnsinnig langsam?
|
Re: Ferby-Fall II
Hi,
was ausser ein Setup soll ich sonst machen um alles als eine Datei anzubieten? Wo ist der Unterschied wenn ich es als ZIP Datei berreitstelle? An der Geschwindigkeit arbeite ich noch, das liegt daran, dass alle Spielfeldelemente aus Images bestehen und die sind leider nicht dazu geeignet.. |
Re: Ferby-Fall II
Bei einer Zip kann man kontrollieren, ob und was in die Registry geschrieben wird ;)
air |
Re: Ferby-Fall II
Zitat:
Zitat:
Und bei mir stand die Bildschirmfrequenz nach Beenden des Spiels bei 60Hz (sonst 75Hz). Gruß, ManuMF |
Re: Ferby-Fall II
Zum Installieren braucht man Adminrechte und die hat nicht jeder, zum Beispiel ich nicht ohne mich umzumelden. Desweiteren arum ein großes Setup, wenn es nicht nötig ist um vor dem ersten Start iurgendwelche Eintragungen in der Registry vor zu nehmen oder benötigte Dateien ins Systemverzeichnis zu kopieren? Auf Downloadportalen kannst du es ja gerne mit einem Kundenfreundlichen Setup anbieten, aber hier muss das nun wirklich nicht sein. Zu dem bin ich bei Setups immer vorsichtig, da ich nicht weiß, ob sie mir nicht den Rechner zu Müllen. Nimm ein Zip-archiv und schreibndazu, ob irgendetwas im System geändert wiord oder wo anders als im Programmverzeichnis gespeichert wird.
|
Re: Ferby-Fall II
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
also ich versteh euch nicht: 1) Meine Setup Datei mach nichts anderes als Dateien aus der Resource in ein Verzeichniss zu kopieren. 2) Die Registry bleibt unberührt 3) für sowas braucht man meines wissens keine Admin Rechte 4) Wenn ich wirklich böses mit euren Computer vorhaben würde, dann könnte ich einen Virus auch in der exe Datei des Spieles einbauen? Aber für alle die es als Zip datei haben möchten, können das natürlich auch haben. |
Re: Ferby-Fall II
Hi,
die Registry bleibt nicht unberüht. Du kannst nachher per Systemsteuerung -> Software das Programm entfernen. Also wurde was in die Registry geschrieben. |
Re: Ferby-Fall II
Ich starte gerne das Spiel zum testen aus der ZIP heraus. Wenn es mir gefällt entzippe ich es in einen Ordner, wenn nicht versinkt der ZIP Ordner halt im TEMP-Ordner der periodisch gelöscht wird.
Also ist das viel einfacher. Kein Aufwand extra etwas zu löschen. :zwinker: |
Re: Ferby-Fall II
Hallo,
also bei mir kann mann das nicht ???? Ich weiß nicht einmal wie mann auf die Registry mit Delphi zugreift, da ich das noch nie gebraucht habe. Und ich weiß was in meiner Programmierung steht, und da ist 100% nichts was in irgendeiner weiße die Registry verändert! Wegen der Bildschirmfrequenz: Ich verwende diese Procedure um die auflösung zu ändern, wiederherzustellen und um die Symbole am Desktop wieder zu richten. function changescreen(Width, Height: Word; pfad: string): Boolean; var lpDevMode: TDeviceMode; saveiconherstellen: boolean; begin saveiconherstellen:=false; if width<>0 then begin ScreenAlt.x:=(screen.width); ScreenAlt.y:=(screen.height); ShellExecute(0,'open', PChar(pfad + 'saveicon.exe'),'"\s"', nil, SW_Show); sleep(1000); end else begin saveiconherstellen:=true; width:=ScreenAlt.X; height:=ScreenAlt.Y; end; Result := EnumDisplaySettings(nil, 0, lpDevMode); if Result then begin lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT; lpDevMode.dmPelsWidth := Width; lpDevMode.dmPelsHeight := Height; Result := ChangeDisplaySettings(lpDevMode, CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL; if saveiconherstellen then ShellExecute(0,'open', PChar(pfad + 'saveicon.exe'),'"\r"', nil, SW_Show); end; if not Result then begin MessageBeep(MB_ICONERROR); MessageDlg('Fehler1' +#10#10+ 'Das Programm konnte die Auflösung nicht auf '+inttostr(width)+'x'+inttostr(height)+ ' umstellen.' +#10+ 'Es könnte sein das der Computer diese Auflösung nicht unterstützt' +#10+ 'Sollte der Computer diese Auflösung doch unterstüzen,' +#10+ 'dann stelle bitte die Auflösung manuel ein und starte das Spiel erneut.', mtError, [mbOK], 0); Application.Terminate; end; end; Ich habe diese Procedure nicht ganz alleine geschrieben, wo wird hier die Bildschirmfrequent verändert? Wie kann ich das verhindern, bzw wie kann ich die alte Bildschirmfrequenz wieder herstellen??? Danke für jede Hilfe, Ferby PS Zitat:
mfg, Ferby |
Re: Ferby-Fall II
Wie schon gesagt, du solltest das Problem mit den 60 Hz noch lösen. Du könntest z.B. vor dem Start die Frequenz auslesen und beim beenden wieder setzen. Ich halte dieses 60-Hz-Geflimmere nicht aus... :?
Und mach UM GOTTES WILLEN den Timer etwas schneller... Damit richtige Reaktionsgeschwindigkeit gefragt ist. Ein Setup schreibt IMMER was in die Registry, selbst wenn du ihm ausdrücklich befiehlst, es nicht zu tun. Ich denke, du verwendest Inno Setup. Wenn du dein eigenes Setup schreibst, könntest du dich drumherummanövrieren. |
Re: Ferby-Fall II
Hallo,
ich habe mein Setup Programm (falls es ein Setup ist, ich weiß nicht wie Setup definiert ist) selbst mit Delphi geschrieben, der hauptteil dieses Programmes besteht daraus:
Delphi-Quellcode:
Mein Installationsprogramm schreibt NICHTS in die Registry!
procedure Tform1.daten;
var i: byte; Datei:TResourceStream; begin for i:=1 to 2 do begin Datei:=TResourceStream.Create(hInstance,'wav' + inttostr(i),'EXEDATA'); Datei.SaveToFile(pfadtmp + inttostr(i) + '.wav'); end; progress.position:=50; progress.Refresh; for i:=1 to 8 do begin Datei:=TResourceStream.Create(hInstance,'mid' + inttostr(i),'EXEDATA'); Datei.SaveToFile(pfadtmp + inttostr(i) + '.mid'); end; progress.position:=70; progress.Refresh; Datei:=TResourceStream.Create(hInstance,'optionen','EXEDATA'); Datei.SaveToFile(pfadtmp + 'optionen.ini'); progress.position:=80; progress.Refresh; Datei:=TResourceStream.Create(hInstance,'score','EXEDATA'); Datei.SaveToFile(pfadtmp + 'score.ini'); end; Und sonst steht darin nichts mehr was mit den Dateientpacken (Installation) zu tun hat. Zitat:
Ferby |
Re: Ferby-Fall II
Also du hast noch viel zu tun ...
Zur Frequenz: Verurasacht das, so dass man sich total besoffen fühlt und man, egal ob zurück geändert immer noch was nicht ganz stimmr ? |
Re: Ferby-Fall II
Hier eine Funktion zum Verändern der Bildschirmauflösung (auch nicht ganz selber geschrieben ;) (bzw. garnicht)):
Delphi-Quellcode:
vllt geht es ja damit
function ChangeResolution(XResolution, YResolution, Depth: DWORD): BOOL;
var DevMode: TDeviceMode; i: Integer; begin Result := False; i := 0; while EnumDisplaySettings(nil, i, DevMode) do with DevMode do begin if (dmPelsWidth = XResolution) and (dmPelsHeight = YResolution) and (dmBitsPerPel = Depth) then if ChangeDisplaySettings(DevMode, [CDS_FULLSCREEN]) = DISP_CHANGE_SUCCESSFUL then begin Result := True; SendMessage(HWND_BROADCAST, WM_DISPLAYCHANGE, SPI_SETNONCLIENTMETRICS, 0); Break; end; Inc(i); end; end; |
Re: Ferby-Fall II
Zitat:
|
Re: Ferby-Fall II
Hallo,
ich habe das Programm umbennant damit ich sofort weiß was dieses Programm tut, warum soll ich die Herkunft verschleiern??? Mann braucht ja nur dein Programm zu öffnen und schon weiß mann wo es her kommt. Nachdem du es Openscource gemacht hast würde ich, wenn ich es verschleiern würde, einfach alles auf der Form löschen und neu compilen...... Nein der Ordner wird nicht gelöscht, weil mein "Setup Programm" keine "Reinstallt" hat, ich werde sobald ich Zeit habe ein Reinstallt Programm schreiben, mfg, Ferby |
Re: Ferby-Fall II
Zitat:
Denk nächstes Mal daran, wenn Dir jemand auf Dein Bitten hin was erzählt. Ich persönlich teste übrigens keine EXEn ohne Source, denn es sind in Foren wie Diesem auch schon Trojaner als vermeidlich zu testende Tools gepostet worden. Zumindest der Source sollte mitgeliefert werden. Deinem Tool nach zu urteilen stecken sowieso keine Geheimnisse drin. |
Re: Ferby-Fall II
Delphi-Quellcode:
So, damit sollte es klappen mit der Frequenz. MultiMon unter 98 und ME werden dabei nciht sauber unterstützt - diese Leutchen werden dann auch weiterhin die falsche Frequenz haben. Grundsätzlich könnte man da noch mit dem CDS_UPDATEREGISTRY rumspielen und deine Spieleauflösung nicht gleich fest abspeichern und dadurch die Wiederholfrequenz behalten.
Uses
ShellAPI, registry; // auch wenn du es nicht wolltest, nun hast doch ein wenig Registry mit drinne - aber nur lesen... .... Var ScreenAlt: TPoint; // diese solltest du schon haben ScreenAltFrequenz : Integer; // diese kommt neu hinzu Function ChangeScreen(AWidth, AHeight: Word; AFrequenz: Integer; Const APfad: string): Boolean; // modified by Muetze1 Const ENUM_CURRENT_SETTINGS : Cardinal = Cardinal(-1);//$ffffffff; // = -1 Var lpDevMode: TDeviceMode; saveiconherstellen: boolean; lRegInfo : TRegistry; Begin saveiconherstellen := false; If ( AWidth <> 0 ) Then Begin ScreenAlt.x := Screen.Width; ScreenAlt.y := Screen.Height; ScreenAltFrequenz := 0; // diese Variable noch definieren If ( EnumDisplaySettings(Nil, ENUM_CURRENT_SETTINGS, lpDevMode) ) Then Begin If ( ( lpDevMode.dmFields And DM_PELSWIDTH ) > 0 ) Then ScreenAlt.x := lpDevMode.dmPelsWidth; If ( ( lpDevMode.dmFields And DM_PELSHEIGHT ) > 0 ) Then ScreenAlt.y := lpDevMode.dmPelsHeight; If ( ( lpDevMode.dmFields And DM_DISPLAYFREQUENCY ) > 0 ) Then ScreenAltFrequenz := lpDevMode.dmDisplayFrequency Else If ( Win32Platform = VER_PLATFORM_WIN32_WINDOWS ) Then // Win9x/ME Begin lRegInfo := TRegistry.Create(KEY_READ); lRegInfo.RootKey := HKEY_CURRENT_CONFIG; Try If lRegInfo.OpenKey('\Display\Settings', False) Then Begin ScreenAltFrequenz := StrToIntDef(lRegInfo.ReadString('RefreshRate'), 0); End; Finally lRegInfo.CloseKey; lRegInfo.Free; End; End; End; ShellExecute(0, 'open', PChar(APfad + 'saveicon.exe'),'"\s"', nil, SW_Show); Sleep(1000); End Else Begin saveiconherstellen:=true; AWidth := ScreenAlt.X; AHeight := ScreenAlt.Y; AFrequenz := ScreenAltFrequenz; End; lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT; lpDevMode.dmPelsWidth := AWidth; lpDevMode.dmPelsHeight := AHeight; If ( AFrequenz > 20 ) Then // valid? Begin lpDevMode.dmDisplayFrequency := AFrequenz; lpDevMode.dmFields := lpDevMode.dmFields Or DM_DISPLAYFREQUENCY; End; Result := ChangeDisplaySettings(lpDevMode, CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL; If saveiconherstellen Then ShellExecute(0,'open', PChar(APfad + 'saveicon.exe'),'"\r"', nil, SW_Show); If Not Result Then Begin MessageBeep(MB_ICONERROR); MessageDlg('Fehler1' +#10#10+ 'Das Programm konnte die Auflösung nicht auf '+inttostr(AWidth)+'x'+inttostr(AHeight)+ ' umstellen.' +#10+ 'Es könnte sein das der Computer diese Auflösung nicht unterstützt' +#10+ 'Sollte der Computer diese Auflösung doch unterstüzen,' +#10+ 'dann stelle bitte die Auflösung manuel ein und starte das Spiel erneut.', mtError, [mbOK], 0); Application.Terminate; End; End; Ansonsten kannst du nun auch eine Wiederholfrequenz für deine Spielauflösung angeben - da ist wieder die Frage, ob es der Monitor unterstützt. Die nicht vom Monitor unterstützten Auflösungen werden zwar beim EnumDisplaySettings() ausgeblendet (ab NT), aber beim setzen kann man auch nicht unterstützte setzen. Wenn die 60 Hz auf deiner Spielauflösung bisher nicht störten, dann gebe bei dem Frequenzparameter eine 0 an beim Aufruf. Die Registry wird nun doch gebraucht für die Wiederholfrequenz unter 9x/ME - aber es wird nur gelesen... Und grundsätzlich gilt meine Signatur! |
Re: Ferby-Fall II
Zitat:
|
Re: Ferby-Fall II
Wo war das neulich mit einem selbstgeschriebenen FTP- und EMail-Passwortklauprogramm? Hier oder in der DF? Da hat kein einziges AV-Programm gemeckert, weil es ja kein Virus/Trojaner etc. war, sondern nur ein Programm, das etwas anderes machte, als es vorgab, zu tun.
Aus diesem Grund kommt mir keine EXE mehr auf die Festpladde. |
Re: Ferby-Fall II
OffTopic:
Ich kenne jemanden, der könnte ad hoc einen Trojaner(Rootkit) schreiben (Er hat es mir auch schon eindrucksvoll an meinem Rechner vorgeführt), den hier veröffentlichen und der würde fürs erste von keinen Anti-Viren Prog erkannt werden. (Ist ja noch gänzlich unbekannt) Es gibt auch Möglichkeiten, Personal Firewalls zu umgehen. Sollte jetzt keine Diskussion anfeuern, wollte nur sagen, dass man etwas vorsichtiger sein sollte. Programme im User-Kontext zu testen, ist um längen sicherer als unter dem Admin Account mit Antiviren-Dingens. So jetzt halte ich die Klappe, sry :wink: |
Re: Ferby-Fall II
Hallo,
Danke an alle die sich mit meinen Programm beschäftigt haben und mir verbesserungsvorschläge gegeben haben, ich werde mich sobald es geht damit auseinander setzten. Schöne Weihnachten, Ferby |
Re: Ferby-Fall II
ich habes es auch getestet:
das menu ist wirklich toll gemacht grafik und sound auch. Aber ich wollte "schießen" und da konnte ich das raumschiff nicht mehr steuern. beenden konnte ich das spiel noch. |
Re: Ferby-Fall II
hallo,
ich hab den code von muetze1 ausprobiert, das funzt,die auflösung und frequenz wird umgestellt, aber wie bekomme ich die alten wieder zurück wenn ich mein programm schließe 1. ist mein funktionsaufruf so richtig ?
Delphi-Quellcode:
2.welchen code muß ich in das ereigniss "onclose" schreiben, das meine alten einstellungen
ChangeScreen(800,600,85,'c:\saveicon.exe')
wiederhergestellt werden ? mfg vader |
Re: Ferby-Fall II
kann mir keiner weiter helfen ?
mfg vader |
Re: Ferby-Fall II
-> Eigenes Thema
Gruß, ManuMF P.S.: Es gibt Leute, die an Weihnachten auch nicht am PC sitzen... ;-) |
Re: Ferby-Fall II
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
Ich habe jetzt glaub ich alle eure Vorschläge eingebaut: .) Die Bildschirmfrequenz sollte wieder zurück gestellt werden .) Es ist möglich zu schießen ohne das das Raumschiff stehen bleibt .) Unter Optionen kann man das Spiel schneller stellen falls es einen zu langsam ist. ( Wenn es noch immer wem zu langsam ist soll er mal das Spiel durchspielen und dann sagen ob es noch immer zu langsam ist) Habt ihr noch Vorschläge? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz