Verni@hter
*bM.Verni@hter~
Dabei seit: 24.01.2006
Beiträge: 1.461
|
|
[Tutorial] Tür öffnen mit Sound & Adminfunktion |
|
Was macht/kann diese Tür?
- sie lässt sich öffnen und schließen
- hat beim öffnen und schließen einen Sound
- Trigger der Tür bewegt sich beim öffnen und schließen mit
- ist die Tür offen wird ein Text + Icon angezeigt, ist sie vom Admin deaktiviert wird ein anderer Text eingeblendet und das Icon verschwindet
- Serveradmins können selbst per server.cfg entscheiden bei welchem Spielmodus man die Tür öffnen kann oder wo sie lieber geschlossen bleibt
Das Script stammt von OLD MAN WITH GUN, im Diskussionsthread dvars für Admins einbauen haben weiter geholfen Nightwing & BadMan
folgende Threads wurden genutzt:
dvars für Admins einbauen
[Tutorial] Öffnende Tür erstellen *
[Tutorial] Aufzug oder Tür mit Sound belegen
- Als erstes erstellen wir eine Tür wie in diesem Tutorial [Tutorial] Öffnende Tür erstellen *
ich hab das ganze schon vorbereitet Download, fertige Tür bei dem dort im Thread angegebene Script bewegt sich der Trigger nicht mit und es wird auch bei öffnen und schließen kein Sound abgespielt dies wurde dann nach und nach im Thread oder in neuen Threads weiter entwickelt. Wo wir dann schon bei der _door.gsc wären ->
- erstelle ein neues Textdokument und benenne es von Neues Textdokument.txt in _door.gsc um, speicher die gsc im Ordner map/mp ab
- Script Trigger bewegt sich mit und hat beim öffnen und schließen einen Sound
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");
self enableLinkTo();
self linkto(self.doormodel);
while (1)
{
self waittill("trigger");
if(!self.doormoving)
self thread door_move();
}
}
door_move()
{
self.doormoving = true;
if(self.doorclosed)
{
self.doormodel playsound ("dein_soundaliases_name"); //oeffnen
self.doormodel rotateyaw(-90,1,0.5,0.5);
self.doormodel waittill("rotatedone");
self.doorclosed = false;
}
else
{
self.doormodel playsound ("dein_soundaliases_name"); //schließen
self.doormodel rotateyaw(90,1,0.5,0.5);
self.doormodel waittill("rotatedone");
self.doorclosed = true;
}
self.doormoving = false;
} |
|
kopiere das Script und füge es in deine _door.gsc ein
ändere bitte im Code folgendes ab -> 2x dein_soundaliases_name (kann individuell vergeben werden)
WICHTIG!! Hast du für das öffnen und schließen jeweils einen extra Sound müssen hier 2 verschiedene soundaliases namen angegeben werden ansonsten 2 gleiche
WICHITG!! Wenn du Spieleigene Sounds benutzt dann solltest du auch deren soundaliases namen nutzen
- erstellt einen Ordner sound auf eurem Desktop, erstellt im Ordner sound einen Ordner music (kann auch einen anderen Namen haben. Im Tutorial nutze ich music)
- in den Ordner music kommen nun eure Custom Sounds schicke Seite für Sounds
- Das Musikstück sollte das Format Wave haben
- rechtsklick auf den Ordner sound -> Zum Archiv hinzufügen -> Archivformat ZIP wählen, dann das ganze von sound.zip in mp_dein_mapname.iwd umbenennen
- erstelle ein neues Textdokument und benenne es um von Neues Textdokument.txt in mp_dein_mapname.csv und füge folgendes ein
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
|
name,sequence,file,vol_min,vol_max,vol_mod,pitch_min,pitch_max,dist_min,dist_max,channel,type,probability,loop,masterslave,loadspec,subtitle,compression,secondaryaliasname,volumefalloffcurve,startdelay,speakermap,reverb,lfe percentage,center percentage,platform,envelop_min,envelop_max,envelop percentage
#tuer
dein_soundaliases_name,1,music/deinsoundfile.wav,0.8,0.85,,0.95,1.05,7,1500,auto,streamed,,,,mp_dein_mapname,,,,,,,,,,,,,
dein_soundaliases_name,1,music/deinsoundfile.wav,0.8,0.85,,0.95,1.05,7,1500,auto,streamed,,,,mp_dein_mapname,,,,,,,,,,,,, |
|
ändere bitte im Code folgendes ab -> mp_dein_mapname & dein_soundaliases_name & deinsoundfile.wav
- was wir nicht tun ist dies hier -> maps\mp\_door::main(); in unsere map.gsc zu schreiben
- kopiere dies -> rawfile,maps/mp/_door.gsc in dein zonefile
- kopiere dies -> sound,mp_dein_mapname,mp_dein_mapname,all_mp in dein zonefile
- nun kommen die dvars für den Admin ins Spiel
kopiere folgenden Code in den main Block deiner map.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:
|
level.gtdoor = false;
tmp = getDvar("mp_dein_mapname");
if( isDefined( tmp ) )
{
gtarray = StrTok( toLower( tmp ), "," );
for (i = 0; i < gtarray.size; i++)
{
if ( gtarray[i] == level.gametype )
level.gtdoor = true;
}
if( level.gtdoor )
thread maps\mp\_door::main();
else
{
doortriggers = getentarray( "doortrig", "targetname" );
for ( i = 0; i < doortriggers.size; i++ )
{
doortriggers[i] SetCursorHint( "HINT_NOICON" );
doortriggers[i] SetHintString( "Door is locked!" );
}
}
}
else
thread maps\mp\_door::main();
} |
|
das ganze sieht dann so aus:
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()
{
maps\mp\_load::main();
game["allies"] = "sas";
game["axis"] = "russian";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "woodland";
game["axis_soldiertype"] = "woodland";
level.gtdoor = false;
tmp = getDvar("mp_dein_mapname");
if( isDefined( tmp ) )
{
gtarray = StrTok( toLower( tmp ), "," );
for (i = 0; i < gtarray.size; i++)
{
if ( gtarray[i] == level.gametype )
level.gtdoor = true;
}
if( level.gtdoor )
thread maps\mp\_door::main();
else
{
doortriggers = getentarray( "doortrig", "targetname" );
for ( i = 0; i < doortriggers.size; i++ )
{
doortriggers[i] SetCursorHint( "HINT_NOICON" );
doortriggers[i] SetHintString( "Door is locked!" );
}
}
}
else
thread maps\mp\_door::main();
} |
|
ändere bitte im Code folgendes ab -> mp_dein_mapname das steht nacher so auch in der Server.cfg des Admins drin. Damit das dann einheitlich ausschaut würd ich das mit dem Consolennamen deiner Map machen
- der Admin hat nun die Möglichkeit per dvar zu entscheiden ob man auf seinem Server die Türen öffnen kann oder nicht, das ganze kann er nun auch noch für jeden einzelnen Gametype einstellen
- mit diesem Befehl set mp_dein_mapname_door_open "sd" welcher dann in die server.cfg geschrieben wird kann man die Tür in sd öffnen jeder weiter Gametype wird mit einem Komma getrennt hinzugefügt
- wird dieser Befehl nicht in die server.cfg geschrieben oder bleibt es zwischen den beiden "Anführungszeichen" leer bleiben die Türen geschlossen
- das ganze sollte man dann auch dem Admin per ReadMe.txt schreiben
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
|
set mp_dein_mapname_door_open "sd" //Tür in Search & Destroy öffnen
set mp_dein_mapname_door_open "sab" //Tür in Sabotage öffnen
set mp_dein_mapname_door_open "sd,sab" //Tür in Search & Destroy und Sabotage öffnen, Gametypes mit einem Komma getrennt hinzufügen
set mp_dein_mapname_door_open "" //Tür bleibt zu
set mp_dein_mapname_door_open "dm,war,koth,sd,dom,sab,ctf,re,ctfb,ch,vip,htf" //Tür öffnen in allen Gametypes
wenn du nicht möchtest das man auf der Map Türen öffnen kann dann schreibe diesen Befehl nicht in deine server.cfg! //Tür bleibt zu |
|
ändere bitte im Code folgendes ab -> mp_dein_mapname
Ich hoffe ich hab nix vergessen. Danke an alle Mitwirkenden!
__________________
Frauen sind wie Signaturen, haste keine willste eine, haste eine willste ne andere.
My Facebook
Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von Verni@hter: 14.08.2012 00:22.
|
|
|
|
|
BadMan
Turnbeutelvergesser
Dabei seit: 31.01.2008
Beiträge: 278
|
|
Schönes Tutorial
Hätte da aber noch was anzubieten, und zwar hab ich das ganze mal so abgeändert das man in der mp_meine_map.gsc wie gewohnt die Zeile
maps\mp\_door::main();
einfügen muss
Das schaut dann so aus
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:
|
main()
{
maps\mp\_load::main();
maps\mp\_door::main();
game["allies"] = "sas";
game["axis"] = "russian";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "woodland";
game["axis_soldiertype"] = "woodland";
}
|
|
Und die _door.gsc schaut dann so aus
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:
|
main()
{
level.gtdoor = false;
tmp = getDvar("mp_dein_mapname_door_open");
if( isDefined( tmp ) )
{
gtarray = StrTok( toLower( tmp ), "," );
for (i = 0; i < gtarray.size; i++)
{
if ( gtarray[i] == level.gametype )
level.gtdoor = true;
}
if( level.gtdoor )
thread door_start();
else
{
doortriggers = getentarray( "doortrig", "targetname" );
for ( i = 0; i < doortriggers.size; i++ )
{
doortriggers[i] SetCursorHint( "HINT_NOICON" );
doortriggers[i] SetHintString( "Door is locked!" );
}
}
}
else
thread door_start();
}
door_start()
{
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");
self enableLinkTo();
self linkto(self.doormodel);
while (1)
{
self waittill("trigger");
if(!self.doormoving)
self thread door_move();
}
}
door_move()
{
self.doormoving = true;
if(self.doorclosed)
{
self.doormodel playsound ("dein_soundaliases_name"); //oeffnen
self.doormodel rotateyaw(-90,1,0.5,0.5);
self.doormodel waittill("rotatedone");
self.doorclosed = false;
}
else
{
self.doormodel playsound ("dein_soundaliases_name"); //schließen
self.doormodel rotateyaw(90,1,0.5,0.5);
self.doormodel waittill("rotatedone");
self.doorclosed = true;
}
self.doormoving = false;
}
|
|
Der Rest bleibt wie beim Tutorial oben
edit:
Genau, was mir aufgefallen ist du hast überall mp_dein_mapname als Bezeichnung der DVAR benutzt unten steht dann aber das man mp_dein_mapname_door_open in der server.cfg verwenden soll.
Das könnte für Verwirrung sorgen
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von BadMan: 23.10.2010 21:03.
|
|
|
|
|
Jamie H.
Weichei
Dabei seit: 13.08.2012
Beiträge: 8
|
|
Der Download ist leider tot-wäre geil, wenn du 'nen neuen machen könntest ; )
|
|
|
|
|
Verni@hter
*bM.Verni@hter~
Dabei seit: 24.01.2006
Beiträge: 1.461
|
|
Hier ein neuer Link Wenn das ganze wieder mal down sein sollte dann einfach hier hinein schreiben und ich werds neu hochladen. Bin öfter hier nur hab ich im Moment nicht wirklich Zeit um was zu posten.
__________________
Frauen sind wie Signaturen, haste keine willste eine, haste eine willste ne andere.
My Facebook
|
|
|
|
|
|
|
Impressum ||Datenschutzerklärung
|