AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree |
|
Na, in den entsprechenden Scripts.
Der Sound ist zwar da, aber wenn Du per Script nicht die Aktion festlegst, wann der Sound ertönen soll, wird er auch niemals tun.
Ich stell Dir das Script hier rein, kann Dir aber keine grosse Hilfe sein.
Das ist schon sehr lange her.
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:
|
Timeannouncer(){
shouldcount = true;
color = (0,0,1);
while( shouldcount ){
sound = undefined;
passedtime = (getTime() - level.starttime) / 1000;
secondsleft = int((level.timelimit*60) - (passedtime));
wait 1;
if ( secondsleft < 5 ) shouldcount = false;
if( level.mapended ) return;
if( secondsleft > 300 ) continue;
if ( secondsleft == 300 ){
sound = "5min";
color = (0,1,0);
}
if ( secondsleft == 120 ){
sound = "2min";
color = (0,1,1);
}
if ( secondsleft == 60 ){
sound = "1min";
color = (1,0,1);
}
if ( secondsleft == 30 ){
sound = "30sec";
color = (1,.5,0);
}
if ( secondsleft == 20 ){
sound = "20sec";
color = (1,1,0);
}
if ( secondsleft == 10 ){
sound = "10sec";
color = (1,0,0);
}
if ( secondsleft == 5 )
sound = "54321sec";
if( isDefined (sound) ){
level.clock.color = color;
players = getentarray("player", "classname");
for( i=0;i < players.size;i++ ){
if( isplayer (players[i]) )
players[i] playLocalSound (sound);
}
}
}
}
|
|
ToM
__________________

|
|
|
|
|
|
Du musst in jedem Gametypescript (dm.gsc, tdm.gsc, etc.) die Funktion startGame() suchen und erweitern:
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:
|
startGame()
{
level.firstblood = 0; //** Variabel für ersten Kill -FIRST BLOOD- **//
level.starttime = getTime();
if(level.timelimit > 0)
{
level.clock = newHudElem();
level.clock.horzAlign = "left";
level.clock.vertAlign = "top";
level.clock.x = 8;
level.clock.y = 2;
level.clock.font = "default";
level.clock.fontscale = 2;
level.clock setTimer(level.timelimit * 60);
}
//** Timeannouncer **//
thread maps\mp\gametypes\_myaddon::Timeannouncer();
level.clock.color = (0,0,1); //** Farbe Clock **//
for(;;)
{
checkTimeLimit();
wait 1;
}
}
|
|
Frage: Hat der Mod Deines Kollegen die anderen Sounds auch drin?
Dann frag doch, ob Du diese Version bekommen kannst.
ToM
__________________

|
|
|
|
|
|
Poste bitte den Inhalt Deiner _myaddon.gsc
Ich habe noch zuwenig Info, um mir einen Überblick zu verschaffen.
ToM
__________________

|
|
|
|
|
sefeschnut
Milupa-Fan
  
Dabei seit: 02.02.2007
Beiträge: 531

