Rolltreppe

OLD MAN WITH GUN

Zitat:

Original von T.R.Graves
Ich wollte mich nur mal wieder melden wegen der Rolltreppe und gleich mal meine Lösung anbieten.

Als erstes das Script...
Ich hoffe, du hast nichts dagegen, wenn ich den Script mal ein wenig verkürze (wer tippt sich schon gern die Finger wund grosses Grinsen )

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
rolltreppe_move()
{
  rolltreppe = getent ("rolltreppe","targetname");
  rolltreppe thread move();
}

move()
{
  stufe = [];
  speed = 1.3; // Geschwindigkeit der Rolltreppe (je niedriger der Wert, desto schneller)
  anzahl = 30; // Anzahl aller Treppenstufen
  stufe[0] = getent(self.target,"targetname");
  for (i = 0; i < anzahl; i++)
    stufe[i+1] = getent(stufe[i].target,"targetname");

  while(1)
  {
    self moveto(stufe[0].origin,speed);
    for (j = 0; j < anzahl; j++)
      stufe[j] moveto(stufe[j+1].origin,speed);
    stufe[anzahl-1] waittill ("movedone");
  }
}

T.R.Graves
Genau so habe ich mir das vorgestellt,habe selber 3 tage dran rumgefriemelt und dann doch wieder gemerkt das ich nicht so die scriptleuchte bin.
Werde dein script morgen dann mal testen.
Danke
und
ciao
Nightwing
Schönes Script, OMWG.

Dank Dir nun auf beliebig viele Stufen anwendbar.
Mir ist grad aufgefallen, das das waittill("movedone"); eine kleine Verzögerung, ein Ruckeln mit sich bringt. Wie bekommt man das weg, sodass eine flüssige Bewegung entsteht?

Hast Du Dir in diesem thread das _paternoster.gsc Script angesehen? Wie ändert man da die Rotationsrichtung, oder ist das nicht möglich?

ToM
OLD MAN WITH GUN
So, hab noch ein paar Anpassungen gemacht.
Habe ein script_origin hinzugefügt um die Rolltreppe zu identifizieren. Dieser script_origin bekommt als targetname "rolltreppe" und zusätzlich noch folgenden key/value
key: script_noteworthy
value: 22
(22 = Anzahl der Stufen dieser Rolltreppe, entsprechend eurer Rolltreppe anpassen).
Die Treppenstufen bekommen keinen targetname (keine der Stufen). Einfach alle im Kreis mit "w" miteinander verbinden, sodass der Kreis vollständig geschlossen ist (wo man anfängt dürfte eigentlich egal sein).
Dann noch das script_origin mit einer der Stufen verbinden.
Hier mal ein Bild:


Und hier das Script:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
rolltreppe_move()
{
  rolltreppe = getentarray ("rolltreppe","targetname");
  for(z = 0; z < rolltreppe.size; z++)
    rolltreppe[z] thread move();
}

move()
{
  stufe = [];
  speed = 1.5; // Geschwindigkeit der Rolltreppe (je größer der Wert, desto langsamer)
  anzahl = int(self.script_noteworthy); //Anzahl der Stufen vom script_origin holen

  stufe[0] = getent(self.target,"targetname");
  for (i = 0; i < anzahl; i++)
    stufe[i+1] = getent(stufe[i].target,"targetname");
		
  while(1)
  {
    for (j = 0; j < anzahl; j++)
      stufe[j] moveto(stufe[j+1].origin,speed);
    stufe[anzahl-1] waittill ("movedone");
  }
}


Mit den kleinen Rucklern zwischendurch muss man wohl leben. Habe mal versucht, die Wartezeit zu verkürzen (für weicheren Übergang). Dadurch verschieben sich aber während der Laufzeit die Zielpunkte der einzelnen Stufen immer mehr, sodass die Stufen immer weiter aus dem Ruder laufen, also unbrauchbar.
Der Script eignet sich jetzt auch für mehrere Rolltreppen.

