Thema: Teil der Landschaft Speichern und entfernen Do Jul 09, 2009 9:43 pm
Hallo, ich habe mal wieder ein Problem: Mit dem folgenden Script sollen in einem Teil der Landschaft (100*100 Pixel) die Objekte und das Material gespeichert, entfernt, und später wiederhergestellt werden. Bis zum entfernen läufts ganz gut, die Arrays fürs Speichern sind voll, die Objekte werden erstellt. Aber Das Material verändert sich nicht wie gewünscht... eigentlich gar nicht. Was läuft da schief?
EDIT: Besondere DefCore Einträge und Actions sind nicht vorhanden, der Script kann zum testen einfach in z.B. einen Stein kopiert werden.
Code:
#strict 2
local RefPoint, SavedObjects, SavedMaterials,RecTime,IsLoading;
Achja, bevor jemand was sagt: Ja, ich weiß, dass das Materialarray 10.000 Stellen lang ist, da Clonk aber ordentlich weiterläuft, wenn man das Material wiederherstellen will, sollte das kein allzugroßes Problem sein.
NilsZ Admiral
Ort : Mein Rekord: 27 Punkte! :D Anmeldedatum : 07.08.08
Thema: Re: Teil der Landschaft Speichern und entfernen Fr Jul 10, 2009 3:33 am
hmm Also mit DrawMaterialQuad tut sich bei mir auch nichts. mit DrawMap(x,y,x +1,y +1, Format("map Klotz{ mat=%s; };", MaterialName(SavedMaterials[k]) ) ); geht es zwar aber dann wird es oben in die Ecke gezeichnet. Wenn man dann aber die Refpoints dazu gibt stürtzt merkwürdiger Weise immer die Clonk Engine ab...
Liech Fregattenkapitän
Alter : 33 Anmeldedatum : 02.02.09
Thema: Re: Teil der Landschaft Speichern und entfernen Fr Jul 10, 2009 11:15 am
Ich würde das ja mit mehrdimensionalen Arrays lösen. Sprich: Arrays in einem array. Da sind die daten dann wesentlich besser organisiert. Auserdem ist der Zugriff schöner und man hat, wenn nicht Objekte dann doch immerhin Tuppel.
Rufst du Restore eigentlich Manuell auf?
Jedenfalls ist NilsZ idee eigentlich garnicht so verkehrt. Nur die Funktion ist nicht wirklich brauchbar. Was du immoment zeichnest ist ein 0x0 Materialblock an der korrekten stelle. Sorge dafür das es ein 1x1 block wird:
Zitat :
DrawMaterialQuad(MaterialName(SavedMaterials[k]),RefPoint[0] + x,RefPoint[1] + y,RefPoint[0] + x + 1,RefPoint[1] + y,RefPoint[0] + x + 1,RefPoint[1] + y + 1,RefPoint[0] + x,RefPoint[1] + y + 1);
Andere Logikfehler hab ich jetzt nicht gefunden.
Merlinus_verus Leutnant
Alter : 30 Anmeldedatum : 20.04.09
Thema: Re: Teil der Landschaft Speichern und entfernen Fr Jul 10, 2009 3:46 pm
Hab die Funktion jetzt in Liechs Vorschlag geändert. Es sind aber zwei Probleme aufgetreten, die ich zwar identifizieren, aber nicht beheben kann:
1. RefPoint wird beim Aufruf der Restore Funktion aus irgendeinem Grund redefiniert, das heißt, das Material wird an der falschen Stelle verändert. Speichert RefPoint die Zahl, oder die Funktion?
2. "Sky" wird von DrawMaterialQuad nicht angenommen, also verändert sich an den Stellen des Himmels nichts. Gibt es einen Weg, in einem Bereich alle Materialien in Sky zu ändern?
NilsZ Admiral
Ort : Mein Rekord: 27 Punkte! :D Anmeldedatum : 07.08.08
Thema: Re: Teil der Landschaft Speichern und entfernen Fr Jul 10, 2009 4:42 pm
1. RefPoint wird beim Aufruf der Restore Funktion aus irgendeinem Grund redefiniert, das heißt, das Material wird an der falschen Stelle verändert. Speichert RefPoint die Zahl, oder die Funktion?
Das war mir auch aufgefallen, deshalb hab ich einfach Refpoint1 und Refpoint2 als locals deklariert.
2. "Sky" wird von DrawMaterialQuad nicht angenommen, also verändert sich an den Stellen des Himmels nichts. Gibt es einen Weg, in einem Bereich alle Materialien in Sky zu ändern?
Deshalb habe ich auch DrawMap benutzt, DrawMaterialQuad macht 1. keine Erde hinter dem Material und 2. unterstützt es auch keinen Sky. Bei DrawMap ist aber der Nachteil dass es in diesem Ausmaß rechenintensiever ist und falls die Maße über die Landschaft nach unten hin hinausragen stürtzt das Spiel ab.
Extremclonk Staatsrat
Ort : Am Anti-Spam-Limes Anmeldedatum : 19.01.09
Thema: Re: Teil der Landschaft Speichern und entfernen Fr Jul 10, 2009 4:44 pm
Thema: Re: Teil der Landschaft Speichern und entfernen Fr Jul 10, 2009 5:06 pm
Danke, es funktioniert, das mit dem redefinieren der Refpoints war ein Denkfehler meinerseits. Ich hatte eine Fuktion in Gedanken bereits verändert, aber nicht aufgeschrieben.
Gesponserte Inhalte
Thema: Re: Teil der Landschaft Speichern und entfernen