|
|
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:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
|
//** Killingspree, Firstblood und Headshot by Markus Lechner aka LSB Squall 69, [URL]http://lsb-snipers.com[/URL] **//
Messages(sMeansOfDeath, attacker){
dist = distance(attacker.origin , self.origin);
meter = int(dist/3.937)/10.0;
weapon = maps\mp\gametypes\_weapons::getWeaponName(attacker.pers["weapon"]);
players = getentarray("player", "classname");
if(sMeansOfDeath == "MOD_HEAD_SHOT"){
attacker iprintlnbold ( &"CUSTOM_HEADSHOT" , self.name , &"CUSTOM_ELIDISTATT" , meter , &"CUSTOM_METER1" ); //** Headshot **//
attacker playlocalSound("headshot");
self iprintln ( &"CUSTOM_HEADSHOT" , attacker.name , &"CUSTOM_ELISELF" ); //** Voll in die Birne **//
iprintln ( &"CUSTOM_HEADSHOT" , attacker.name , &"CUSTOM_ELI" , self.name );
iprintln ( &"CUSTOM_DIST" , meter , &"CUSTOM_METER2", weapon );
}
if(sMeansOfDeath == "MOD_GRENADE_SPLASH"){
attacker iprintln(self.name , &"CUSTOM_NADE1");
attacker playlocalSound("fatal");
self iprintln(attacker.name , &"CUSTOM_NADE2");
iprintln(attacker.name , &"CUSTOM_NADE3" , self.name);
iprintln(&"CUSTOM_NADE4");
}
}
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 >= 14 )
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_GODLIKE" );
else if( self.KillsiRow >= 13 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_WICKEDSICK" );
}
else if( self.KillsiRow >= 12 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_UNSTOPABLE" );
}
else if( self.KillsiRow >= 11 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_SLAUGHTER" );
}
else if( self.KillsiRow >= 10 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_HOLYSHIT" );
}
else if( self.KillsiRow >= 9 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_LUDICROUSKILL" );
}
else if( self.KillsiRow >= 8 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_MONSTERKILL" );
}
else if( self.KillsiRow >= 7 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_DOMINATING" );
}
else if( self.KillsiRow >= 6 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_RAMPAGE" );
}
else if( self.KillsiRow >= 5 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_ULTRAKILL" );
}
else if( self.KillsiRow >= 4 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_KILLINGSPREE" );
}
else if( self.KillsiRow >= 3 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_TRIPLEKILL" );
}
else if( self.KillsiRow >= 2 ){
iprintln ( attacker.name , &"CUSTOM_ENDE_KILLSPREE2" , self.name , &"CUSTOM_DOUBLEKILL" );
}
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 == 2 ){
iprintln ( attacker.name , &"CUSTOM_DOUBLEKILL" );
attacker.hud_costumprint setText( &"CUSTOM_DOUBLEKILL" );
attacker playLocalSound ("doublekill");
}
if( attacker.KillsiRow == 3 ){
iprintln ( attacker.name , &"CUSTOM_TRIPLEKILL" );
attacker.hud_costumprint setText( &"CUSTOM_TRIPLEKILL" );
attacker playLocalSound ("triplekill");
}
if( attacker.KillsiRow == 4 ){
iprintln ( attacker.name , &"CUSTOM_KILLINGSPREE" );
attacker.hud_costumprint setText( &"CUSTOM_KILLINGSPREE" );
attacker playLocalSound ("killingspree");
}
if( attacker.KillsiRow == 5 ){
iprintln ( attacker.name , &"CUSTOM_ULTRAKILL" );
attacker.hud_costumprint setText( &"CUSTOM_ULTRAKILL" );
attacker playLocalSound ("ultrakill");
}
if( attacker.KillsiRow == 6 ){
iprintln ( attacker.name , &"CUSTOM_RAMPAGE" );
attacker.hud_costumprint setText( &"CUSTOM_RAMPAGE" );
attacker playLocalSound ("rampage");
}
if( attacker.KillsiRow == 7 ){
iprintln ( attacker , &"CUSTOM_DOMINATING" );
attacker.hud_costumprint setText( &"CUSTOM_DOMINATING" );
attacker playLocalSound ("dominating");
}
if( attacker.KillsiRow == 8 ){
iprintln ( attacker.name , &"CUSTOM_MONSTERKILL" );
attacker.hud_costumprint setText( &"CUSTOM_MONSTERKILL" );
attacker playLocalSound ("monsterkill");
}
if( attacker.KillsiRow == 9 ){
iprintln ( attacker.name , &"CUSTOM_LUDICROUSKILL" );
attacker.hud_costumprint setText( &"CUSTOM_LUDICROUSKILL" );
attacker playLocalSound ("ludicrouskill");
}
if( attacker.KillsiRow == 10 ){
iprintln ( attacker.name , &"CUSTOM_HOLYSHIT" );
attacker.hud_costumprint setText( &"CUSTOM_HOLYSHIT" );
attacker playLocalSound ("holyshit");
}
if( attacker.KillsiRow == 11 ){
iprintln ( attacker.name , &"CUSTOM_SLAUGHTER" );
attacker.hud_costumprint setText( &"CUSTOM_SLAUGHTER" );
attacker playLocalSound ("slaughter");
}
if( attacker.KillsiRow == 12 ){
iprintln ( attacker.name , &"CUSTOM_UNSTOPABLE" );
attacker.hud_costumprint setText( &"CUSTOM_UNSTOPABLE" );
attacker playLocalSound ("unstoppable");
}
if( attacker.KillsiRow == 13 ){
iprintln ( attacker.name , &"CUSTOM_WICKEDSICK" );
attacker.hud_costumprint setText( &"CUSTOM_WICKEDSICK" );
attacker playLocalSound ("wickedsick");
}
if ( attacker.KillsiRow >= 14 ){
iprintln ( attacker.name , &"COSTOM_GODLIKE");
attacker.hud_costumprint settext( &"CUSTOM_GODLIKE");
attacker playLocalSound ("godlike");
}
}
}
Timeannouncer(){
shouldcount = true;
color = (0,0,1);
while( shouldcount ){
sound = undefined;
passedtime = (getTime() - level.starttime) / 1000;
secondsleft = int((level.timelimit*60) - (passedtime));
wait 1;
if ( secondsleft < 5 ) shouldcount = false;
if( level.mapended ) return;
if( secondsleft > 300 ) continue;
if ( secondsleft == 300 ){
sound = "5min";
color = (0,1,0);
}
if ( secondsleft == 120 ){
sound = "2min";
color = (0,1,1);
}
if ( secondsleft == 60 ){
sound = "1min";
color = (1,0,1);
}
if ( secondsleft == 30 ){
sound = "30sec";
color = (1,.5,0);
}
if ( secondsleft == 20 ){
sound = "20sec";
color = (1,1,0);
}
if ( secondsleft == 10 ){
sound = "10sec";
color = (1,0,0);
}
if ( secondsleft == 5 )
sound = "54321sec";
if( isDefined (sound) ){
level.clock.color = color;
players = getentarray("player", "classname");
for( i=0;i < players.size;i++ ){
if( isplayer (players[i]) )
players[i] playLocalSound (sound);
}
}
}
} |
|
wie gesagt die killsounds gehen bis zu godlike da ist ja auch ende nur die
sounds von den Timeannouncer hört man nicht bei 5min ,2min usw.
Edit by Nightwing: Bitte die code Formatierung drinlassen.
__________________

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Nightwing: 31.03.2009 21:46.
|
|
|
|
|
|
Um die Fehlersuche einzugrenzen:
Ändert sich denn in den letzten 5 Minuten die Farbe der Uhrzeit mehrmals?
ToM
__________________