Was den paternoster-script betrifft, da wird die Richtung wohl durch die Reihenfolge bestimmt, in der man die script_origins der Wegpunkte setzt. Kann nach dem editieren katastrophale Auswirkungen haben.
Hab auch mal mit dem paternoster-script eine Rolltreppe gebaust (diese lief von unten nach oben, also genau anders herum als bei Mapicted). Nur machte mein Player auf den Treppenstufen immer einen kleinen Satz nach hinten, wenn eine Stufe den nächsten Wegpunkt erreicht hatte. Bei meinem Script bleibt der Player ruhig auf der Stufe stehen.
Nightwing

Zitat:

Original von OLD MAN WITH GUN

Nur machte mein Player auf den Treppenstufen immer einen kleinen Satz nach hinten, wenn eine Stufe den nächsten Wegpunkt erreicht hatte. Bei meinem Script bleibt der Player ruhig auf der Stufe stehen.


Jo, dieses gehopple hab ich auch bemerkt.
Vielen Dank für die 2 Scripts, habs direkt in meine kleine Sammlung dazugetan.

ToM
Matrixpro
Hallo also erst mal meinen risen respekt an die leute die sowas hier auf die beine stellen, echt der Hammer!

Nun zu meiner frage wenn es möglich ist eine Rolltreppe zu "scripten" muss es doch auch möglich sein ein Förderband zu machen mit dem gleichen scrip oder nur das die stufen halt nicht hoch bzw runter gehen sondern gradeaus fahren so das man halt nen Förderband hat. Das müsste doch auch gehen oder? Wenn ja könnte mir einer kurz sagen wie ich das scrip dann anpassen muss bzw wie ich das im radiant mappen muss? wäre echt super nett von euch. Danke schon mal für jeden tipp. cu
steinacker
kann mir mal jemand den letzten beitrag hier etwas genauer erklären, oder bin ich zu blöd das zu verstehen verwirrt (letzter Beitrag von T.R. Graves)
also ich hab das mal ganz genau so gemacht, wie es hier beschrieben wird, allerdings das ganze als aufzug - paternoster
und wenn ich jetzt die script brushmdel (aufzugskisten) mit einander verbinde, dann vergibt der radiant automatisch ein target und den targetname, womit dann beim ersten der targetname rolltreppe wieder gelöscht wird

und beim compilieren bekomm ich diesen fehler hier:

denke mal dass der was mit den origin brushes zu tun hat

1. aufzugskiste erstellt-->script bruschmodel -->targetname rolltreppe
2. weitere aufzugskisten erstellt -->script brushmodel
3. origins erstellt-->script brushmodel
4. aufzugskisten mit w der reihe nach verbunden
steinacker
OK - funzt jetzt
ich habs nach der anleitung von OMWG gemacht, nur die origin brushes hab ich wieder rausgelöscht - da kommt immer die obige fehlermeldung, weil die teile kein targetname haben und ich weiss nicht was die für einen bekommen sollen

noch ein paar feinheiten, dann kann ich das teil hier mal zum download reinstellen
klinter
hab das auch mal versucht nach der anleitung von OMWG.
doch bei mir kommt bei 2. compile reflections dieser fehler:



das hängt wohl hiermit zusammen:

Zitat:

Füge die Zeile maps/mp/_paternoster::main(); in Deine map.gsc Datei ein.


und meine mp_map.gsc sieht so aus:

main()
{
game["allies"] = "sas";
game["axis"] = "speznas";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "woodland";
game["axis_soldiertype"] = "woodland";

maps/mp/_paternoster::main();

setdvar( "r_specularcolorscale", "1" );

setdvar("compassmaxrange","2000");
}

die ist wahrscheinlich komplett falsch, oder? grosses Grinsen


mfg klinter
Animus
@kl!nter

richtig das hat damit zu tun
hast du das file überhaupt auf was du verweissen willst?
steinacker
@klinter
füg mal das hier in deine map.gsc

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
main()
{
game["allies"] = "sas";
game["axis"] = "speznas";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "woodland";
game["axis_soldiertype"] = "woodland";


setdvar( "r_specularcolorscale", "1" );

setdvar("compassmaxrange","2000");

thread rolltreppe_move();
}

rolltreppe_move()
{
	rolltreppe = getentarray ("rolltreppe","targetname");
	for(z = 0; z < rolltreppe.size; z++)
	rolltreppe[z] thread move();
}

