Script für Aufzug mit Aufzugtüren

Ph3n0m PoWeR
Dann war dieses Script sinnlos, also eröffne ich es wieder, wer hat ein funktionierendes Script für einen Aufzug? Ich erinnere mich, in mp_urban so einen gesehen zu haben, richtig schön, mit öffnenden Türen außen und innen.
OLD MAN WITH GUN

Zitat:

Original von Ph3n0m PoWeR
Dann war dieses Script sinnlos, also eröffne ich es wieder, wer hat ein funktionierendes Script für einen Aufzug? Ich erinnere mich, in mp_urban so einen gesehen zu haben, richtig schön, mit öffnenden Türen außen und innen.
Schau dir mal den Link an, den ich bereits auf der ersten Seite gepostet habe. Der enthällt script, prefabs und ne beispielmap. Un wenn ich mich recht entsinne funktionierte der auch.
Banana2077
doch funktioniert super :)
EDIT: doch nicht :(
bekomme jetzt wenn im elevator stehe das hier :


und danach so nach circa 3 sek( ich drücke nichts)



Ich benütze den Elevator der auf der ersten Seite herunterladbar war in miner map...

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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
main()
{

      maps\mp\_load::main();
      maps\mp\_explosive_barrels::main();
      maps\mp\_teleport::main();
      maps\mp\_breakglass::main();
      maps\mp\_elevatorlaby::main();
      maps\mp\_elevatorlaby::main();
      maps\mp\mp_labyrinth3_fx::main();


	ambientPlay("ambient_crash");

	game["allies"] = "marines";
	game["axis"] = "opfor";
	game["attackers"] = "axis";
	game["defenders"] = "allies";
	game["allies_soldiertype"] = "desert";
	game["axis_soldiertype"] = "desert";

	setdvar( "r_specularcolorscale", "1" );

	setdvar("r_glowbloomintensity0",".25");
	setdvar("r_glowbloomintensity1",".25");
	setdvar("r_glowskybleedintensity0",".3");
	setdvar("compassmaxrange","6000");

	level.elevatorDown = true; // elevator starts at bottom: true/false
	level.elevatorMoving = false; // elevator is not currently moving
    level._effect[ "redflash" ]			= loadfx( "misc/lift_light_red" ); // loads the 3 different effects required - normally this would go in the _fx.gsc file
    level._effect[ "redstatic" ]		= loadfx( "misc/lift_light" );
    level._effect[ "greenstatic" ]		= loadfx( "misc/lift_light_green" );

    level.showgreen = true;
    level.redflash = false;
    level.redstatic = false;
    

	thread elevator_start();

}

elevator_start() 
{
level.elevLight = getentarray ("redlightb","targetname");
elevator = getentarray ("elevatorswitch","targetname");

toprightdoor = getent ("trightdoor","targetname");
topleftdoor = getent ("tleftdoor","targetname");
toprightdoor movex(-31,0.05);
topleftdoor moveX(31,0.05);

rightgate = getent ("rightdoor", "targetname"); 
leftgate = getent ("leftdoor", "targetname"); 


if ( isdefined(elevator) )
for (i = 0; i < elevator.size; i++)
elevator[i] thread elevator_think();


for(i=0; i<level.elevLight.size; i++)
{
    level.elevLight[i] thread flash_red();
    level.elevLight[i] thread staticRed();
    level.elevLight[i] thread staticGreen();
}
}

elevator_think() 
{

while (1) 
{
self waittill ("trigger");
if (!level.elevatorMoving)
thread elevator_move();
}
}


elevator_move() 
{
// read all required entities into script
elevatormodel = getent ("elevatormodel", "targetname");
rightgate = getent ("rightdoor", "targetname"); 
leftgate = getent ("leftdoor", "targetname"); 
topblock = getent ("topblock","targetname");
bottomblock = getent ("bottomblock","targetname");
toprightdoor = getent ("trightdoor","targetname");
topleftdoor = getent ("tleftdoor","targetname");
bottomrightdoor = getent ("brightdoor","targetname");
bottomleftdoor = getent ("bleftdoor","targetname");
topgauge = getent ("topgauge","targetname");
bottomgauge = getent ("bottomgauge","targetname");
top_point = getent ("shaft_top","targetname");
bottom_point = getent ("shaft_bottom","targetname");
lamp = getent ("elevatorlight","targetname");


level.showgreen = false;
level.redflash = true;

level.elevatorMoving = true;
hide_trigs(); // hides triggers while elevator is moving
speed = 10;

height = distance( top_point.origin, bottom_point.origin ); // calculates the distance between top and bottom
wait (0.5);

if (level.elevatorDown) 
{ // this half of the if statement executes if the elevator is at the bottom (i.e. level.elevatorDown equals true)
bottomblock moveZ(-100,0.2); // blocks gateway before closing visible gates

bottomblock waittill("movedone");

rightgate movex(-31,2,0.5,0.5); // closes right elevator gate
leftgate moveX(31,2,0.5,0.5); // closes left elevator gate
wait 0.5;

bottomrightdoor movex(-31,2,0.5,0.5); // closes right bottom door which blocks entry to elevator shaft.
bottomleftdoor moveX(31,2,0.5,0.5); // closes left bottom door which blocks entry to elevator shaft.

bottomleftdoor waittill("movedone"); // script waits until gate is closed
bottomblock moveZ(100,0.2); // unsets door block (no longer needed)
wait (1); // short pause
level.redflash = false;
level.redstatic = true;


wait (1); 

elevatormodel moveZ (height, speed, 1, 1); // moves the cage up 
rightgate  moveZ (height, speed, 1, 1); // moves the right gate up at same speed as the cage - you can use the linkto technique, but it tends to make the doors shake
leftgate moveZ (height, speed, 1, 1); // moves the left gate up with cage
lamp moveZ (height, speed, 1, 1); // moves the elevator light
topgauge moveZ (14, speed); // moves the elevator position gauge
bottomgauge moveZ (14, speed); //ditto
elevatormodel waittill ("movedone"); // script waits until cage has finished its movement

level.redstatic = false;
level.redflash = true;

wait (1); 

toprightdoor movex(31,2,0.5,0.5); // opens top right door
topleftdoor moveX(-31,2,0.5,0.5); // opens top left door
wait 0.5;
rightgate movex(31,2,0.5,0.5); // opens elevator right door
leftgate moveX(-31,2,0.5,0.5); // opens elevator left door
leftgate waittill("movedone");

level.elevatorDown = false; // this var tells the script the elevator must go down next time.

}


else {  // this half makes the elevator go down - largely the same as above, but in reverse order
topblock moveZ(-100,0.2);

topblock waittill("movedone");
rightgate movex(-31,2,0.5,0.5);
leftgate moveX(31,2,0.5,0.5);
wait 0.5;

toprightdoor movex(-31,2,0.5,0.5);
topleftdoor moveX(31,2,0.5,0.5);

leftgate waittill("movedone");
topleftdoor waittill("movedone");
topblock moveZ(100,0.2);
level.redflash = false;
level.redstatic = true;
wait (1); 



wait (1);  
elevatormodel moveZ (height - (height * 2), speed, 1, 1);
rightgate  moveZ (height - (height * 2), speed, 1, 1);
leftgate moveZ (height - (height * 2), speed, 1, 1);
lamp moveZ (height - (height * 2), speed, 1, 1);
topgauge moveZ (-14, speed);
bottomgauge moveZ (-14, speed);
elevatormodel waittill ("movedone");

level.redstatic = false;
level.redflash = true;


wait (1); 
bottomrightdoor movex(31,2,0.5,0.5);
bottomleftdoor moveX(-31,2,0.5,0.5);
wait 0.5;
rightgate movex(31,2,0.5,0.5);
leftgate moveX(-31,2,0.5,0.5);
leftgate waittill("movedone");

level.elevatorDown = true;
}
level.redflash = false;
wait 0.5;
level.showgreen = true;

level.elevatorMoving = false;
show_trigs(); // shows triggers again.
}

//=================================================//
//       These two functions show                  //
//       and hide the triggers                     //
//=================================================//


hide_trigs()
{
switches = getentarray ("elevatorswitch","targetname");

for(i=0; i<switches.size; i++) switches[i] maps\mp\_utility::triggerOff();

}

show_trigs()
{
switches = getentarray ("elevatorswitch","targetname");

for(i=0; i<switches.size; i++) switches[i] maps\mp\_utility::triggerOn();

}


//=================================================//
//       These three functions control the         //
//       elevator indicator lights                 //
//=================================================//

flash_red()
{
      while(1)
      {
             while(level.redflash)
             {
                    PlayFX( level._effect[ "redflash" ], self.origin );
                    wait 0.5;
             }
             wait 0.05;
      }
}

staticRed()
{
      while(1)
      {
              while(level.redstatic)
              {
                      PlayFX( level._effect[ "redstatic" ], self.origin );
                      wait 0.1;
              }
              wait 0.05;
      }
}

staticGreen()
{
      while(1)
      {
              while(level.showgreen)
              {
                      PlayFX( level._effect[ "greenstatic" ], self.origin );
                      wait 0.1;
              }
              wait 0.05;
      }
}






--- Edit by Nightwing: Code Tag eingefügt ---
OLD MAN WITH GUN
Also ich hab jetzt mal die testmap die dabei ist compiliert und alles läuft absolut fehlerfrei.

@Banana2077: Kann es sein, das du eines der Prefabs mehr als 1x in deine Map gebaut hast? Du darfst das prefab "elevatorcage.map" nur 1x verwenden und das prefab "gatesTop.map" auch nur 1x.
Ph3n0m PoWeR
@OMWG: Würde es viel Aufwand für dich machen, wenn du dieses fehlerhafte Script korrigieren würdest?
Banana2077
Nur einmal!
wgs./w@Lly

Zitat:

Original von Ph3n0m PoWeR
@OMWG: Würde es viel Aufwand für dich machen, wenn du dieses fehlerhafte Script korrigieren würdest?


Er hat doch bereits eines gepostet was funktioniert, dann verwende das doch und bau darauf auf.
Ph3n0m PoWeR
Es ist eher für einen industriellen "Elevator" gedacht, und ich habe einen Solchen in einem Einkaufszentrum. Nightwing's Script wäre perfekt für meine Zwecke, wenn es denn funktionieren würde.
OLD MAN WITH GUN

Zitat:

Original von Ph3n0m PoWeR
Es ist eher für einen industriellen "Elevator" gedacht, und ich habe einen Solchen in einem Einkaufszentrum. Nightwing's Script wäre perfekt für meine Zwecke, wenn es denn funktionieren würde.
Der, den ich gepostet habe unterscheidet sich zu dem, den Nightwing gepostet hat nur in 2 Dingen.
1. Man hat außen eiine Anzeige die einem zeigt, wo sich der Aufzug befindet.
2. er funktioniert.

PS: Und wenn ich nicht irre, ist der Script, den ich gepostet habe genau der, den xfckup in seiner mp_urban benutzt hat ( xfckup hat nur zusätzlich noch Sounds eingefügt, die in dem Script nicht vorhanden sind).
OLD MAN WITH GUN

Zitat:

Original von Banana2077
Nur einmal!
hast du eventuell noch andere Dinge (Aufzüge) in deiner Map die einen targetname benutzen, der auch von diesem Aufzug benutzt wird?
in deinem script sehe ich z.B. folgende Zeilen:
Zeile 8: maps\mp\_elevatorlaby::main();
Zeile 9: maps\mp\_elevatorlaby::main();

Sieht für mich nach irgendwas aufzugartiges aus.
Und wieso bindest du den Script zweimal ein?
Das ist definitiv 1x zu viel.
Ph3n0m PoWeR
Dann werde ich eben das benutzen, dazu habe ich noch eine Frage, ist es strafbar, wenn ich Sounds aus dem Spiel "Left 4 Dead" entnehme und für ein Solches Nicht-Kommerzelles Projekt verwende?
Banana2077

Zitat:

Original von OLD MAN WITH GUN

Zitat:

Original von Banana2077
Nur einmal!
hast du eventuell noch andere Dinge (Aufzüge) in deiner Map die einen targetname benutzen, der auch von diesem Aufzug benutzt wird?
in deinem script sehe ich z.B. folgende Zeilen:
Zeile 8: maps\mp\_elevatorlaby::main();
Zeile 9: maps\mp\_elevatorlaby::main();

Sieht für mich nach irgendwas aufzugartiges aus.
Und wieso bindest du den Script zweimal ein?
Das ist definitiv 1x zu viel.


Also die Targetnames habe ich auch schon gecheckt die sind unterschiedlich...
Warum die Scripts hier 2mal eingefügt sind weiss ich nicht verwirrt
Muss ich wohl nochmal ändern..

Aber in meinem Clan hat jemand sein Aufzug asl Prefab bereitgestellt und der funktioniert ganz wunderbar bei mir verwirrt
Jedoch kann man dort nicht die units also die höhe vom elevaror einstellen..
hier mal den link..was ist docrt so anders?

http://www.exiledunit.com/modules.php?na...c&p=29173#29173
Verni@hter

Zitat:

Original von Ph3n0m PoWeR
ist es strafbar, wenn ich Sounds aus dem Spiel "Left 4 Dead" entnehme und für ein Solches Nicht-Kommerzelles Projekt verwende?


Wenn man es ganz hart nimmt JA. Der Sound ist weder von Dir entworfen noch hast du die Einverständnisserklärung der Macher. Thema Urheberrecht
OLD MAN WITH GUN

Zitat:

Original von Banana2077
Aber in meinem Clan hat jemand sein Aufzug asl Prefab bereitgestellt und der funktioniert ganz wunderbar bei mir verwirrt
Jedoch kann man dort nicht die units also die höhe vom elevaror einstellen..
hier mal den link..was ist docrt so anders?
Das ist quasi ne gefixte Version (sieht jedenfalls so aus) von dem, was Nightwing gepostet hat.
Die Höhe stellt man mit zdist1 (Enfernung nach oben) und zdist2 (wieder nach unten) ein. Findest sich ziemlich am Anfang der Funktion elev_move().
Ph3n0m PoWeR
Ich habe es jetzt neu gemacht, und konnte einen Teil sogar beibehalten.

Jetzt hat er ein Problem mit dem Light-Teil.

OLD MAN WITH GUN

Zitat:

Original von Ph3n0m PoWeR
Ich habe es jetzt neu gemacht, und konnte einen Teil sogar beibehalten.

Jetzt hat er ein Problem mit dem Light-Teil.
Das wird wohl daran liegen, das du wichtige Teile in deiner Map.gsc entweder garnicht, oder zu spät definiert hast.

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

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
	level.elevatorDown = true; // elevator starts at bottom: true/false
	level.elevatorMoving = false; // elevator is not currently moving
	level._effect[ "redflash" ]			= loadfx( "misc/lift_light_red" ); // loads the 3 different effects required - normally this would go in the _fx.gsc file
	level._effect[ "redstatic" ]		= loadfx( "misc/lift_light" );
	level._effect[ "greenstatic" ]		= loadfx( "misc/lift_light_green" );

	level.showgreen = true;
	level.redflash = false;
	level.redstatic = false;

Diese Zeilen sind wichtig, damit der Script funktioniert und die müssen vor dem Aufruf des elevatorscripts stehen.
Ph3n0m PoWeR
Ich habe sie schon, nur habe ich die FX-Script in meine mall_fx.gsc gepackt. Jetzt mache ich es direkt, mal sehen ob es funktioniert.

//Edit: Das Problem wurde einfach behoben, indem ich alle "Light"-Funktionen entfernt habe. Die waren so oder so unnötig. Leider schließt der Aufzug seine Türen jetzt, wenn er gerade angekommen ist, es ist also etwas kompliziert, das Script-Problem regele ich also später... Der Supermarkt wird jetzt erstmal bearbeitet.
OLD MAN WITH GUN

Zitat:

Original von Ph3n0m PoWeR
Leider schließt der Aufzug seine Türen jetzt, wenn er gerade angekommen ist, es ist also etwas kompliziert, das Script-Problem regele ich also später... Der Supermarkt wird jetzt erstmal bearbeitet.
Ich frage mich ehrlich, was ihr alle anstellt, damit der Script nicht/nicht richtig funktioniert?
Bei mir steht bei Mapstart der Aufzug unten und die Türen sind offen. Sobald ich den Aufzug benutze schließen sich die Türen, er fährt nach oben, dort öffnen sich die Türen und bleiben offen. Und zwar solange, bis der Aufzug erneut benutzt wird (dann schließen sich die Türen erst wieder, er fährt nach unten wo sich dann die Türen wieder öffnen). Und die Lichteffekte funktionieren auch alle.
Ph3n0m PoWeR
Ich benutze aber mein eigenes Prefab, da ich ein Einkaufszentrum baue. Es funktioniert jetzt bei mir, nur die Türen anzupassen wird dauern, da ich auch MoveY brauche. Die Lichteffekte werden nicht unbedingt benötigt.
Banana2077
Könntet ihr mir mal hier eure Xfire namen hier lassen dann kann den ein oder andren auch mal fragne im chat...danke smile