|
|
|
|
|
|
Aufgerufen wird es richtig. Befindet sich die Datei _myaddon.gsc in folgender Ordnerstruktur maps\mp\gametypes?
Ich habe gerade keine Ahnung, warum das nicht funktioniert, denn es sieht alles richtig aus.
Mit welchem Gametype hast Du es getestet?
ToM
__________________

|
|
|
|
|
|
DM passt, da ists auf jeden Fall drin.
Ich hab Dir den Mod nochmal hier, müsste der richtige sein: Klick
Sichere bitte Deine alten Modfiles und schau, obs mit meinem bei Dir funktioniert (grad getestet --> Timeannouncer funktioniert).
Jetzt, da Du weisst, was Du ändern musst, kannst Du nochmal beginnen, die Sounds einzuarbeiten.
ToM
__________________

|
|
|
|
|
|
Für 3 Minuten gibts keinen Sound.
ToM
__________________

|
|
|
|
|
|
Du definierst den Sound im Script an der Stelle, wo die Verwarnung stattfindet.
Wie Du einen Sound in einen Mod einfügst, weisst Du ja jetzt.
Du nimmst Dir die Datei awe\_camping.gsc und gehst in die Funktion CheckCamping(), und fügst an der richtigen Stelle ein:
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:
|
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
// Sound für den Camper
self playLocalSound("camper");
// Sound Ende
}
if (campingtime > 20){
// * Kill Camper *
self thread awe\_util::PunishMe(1, &"CUSTOM_PUNISH3");
break;
}
}
} |
|
ToM
__________________

|
|
|
|
|
|
Hoppala, total die Antwort übersehen.
Aber besser spät als nie:
Ich hatte mit dem Mod keine Probleme, er lief auch noch lange bei einem befreundeten Clan. Server war weder am laggen oder hat sonstige Abstürze etc. erlebt.
Hast Du mir Logfiles zur Zeit des Absturzes?
ToM
__________________

|
|
|
|
|
sefeschnut
Milupa-Fan
  
Dabei seit: 02.02.2007
Beiträge: 531

|
|
Hi,es handel sich um den mod http://callofduty.filefront.com/file/Mod..._for_CoD2;96692
habe in den die killsounds und camper mod eingebaut habe aber nicht die Dateien von meinem alte awe mod in diesen überschrieben ,sondern schritt für schritt wie es hier beschrieben ist eingefügt.
Leider habe ich script error kann mir wer sagen wo ich jetzt den fehler gemacht habe.
******* script runtime error *******
undefined is not a field object: (file 'maps/mp/gametypes/_myaddon.gsc', line 169)
attacker.hud_costumprint.font = "default";
*
called from:
(file 'awe/_player.gsc', line 203)
thread maps\mp\gametypes\_myaddon::Killingspree(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc);
*
called from:
(file 'awe/_callbacks.gsc', line 63)
self awe\_player::PlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration);
*
called from:
(file 'maps/mp/gametypes/_spawnlogic.gsc', line 757)
[[level.spawnlogic_oldCallbackPlayerKilled]](
*
called from:
(file 'maps/mp/gametypes/_callbacksetup.gsc', line 69)
[[level.callbackPlayerKilled]](eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration);
*
called from:
(file 'maps/mp/gametypes/_callbacksetup.gsc', line 66)
CodeCallback_PlayerKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration)
*
called from:
(file 'maps/mp/gametypes/tdm.gsc', line 343)
self finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
*
called from:
(file 'awe/_callbacks.gsc', line 50)
[[level.awe_callbackPlayerDamage]](eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
*
called from:
(file 'awe/_util.gsc', line 1645)
level.awe_allplayers[i] thread [[level.callbackPlayerDamage]](self, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, undefined, vDir, "none", 0);
*
called from:
(file 'awe/_tripwire.gsc', line 501)
self.nade1 awe\_util::scriptedRadiusDamage(eAttacker, (0,0,0), sWeapon, 256, iMaxdamage, iMindamage, (level.awe_tripwire>1) );
*
started from:
(file 'awe/_tripwire.gsc', line 472)
wait(randomFloat(.5));
*
************************************
__________________

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