Entwickler-Ecke
Freeware Projekte - Hugo's Labyrinth-Game Open Version 1.0.0.4
Hugo343 - Do 30.04.09 16:33
Titel: Hugo's Labyrinth-Game Open Version 1.0.0.4
Hier will ich mein neues Spiel "Labyrinth" vorstellen, bei dem ich einiges über Rotation und Datei-Auslesen gelernt habe! Ich habe die "bitmap_handling.pas"-Unit genommen (vielen Dank an den Macher). Der Sinn des Spiels ist es, innerhalb der Zeitbegrenzung durch ein Labyrinth zu kommen, das man nur durch einen mit der Maus rotierbaren Lichtkegel sehen kann. Natürlich ist das alles noch nicht ganz ausgereift und deswegen hoffe ich, das wenn ihr einen Fehler findet, ihn hier reinschreibt, damit ich ihn versuchen kann zu verbessern! Auch wenn ihr Probleme mit der Schnelligkeit oder der allgemeinen Benutzerfreundlichkeit habt, schreibt es mir bitte umgehend!
Vielen Dank schonmal für jeden Post, der mir hilft mein Programm zu verbessern!
(Ich habe die Einzel-Version rausgenommen, das vollständige Spiel plus Editor ist ja in der Labyrinth_Game_Full.zip enthalten.)
Mitmischer 1703 - Do 30.04.09 16:52
Es ist natürlich logisch, dass, wenn ich nur die Zip entpacke, nichts klappen kann. Trotzdem solltest du das abfangen! Ansonsten ganz schön, aber ich brauche sehr viel mehr Zeit
Hugo343 - Do 30.04.09 16:56
What do you mean? Bei dem Download steht doch auch "+ notwendige Ressourcen". Oder hat das jetzt eher mit dem Programm zu tun. Und wie soll ich das denn bitte abfangen. Bei Windows kann ich da ja schlecht mitmischen...
passiv - Do 30.04.09 17:01
Mitmischer, deine Kommentare sind eigenartig :roll:
Zum System: Warum muss ein Labyrinth denn auch in der .txt drinstehen? Wäre auch möglich, das Verzeichnis mit FindFirst und FindNext selbst zu durchsuchen.
Zum Spiel selbst: Es ist höchst verwirrend, dass man ein Labyrinth doppelt auswählen muss. Also, zuerst Listeneintrag, dann denkt man, "Jupiduu, geht los!" und dann rührt sich nichts. Und bis man den Knopf da unten findet ... ist unnötig.
Das klassische: Über Farbgestaltung lässt sich streiten, ist nicht mein Geschmack.
Das Steuerungs-Menü ist als Popup in einem komplett anderem Stil gehalten und passt einfach nicht dazu. Außerdem wäre vielleicht ein Vollbildmodus noch ganz nett.
Aber sonst :zustimm: für ein Anfänger-Projekt schon ganz schön ausgereift.
Bis dann
Hugo343 - Do 30.04.09 17:13
Das mit FindFirst/FindNext hab ich noch nicht gewusst, danke :idea: ! Ich werd mich mal darüber informieren. Das hab ich mir auch schon gedacht, müsste eigentlich nur die beiden Sachen irgendwie vereinen (Mach ich gleich). Das mit der Farbe hab ich mir mal bei einem anderen Spiel ausgedacht und einfach nur dunkler gemacht um einen "Nachteffekt" zu kriegen. Falls sie dir nicht gefallen kannst du sie ja auch verändern, die sind ja nicht mit ins Programm eingebunden.
Ich versteh aber leider nicht was du mit Popupmenu-Stil meinst. Das sind alles labels. Vor einem Vollbildmodus hab ich immernoch Bammel, weil die Programme von meinem Kumpel alle Vollbild sind und das ganze bei mir dann etwas verzerrt ist (Er(alter PC): 1024*768 ; Ich: 1280*800). :?
PS: Weiß jemand eine Function um eine Datei zu ver- und entschlüsseln? Ich will die Maps ja nicht unbedingt so freistellen, sonst könnte man ja schummeln. :evil:
Mitmischer 1703 - Fr 01.05.09 10:03
Hugo343 hat folgendes geschrieben : |
| What do you mean? Bei dem Download steht doch auch "+ notwendige Ressourcen". Oder hat das jetzt eher mit dem Programm zu tun. Und wie soll ich das denn bitte abfangen. Bei Windows kann ich da ja schlecht mitmischen... |
Du solltest überprüfen, ob die Ressourcen da sind - und das Programm dann terminaten, falls nicht. Ansonsten startet es sich, ist aber nicht lauffähig! Und: Wieso sind meine Kommentare eigenartig? :? :think:
Edit: Fehler in Laby 3, ganz links in der Ecke!
Jakob_Ullmann - Fr 01.05.09 10:32
Hugo343 hat folgendes geschrieben : |
| PS: Weiß jemand eine Function um eine Datei zu ver- und entschlüsseln? Ich will die Maps ja nicht unbedingt so freistellen, sonst könnte man ja schummeln. :evil: |
Nimm doch einfach bekannte Algorithmen, z. B. Vigenere oder XOR.
Hugo343 - Fr 01.05.09 14:50
An Mitmischer: Ahh so meinst du das :roll: . Das ich machen. 2. Den Fehler hab ich auch bemerkt, bin aber noch nicht dazu gekommen ihn zu entfernen. An Jakob_Ullmann: Was ist Vingere oder XOR? EDIT: MITMISCHER DEINE KOMMENTARE SIND MYSTERIÖS, WEIL DU NICHT SAGST WORUM ES GEHT!!!
JayEff - Fr 01.05.09 15:37
Mitmischer 1703 hat folgendes geschrieben : |
| Es ist natürlich logisch, dass, wenn ich nur die Zip entpacke, nichts klappen kann. Trotzdem solltest du das abfangen! |
Was ist daran schwer zu verstehen :nixweiss: Er meint, du solltest Fehler verweigern, in dem du das Programm sagen lässt "Hey, meine Resourcen sind nicht da! Neuinstallation würde das Problem beheben." woraufhin es sich beendet, an statt normal zu starten und nicht zu funktionieren. Hat man kein Labyrinth ausgewählt, verliert man sofort :lol: Solche Kleinigkeiten mit sinnvollen Fehlermeldungen abfangen wäre der nächste Schritt.
An sonsten, ziemlich lustiges Spiel :zustimm: Wie wär's mit einem Leveleditor (Dann kommst du nicht drum rum, die Maplist.txt zu kicken. )?
Ich fände es besser, wenn man sich etwas schneller bewegen würde, das würde ein bisschen mehr Action reinbringen :)
Wie wär's, wenn das "Licht" erst nach einer halben Sekunde oder so ausgeht, so dass man einen Augenblick hat, um sich die Karte einzuprägen? Das würde dann beim Spielen das Gehirn ein bisschen fordern :zustimm: Man könnte in die Mapdatei schreiben, wie lange das Licht an sein darf.
Was das Verschlüsseln betrifft: ein ganz simpler kleiner Algorithmus würde wahrscheinlich reichen. Jeden, der wirklich an den Inhalt der Mapdatei will, wird sowieso auch kein komplizierterer aufhalten. Eine kleine xor-Verschlüsselung reicht da schon, etwa so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| function crypt(Klartext, Schluessel: Char): Char; begin Result := Char(Ord(Klartext) xor Ord(Schluessel)); end;
var Mapdatei: String; i : Integer; begin for i := 1 to Length(Mapdatei) do Mapdatei[i] := crypt(Mapdatei[i], 'y'); |
In der Variable Mapdatei muss natürlich die Datei stehen. Probier mal damit rum, denk dran, dass Neue-Zeile-Zeichen auch verschlüsselt werden.
Jakob_Ullmann - Fr 01.05.09 17:47
Hugo343 hat folgendes geschrieben : |
| An Jakob_Ullmann: Was ist Vingere oder XOR? |
Das, was JayEff gepostet hat. Es wird also jedes Zeichen bitweise mit dem Schlüsselzeichen geXORt (keine Ahnung, wie man das nennen soll). Also erst in eine Zahl umgewandelt, dasselbe mit dem Schlüssel, beides XOR, und dann das Ergebnis in ein Zeichen umwandeln. So bekommst du also nur das richtige Ergebnis zurück, wenn du den Schlüssel kennst (und da XOR sich ja auch prima umkehren lässt, ist das natürlich ideal).
Das Entschlüssel geht dann genauso, also verschlüsseltes_zeichen XOR schlüssel -> original_zeichen.
XOR-Wertetabelle:
Quelltext
1: 2: 3: 4: 5:
| original schlüssel xor 1 0 1 1 1 0 0 1 1 0 0 0 |
Da lässt sich auch leicht erkennen, dass das Entschlüsseln genauso geht. Bei anderen Logik-Operanden hat man das nicht...
EDIT: Also mit Umwandeln ist natürlich Chr() und Ord() gemeint, nicht IntToStr() und StrToInt()
Hugo343 - Fr 01.05.09 17:48
Die Sache mit den fehlenden Ressourcen hab ich so halbwegs, muss noch ein paar Feinheiten machen. Die Maplist.txt konnte ich jetzt rauswerfen :zwinker: , ich hab in der Borland-Hilfe nach den Stichwörtern FindFirst/FindNext gesucht :les: und jetzt sucht er den Maps-Ordner solange ab bis er nichts mehr findet. Jede gefundene Datei wird in die Listbox eingetragen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| FindFirst(extractfilepath(paramstr(0))+'\bin\maps\*.lab',0,F); listbox1.Items.Add(F.Name);
repeat FindNext(F); listbox1.Items.Add(F.Name); until FindNext(F)<>0; |
Damit ist das hoffentlich gut gelöst. Das mit dem schneller bewegen hat auch schon mein Klassenkamerad gebracht, aber ich bin mir dann nicht mehr sicher wie ich dann den Zeitzähler anpasse. Außerdem wäre er dann in 4 Schritten ein Feld weiter! Ich bin mir nicht sicher ob das noch nach einer flüssigen Bewegung aussieht. Am Anfang dem Spieler was zu zeigen ist mir noch nicht eingefallen, und wird vielleicht auch nicht mehr drin sein, weil ich ja zum ersten Mal mit (einer auch noch mir unbekannten) Bitmap-Rotations-Unit gearbeitet habe und ich mir nicht sicher bin ob ich da nicht am Anfang schon zuviel verwurstelt hab :oops: . Und die Sache mit dem Editor lass ich erstmal bis ich mir sicher bin das das mit dem Programm und der Verschlüsselung hinhaut (wird aber kommen, versprochen ^^).
---
Moderiert von
Narses: Beiträge zusammengefasst---
Ok ich versuch das mal ^^.
---
Moderiert von
Narses: Beiträge zusammengefasst---
Die Verschlüsselungsmethode ist ja nicht schlecht, aber leider wird es für den Nutzer trotzdem erkennbar sein wo was liegen könnte da es ja jedes Zeichen einheitlich umwandelt. Bei dem Schlüssel "y" würde jedes "a" zu einem "". Ich habe versucht das sich der Schlüssel sich verändert, natürlich systematisch und wieder umkehrbar, sodass jedes Zeichen anders wird. Leider klappt das bis jetzt noch nicht so ganz weil er bei meinen Eingriffen in die for-Schleife mir seinen Dienst verweigert. Ich versuch das ma weiter ^^.
EDIT: Ok, wird doch etwas anders. :oops: :oops: :oops: Ich nehm das lieber so.^^
JayEff - Fr 01.05.09 18:53
Nun wenn du eine polyalphabetische Verschlüsselung machen willst, wird das ganze auch nur minimal sicherer, aber es ist ein Anfang. Am besten nimmst du ein Wort als Schlüssel. Ich zeig dir mal, wie man meinen Code anpassen würde:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function crypt(Klartext, Schluessel: Char): Char; begin Result := Char(Ord(Klartext) xor Ord(Schluessel)); end;
var Mapdatei: String; Key: String; i, KeyLength : Integer; begin Key := 'MeinGeheimerSchlüssel'; KeyLength := Length(Key); for i := 1 to Length(Mapdatei) do Mapdatei[i] := crypt(Mapdatei[i], Key[(i mod Keylength) + 1]); |
Zur Erklärung: der Modulo Operator teilt durch KeyLength und gibt den Rest der Teilung zurück, wenn dieser kleiner ist als Keylength. An sonsten teilt er nochmal. Aus 5 mod 3 wird also 2, 100 mod 20 = 0, etc. In unserem Fall nutze ich mod um dafür zu sorgen, dass er nicht versucht, über den rechten oder linken Rand von Key hinaus zugehen. i mod KeyLength sollte Werte zwischen 0 und KeyLength - 1 ausgeben. Darum addiere ich noch eine 1 drauf. Nun verschlüsselt der Algorithmus ganz nach dem Vigenère Schema:
Quelltext
1: 2: 3:
| Schlüssel: blablablabl Klartext : huhu *freu* Code : wasauchimme |
(Nein, unter Code steht NICHTS was ich ernsthaft verschlüsselt hab :mrgreen: Da war ich zu faul.)
Denk aber daran, dass jeder noch so anfängerhafte Hacker deine Verschlüsselung recht einfach knacken kann, da dein Passwort im Code drin steht. Wähl vielleicht ein Passwort wie "Spiel Starten", da kommt niemand drauf, dass das auch das PW zur Verschlüsselung ist :rofl:
Edit: Was die Bewegung betrifft:
Eine nette kleine Herrausforderung wäre es, dein Spiel in OpenGL umzuschreiben! Ich hab auch mal ein kleines Spiel geschrieben das zunächst mit Images gearbeitet hat (
http://www.delphi-forum.de/viewtopic.php?t=62192 ), und dann hab ich es mit Hilfe von
FEAR2D in OpenGL umgeschrieben, das ging ganz einfach! Da hast du dann eine größere Auflösung als nur Pixel für Pixel. Interessant wäre auch eine Art "Rutschen" der Spielfigur, also ein weicheres Beschleunigen und Abbremsen - aber das ist nicht so wichtig ;)
Hugo343 - Sa 02.05.09 15:37
Auch das Problem hat sich gelöst. Er läuft jetzt schneller, dafür wird aber auch die Zeit verkürzt. Und ich hab ein Icon gemacht :wink: . Leider ist ein neues Problem aufgetaucht. Bei mehr als drei Maps werden manche nicht in der Liste angezeigt..? Kann vielleicht nochmal einer den Quelltext den ich dafür geschrieben hab durchgucken(weiter oben.)? Ich hab die neue Version jetzt mal hochgeladen. ^^
Hidden - Sa 02.05.09 16:19
Hi :)
Wenn ich das jetzt richtig verstanden habe, solltest du dir vielleicht einmal die Komponente "TTimer" ansehen. Die würde gewährleisten, dass das Spiel auf jedem Rechner gleich schnell läuft.
mfG,
Hugo343 - Sa 02.05.09 16:40
Ganz richtig nicht. TTimer verwende ich schon, ich wüsste auch nicht wie ich das anders machen soll. Mein einziges Problem ist jetzt nur noch das mit dem laden... :( Ich hoffe das mir da jemand weiterhelfen kann, danach können dann so sachen wie Editor usw. kommen. :mrgreen:
EDIT: Wer fände
http://www.youtube.com/watch?v=WSgALh4SRRc gut als Hintergrundmusik? ^^
EDIT2: Ich hab den FindFirst/FindNext-Teil mal etwas aufgepeppt, jetzt trägt er bei einer gerdaden Anzahl von Dateien eine weniger, bei einer ungeraden Zahl die letzte zweimal ein.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| FindFirst(extractfilepath(paramstr(0))+'\bin\maps\*.lab',0,F);
repeat listbox1.Items.Add(F.Name); FindNext(F); listbox1.Items.Add(F.Name); until FindNext(F)<>0;
if (listbox1.Count mod 2 = 0) then begin listbox1.Items.Delete(listbox1.Count-1); end; |
Mit der If-Abfrage wollte ich eigentlich das abfangen, ist das so richtig?
Hugo343 - So 03.05.09 17:52
Ich habe jetzt mal die letzte Version meines Spiels hochgeladen und wage mich dann mal an den Editor :wink: . Falls noch irgendwie Interesse besteht etwas hinzuzufügen werde ich mal sehen ob sich das bewerkstelligen lässt ^^ . Vielen Dank für die vielen hilfreichen Tipps!
PS: Den Editor werde ich dann unter das Spiel stellen.
JayEff - So 03.05.09 18:59
Delphi-Quelltext
1: 2: 3: 4: 5:
| FindFirst(extractfilepath(paramstr(0))+'\bin\maps\*.lab',0,F);
repeat listbox1.Items.Add(F.Name); until FindNext(F)<>0; |
So.
Hugo343 hat folgendes geschrieben : |
| Mit der If-Abfrage wollte ich eigentlich das abfangen, ist das so richtig? |
Natürlich nicht, du sollst ja den Fehler und nicht das Symptom bekämpfen ;)
Hugo343 - Mo 04.05.09 17:54
Aber wo führt der denn da Findnext aus? Außerdem, ich hab jetzt ein ganz neues Problem... Und zwar mit dem Editor dazu. Ich versuche nähmlich, dass man eine Minimap bemalen kann und er jedes Feld(String-Array) mit einem Buchstaben füllt, das dann am Ende in ein Memo eingetragen wird, verschlüsselt und dann abgespeichert wird. Leider klappt das mit der Übertragung vom Array ins Memo nich so ganz. Am besten ich erläuter das nochmal: Jedes Feld im Array wird am Anfang mit dem String '0'(0 heißt nichts und ist auch für die Labyrinth.exe "verträglich"). Wenn man dann auf ein entsprechendes Feld klickt, wird der entsprechende Buchstabe in das Array eingetragen. Wenn der Menubutton "Labyrinth abspeichern" gedrückt wird sollte!!! er eigentlich ganz einfach mit zwei For-Schleifen (eine für Y, die andere für X) das Array aussuchen in in das Memo eintragen. Eigentlich ganz einfach, aber es haut nicht hin. Hat jemand ein besseres Beispiel für eine Übertragung von Array zu Memo?
JayEff - Di 05.05.09 12:27
Hugo343 hat folgendes geschrieben : |
| Aber wo führt der denn da Findnext aus? |
Delphi-Quelltext
1: 2: 3: 4: 5:
| FindFirst(extractfilepath(paramstr(0))+'\bin\maps\*.lab',0,F);
repeat listbox1.Items.Add(F.Name); until FindNext(F)<>0; |
;)
Darum klappte auch deine Version nicht :mrgreen:
Hugo343 hat folgendes geschrieben : |
| Außerdem, ich hab jetzt ein ganz neues Problem... Und zwar mit dem Editor dazu. Ich versuche nähmlich, dass man eine Minimap bemalen kann und er jedes Feld(String-Array) mit einem Buchstaben füllt, das dann am Ende in ein Memo eingetragen wird, verschlüsselt und dann abgespeichert wird. Leider klappt das mit der Übertragung vom Array ins Memo nich so ganz. Am besten ich erläuter das nochmal: Jedes Feld im Array wird am Anfang mit dem String '0'(0 heißt nichts und ist auch für die Labyrinth.exe "verträglich"). Wenn man dann auf ein entsprechendes Feld klickt, wird der entsprechende Buchstabe in das Array eingetragen. Wenn der Menubutton "Labyrinth abspeichern" gedrückt wird sollte!!! er eigentlich ganz einfach mit zwei For-Schleifen (eine für Y, die andere für X) das Array aussuchen in in das Memo eintragen. Eigentlich ganz einfach, aber es haut nicht hin. Hat jemand ein besseres Beispiel für eine Übertragung von Array zu Memo? |
Ja, fasse das Memo einfach direkt als array auf:
Memo1.Lines[Zeile][Spalte] Aber wenn's nur um's Abspeichern geht, nimm statt einem Memo eine TStringList:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var sl : TStringList; i : Integer; begin sl := TStringList.Create; for i := 0 to AnzahlZeilen-1 do sl.Add('0000000000000000000[...]0'); sl[zeile][spalte] := 'a';
sl.SaveToFile(Dateiname); sl.Free; end; |
Edit: Mein Kumpel sagt grade...:
Was bringt eine Verschlüsselung, wenn du sowieso einen Editor für die Dateien mitlieferst ;)
Ich würd das einfach so lassen, weil, wenn jemand sich die Maps im Vorraus anguckt betrügt er sich ja bloß selbst um seinen Spielspaß ;)
Hugo343 - Di 05.05.09 14:32
Danke für den Tipp^^! Aber so dumm bin ich nicht^^. Der Editor kann die *.lab-Maps nicht laden. Es werden zwei Arten von Maps abgespeichert, einmal die *.lab und dann noch *.lab.usr(usr steht für USER), die sich mit dem editor öffnen lässt. So kann der Nutzer nur seine eigenen Maps öffnen und bearbeiten :D . So, es wird Zeit dann mal alles zu einem Ende zu bringen. Ich stell jetzt das ganze packet mit spiel und editor hier rauf und spätestens am wochenende lad ich auch noch mal ein maps-pack hoch (drei maps sind ja ein bisschen zu wenig :wink: ).
passiv - Mi 06.05.09 07:41
Der Editor ist ja schon mal ganz gut gelungen. Verbesserbar ist er aber noch ...
Ich würd die rechte Maustaste gerne verwenden als Radierer. Und die Listbox mit den Werkzeugen könnte man durch eine Toolbar und Zahlentasten ersetzen. Oder andere Shortcuts (S - Start,E - Ende, ...). Dann würden 1. Icons dazukommen und 2. Die Übersicht gewährleistet.
Zum Spiel: Ein Doppelklick auf ein Level in der Listbox würde was hermachen. Und ein irgendwie ansprechenderer Schirm am ende des Spiels, vllt. mit Knopf um zurückzukommen, zum Hauptmenü. Da muss man erst draufkommen, dass man jetzt Esc drücken sollte ...
Und wie wärs, die Listbox ohne dem ".lab" anzuzeigen? Sollte keine Hexerei sein, und sieht doch gleich besser aus!
Um noch eine neue Komponente ins Spiel zu bringen könnte man den Bestzeit für jedes Level in einer ListView (für die .lab-Dateien im Hauptmenü) als zweite Spalte anzeigen.
Bis dann
Hugo343 - Mi 06.05.09 14:39
Herrje... Eigentlich hatte ich vor das jetzt erstmal abzuschließen, weil ich in nächster Zeit ne Menge Arbeiten in der Schule schreib und außerdem wollte ich mich mal etwas anderem zuwenden. Ich stell jetzt erstmal nurnoch mein Mappack hoch und werde dann erstmal ruhen^^. Ich merk mir aber die Tipps und wenn ich Zeit hab werd ich mich da mal wieder ransetzen.
PS: Passiv, deine Map ist bis auf den fehlenden Rand ganz gut gelungen,(oder sollte das so sein?). ^^
passiv - Mi 06.05.09 16:26
ups, wusste das nicht und ausprobiert hab ichs auch nicht, weil ich den weg ja kannte :lol:
Jetzt dabei das Verbesserte, das Verbesserte "verkniffelt" und noch ein Neues.
Hugo343 - Mi 06.05.09 18:30
Deine Maps sind sehr gut muss ich schon sagen (für Confusional hab ich 5 mal gebraucht^^)!!! Und das mit dem Rand hab ich dann auch nochmal repariert, noch bei der alten Version davon. Vor allem durch diese Einfachheit ist das noch verwirrender. :zustimm: Genial!!!
Hidden - Mi 06.05.09 18:33
Hugo343 hat folgendes geschrieben : |
| Der Editor kann die *.lab-Maps nicht laden. Es werden zwei Arten von Maps abgespeichert, einmal die *.lab und dann noch *.lab.usr(usr steht für USER), die sich mit dem editor öffnen lässt. So kann der Nutzer nur seine eigenen Maps öffnen und bearbeiten :D. |
Wer verhindert denn, dass ich die Maps umbenenne? =)
Hugo343 - Mi 06.05.09 19:02
Aber die *.lab-Dateien sind verschlüsselt, die *.lab.usr dagegen nicht. Wenn man also versucht *.lab-Maps zu laden, was nicht geht, weil ich in dem Opendialog-Filter nur *.lab.usr zulasse, würde sowieso nur Müll rauskommen :P . Ich habe ein Programm dafür gemacht um auch *.lab-Maps in eine veränderbare Form zu bringen, aber wenn das hier offen gestellt würde, wäre keine Map mehr sicher.... :wink:
PS: Wer seine Map "Open-Source" machen will sollte die *.lab.usr dazupacken.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!