compile geht nicht mehr

T.R.Graves
Also ich denke mal du hast ein script problem steht ja auch da.
script runtime error (see console for details)
Also was in der console steht ist wichtig um die console aufzumachen shift+console öffnen drücken.
SN!P3R
also das mit der unsichtbaren mauer machte ich mit einer anderen texture als wie clip, werde es aber (wenn ich zuhause bin und nicht blöd in der schule sitzen muss grosses Grinsen grosses Grinsen ) mal ausprobieren.

das mit dem script dachte ich mir auch, nur wie ich die console ganz öffnen kann das wusste ich nicht, danke erstmal.

Die scripts hatte ich außerdem einfach nur von Marvin herauskopiert, denn er machte ja einmal ein tuturial für offnende türen. [Tutorial] Öffnende Tür erstellen (überarbeitet))
steinacker
schule iss auch wichtig, ich hätte nich halb so viel ahnung vom scripten wenn ich nicht in der technikerschule c++ programmieren gelernt hätte und das tutorial hat er nur erweitert und ein paar kleine vertipper vom okinol berichtigt Freude
SN!P3R
jap, da hast du recht dass schule wichtig ist, aber zeitweise macht man nichts und dann ist es manchmal sinnlos immer noch in der schule zu sitzen...smile
Gott sei Dank geh ich aber ja gerne Schule smile
SN!P3R
so, BIG BIG Problem unglücklich

habe das mal mit shift+console gemacht unglücklich unglücklich unglücklich


jetzt kommen dann noch viel viel mehr fehler wo er die .wav datei nicht findet, dann habe ich noch den schluss eingefügt.




hier nun meine scripts, wie schon gesagt habe diese von marvin kobiert, er machte ein nettes Tuturial mit einer öffnenden Tür.
habe auch außer das script der Tür nichts drinnen.


_door.gsc



main(){

doortriggers = getentarray("doortrig","targetname");

for(i = 0; i < doortriggers.size; i++)
doortriggers 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 rotateyaw(-90,1,0.5,0.5);
self.doormodel waittill("rotatedone");
self.doorclosed = false;
}

else{

self.doormodel rotateyaw(90,1,0.5,0.5);
self.doormodel waittill("rotatedone");
self.doorclosed = true;
}

self.doormoving = false;
}









mp_sniper_v1.gsc


main()
{
maps\mp\_door::main();
maps\mp\_load::main();

ambientPlay("ambient_backlot_ext");

game["allies"] = "sas";
game["axis"] = "opfor";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "woodland";
game["axis_soldiertype"] = "woodland";

setdvar( "r_specularcolorscale", "1" );

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

thread maps\mp\_door::main();
}
steinacker
thread maps/mp/_door::main();
lösch mal die zeile aus deiner mp.gsc raus

du rufst das door-script schon in der ersten zeile auf
maps/mp/_door::main();
maps/mp/_load::main();


wenn du das mit dem "befehl" thread aufrufst, dann darf auch deine "main-functuon" nicht main heißen und die entsprechenden funktionen für die türe müssen deiner map.gsc mit drin sein
SN!P3R
so, danke habe das "thread maps/mp/_door::main();" rausgelöscht

und das hier

maps/mp/_door::main();

in die zweite zeile getan.

Nun kann ich wieder compile reflections drücken, sogar ohne Fehler und meine sunlight umstellungen passen nun auch wieder.
Mein Problem : Wenn ich auf RUN SELECTED map klicke, dann ladet er die map und dann kommt wieder der gleiche Fehler unglücklich

in der Console schauen die 3 Fehler dann so aus. (Kann ich die drei Zeilen eig auch einfach rauslöschen?)

