ja da hast recht, ich hab jetzt aber ein paar scripts gezaubert, die an einem zufälligen punkt auf der insel ein kleines zufallsgeneriertes gebirge oder eine senke erstellt und anschließend die textur passend berechnet.
Das stelle ich mir recht schwierig vor... Ich meine, nehmen wir mal einen zweidimensionalen Querschnitt durch die Ebene und betrachten dann eine Funktion in einer Variablen x. Im günstigsten Fall ist das Terrain bereits glatt, also f(x)=0 auf dem ganzen Definitionsbereich. Das Erstellen eines "Berges" bspw. an der Stelle x=0 ließe sich dann über f(0)=1 realisieren. Die Stetigkeit selbst wird intern realisiert, wenn ich irgendwo das Terrain erhöhe, dann wird zwischen den entsprechenden Punkten in der "Terrainmatrix" interpoliert, so dass ein kontinuierlicher Übergang entsteht. Im einfachsten Fall wäre dann bspw. f(0.5)=f(-0.5)=0.5. Also so eine "Spitze". Nun wäre aber eine "Rundung" optimaler, was im zweidimensionalen Fall dann etwa wie eine Parabel aussieht. Hier ist etwas Anschauungsvermögen und Mathekenntnis gefragt, hoffe es ist aber trotzdem klar was ich meine.
da dies jedoch NACH der generierung der map geschiet, sind natürlich bäume etc im boden versunken oder hängen in der luft, was aber nachdem man speichert und das spiel lädt ja wieder in ordnung ist.
Speichere die Karte nach dem Spielstart ab (savemap) und lade sie sofort wieder (loadmap)... Skripttechnisch etwas komplizierter zu realisieren, aber möglich und löst das Problem.
die gebirge sind manchmal etwas spitz - leider, gelegentlich sehen die aber auch cool aus.
Ja, genau das meine ich.
wobei... eigentlich siehts auch nicht viel schlimmer aus wie die von stranded generierten gebirgslandschaften ^^
^^u
mein hauptproblem ist dass anscheinend nur ganzzahlige zahlenwerte für die erhöhung/absenkung des terrains funktionieren. wenn ich z.b. random(20,100) mach und diese zahl durch 100 teile wird immer auf 0 abgerundet ¬¬ .
Hm... Bei der Division musst du evtl. eine andere Notation verwenden, also bspw. 100.0 statt 100. Lässt du den Dezimalpunkt weg, wird das intern als Ganzzahldivision interpretiert.
und was halt auch etwas blöd ist: dass man keine schleifen verschachteln kann, dann wäre der script nämlich nur wenige zeilen lang und auf beliebige größen erweiterbar
Das ist sehr blöd, ja! Aber es gibt da auch so einige Möglichkeiten das irgendwie zu umgehen, bspw. per
- on:start {
- local $x,$z;
- event "inc_z";
- }
-
- on:inc_z {
- if ($z==100) { event "inc_x"; } else { $z++; }
- msg "($x,$z)";
- }
-
- on:inc_x {
- if ($x<=100) { $z=0; $x++; event "inc_z"; }
- }
-
sollte sich ein zweidimensionales Feld abdecken lassen. Skript ist ungetestet und müsste ggf. je nach Anwendungsbereich noch hier und da etwas modifizieren werden, aber prinzipiell geht es. ^o)
wenn du ein ähnliches problem hast, hänge ich mal mein scriptchen an. zumindest sieht man daran wies prinzipiell möglich ist ^^
Naja, ich habe solche Ideen mittlerweile als "zu aufwändig" verworfen... Aber ich finde es immer geil Sachen zu machen, die andere so gut wie für unmöglich halten. (ich musste neulich bspw. eine kleine Intervallschachtelung implementieren nur um den Winkel eines Objektes relativ zu einem anderen Objekt zu bestimmen, weil es so eine Funktion bei Stranded nicht gibt :roll: )
Aber wenn du bspw. ein Skript hättest, welches auf einer glatten Ebene einen nahezu perfekt runden Hügel zaubert, wäre ich schon recht erstaunt und interessiert! Kannst das Skript ja trotzdem mal posten, vier Augen sehen ja immer mehr als zwei und neugierig bin ich sowieso immer. :wink:
EDIT: Oh... da ist es ja schon - als Dateianhang. Schaue ich mir zu Hause mal genauer an (kommt auf dem ersten Blick recht knapp daher).
Ich versuche schon seit längerem ein Script zu bauen, damit meine Info einer Unit folgt, und sogar sich auf der selben Position befindet.
Hat da Jemnad ne idee?
Warum dieses...? Vielleicht brauchst du diese umständliche Methode gar nicht... Aber ansonsten ginge das per Timer mit hoher Frequenz (10ms oder so). In etwa
- on:timer {
- $x=getx("unit",UNIT-ID);
- $x=getx("unit",UNIT-ID);
- setpos "info",INFO-ID,$x,"self",$z;
- }
-
recht kurz also. Ggf. kannst du noch ein, zwei Parameter zu "self" kürzen, aber das Prinzip sollte klar sein.
wie macht man einheiten größer stärker Schneller belastungsfähiger
Per Skript.
und wie kann man pfeile steine oder feuerbälle von anderen einheiten abschießen
Per Skript.
wie macht man Dialoge / msg / Tagebucheinträge
Per Skript.
und Eine raptoren reiterei wobei bezahlung hypsioder Raptor vor die hütte gesetzt und dann in den gezähmtstatus bringt.
Per Skript.
außerdem Quellen wo beim ersten trinken die Max gesundheit um 25 erhöht wird und danach immer beim trinken wie ein heiltrank wirkt
Per Skript.
und ein Sponsoren System wie man eine anzahl am bildranderscheinen lässt von kuppons und bei jedem abgeben von beworbenen 20 einheiten seiner Ware geben
Per Skript.
außerdem ein script was einem beim zerschlagen einer vase items gibt und beim öffnen truhen öffnet
Per Skript.
und in die nähe von Lagerfeuern baumstämme spawmt zum heißen und zu guter letzt dass laden von maps bei benutzen von objekten ich weiß dass ist viel auf einmal doch ich würde das gerne wissen.
Per Skript. =P
Jede Antwort auf diese Fragen würde mit Sicherheit ein paar Tage später weitere Fragen nach sich ziehen, warum dies und jenes auf einmal nicht funktioniert und so weiter...
Das ist so als würdest du fragen wie man ein Haus, eine Mauer, einen Wolkenkratzer, eine Moschee, eine Brücke... baut. Ganz einfach: Man eignet sich die entsprechenden Kompetenzen an und lernt bspw. Ingenieurwesen. Für sowas gibt es nämlich genauso wenig Patentlösungen wie es vorgefertigte Skripte gibt. Da gibt es einen Haufen Fallunterscheidungen zu treffen und Parameter zu beachten die von Fall zu Fall stark variieren können und situationsbedingte Modifikationen erfordern. Die meisten hier geposteten Skripte können keine Fehlerfreiheit garantieren und stellen meist nur grobe Richtlinien/Umsetzungsideen dar. Am Ende kommen dann Sachen wie bei "nicht_mehr_Gast" oder mir heraus, wo ein Haufen Platzhalter, Kommentare und komische Funktionennamen drin sind. xD
Und wenn es wirklich wichtig ist, dann bringt man sich das lieber selbst halbwegs bei und fragt bei den wirklich schwierigen Sachen noch einmal nach. Tipp: Die Skripte im Abenteuer angucken und abkupfern. :yes: