AWE 3.0beta10b mit Camperoption, Headshotsound, Firstblood und Killingspree

Nightwing
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 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:
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
sefeschnut
Habe mich gestern noch mit einem Kollegen unter halten ,der hat die Timeannouncer auch auf seinem Server und von ihm weiß ich auch das dass script in der _myaddon.gsc stehen soll.Habe es auch dann da eingetragen leider geht der sound als noch nicht. traurig

Kann es sein dass man noch in einem anderen scrpit was eintragen muss geschockt
Nightwing
Du musst in jedem Gametypescript (dm.gsc, tdm.gsc, etc.) die Funktion startGame() suchen und erweitern:

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:
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. Augenzwinkern

ToM
sefeschnut
so habe jetzt mal in allen gametype den Eintrag gemacht funkt. als noch nicht. verwirrt
hier mal ein screen wo ich den eintrag gemacht habe.
Nightwing
Poste bitte den Inhalt Deiner _myaddon.gsc
Ich habe noch zuwenig Info, um mir einen Überblick zu verschaffen.

ToM
sefeschnut

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:
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.
Nightwing
Um die Fehlersuche einzugrenzen:
Ändert sich denn in den letzten 5 Minuten die Farbe der Uhrzeit mehrmals?

ToM
sefeschnut
nein bleibt weiß
Nightwing
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
sefeschnut

Zitat:

Original von Nightwing
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


ja da ist sie drin,getestet habe ich mit dm werde mal einen nadren noch testen
Nightwing
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. Augenzwinkern

ToM
sefeschnut
ok ,merci Freude
sefeschnut
so hab s jetzt fast hinbekommen die zeit ist farbig und wechselt immer nach der ansage.Er sagt sie alle außer 3min da kommt nichts kein ton.

werde es morgen noch mal in ruhe angehen, weil mir raucht jetz der Kopf
meld mich dann

danke noch für deine hilfe Augenzwinkern Augenzwinkern
Nightwing
Für 3 Minuten gibts keinen Sound.

ToM
sefeschnut

Zitat:

Original von Nightwing
Für 3 Minuten gibts keinen Sound.

ToM

ja da haste l recht ,war ich wohl etwas zu gierig mit den sounds Augenzwinkern

hab s jetzt hinbekommen läuft alles so wie es sein soll.

noch ein frage, weißt du wie ich dass mache, wenn einer campt und die Aufforderung kommt das er sich bewegen soll dazu dann auch ein sound abgespielt wird.
Nightwing
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 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:
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
sefeschnut
vielen dank hat auf Anhieb funkt. grosses Grinsen grosses Grinsen grosses Grinsen
Bill(ACR)
nightwing habe das so gemooddet bekomm ist für awe nit empfehlendswert

das der server dan für viele laggi wird wies auch nit wieso aber ist so schade war ziemlich geil und der server stürtzt dan auch regelmäßig ab wenn er über längere zeit voll ist
Nightwing
Hoppala, total die Antwort übersehen. Augen rollen
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
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));
*
************************************