Ich wollte mal fragen ob es die Möglichkeit gibt das die XYZ Position nach einen Zufallsprinz geändert werden kann?
Ich möchte es für ein Raumschiff, wo man mit denn Warpdrive dann irgend wo auf der Map landet.
Geht sowas?
Druckbare Version
Ich wollte mal fragen ob es die Möglichkeit gibt das die XYZ Position nach einen Zufallsprinz geändert werden kann?
Ich möchte es für ein Raumschiff, wo man mit denn Warpdrive dann irgend wo auf der Map landet.
Geht sowas?
Wire Randomchip, wo ist das Problem?
Es funktioniert irgend wie nicht?
Ich hab mich an das Tutorial gehalten nur mit einen Warpdrive anstatt ein Holo.
http://www.youtube.com/watch?v=iyk3cBl9T6U
Der Warpdrive Landet immer wieder an der Selben stelle.
Habe die Zahl der Constante Value auf verschiedenen Zahlen Probiert, aber immer das selbe Ergebnis.
Kann man einen Chip erstellen der eine Zufällige Position beziehungsweise eine zufällige Zahl nimmt.
Multiplizier die Random Chips mal mit sagen wir 1000, denn diese geben nur Werte zwischen 0 und 1 aus, der Unterschied dürfte zu gering sein.
Meinste ohne CValue direkt am RChip?
Den Random Chip an einen Multiply anschließen, B an eine Constant Value.
Mal ehrlich, hast du wiremod überhaupt verstanden?
Doch schon aber ich hab das Spiel fast 4 Monate nicht gespielt.
Es funktioniert jetzt, aber verhindern das das Objekt außerhalb der Map landet kann man nicht oder?
Theoretisch kann man einen E2-Chip programmieren, den man auf einen bestimmten Bereich der Map programmiert, in dem die zufällig ausgewählten Koordinaten akzeptiert werden. Aber ich bin da auch zu lange raus, als dass ich da einen brauchbaren Tipp gegen könnte.
Ansonsten: Nein, das Ding beamt skrupellos ins Nirvana, wenn es die Koordinaten dazu bekommt.
Hab mal einen einfachen Chip gemacht der eine Random position vorgibt.
Gibt es ein Befehl mit denn sich der Chip der Map anpasst oder müsste man das für jede Map extra anpassen?Code:@name Random Warpjump
@outputs X Y Z
interval(10)
X = (random(1,10000))
Y = (random(1,10000))
Z = (random(1,10000))
Könntest dir etwas mit Rangern bauen, die die Map vermesöen, scheint aber wohl keinen Befehl zu geben.
Denn woher soll die e2 wissen was du als Map definierst? (Tunnel, Höhlen...)
Das einzige wäre die größe der eigentlichen Fläche in der eine Map sein kann, die ist aber durch Hammer meines Wissens begrenzt und wäre dann auch konstant.
Trotzdem bringt das nicht viel, es sei den die Map ist eine Box mit diesen Maßen.
Da mir nicht bekannt ist das man in LUA irgendwelche Werte der Map auslesen kann:
Nein, der kann sich nicht automatisch anpassen. Du müsstest das tatsächlich für jede einzelne Map händisch angeben.
Andere Möglichkeit:
Du fügst dem E2-Chip Inputs hinzu mit 2 Eckpunkten (Diagonal gegenüberliegen in einem Quader) innerhalb diesem nur eine Position ausgegeben werden darf.
Somit musst du nur für jede Map in der du bist 2 Vectoren angeben.
Genau das meinte ich, danke :)
@Bier_Baron:
Der Befehl dazu lautet inrange(V,Vmin,Vmax)
Du legst den zu prüfenden Bereich mit den Vektoren Vmin und Vmax fest. V selbst ist der zu prüfende Vektor, ob sich dieser im angegebenen Bereich befindet. Da der Befehl eine 0 oder 1 ausgibt, kannst Du den Käse also einfach mit if (inrange(...)) abfragen.
Apropos Warpdrive:
Sorry für die OT-Frage, aber welche(s) Addon(s) brauchte ich nochmal, um den nutzen zu können?
Der Warp Drive ist bestanteil von SB.
Aber der Hoverdrive Controller von Wire, ist genau das selbe nur halt kleiner.
---------- Beitrag hinzugefügt um 23:53 ---------- Vorheriger Beitrag war um 22:31 ----------
Hab mal versucht denn Befehl einzufügen, aber es klappt leider nicht so wie ich es mir vorgestellt habe.
Hab keine ahnung wie ich das Problem beheben soll?Code:@name Random Warpjump
@inputs Vector:vector Vector2:vector Vector3:vector
@outputs X Y Z
@trigger V Vmin Vmax
interval(10)
X = (random(0,10000))
if (inrange(Vector,Vmin,Vmax))
Y = (random(0,10000))
if (inrange((Vector2,Vmin,Vmax))
Z = (random(0,10000))
if (inrange(Vector3,Vmin,Vmax))
muss ich bei min und max eine Zahl einfügen oder ist der Befehl falsch?
Du musst die Vektoren Vmin und Vmax natürlich auch noch definieren, und zwar mit den Koordinaten der beiden "Ecken" des Raumes, die den entsprechenden Bereich abstecken sollen. Und das nicht nur mit einer Zahl, sondern jeweils 3, denn es sind halt 2 3-dimensionale Vektoren.
Du brauchst auch nicht 3 verschiedene Vektoren, es reicht ein einziger, der zu überprüfen ist. Du lässt halt X, Y und Z jeweils über die Ramdom-Funktion erzeugen und fügst sie zum zu überprüfenden Vektor zusammen. Dieser wird dann mit der o.g. Funktion überprüft, ob er sich in dem abgesteckten Bereich befindet.
Ich habe zwar keine Ahnung von Wire, aber ich würde das theoretisch (oder etwa in LUA) nach folgendem Schema machen:
- Definiere die Bounds des zu teleportierenden Objektes
- Bestimme den random Vektor; kleinstmöglicher Wert = Vector( 0, 0, 0 ), größtmöglicher Wert = Mapboundaries
- Verrechne random Vektor mit Min- bzw. Maxbounds des Objektes
- Überprüfe ob sich in dem Raum zwischen den beiden Vektoren störende Objekte befinden
- Wenn ja ➔ neuen random Vektor bestimmen, Vorgänge wiederholen
Wenn nein ➔ Objekt-Position zu davor bestimmter Position setzen
Ich denke mal dieser Simple-Shit sollte in Wire machbar sein.
Es ist ja auch machbar, aber da ich (wieso auch immer) das Dingens nicht mehr in der Entity-Liste habe, kann ich es nicht für ihn zusammentippseln sondern nur bruchstückhaft Tipps geben.
@Bier_Baron:
Nochmal ein Paar konkrete Tipps zu meiner Umschreibung oben:
Den Beam-Vektor erstellt Du mit
Nachdem Du die Koordinaten der Raum-Vektoren Vmin und Vmax definiert hast, kannst Du dann so abfragen, ob sich der Beam-Vektor in diesem Raum befindet:PHP-Code:
Beamvector=vec(random(0,10000),random(0,10000),random(0,10000))
Aber das ist völlig ungetestet und nur die halbe Miete. Anwenden musst Du das dann noch selbst :)PHP-Code:
if (inrange(Beamvector,Vmin,Vmax)){
# hier kommt der Befehl zum Beamen rein
}
Wo soll ich das einbauen oder ist es an der Stelle Richtig?
"Beamvector=vec(random(0,10000),random(0,10000),ra ndom(0,10000))"
und Benötige ich das auch noch:
if (inrange(Vector,Vmin,Vmax))
Ich weis leider auch nicht was verkehrt ist?Code:@name Random Warpjump
@outputs X Y Z
interval(10)
Beamvector=vec(random(0,10000),random(0,10000),random(0,10000))
X = (random(1,10000))
if (inrange(Beamvector,Vmin 0,Vmax 10000))
Y = (random(1,10000))
if (inrange(Beamvector,Vmin 0,Vmax 10000))
Z = (random(1,10000))
if (inrange(Beamvector,Vmin 0,Vmax 10000))
Habe ich die Zahlen falsch eingefügt?
Hast du überhaupt eine Ahnung, was "du" da eigentlich tust? Kommt mir nämlich so vor, als würdest du einfach das was hier so im Thread an Codesnippets geposted wird, ohne Sinn und Verstand Copy'n'Pasten.
Ich Teste die Codes ob sie funktioniere.
Hab mal bei Google mal gesucht und bin da auf ein altes Theard hier in Forum gestoßen.
Ich werd es mal bei Gelegenheit Testen.
Hab mal einen Code geschrieben:
Noch nicht getestet!Code:@name Random Warpjump
@outputs X Y Z
@trigger Vector1 Vector2 Vector3
interval(10)
X = Vector1
X = (random(1,10000000))
if (inrange(Vector1:isInWorld()))
Y = Vector2
Y = (random(1,10000000))
if (inrange(Vector2:isInWorld()))
Z = Vector3
Z = (random(0,10000000))
if (inrange(Vector3:isInWorld()))