AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
Beiträge zu diesem Thema |
Autor |
Datum |
AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
Nightwing |
13.07.2007 03:23 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
Fuzzy111 |
10.09.2007 01:29 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
Nightwing |
07.08.2007 12:11 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
OLD MAN WITH GUN |
07.08.2007 18:44 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
Nightwing |
07.08.2007 19:38 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
Nightwing |
13.09.2007 12:27 |
AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
sefeschnut |
13.03.2008 12:26 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
Nightwing |
13.03.2008 13:12 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
sefeschnut |
13.03.2008 13:24 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
Nightwing |
13.03.2008 17:20 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
sefeschnut |
13.03.2008 19:42 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
Nightwing |
13.03.2008 20:51 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
sefeschnut |
13.03.2008 21:54 |
killsound probl. brauche hilfe |
sefeschnut |
30.03.2009 19:29 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
Nightwing |
30.03.2009 19:39 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
sefeschnut |
30.03.2009 19:41 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
Nightwing |
30.03.2009 19:56 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
sefeschnut |
30.03.2009 20:31 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
Nightwing |
30.03.2009 20:40 |
RE: AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
sefeschnut |
30.03.2009 22:08 |
Nächste Seite » |
|
AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
|
Hi
Im folgenden eine kleine Anleitung, wie man dem AWE Mod AWE 3.0beta10b folgende Änderungen hinzufügt:
Camperoption, Headshotsound, Firstblood und Killingspree
Zum editieren der Files rate ich zu dem Programm Programmers Notepad
Und los:
Man öffne die Datei awe/_players.gsc und füge folgenden Code in der Funktion PlayerKilled() ein:
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:
|
PlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration)
{
if(self.sessionteam == "spectator")
return;
//** Nachricht für ersten Kill - FIRST BLOOD - **//
if( level.firstblood == 0 && !isDefined ( self.switching_teams ) ){
players = getentarray("player", "classname");
level.firstblood++; //** Erster Kill wurde gemacht Variable != 0 gesetzt **//
if( isPlayer ( attacker ) ){ //** Wenn Spieler Spieler Schütze ist **//
for( i=0;i < players.size;i++ ){ //** Variable die alle Spieler Anzahl x definiert **//
if( players[i] != self && players[i] != attacker && attacker != self ){ //** Alle Spieler ausser Schütze und Getöteter und Schütze ist kein Selbstmörder **//
players[i] playlocalsound( "firstblood" ); //** Sound für alle Spieler mit Ausnahme des Schützen des Getöteten und des Selbstmörders**//
players[i] iprintln( &"CUSTOM_FBALL1", attacker.name ); //** Text für alle Spieler mit Ausnahme des Schützen des Getöteten und des Selbstmörders **//
if( level.teamplay == 0 )
players[i] iprintln( &"CUSTOM_FBALL2" , self.name ); //** Text wenn keine Teams vorhanden sind **//
else if( attacker.pers["team"] != self.pers["team"] && level.teamplay == 1 ) //** Text wenn Teams vorhanden sind und Opfer nicht im gleichen Team ist **//
players[i] iprintln( &"CUSTOM_FBALL2" , self.name ); //** Text für Gegner Team **//
else if( attacker.pers["team"] == self.pers["team"] && level.teamplay == 1 ) //** Text wenn Teams vorhanden sind und Opfer im gleichen Team ist **//
players[i] iprintln( &"CUSTOM_FBALL3" , self.name , &"CUSTOM_FBALL4" ); //** Text für Opfer Team **//
}
}
if( attacker != self ){ //** Schütze jedoch nicht Getöteter - Nachricht an Beide **//
// if( attacker.Headshot == 1 )
// wait 1.5;
attacker playlocalsound( "firstblood" ); //** Sound für den Schützen mit Wartezeit beim Headshot**//
self playlocalsound( "firstblood" ); //** Sounds für den Getöteten mit Wartezeit zwischen den Sounds **//
self playLocalSound ( "whyami" );
attacker iprintln( &"CUSTOM_FB",&"CUSTOM_FBATT" ); //** Text für den Schützen **//
attacker iprintln( &"CUSTOM_FBALL2" , self.name );
self iprintln( &"CUSTOM_FBSELF1" ); //** Text für den Getöteten mit Ausnahme eines Selbstmörders **//
self iprintln( attacker.name , &"CUSTOM_FBSELF1" );
}
for( i=0;i < players.size;i++ ){ //** Variable die alle Spieler Anzahl x definiert **//
if( attacker == self ){ //** Spieler ist Selbstmörder **//
players[i] playlocalsound( "firstblood" ); //** Sound für alle Spieler **//
self playLocalSound ( "hallelujah" );
if( players[i] != self && players[i] != attacker )
players[i] iprintlnbold( &"CUSTOM_FBALL1" , attacker.name ); //** Text für alle Spieler mit Ausnahme des Schützen des Getöteten und des Selbstmörders **//
self iprintln( &"CUSTOM_FB" ); //** Text für den Selbstmörder **//
self iprintln( &"CUSTOM_FBSELF2" );
if( level.teamplay == 0 && players[i] != self)
players[i] iprintlnbold( &"CUSTOM_FBALL5" ); //** Text wenn keine Teams vorhanden sind **//
else if( attacker.pers["team"] != self.pers["team"] && players[i] != self && level.teamplay == 1 ) //** Text wenn Teams vorhanden sind und Selbstmörder nicht im gleichen Team ist **//
players[i] iprintln( &"CUSTOM_FBALL5"); //** Text für Gegner Team **//
else if( attacker.pers["team"] == self.pers["team"] && players[i] != self && level.teamplay == 1 ) //** Text wenn Teams vorhanden sind und Selbstmörder im gleichen Team ist **//
players[i] iprintln( &"CUSTOM_FBTEAM1" , self.name , &"CUSTOM_FBTEAM2" ); //** Text für Selbstmörder Team **//
}
}
}
}
thread maps\mp\gametypes\_myaddon::Killingspree(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc);
//** ENDE **//
|
|
Desweiteren in der gleichen Datei dies in der Funktion RunOnSpawn() hinzufügen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
self awe\_turrets::RunOnSpawn();
self awe\_welcomemessages::RunOnSpawn();
//*** hinzugefügt ***//
self awe\_camping::RunOnSpawn();
//*** ENDE ***//
|
|
File speichern, nächste Datei wäre die awe/_global.gsc, in der Funktion init() kommt folgendes hinzu:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
|
awe\_tripwire::init();
awe\_turrets::init();
awe\_weaponlimiting::init();
awe\_welcomemessages::init();
//** hinzugefügt **//
awe\_precache::init();
awe\_camping::init();
//** Ende **//
|
|
Im gleichen Ordner erstellen wir nun 2 neue Files. Das eine nennen wir _precache.gsc, mit folgendem Inhalt:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
Init(){
// Killingspree
precachestring(&"CUSTOM_KILLINGSPREE");
precachestring(&"CUSTOM_ULTRAKILL");
precachestring(&"CUSTOM_RAMPAGE");
precachestring(&"CUSTOM_DOMINATING");
precachestring(&"CUSTOM_MONSTERKILL");
precachestring(&"CUSTOM_HOLYSHIT");
precachestring(&"CUSTOM_SLAUGHTER");
precachestring(&"CUSTOM_UNSTOPABLE");
precachestring(&"CUSTOM_GODLIKE");
precachestring(&"CUSTOM_ENDE_KILLSPREE1");
precachestring(&"CUSTOM_ENDE_KILLSPREE2");
} |
|
das andere _camping.gsc, Inhalt wie folgt:
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:
|
init (){
level.awe_campers = awe\_util::cvardef("awe_campers", 1, 0, 1, "int");
awe\_util::cvardef("awe_campers_after_sec", 90, 10, 999, "int");
if(level.awe_campers == 1){
if(!isdefined(game["gamestarted"])){
// Precache crushmodels
for(i=0;i<level.awe_crushmodels.size;i++)
precacheModel("xmodel/" + level.awe_crushmodels[i]);
}
level.awe_objectQ["piano"] = [];
level.awe_objectQcurrent["piano"] = 0;
level.awe_objectQsize["piano"] = 2;
level._effect["awe_dustimpact"] = loadfx("fx/dust/dust_impact_med.efx");
}
}
RunOnSpawn(){
self thread CheckCamping();
}
CheckCamping() {
self notify("CheckCamping");
self endon("CheckCamping");
level endon("round_ended");
self endon("spawned");
self endon("killed_player");
self endon("disconnect");
campingtime = 0;
while (isPlayer(self) && isAlive(self) && !isDefined(self.pers["camper"]) &&self.pers["team"] != "spectator"){
position = self getorigin();
wait 1;
compareposition = self getorigin();
// * bleibt der Spieler innerhalb der festgelegten Camping-Distanz ? *
if (distance(position,compareposition) < 50) campingtime = campingtime + 1;
else campingtime = 0;
if (campingtime == 15){ // einstellbar in Sekunden
self iprintlnbold(&"CUSTOM_CAMP1"); //Text welcher nur der Camper zu sehen bekommt.
iprintln(self.name , &"CUSTOM_CAMP2"); //Alle sollen wissen dass einer campt
}
if (campingtime > 20){
// * Kill Camper *
self thread awe\_util::PunishMe(1, &"CUSTOM_PUNISH3");
break;
}
}
} |
|
Wir wechseln munter zum Ordner maps/mp/gametypes und editieren ALLE Gametyparten, hier zum Beispiel die tdm.gsc. Um folgendes wird die Funktion Callback_StartGameType() bereichert:
Anmerkungen:
- ganz am Ende der Funktion einfügen!
- Teambasierte Spielarten, wie tdm, erhalten die 1 in der Variable, Nichtteambasierte die 0!!
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
|
//** hinzugefügt **//
level.teamplay = 1;
//** Ende **//
|
|
oder eben
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
|
//** hinzugefügt **//
level.teamplay = 0;
//** Ende **//
|
|
weiter unten, in der Funktion Callback_PlayerKilled() kommt folgendes hinzu:
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:
|
Callback_PlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration)
{
self endon("spawned");
self notify("killed_player");
if(self.sessionteam == "spectator")
return;
// If the player was killed by a head shot, let players know it was a head shot kill
if(sHitLoc == "head" && sMeansOfDeath != "MOD_MELEE")
sMeansOfDeath = "MOD_HEAD_SHOT";
// send out an obituary message to all clients about the kill
obituary(self, attacker, sWeapon, sMeansOfDeath);
//** Kopfschuss Nachrichten und Sounds **//
if( sMeansOfDeath == "MOD_HEAD_SHOT" ){
attacker playlocalSound ( "headshot" ); //** Sound und Text für den Schützen **//
attacker iprintln (&"CUSTOM_HEADSHOT");
}
self maps\mp\gametypes\_weapons::dropWeapon();
self maps\mp\gametypes\_weapons::dropOffhand();
self.sessionstate = "dead";
self.statusicon = "hud_status_dead";
if(!isdefined(self.switching_teams))
self.deaths++;
|
|
weiter unten, in der Funktion startGame() folgendes hinzu:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
startGame()
{
//** hinzugefügt **//
level.firstblood = 0; //** Variabel für ersten Kill -FIRST BLOOD- **//
//** ENDE **//
level.starttime = getTime();
if(level.timelimit > 0)
|
|
Abschliessend erstellen wir eine neue Datei imselben ordner, namens _myaddon.gsc, mit folgendem Inhalt:
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:
|
//** Killingspree, Firstblood und Headshot by Markus Lechner aka LSB Squall 69, http://lsb-snipers.com **//
Killingspree(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc){
self endon("disconnected");
//** Grösse und Koordinaten für Text **//
Textsize = 2.0;
xcoord = 0;
ycoord = 0;
if(!isDefined(attacker.KillsiRow)){
attacker.KillsiRow = 0;
attacker.EndSpree = 0;
}
if(!isDefined(self.KillsiRow)){
self.KillsiRow = 0;
self.EndSpree = 0;
}
//** Setzen der Variable für Killspree wenn Player stirbt **//
if( self.KillsiRow <= 2 ){
self.KillsiRow = 0;
}
if(isdefined(attacker.hud_costumprint))
attacker.hud_costumprint destroy();
if(isdefined(self.hud_costumprint))
self.hud_costumprint destroy();
//** Setzen der Variable wenn Killspree Ende **//
if( self.KillsiRow >= 3 )
self.EndSpree = 1;
//** Check ob eine Killspree zu Ende ist **//
if( self.EndSpree == 1 ){
if( self.KillsiRow >= 11 )
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_GODLIKE" );
else if( self.KillsiRow >= 10 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_UNSTOPABLE" );
}
else if( self.KillsiRow >= 9 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_SLAUGHTER" );
}
else if( self.KillsiRow >= 8 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_HOLYSHIT" );
}
else if( self.KillsiRow >= 7 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_MONSTERKILL" );
}
else if( self.KillsiRow >= 6 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_DOMINATING" );
}
else if( self.KillsiRow >= 5 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_RAMPAGE" );
}
else if( self.KillsiRow >= 4 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_ULTRAKILL" );
}
else if( self.KillsiRow >= 3 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_KILLINGSPREE" );
}
self playLocalSound ( "monsterlache" );
if( attacker != self ){
attacker playLocalSound ( "wixxer" );
self iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE1" );
}
//** Killingspree ist vorbei setze Variablen neu **//
self.EndSpree = 0;
self.KillsiRow = 0;
}
//** Check ob Killspree im Gange ist **//
if( attacker != self ){ //** ohh für einen Selbstmord gibt es schon gar nix **//
attacker.KillsiRow++;
if( !isdefined ( attacker.hud_costumprint ) ){
attacker.hud_costumprint = newClientHudElem ( attacker );
attacker.hud_costumprint.horzAlign = "center";
attacker.hud_costumprint.vertAlign = "top";
attacker.hud_costumprint.Alignx = "center";
attacker.hud_costumprint.x = xcoord;
attacker.hud_costumprint.y = ycoord;
attacker.hud_costumprint.font = "default";
attacker.hud_costumprint.fontscale = Textsize;
}
if( attacker.KillsiRow == 3 ){
iprintln ( attacker.name , &"CUSTOM_KILLINGSPREE" );
attacker.hud_costumprint setText( &"CUSTOM_KILLINGSPREE" );
attacker playLocalSound ("killingspree");
}
if( attacker.KillsiRow == 4 ){
iprintln ( attacker.name , &"CUSTOM_ULTRAKILL" );
attacker.hud_costumprint setText( &"CUSTOM_ULTRAKILL" );
attacker playLocalSound ("ultrakill");
}
if( attacker.KillsiRow == 5 ){
iprintln ( attacker.name , &"CUSTOM_RAMPAGE" );
attacker.hud_costumprint setText( &"CUSTOM_RAMPAGE" );
attacker playLocalSound ("rampage");
}
if( attacker.KillsiRow == 6 ){
iprintln ( attacker , &"CUSTOM_DOMINATING" );
attacker.hud_costumprint setText( &"CUSTOM_DOMINATING" );
attacker playLocalSound ("dominating");
}
if( attacker.KillsiRow == 7 ){
iprintln ( attacker.name , &"CUSTOM_MONSTERKILL" );
attacker.hud_costumprint setText( &"CUSTOM_MONSTERKILL" );
attacker playLocalSound ("monsterkill");
}
if( attacker.KillsiRow == 8 ){
iprintln ( attacker.name , &"CUSTOM_HOLYSHIT" );
attacker.hud_costumprint setText( &"CUSTOM_HOLYSHIT" );
attacker playLocalSound ("holyshit");
}
if( attacker.KillsiRow == 9 ){
iprintln ( attacker.name , &"CUSTOM_SLAUGHTER" );
attacker.hud_costumprint setText( &"CUSTOM_SLAUGHTER" );
attacker playLocalSound ("slaughter");
}
if( attacker.KillsiRow == 10 ){
iprintln ( attacker.name , &"CUSTOM_UNSTOPABLE" );
attacker.hud_costumprint setText( &"CUSTOM_UNSTOPABLE" );
attacker playLocalSound ("unstoppable");
}
if( attacker.KillsiRow >= 11 ){
iprintln ( attacker.name , &"CUSTOM_GODLIKE" );
attacker.hud_costumprint setText( &"CUSTOM_GODLIKE" );
attacker playLocalSound ("godlike");
}
}
} |
|
Nun erstellen wir noch die Datei custom.str, die in den Clientseitigen Ordner localisedstrings gehört:
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:
|
REFERENCE KILLINGSPREE
LANG_ENGLISH " ^1Killing Spree!^7"
REFERENCE ULTRAKILL
LANG_ENGLISH " ^1Ultra Kill!^7"
REFERENCE RAMPAGE
LANG_ENGLISH " ^1Rampage!^7"
REFERENCE DOMINATING
LANG_ENGLISH " ^1Dominating!^7"
REFERENCE MONSTERKILL
LANG_ENGLISH " ^1Monster Kill!^7"
REFERENCE HOLYSHIT
LANG_ENGLISH " ^1Holy Shit!^7"
REFERENCE SLAUGHTER
LANG_ENGLISH " ^1Slaughter!^7"
REFERENCE UNSTOPABLE
LANG_ENGLISH " ^1Unstopable!^7"
REFERENCE GODLIKE
LANG_ENGLISH " ^1Godlike!^7"
REFERENCE ENDE_KILLSPREE1
LANG_ENGLISH " ^5beendete Dein Gemetzel!^7"
REFERENCE ENDE_KILLSPREE2
LANG_ENGLISH " ^5beendete^7 "
REFERENCE HEADSHOT
LANG_ENGLISH "^1Headshot!^7 "
REFERENCE FB
LANG_ENGLISH "^1First Blood!^7"
REFERENCE FBALL1
LANG_ENGLISH " ^5wurde vergossen von:^7"
REFERENCE FBALL2
LANG_ENGLISH " ^5...und das arme Schwein war:^7 "
REFERENCE FBALL3
LANG_ENGLISH " ^5...und es hat Dein Teammitglied^7 "
REFERENCE FBALL4
LANG_ENGLISH " ^5erwischt!^7"
REFERENCE FBALL5
LANG_ENGLISH " ^5...und er leidet an Schizophrenie!^7"
REFERENCE FBATT
LANG_ENGLISH " ^5wurde von Dir vergossen!^7"
REFERENCE FBSELF1
LANG_ENGLISH " ^5hat Dein Blut als Erster vergossen!^7"
REFERENCE FBSELF2
LANG_ENGLISH " ^5...und es war Dein eigenes Blut!^7"
REFERENCE FBTEAM1
LANG_ENGLISH "^5Dein Teammitglied^7 "
REFERENCE FBTEAM2
LANG_ENGLISH " ^5leidet an Schizophrenie!^7"
REFERENCE CAMP1
LANG_ENGLISH "^5Los beweg Dich, scheiss ^1Camper!!"
REFERENCE CAMP2
LANG_ENGLISH " ^5ist hier irgendwo am Campen!!!"
REFERENCE PUNISH1
LANG_ENGLISH " ^5wird mit "
REFERENCE PUNISH2
LANG_ENGLISH " ^5bestraft für: "
REFERENCE PUNISH3
LANG_ENGLISH "^1Camping!!!"
REFERENCE PUNISH4
LANG_ENGLISH " ^5seinem Tod"
REFERENCE PUNISH5
LANG_ENGLISH "^5einer Explosion"
REFERENCE PUNISH6
LANG_ENGLISH "^5einem Klavier"
ENDMARKER
|
|
Die Funktion PunishMe(); in der Datei awe\_util.gsc hab ich auch noch editiert, um leichter den Text ändern zu Können:
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:
|
PunishMe(iMethod, sReason)
{
self endon("awe_killthreads");
sMethodname = "";
if(iMethod == 1)
iMethod = 2 + randomInt(level.awe_punishments);
switch (iMethod)
{
case 2:
self suicide();
sMethodname = &"CUSTOM_PUNISH4";
break;
case 3:
wait 0.5;
// explode
playfx(level._effect["bombexplosion"], self.origin);
wait .05;
self suicide();
sMethodname = &"CUSTOM_PUNISH5";
break;
case 4:
// Drop a piano on the player
level thread DropPiano(self);
sMethodname = &"CUSTOM_PUNISH6";
break;
default:
break;
}
if(iMethod)
iprintln(self.name , &"CUSTOM_PUNISH1" , sMethodname , &"CUSTOM_PUNISH2" , sReason);
}
|
|
Das war der Scriptseitige Teil, nun müssen wir noch die Sounds anlegen.
Wir nehmen die .iwd Datei, und entpacken diese in einen temporären Ordner, am besten mit dem Tool Totalcommander:
Wir öffnen im Ordner soundaliases die Datei awe_sound.csv und fügen ganz unten folgendes hinzu:
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:
|
# MySounds
# Headshot
headshot,,mysounds/headshot.mp3,1,1,,,,1000000,,auto,streamed
# FirstBlood
firstblood,,mysounds/firstblood.mp3,1,1,,,,1000000,,auto,streamed
# Killingspree
killingspree,,mysounds/killingspree.mp3,1,1,,,,1000000,,auto,streamed
ultrakill,,mysounds/ultrakill.mp3,1,1,,,,1000000,,auto,streamed
rampage,,mysounds/rampage.mp3,1,1,,,,1000000,,auto,streamed
dominating,,mysounds/dominating.mp3,1,1,,,,1000000,,auto,streamed
monsterkill,,mysounds/monsterkill.mp3,1,1,,,,1000000,,auto,streamed
holyshit,,mysounds/holyshit.mp3,1,1,,,,1000000,,auto,streamed
slaughter,,mysounds/slaughter.mp3,1,1,,,,1000000,,auto,streamed
unstoppable,,mysounds/unstoppable.mp3,1,1,,,,1000000,,auto,streamed
godlike,,mysounds/godlike.mp3,1,1,,,,1000000,,auto,streamed
# More then one place
hallelujah,,mysounds/hallelujah.mp3,1,1,,,,1000000,,music,streamed
whyami,,mysounds/whyami.mp3,1,1,,,,1000000,,auto,streamed
monsterlache,,mysounds/monsterlache.wav,1,1,,,,1000000,,auto,streamed
wixxer,,mysounds/wixxer.wav,1,1,,,,1000000,,auto,streamed
|
|
abschliessend erstellen wir im temporären Ordner einen neuen Ordner sound, mit Unterordner mysounds, in den wir die Sounds hineintun.
Sounds gibt es hier zu saugen
Nun packen wir ALLE Ordner innerhalb des temp Ordners mit dem Total Commander wieder zusammen, und nennen es z.iwd.
Diese kommt nun auch in den Modordner hinein, und los geht das Gemetzel
Das Script für die Camperoption habe ich diesem Forum hier entnommen, Danke an Kellerkind.
Die Firstblood, Headshot und Killingspreescripts stammen von {LSB} Squall 69, auch hier aus dem Forum. Herzlichen Dank, Markus
ToM
Nachtrag:
Ich habe die Scripts etwas überarbeitet, unnötige wait Befehle entfernt (die Firstbloodleiche
), d.h. der Sound Headshot und ein Folgesound (Firstblood, Killingspree) kommen gleichzeitig.
Desweiteren sind alle Textausgaben in der Datei custom.str in dem Ordner localisedstrings zu editieren, macht es Euch einfacher und müllt das Logfile nicht unnötig zu.
Downloadlocation ist weiter unten im Topic zu Finden.
__________________
Dieser Beitrag wurde 12 mal editiert, zum letzten Mal von Nightwing: 16.02.2008 14:14.
|
|
|
|
|
| |
|
|
Man sollte noch dazu erwähnen, daß der Weapon-Limiter mit der All-Weapons Mod nicht funktioniert (hatte das nicht getestet, bis Kellerkind mir dieses Feature wieder in Erinnerung brachte
).
Das in den Griff zu bekommen erweist sich als doch recht kompliziert.
__________________
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.
|
|
|
|
|
|
Glaub ich Dir gerne, nur kann ich Dir da nicht behilflich sein... Stells aber hier rein, wenn fertig, dann änder ich meine beiden Versionen entsprechend ab.
frohes Grübeln
ToM
__________________
|
|
|
|
|
|
Du hast irgendwo einen Fehler gemacht...
Das einfachste wäre es, hier im Thread nach der DL Location zu Suchen, und das fertig gesciptete Ergebnis herunterzuladen.
ToM
__________________
|
|
|
|
|
|
Definiere drastisch abgespeckt
Skins + Blutzeugs rausgeschmissen?
Schön, wenns läuft, freut mich!
ToM
PS: Solltest nen Bug finden, darfst Ihn behalten
__________________
|
|
|
|
|
|
aha, okay.
Um Probleme zu vermeiden: Meine z.iwd ist die b2.iwd, modifiziert. Nimm lieber die z.iwd und lösch die Waffensounds/skins etc raus, damit der Mod sauber läuft.
Bekommst dann auch deutlich unter 1 MB hin.
ToM
__________________
|
|
|
|
|
|
Sieht soweit gut aus, nur fehlt was.
Hast Du die Scripts auch erweitert?
ToM
__________________
|
|
|
|
|
|
_precache.gsc & _myaddon.gsc
Einen Timeannouncer hab ich hier zwar nicht erklärt, aber es kann sein, das ich Dir damals diese Version gesendet habe.
Was hast Du beim Timeannouncer geändert?
ToM
__________________
|
|
|
|
|
|
Wenn es der Mod von mir ist: maps/mp/gametypes/_myaddon.gsc
Ansonsten oben rauskopieren und hinzufügen, steht alles im ersten Post.
Der Timeannouncer ist bereits in der soundalias drin und funktioniert, wenn es der Mod von mir ist.
ToM
__________________
|
|
|
|
|
|
|
Impressum ||Datenschutzerklärung
|