[Tutorial] Öffnende Tür erstellen *      |
steinacker
Milupa-Fan
  
Dabei seit: 13.03.2008
Beiträge: 662

|
|
hier z.b. in zwei scripte aufgeteilt, die gsc-dateien kannst du bennenen wie du willst, du musst sie dann eben in deiner map.gsc richtig aufrufen
_door_right.gsc
Code 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:
|
main()
{
door1_trigger1 = getentarray("door1_trigger_right","targetname");
for(i = 0; i < door1_trigger1.size; i++)
door1_trigger1[i] thread door1_think1();
}
door1_think1()
{
self.door1_moving1 = false;
self.door1_closed1 = true;
self.door1_model1 = getent(self.target, "targetname");
while (1)
{
self waittill("trigger");
if(!self.door1_moving1)
self thread door1_move1();
}
}
door1_move1()
{
self.door1_moving1 = true;
if(self.door1_closed1)
{
self.door1_model1 rotateyaw(90,2,1,1);
self.door1_model1 waittill("rotatedone");
self.door1_closed1 = false;
}
else
{
self.door1_model1 rotateyaw(-90,2,1,1);
self.door1_model1 waittill("rotatedone");
self.door1_closed1 = true;
}
self.door1_moving1 = false;
}
|
|
_door_left.gsc
Code 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:
|
main
{
door1_trigger2 = getentarray("door1_trigger_left","targetname");
for(i = 0; i < door1_trigger2.size; i++)
door1_trigger2[i] thread door1_think2();
}
door1_think2()
{
self.door1_moving2 = false;
self.door1_closed2 = true;
self.door1_model2 = getent(self.target, "targetname");
while (1)
{
self waittill("trigger");
if(!self.door1_moving2)
self thread door1_move2();
}
}
door1_move2()
{
self.door1_moving2 = true;
if(self.door1_closed2)
{
self.door1_model2 rotateyaw(-90,2,1,1);
self.door1_model2 waittill("rotatedone");
self.door1_closed2 = false;
}
else
{
self.door1_model2 rotateyaw(90,2,1,1);
self.door1_model2 waittill("rotatedone");
self.door1_closed2 = true;
}
self.door1_moving2 = false;
}
|
|
in deiner map.gsc musst du dann beide scripte aufrufen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
maps\mp\_load::main();
maps\mp\_door_right::main();
maps\mp\_door_left::main();
.
.
.
.
|
|
__________________ Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende
|
|
|
|
|
|
|
Und hier eine beidseitig öffenbare Tür, die automatisch schliesst:
Code 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:
|
main(){
thread door1();
}
door1(){
level.door1_open = false;
thread door1_trigger_right();
thread door1_trigger_left();
}
door1_trigger_right(){
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("trigger_1_tuer_1","targetname");
while (1){
door1_trigger_right waittill ("trigger");
if (level.door1_open == true){
thread door1_trigger_left();
return;
}
else if (level.door1_open == false){
level.door1_open = true;
door1 rotateroll(-90,3.8,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait 5;
door1 rotateroll(90,3.3,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
level.door1_open = false;
thread door1_trigger_right();
thread door1_trigger_left();
return;
}
}
}
door1_trigger_left(){
door1 = getent ("door1","targetname");
door1_trigger_left = getent ("trigger_2_tuer_1","targetname");
while (1){
door1_trigger_left waittill ("trigger");
if (level.door1_open == true){
thread door1_trigger_right();
return;
}
else if (level.door1_open == false){
level.door1_open = true;
door1 rotateroll(90,3.8,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait 5;
door1 rotateroll(-90,3.3,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
level.door1_open = false;
thread door1_trigger_left();
thread door1_trigger_right();
return;
}
}
}
|
|
Script ist logischerweise auf mehrere Türen erweiterbar:
Code 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:
|
main(){
thread door1();
thread door2();
}
door1(){
level.door1_open = false;
thread door1_trigger_right();
thread door1_trigger_left();
}
door1_trigger_right(){
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("trigger_1_tuer_1","targetname");
while (1){
door1_trigger_right waittill ("trigger");
if (level.door1_open == true){
thread door1_trigger_left();
return;
}
else if (level.door1_open == false){
level.door1_open = true;
door1 rotateroll(-90,3.8,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait 5;
door1 rotateroll(90,3.3,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
level.door1_open = false;
thread door1_trigger_right();
thread door1_trigger_left();
return;
}
}
}
door1_trigger_left(){
door1 = getent ("door1","targetname");
door1_trigger_left = getent ("trigger_2_tuer_1","targetname");
while (1){
door1_trigger_left waittill ("trigger");
if (level.door1_open == true){
thread door1_trigger_right();
return;
}
else if (level.door1_open == false){
level.door1_open = true;
door1 rotateroll(90,3.8,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait 5;
door1 rotateroll(-90,3.3,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
level.door1_open = false;
thread door1_trigger_left();
thread door1_trigger_right();
return;
}
}
}
door2(){
level.door2_open = false;
thread door2_trigger_right();
thread door2_trigger_left();
}
door2_trigger_right(){
door2 = getent ("door2","targetname");
door2_trigger_right = getent ("trigger_1_tuer_2","targetname");
while (1){
door2_trigger_right waittill ("trigger");
if (level.door2_open == true){
thread door2_trigger_left();
return;
}
else if (level.door2_open == false){
level.door2_open = true;
door2 rotateroll(-90,3.8,0.5,0.5);
door2 playsound ("door_open");
door2 waittill ("rotatedone");
wait 5;
door2 rotateroll(90,3.3,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
level.door2_open = false;
thread door2_trigger_right();
thread door2_trigger_left();
return;
}
}
}
door2_trigger_left(){
door2 = getent ("door2","targetname");
door2_trigger_left = getent ("trigger_2_tuer_2","targetname");
while (1){
door2_trigger_left waittill ("trigger");
if (level.door2_open == true){
thread door2_trigger_right();
return;
}
else if (level.door2_open == false){
level.door1_open = true;
door2 rotateroll(90,3.8,0.5,0.5);
door2 playsound ("door_open");
door2 waittill ("rotatedone");
wait 5;
door2 rotateroll(-90,3.3,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
level.door2_open = false;
thread door2_trigger_left();
thread door2_trigger_right();
return;
}
}
}
|
|
Anstelle des rotateRoll, rotateYaw oder rotatePitch kann man auch moveX, moveY oder moveZ eingeben für eine Schiebetür a la Supermarkt bzw einen Fahrstuhl.
Dann heissts eben waittill ("movedone"); anstelle von waittill ("rotatedone");
ToM
__________________

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Nightwing: 04.04.2008 15:25.
|
|
|
|
|
|
|
Hi also das Tutorial ist echt super
Klappt auch wunderbar, nur will ich das es so ein garagentor ist das nach oben aufklappt!
Kann mir jemand sagen wie ich den Origin Brush anordnen und was ich in dem Script ändern muss?
Danke schonmal
Kann mir grad gar nicht vorstellen wie ich das machen muss^^
Hoffe ihr versteht wie die klappe aufgehen soll.
Grüße
|
|
|
|
|
|
|
Mit dem Radianten kenn ich mich nicht aus, da musst auf jemanden Warten, der diese Frage beantworten kann.
Zum Script:
rotateRoll durch moveZ, sollte dann die gewünschte Bewegung sein. Ich gehe mal davon aus, das die Z Achse diese ist.
ToM
__________________

|
|
|
|
|
|
|
Hmmm wenn es aber nur in der Z achse verschoben wird schiebt sich das Garagentor ja in die Decke und kommt oben wahrscheinlich wieder raus.
Habs nicht getestet, aber könnte mirs so vorstellen^^. Also es müsste ja erst nach oben kurz gehen sich dann drehen und nach hinten schieben. Wird glaub ich zu kompliziert, aber wenn jemand ne Idee hat immer her damit.
Grüße
|
|
|
|
|
steinacker
Milupa-Fan
  
Dabei seit: 13.03.2008
Beiträge: 662

|
|
moveZ würde ich sagen bewegt deinen brush (tor) entlang der z-achse, wie bei einer schiebetür, bei einer "klappe"
würde ich mal versuchen bei dem befehl
rotateyaw oder rotateroll, je nach dem welches script du verwendet hast die koordinaten zu ändern (x,y,z,time)
z.b.
start:
self.door_model rotateyaw(1,2,90,1)
ziel:
self.door_model rotateyaw(1,2,-90,1)
und deinen origin brush drehst du um 90°, so dass er entlang der z-achse liegt- das iss dein "türscharnier"
einfach mal testen und dann am besten dein script dann hier zur ergänzung pousten - hab ich auch schon mal dran gedacht sowas zu probieren, bin aber noch nich dazu gekommen
__________________ Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende
|
|
|
|
|
|
|
Setz den origin_brush einfach an die Unterkante des Garagentors. Dann dreh das Tor mit dem entsprechenden rotatebefehl (rotatepitch oder rotateroll) und bewege es mit movez gleichzeitig in die Höhe. Beide Befehle direkt hintereinander (werden dann quasie beide ausgeführt, drehen und bewegen) und bei beiden die gleiche Zeit angeben. Beim schließen dann das Gleiche, drehen und bewegen.
__________________
Da die Lichtgeschwindigkeit höher ist als die Schallgeschwindigkeit,
hält man so manchen für einen hellen Kopf, bis man ihn reden hört.
|
|
|
|
|
|
|
Danke Leute hat funktioniert
Hier also mal das Script für ein Garagentor:
Code 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()
{
doortriggers = getentarray("doortrig","targetname");
for(i = 0; i < doortriggers.size; i++)
doortriggers[i] thread door_think();
}
door_think()
{
self.doormoving = false;
self.doorclosed = true;
self.doormodel = getent(self.target, "targetname");
while (1)
{
self waittill("trigger");
if(!self.doormoving)
self thread door_move();
}
}
door_move()
{
self.doormoving = true;
if(self.doorclosed)
{
self.doormodel movez(140,4,1,2);
self.doormodel rotateroll(-90,4,1,2);
self.doormodel waittill("rotatedone");
self.doorclosed = false;
}
else
{
self.doormodel movez(-140,4,1,2);
self.doormodel rotateroll(90,4,1,2);
self.doormodel waittill("rotatedone");
self.doorclosed = true;
}
self.doormoving = false;
}
|
|
Bei self.doormodel movez(140,4,1,2); gibt 140 die Höhe an! Hängt also von der Größe eurer Garage ab.
Mit meinen Werten öffnet sich die Garage auch relativ langsam. Kann ja aber alles geändert werden.
Grüße
|
|
|
|
|
steinacker
Milupa-Fan
  
Dabei seit: 13.03.2008
Beiträge: 662

|
|
gib mal bei (x,y,z,2) -->(x,y,z,1) oder als zeit 0,5 ein
je niedriger der wert, desto schneller
__________________ Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von steinacker: 09.05.2008 09:06.
|
|
|
|
|
|
|
Das weiß ich schon^^ War nur ein Hinweis an die Leute die die Garage dann schneller wollen. Mir passt das ja in der Geschwindigkeit
|
|
|
|
|
-tiger-
Steuerzahler

Dabei seit: 22.01.2008
Beiträge: 189

|
|
Original von Sorkan
Sehr schön, sehr schön. So langsam Kämpfe ich mich vorwärts. Habe aufgrund des Threads hier ne Schiebetür basteln können.
Allerdings scheint er die _door.gsc nicht mit zu kompilieren oder so.
Habe die Version mit 2 Dateien genutzt, also mp_meinemap.gsc und _door.gsc.
Aus dem Compiler heraus wird das Script in der Map ausgeführt. Wenn ich die .ff Dateien nun in den usermaps Ordner packe und das game so starte (ohne mod) läuft alles, denke er greift dabei nicht auf den usermaps ordner zu. Wenn ich den ace mod starte, werden meine eigenen Texturen und sowas alles angezeigt, aber das script lässt sich nicht ausführen. Wenn ich den mod warfare nutzen will, falle ich grundsätzlich durch den boden beim spawn bzw. stecke halb im boden drin. (Der Spawnpunkt is dann eh völlig verschoben)
Werde noch Leveldesigner und Shooterszene und modonline nach einer Lösung abklopfen, aber vielleicht hat ja jemand einen eistesblitz parat und kann mir helfen, auf dass ich wieder einen Erkenntnissprung nach vorne machen kann.
Hast du auch die _door.gsc in die .ff gepackt, also unter update zone file hinzugefügt. Wenn ja pack das skript mal in die iwd datei mit gleicher odner-struktur wie unter raw oder du musst den Pfad unter update zone file anpassen.
Kompiliere mal die map neu, vielleicht ist es ja dann weg.
__________________
Processor: Intel Core2 Quad Q6600 | Mainboard: ABIT IP35 | Grafikkarte: GeForce 9800 GTX | Arbeitsspeicher: 2 GB G-Skill | Netzteil: Be Quiet! Straight Power
|
|
|
|
|
Sorkan
Teetrinker
 
Dabei seit: 18.01.2006
Beiträge: 30

|
|
Original von Verni@hter
Erstelle einfach die Datei und kopiere alles rein ausser die Zeile da oben und in dein zone File kommt die zeile:
rawfile,maps/mp/_door.gsc
Da er (der Compiler) mich nie beim kompilieren nach der fehlenden _door.gsc gefragt hat, hab ichs so wie im Zitat erwähnt einfach selbst in die Zone-File geschrieben. Danach hatte es auch in der Map (aus dem Compiler gestartet) geklappt. Denke daher, dass er die gsc irgendwie nicht mitkompilieren will. Wenn ich den Eintrag wieder aus der zone-file rausnehme, meckert er nicht rum, dass die _door.gsc fehlt beim bilden der ff Dateien. Habe auch schon die d3dbsp Datei gelöscht und neu kompiliert. Immer das Gleiche, er fragt dann nicht nach der fehlenden _door...
Ich hab zwar schon in den einschlägigen Foren die Script-Sachen gelesen und teils verstanden, aber Grundkenntnisse fehlen da dann doch noch.
Das Skript darf, soweit ich gelesen habe, nicht in die iwd eben weil es ja mitkompiliert wird, soweit ich gelesen habe.
Inahlt meiner map.gsc: (liegt unter map_source, richtig?)
main()
{
maps\mp\_door::main();
maps\mp\_load::main();
ambientPlay("ambient_mhz_aim");
game["allies"] = "american";
game["axis"] = "german";
game["attackers"] = "allies";
game["defenders"] = "axis";
}
Hab die gleiche map.gsc unter raw\maps\mp gefunden, da stand das drin:
(Der grüne Teil hatte dort gefehlt und ich hab ihn dazu getragen)
main ()
{
maps\mp\_door::main();
maps\mp\_load::main();
game["allies"] = "marines";
game["axis"] = "opfor";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "desert";
game["axis_soldiertype"] = "desert";
setdvar("r_glowbloomintensity1",".25");
setdvar("r_glowskybleedintensity0",".3");
}
Tja, wie schon erwähnt: Aus dem Compile-Tool heraus gehts alles, nur nicht unter dem ace-mod.
Habe die anderen Foren durschucht und nix gescheites gefunden, mir is schon ganz übel vom vielen gescrolle...
Zum Problem, dass ich immer im halben Fußboden spawne, wenn ich die Map unter dem Mod warefare laufen lassen will habe ich eine Parallele zum Radianten festgestellt. Er spawnt nämlich genau auf der Höhe, wie ich im Radianten starte.
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Sorkan: 22.05.2008 11:53.
|
|
|
|
|
Sorkan
Teetrinker
 
Dabei seit: 18.01.2006
Beiträge: 30

|
|
Tja dann bin ich wirklich am Ende. Denn es liegt alles dort, wo es liegen soll.
(in der map_source wahrscheinlich irgendwann mal durch Unachtsamkeit reinkopiert)
Habs jetzt sogar mal versucht wie Old man weiter oben beschrieben. Die ganze Script-Geschichte in die meine_map.gsc reinkopiert und ohne die door versucht, ebenso kein Erfolg. Im normalen Modus läuft es, nur nicht mit m mod.
Meine meine_map.gsc sieht quasi nun so aus:
main()
{
maps\mp\_load::main();
ambientPlay("ambient_mhz_aim");
game["allies"] = "american";
game["axis"] = "german";
game["attackers"] = "allies";
game["defenders"] = "axis";
door1_trigger1 = getentarray("doortrig_left","targetname");
for(i = 0; i < door1_trigger1.size; i++)
door1_trigger1[i] thread door1_think1();
door1_trigger2 = getentarray("doortrig_right","targetname");
for(i = 0; i < door1_trigger2.size; i++)
door1_trigger2[i] thread door1_think2();
}
door1_think1()
{
self.door1_moving1 = false;
self.door1_closed1 = true;
self.door1_model1 = getent(self.target, "targetname");
self enableLinkTo();
self linkto(self.door1_model1);
while (1)
{
self waittill("trigger");
if(!self.door1_moving1)
self thread door1_move1();
}
}
door1_move1()
{
self.door1_moving1 = true;
if(self.door1_closed1)
{
self.door1_model1 movey(-66,2,1,1);
self.door1_model1 waittill("movedone");
self.door1_closed1 = false;
}
else
{
self.door1_model1 movey(66,2,1,1);
self.door1_model1 waittill("movedone");
self.door1_closed1 = true;
}
self.door1_moving1 = false;
}
door1_think2()
{
self.door1_moving2 = false;
self.door1_closed2 = true;
self.door1_model2 = getent(self.target, "targetname");
self enableLinkTo();
self linkto(self.door1_model2);
while (1)
{
self waittill("trigger");
if(!self.door1_moving2)
self thread door1_move2();
}
}
door1_move2()
{
self.door1_moving2 = true;
if(self.door1_closed2)
{
self.door1_model2 movey(66,2,1,1);
self.door1_model2 waittill("movedone");
self.door1_closed2 = false;
}
else
{
self.door1_model2 movey(-66,2,1,1);
self.door1_model2 waittill("movedone");
self.door1_closed2 = true;
}
self.door1_moving2 = false;
}
und liegt unter raw/maps/mp/...
in der csv steht rawfile,maps/mp/mp_bunker.gsc
doorscript liegt wie oben gezeigt mit in der meine_map.gsc.
Einzige fehlermeldung beim kompilieren:
364 vertices couldn`t be merged because the textures point differnt ways emitting cells and portals
Beim bilden der ff kommt keine Fehlermeldung. Noch nicht mal die oft zitierte vision.gsc fehlt.
Habe nochmal alle betroffenden Dateien gelöscht und neu erstellt, das gleiche Problem. Ich würds ja auf den ace mod schieben, aber ich hab keine vergleichsmöglichkeit, da ich beim spawn unter dem normalen mod modwarefare immer an der gleichen stelle im boden spawne, egal welche fraktion ich anwähle.
An dieser Stelle dann auch schonmal VIELEN DANK für Eure Geduld.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Sorkan: 22.05.2008 13:55.
|
|
|
|
|
Sorkan
Teetrinker
 
Dabei seit: 18.01.2006
Beiträge: 30

|
|
Oh man, ich habs jetzt. Also echt, oh Gott, 6 Stunden völlig im A...
Ich musste noch in der zz_mf.iwd vom ace mod unter maps/mp/die mp_bunker.gsc löschen.
Ich wusste gar nicht, dass in dieser iwd die gscs für einige maps schon drin stehn.
Die Verzweiflung trieb mich zu diesem Schritt, also dort mal reinzugucken.
Ich sollte also meine map dann wohl besser umbenennen, da es die schon gibt, sonst gibts bei uns auf dem Server von 4Netplayers, auf dem der ace mod läuft, auch Probleme, oder ich lösch dort aus der iwd vom ace mod auch die gsc raus.
Argh, na gut, somit ist das Thema erledigt.
Thx.
|
|
|
|
|
|
|
Das rauslöschen ist ne schlechte Idee, denk an viele Admins, die NICHT Wissen, das es dann 2 Maps mit selbem Namen gibt...
Wähle lieber einen eindeutigen Namen für Deine Map, dann passt das.
ToM
__________________

|
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|