steinacker

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:
main()
{
maps\mp\_load::main();
//maps\mp\_door::main();
ambientPlay("ambient_backlot_ext");

game["allies"] = "sas";
game["axis"] = "opfor";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "woodland";
game["axis_soldiertype"] = "woodland";

setdvar( "r_specularcolorscale", "1" );

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


du kannst auch die zeile mit deinem tür-script mit 2 // (slash) auskommentieren
was hinter den 2 // steht ist eine kommentarzeile und wird vom programm nicht gelesen - so zu sagen

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

code:
1:
2:
////////////////programmierer können sich so hilfszeilen in lange scripte einfügen///////////////////////
maps\mp\_door::main(); //hier wird das script _door.gsc aufgerufen

nur mal als beispiel

so wie das aussieht verursacht dein tür-script noch irgend ein fehler
SN!P3R
hatte es mal auskommentierd und die map geht wieder zu compilen.

nur logischerweise kann ich nun meine tür nicht öffnen,(habe es ja auskommentiert) nur was ist nun mein fehler im tür-script??? unglücklich


main(){

doortriggers = getentarray("doortrig","targetname");

for(i = 0; i < doortriggers.size; i++)
doortriggers 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 rotateyaw(-90,1,0.5,0.5);
self.doormodel waittill("rotatedone");
self.doorclosed = false;
}

else{

self.doormodel rotateyaw(90,1,0.5,0.5);
self.doormodel waittill("rotatedone");
self.doorclosed = true;
}

self.doormoving = false;
}
Marvin
Eigentlich fehlt dem nichts. Bei mit funzt das und das was du gepostet hast ist logischerweise genau das selbe was ich benutze. Schau die nochmal das Tutorial an und überprüf die Targetnames.
Vieleicht ist ja was falsch. Im script wird diese Zeile angegeben: doortriggers = getentarray("doortrig","targetname");

Diese Zeile gibt dem Trigger sein sozusagener scriptname angegeben. Im Editor sollte er den targetname (Key) doortrig (Value): ("doortrig","targetname");
Und im Script hat er den Namen: doortriggers: doortriggers = getentarray. Das getentarry steht dafür dass er weiss welchen targetname er diese Aufgabe geben soll und dann entsteht logischerweise diese Zeile: doortriggers = getentarray("doortrig","targetname");

Nun musst du nochmal überprüfen ob du dem Trigger im Editor auch den targetname: doortrig gegeben hast. Das ganze sollte im Entity Fenster so aussehen:

Key: targetname
Value: doortrig

Kann eventuell auch daran liegen dass du den Trigger und die Tür entweder nicht verbunden hast oder eventuell falsch.
Einfach zuerst den Trigger auswählen, dann die Tür und die Taste "W" drücken um sie zu verknüpfen. Ich blick bei dem ganzen schon fast nicht mehr durch. Augen rollen

mfg Marvin
steinacker
@Marvin
das mit deiner erklärung: getentarray usw. lassen wir mal so stehen, da geh ich an der stelle nicht drauf ein

Kann eventuell auch daran liegen dass du den Trigger und die Tür entweder nicht verbunden hast oder eventuell falsch.

die türe und die trigger müssen bei dem script nicht mit "w" verbunden werden, da sie direkt über den targetname aufgerufen werden

somit sind bei dem script auch mehrere türen möglich ohne dass es erweitert werden muss

türe1 im radiant:
TRIGGER
targetname: doortrig
target door1
TÜRE
targetname: door1
target: doortrig

türe2 im radiant:
TRIGGER
targetname: doortrig
target: door2
TÜRE
targetname: door2
target: doortrig

usw.

dein prob. sniper liegt wahrscheinlich, wie marvin schreibt bei den vergebenen targetname im radiant
Marvin
Okay SN!P3R ich denke du bleibst lieber weiter bei steinacker. Der kennt sich besser damit aus! grosses Grinsen

mfg Marvin
SN!P3R
also, habe nun mal eine tür die funktioniert und nur damit ich das nun richtig verstehe, damit ich nun mehrere türen in der einen map haben will darf ich den trigger und die tür nicht mit "W" verbinden?
SN!P3R
so, habe das nun auch mit zwei türen probiert, das klappt einwandfrei.
Nur finde ich dass schiebetüren, also die in die Wand verschwinden, besser wären, da man dann nicht von der tür weggeschoben wird.