move()
{
	stufe = [];
	speed = 1.5; // Geschwindigkeit der Rolltreppe (je größer der Wert, desto langsamer)
	anzahl = int(self.script_noteworthy); //Anzahl der Stufen vom script_origin holen

	stufe[0] = getent(self.target,"targetname");
	for (i = 0; i < anzahl; i++)
		stufe[i+1] = getent(stufe[i].target,"targetname");
		
	while(1)
	{
		for (j = 0; j < anzahl; j++)
			stufe[j] moveto(stufe[j+1].origin,speed);
			stufe[anzahl-1] waittill ("movedone");
	}
}

OLD MAN WITH GUN

Zitat:

Original von steinacker
OK - funzt jetzt
ich habs nach der anleitung von OMWG gemacht, nur die origin brushes hab ich wieder rausgelöscht - da kommt immer die obige fehlermeldung, weil die teile kein targetname haben und ich weiss nicht was die für einen bekommen sollen
Die haben den gleichen Namen wie die jeweilige Treppenstufe. Die origin_brushes sind Teil der einzelen script_brushmodels (Stufenbrush + origin_brush = script_brushmodel einer Stufe).
klinter
_paternoster.gsc

Diesen Script hab ich benutzt, und eigentlich bin ich mir ziemlich sicher das ich nichts falsch gemacht habe. Die Datei auf die ich verweisen will existiert auch.


mfg klinter

edit: habs jetzt geschafft indem ich den inhalt der _paternoster.gsc in meine map.gsc kopiert habe, doch nun habe ich das gleiche problem wie steinacker.
steinacker
wenn du eine extra datei (_paternoster.gsc) benutzen willst, um die übersichtlichkeit in deiner map.gsc zu erhalten, dann musst du diese auch in deine zone file eintragen
4. Update Zone File

und da trägst du dann im rechten fenster diese zeile ein:
rawfile,maps/mp/_paternoster.gsc
-->klick save

wenn sich die besagte datei in dem agegeben ordner befindet, ansonsten anpassen

und in deiner map.gsc muss dann folgende zeile enthalten sein:
maps\mp\_paternoster::main();

ansonsten kopier mal das, was ich weiter oben gepoustet hab in deine map.gsc rein und zwar komplett ohne die zeilennummern
das iss der inhalt deiner ursprüglichen map.gsc nur mit der paternoster erweiterung
und erstell mal deinen paternoster, so wie das OMWG mit der rolltreppe gemacht hat - so funzt das auch bei mir grosses Grinsen
klinter
nein nein, diesen fehler hab ich nicht mehr.
bei mir kreuzen die paternoster sich immer wie bei dir auf dem bild.
wie hast du das gelöst? könntest du deine lösung uploaden?


mfg klinter
steinacker
sorry, aber dafür hab ich jetz auch noch keine lösung gefunden
und wenn ich in das teil reingehe und wieder raus, dann "schwirren" die aufzüge total wirr umher, obwohl ich jetzt den origin brush auch noch mit reingesetzt hab in das script brushmodel

Edit:


das iss mein letzter versuch noch gewesen, dass ich ein oder zwei kisten weglasse, um die überschneidungen weg zu haben

aber da kommt beim compilieren wieder der eine fehler "model is an origin brush only"
obwohl die zwei bruches mit der origin texture ein script bruschmodel sind und auch targetname und target haben unglücklich
klinter
ich hab die kabine mal geöffnet und jetzt überschneidet sich das nicht mehr,
das is jetzt nicht mehr so realitäts nah aber es geht noch.

doch wenn man fährt und sich blöd anstellt bleibt man hängen und kommt nicht mehr weiter.


mfg klinter
steinacker

Zitat:

doch wenn man fährt und sich blöd anstellt bleibt man hängen und kommt nicht mehr weiter.

genau das prob hab ich auch, und danach verwurschdeln sich dann die kisten, wie oben in dem bild
aber ein größerer abstand, so wie bei dir könnte da schon ne abhilfe sein
klinter
der abstand ist gleich geblieben nur die kabine hat das dach abbekommen grosses Grinsen
serthy
kleiner nachtrag

-funktioniert ebenso bei cod 2
-man selektiert den stufenbrush UND den originbrush und macht dann ein script_brushmodel
-man sollte die stufen so abschließen, sodass man nur die eigentlichen trittflächen berührt, sonst bleiben alle stufen hängen und flattern kreuz und quer durch den raum!