Das ist nun mein normales script, wo sich die türen drehen.

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 rotateyaw(-90,1,0.5,0.5); anstatt rotateyaw(-90,1,0.5,0.5) moveto(X,Y,Z,Zeit)???
self.doormodel waittill("rotatedone"); und anstatt rotatedone dann??? oder passt das dann so?
self.doorclosed = false;
}
else
{
self.doormodel rotateyaw(90,1,0.5,0.5); da halt mit den gleichen "werten,texten" das gleiche???
self.doormodel waittill("rotatedone");
self.doorclosed = true;
}
self.doormoving = false;
}





würde das dann so passen oder nicht?
muss ich dann eig den brush mit der orgin texture auch woanders hinverschieben, brauche ich den noch, oder kann ich den so lassen?
bangingbernie
SN!P3R
danke, nun geht es so wie ich will Augenzwinkern
SN!P3R
eine tür geht, aber mehrere einfügen funzt nicht unglücklich

dann kommt der fehler.


was muss ich alles noch ändern, um mehrere türen zu haben???unglücklich


das sind die einstellungen für meine tür:


und mein trigger:



und mein script in der map_mapname.gsc :




main()
{

maps\mp\_load::main();
//maps\mp\_door::main();
ambientPlay("ambient_backlot_ext");

game["allies"] = "sas";
game["axis"] = "opfor";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "woodland";
game["axis_soldiertype"] = "woodland";

setdvar( "r_specularcolorscale", "1" );

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


//*Dein eigener Map-Kram an dieser Stelle*

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;

speed= 3;
height= 54;


if(self.doorclosed)
{
self.doormodel movex (height,speed);
self.doormodel waittill("movedone");
self.doorclosed = false;
}
else
{
self.doormodel movex(height - (height *2),speed);
self.doormodel waittill("movedone");
self.doorclosed = true;
}

self.doormoving = false;
}
bangingbernie
Mmmh, bei meiner Matmata-Version für CoD2 hatte ich zwei Türen (keine Schiebetüren) eingebaut und für jede Tür ein Skript. Das sah allerdings anders aus als die CoD4-Version....

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:
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 ("door1_trigger_right","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 rotateyaw (-90,2);
door1 playsound ("dooropen");
door1 waittill ("rotatedone");
wait 5;
door1 rotateyaw (90,2);
door1 playsound ("doorclose");
wait 2;
door1 playsound ("doorend");
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 ("door1_trigger_left","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 rotateyaw (90,2);
door1 playsound ("dooropen");
door1 waittill ("rotatedone");
wait 5;
door1 rotateyaw (-90,2);
door1 playsound ("doorclose");
wait 2;
door1 playsound ("doorend");
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 ("door2_trigger_right","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 rotateyaw (-90,2);
door2 playsound ("dooropen");
door2 waittill ("rotatedone");
wait 5;
door2 rotateyaw (90,2);
door2 playsound ("doorclose");
wait 2;
door2 playsound ("doorend");
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 ("door2_trigger_left","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.door2_open = true;
door2 rotateyaw (90,2);
door2 playsound ("dooropen");
door2 waittill ("rotatedone");
wait 5;
door2 rotateyaw (-90,2);
door2 playsound ("doorclose");
wait 2;
door2 playsound ("doorend");
door2 waittill ("rotatedone");
level.door2_open = false;
thread door2_trigger_left();
thread door2_trigger_right();
return;
}
}
}



Aber das ist jetzt wohl etwas verwirrend; die anderen Cracks werden schon eine Lösung haben.

Ich gehe aber davon aus, das Du auch hier jede Tür einzeln ansprechen musst.

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

code:
1:
getent used with more than one entity

steinacker
bei den schiebetüren musst du das script um jede türe erweitern und für jeden trigger und türe in der map unterschiedliche targetname erwenden, die du dann auch im script aufrufen musst
und du darfst natürlich die türe mit den triggern weiterhin verbinden, diese arbeit kannst du dir aber bei dem script ersparen