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:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:
595:
596:
597:
598:
599:
600:
601:
602:
603:
604:
605:
606:
607:
608:
609:
610:
611:
612:
613:
614:
615:
616:
617:
618:
619:
620:
621:
622:
623:
624:
625:
626:
627:
628:
629:
630:
631:
632:
633:
634:
635:
636:
637:
638:
639:
640:
641:
642:
643:
644:
645:
646:
647:
648:
649:
650:
651:
652:
653:
654:
655:
656:
657:
658:
659:
660:
661:
662:
663:
664:
665:
666:
667:
668:
669:
670:
671:
672:
673:
674:
675:
676:
677:
678:
679:
680:
681:
682:
683:
684:
685:
686:
687:
688:
689:
690:
691:
692:
693:
694:
695:
696:
697:
|
//////////////////////
// Init and Cleanup //
//////////////////////
// Called from PlayerConnect
PlayerConnect()
{
Cleanup();
// Start threads
self thread StartPlayerThreads();
}
// Called from PlayerDisconnect
PlayerDisconnect()
{
// Kill running threads
self notify("awe_killthreads");
// Clear variables etc...
CleanupKilled();
}
PlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime)
{
// Block friendly melee in some cases (body search, etc...)
if(level.awe_teamplay && isPlayer(self) && isPlayer(eAttacker) && self.sessionteam == eAttacker.sessionteam && sMeansOfDeath == "MOD_MELEE")
{
if(isDefined(self.awe_tripwiremessage) || isDefined(self.awe_turretmessage))
return -1;
}
// Damaged by a player while under spawnprotection?
if(isplayer(eAttacker) && self.awe_invulnerable)
return -1;
// Damage modifiers
if(sMeansOfDeath != "MOD_MELEE" && isdefined(level.awe_dmgmod[sWeapon]))
iDamage = int(iDamage * level.awe_dmgmod[sWeapon]);
// Was the attacker a spawnprotected player?
if(isPlayer(eAttacker) && eAttacker != self && eAttacker.awe_invulnerable && level.awe_spawnprotectiondropweapon)
{
eAttacker iprintlnbold(&"AWE_SPROT_DONT_ABUSE");
eAttacker dropItem(eAttacker getcurrentweapon());
}
// Stop damage from teamkiller
if(level.awe_teamplay && isPlayer(eAttacker) && (self != eAttacker) && (self.pers["team"] == eAttacker.pers["team"]))
{
if(eAttacker.pers["awe_teamkiller"])
{
eAttacker.friendlydamage = true;
iDamage = int(iDamage * .5);
// Make sure at least one point of damage is done
if(iDamage < 1)
iDamage = 1;
eAttacker finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
eAttacker.friendlydamage = undefined;
friendly = true;
iDamage = -1;
}
}
return iDamage;
}
PostPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime)
{
// Splatter on attacker?
if(isPlayer(eAttacker) && (sMeansOfDeath == "MOD_MELEE" || distance(eAttacker.origin , self.origin ) < 40 ) )
eAttacker thread awe\_bloodyscreen::Splatter_View();
// Still alive?
if(isalive(self))
{
// Pains sound
if(level.awe_painsound)
self painsound();
// Do helmetpopping etc... ?
switch(sHitLoc)
{
case "helmet":
case "head":
self thread awe\_bloodyscreen::Splatter_View();
if( randomInt(100) < level.awe_pophelmet && !self.awe_helmetpopped)
self awe\_popping::popHelmet( vDir, iDamage );
break;
}
/* // Do stuff
switch(sHitLoc)
{
case "right_hand":
case "left_hand":
case "gun":
if( !isdefined(level.awe_merciless) && randomInt(100)<level.awe_droponhandhit)
self dropItem(self getcurrentweapon());
break;
case "right_arm_lower":
case "left_arm_lower":
if(!isdefined(level.awe_merciless) && randomInt(100)<level.awe_droponarmhit )
self dropItem(self getcurrentweapon());
break;
case "right_foot":
case "left_foot":
if(randomInt(100)<level.awe_triponfoothit)
self thread spankme(1);
break;
case "right_leg_lower":
case "left_leg_lower":
if(randomInt(100)<level.awe_triponleghit)
self thread spankme(1);
break;
}*/
}
}
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( "" ); //** Text für alle Spieler mit Ausnahme des Schützen des Getöteten und des Selbstmörders &"CUSTOM_FBALL1", attacker.name**//
if( level.teamplay == 0 )
players[i] iprintln( "" ); //** Text wenn keine Teams vorhanden sind &"CUSTOM_FBALL2" , self.name **//
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( "" ); //** Text für Gegner Team &"CUSTOM_FBALL2" , self.name **//
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( "" ); //** Text für Opfer Team &"CUSTOM_FBALL3" , self.name , &"CUSTOM_FBALL4" **//
}
}
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( "" ); //** Text für den Schützen &"CUSTOM_FB",&"CUSTOM_FBATT"**//
attacker iprintln( "" ); //** &"CUSTOM_FBALL2" , self.name **//
self iprintln( "" ); //** Text für den Getöteten mit Ausnahme eines Selbstmörders &"CUSTOM_FBSELF1"**//
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( "" ); //** Text für alle Spieler mit Ausnahme des Schützen des Getöteten und des Selbstmörders &"CUSTOM_FBALL1" , attacker.name**//
self iprintln( "" ); //** Text für den Selbstmörder &"CUSTOM_FB"**//
self iprintln( "" ); //** &"CUSTOM_FBSELF2" **//
if( level.teamplay == 0 && players[i] != self)
players[i] iprintlnbold( "" ); //** Text wenn keine Teams vorhanden sind &"CUSTOM_FBALL5"**//
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( "" ); //** Text für Gegner Team &"CUSTOM_FBALL5" **//
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( "" ); //** Text für Selbstmörder Team &"CUSTOM_FBTEAM1" , self.name , &"CUSTOM_FBTEAM2"**//
}
}
}
}
thread maps\mp\gametypes\_myaddon::Killingspree(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc);
//** ENDE **//
if(isPlayer(attacker))
{
if(attacker == self) // killed himself
{
}
else
{
if(level.awe_teamplay && self.pers["team"] == attacker.pers["team"]) // killed by a friendly
{
attacker awe\_teamkilling::TeamKill();
}
else // killed by an enemy
{
}
}
}
else // If you weren't killed by a player, you were in the wrong place at the wrong time
{
}
dopop = false;
// Check for headpopping
switch(sHitLoc)
{
case "head":
case "helmet":
self thread awe\_bloodyscreen::Splatter_View();
if( randomInt(100) < level.awe_pophelmet && !self.awe_helmetpopped)
self awe\_popping::popHelmet( vDir, iDamage );
if( level.awe_popheadbullet && sMeansOfDeath != "MOD_MELEE" && (awe\_util::isWeaponType("rifle",sWeapon) || awe\_util::isWeaponType("sniper",sWeapon) || awe\_util::isWeaponType("turret",sWeapon)) )
dopop = true;
break;
default:
break;
}
// iprintln("sMoD:"+sMeansOfDeath + " iDmg:" + iDamage + " sHL:" + sHitLoc);
switch(sMeansOfDeath)
{
case "MOD_MELEE":
if(level.awe_popheadmelee && iDamage>=100 )
dopop = true;
break;
case "MOD_PROJECTILE":
case "MOD_PROJECTILE_SPLASH":
case "MOD_GRENADE_SPLASH":
case "MOD_EXPLOSIVE":
if(level.awe_popheadexplosion && iDamage>=100 )
dopop = true;
break;
default:
break;
}
if(dopop)
{
if(randomInt(100) < level.awe_pophead && !self.awe_headpopped)
self awe\_popping::popHead( vDir, iDamage);
else if(randomInt(100) < level.awe_pophelmet && !self.awe_helmetpopped)
self awe\_popping::popHelmet( vDir, iDamage);
}
// Drop health
awe\_healthpacks::dropHealth();
// Clear variables etc...
CleanupKilled(sMeansOfDeath);
}
/////////////
// Threads //
/////////////
StartPlayerThreads()
{
// End this thread on disconnect only
self endon("disconnect");
for(;;)
{
// Wait for player to spawn
self waittill("spawned_player");
RunOnSpawn();
wait .05;
}
}
// Thread run on each player, every second
EverySecondThread()
{
self endon("awe_killthreads");
sprinthudvisible = false;
self.awe_pace = 0;
oldprimary = level.awe_sprintweapon;
oldammo = 0;
oldclip = 0;
oldprimaryb = level.awe_sprintweapon;
oldammob = 0;
oldclipb = 0;
// Avoid some undefined errors
self.awe_oldprimary2 = self getWeaponSlotWeapon("primary");
self.awe_oldammo2 = self getWeaponSlotAmmo("primary");
self.awe_oldclip2 = self getWeaponSlotClipAmmo("primary");
self.awe_oldprimaryb = self getWeaponSlotWeapon("primaryb");
self.awe_oldammob = self getWeaponSlotAmmo("primaryb");
self.awe_oldclipb = self getWeaponSlotClipAmmo("primaryb");
ch_count=0;
if(level.awe_teamplay)
myteam = self.sessionteam;
else
myteam = self.pers["team"];
oldpos = self.origin;
while( isPlayer(self) && isAlive(self) && self.sessionstate=="playing" )
{
delayed = 0;
awe\_healthbar::UpdateHealthBar();
// Get the current weapon
cw = self getCurrentWeapon();
// Get the stance every second
self.awe_stance = self awe\_util::GetStance(false);
// Show/Hide the sprint hint
if(level.awe_sprint && level.awe_sprinthudhint)
{
if(!sprinthudvisible && self.awe_sprinttime && !self.awe_sprinting && self.awe_pace && level.awe_sprint>self.awe_stance)
{
if(isdefined(self.awe_sprinthud_hint))
{
self.awe_sprinthud_hint fadeOverTime (1);
self.awe_sprinthud_hint.alpha = 1;
sprinthudvisible = true;
}
}
else if(sprinthudvisible && (self.awe_sprinting || !self.awe_pace || level.awe_sprint<=self.awe_stance) )
{
{
if(isdefined(self.awe_sprinthud_hint))
{
self.awe_sprinthud_hint fadeOverTime (1);
self.awe_sprinthud_hint.alpha = 0;
sprinthudvisible = false;
}
}
}
}
// Save old weapon data
if(level.awe_sprint)
{
// Save 1 second old data
if(oldprimary != level.awe_sprintweapon)
{
self.awe_oldprimary2 = oldprimary;
self.awe_oldammo2 = oldammo;
self.awe_oldclip2 = oldclip;
}
if(oldprimaryb != level.awe_sprintweapon)
{
self.awe_oldprimaryb = oldprimaryb;
self.awe_oldammob = oldammob;
self.awe_oldclipb = oldclipb;
}
// Save new data
oldprimary = self getWeaponSlotWeapon("primary");
oldammo = self getWeaponSlotAmmo("primary");
oldclip = self getWeaponSlotClipAmmo("primary");
oldprimaryb = self getWeaponSlotWeapon("primaryb");
oldammob = self getWeaponSlotAmmo("primaryb");
oldclipb = self getWeaponSlotClipAmmo("primaryb");
}
// Be un-nice to Unknown Players?
if(level.awe_unknownmethod && self awe\_util::isUnknown())
{
self iprintlnbold("^" + randomInt(8) + "Change your name!");
switch(level.awe_unknownmethod)
{
case 1:
self dropItem(self getcurrentweapon());
break;
case 2:
self shellshock("default", 1);;
break;
default:
break;
}
}
// Override client cvars
if(ch_count>=15)
{
// Allow crosshairs?
switch(level.awe_allowcrosshair)
{
case 2: // Force crosshair on
self setClientCvar("cg_drawcrosshair", "1");
wait 0.05;
delayed += 0.05;
break;
case 1: // Let player choose
break;
default: // Force crosshair off
self setClientCvar("cg_drawcrosshair", "0");
wait 0.05;
delayed += 0.05;
break;
}
// Allow crosshairs names?
switch(level.awe_allowcrosshairnames)
{
case 2: // Force crosshair names on
self setClientCvar("cg_drawcrosshairnames", "1");
wait 0.05;
delayed += 0.05;
break;
case 1: // Let player choose
break;
default: // Force crosshair names off
self setClientCvar("cg_drawcrosshairnames", "0");
wait 0.05;
delayed += 0.05;
break;
}
// Allow crosshairs to switch color when aiming enemies?
switch(level.awe_allowcrosshaircolor)
{
case 2: // Force crosshair color on
self setClientCvar("cg_crosshairenemycolor", "1");
wait 0.05;
delayed += 0.05;
break;
case 1: // Let player choose
break;
default: // Force crosshair color off
self setClientCvar("cg_crosshairenemycolor", "0");
wait 0.05;
delayed += 0.05;
break;
}
if(level.awe_stopclientexploits)
{
self setClientCvar("r_lighttweakambient","0"); // "glowing" models
wait 0.05;
delayed += 0.05;
self setClientCvar("r_lodscale","1"); // See through bushes/trees
wait 0.05;
delayed += 0.05;
self setClientCvar("mss_Q3fs","1"); // Ambient sounds
wait 0.05;
delayed += 0.05;
self setClientCvar("r_polygonOffsetBias","-1"); // Not sure what this does
wait 0.05;
delayed += 0.05;
self setClientCvar("r_polygonOffsetScale","-1");// Same here, not a clue...
}
if(level.awe_quickfadecompassdots)
{
self setClientCvar("cg_hudCompassSoundPingFadeTime","0");
wait 0.05;
delayed += 0.05;
}
ch_count=randomInt(15); // Use a random interval between cvar forcing to create some chaos (1-15 seconds)
}
ch_count++;
// Do some unlimted voodoo magic to the ammo counters
if(level.awe_unlimitedammo)
{
self setWeaponSlotAmmo("primary", 999);
self setWeaponSlotAmmo("primaryb", 999);
if(level.awe_unlimitedammo == 2)
{
self setWeaponSlotClipAmmo("primary", 999);
self setWeaponSlotClipAmmo("primaryb", 999);
}
}
if(level.awe_unlimitedgrenades)
{
sWeapon = awe\_util::GetGrenadeType(game[myteam]);
ammo = self getammocount(sWeapon);
if(!ammo) self giveWeapon(sWeapon);
self setWeaponClipAmmo(sWeapon, 999);
}
if(level.awe_unlimitedsmokegrenades)
{
sWeapon = awe\_util::GetSmokeGrenadeType(game[myteam]);
ammo = self getammocount(sWeapon);
if(!ammo) self giveWeapon(sWeapon);
self setWeaponClipAmmo(sWeapon, 999);
}
// Calculate current speed
wait 1 - delayed; // Wait 1 seconds minus whatever we were delayed while setting cvars
newpos = self.origin;
speed = distance(oldpos,newpos);
oldpos = newpos;
if (speed > 20)
self.awe_pace = 1;
else
self.awe_pace = 0;
}
}
// Thread run on each player, every frame
EveryFrameThread()
{
if(level.awe_teamplay)
team = self.sessionteam;
else
team = self.pers["team"];
if(team == "axis")
otherteam = "allies";
else
otherteam = "axis";
self endon("awe_killthreads");
// mindist = 9999;
// maxdist = 0;
count = 0;
for(;;)
{
count++;
// Get the stance every half second
if(count>10)
{
self.awe_stance = self awe\_util::GetStance(false);
count = 0;
}
myammo = self getammocount(awe\_util::GetGrenadeType(game[team]));
otherammo = self getammocount(awe\_util::GetGrenadeType(game[otherteam]));
ammo = myammo + otherammo;
if( level.awe_tripwire && ammo>1 && self.awe_stance==2 && !isDefined(self.awe_turretmessage) && !isDefined(self.awe_tripwiremessage))
self thread awe\_tripwire::checkTripwirePlacement(team, otherteam, myammo, otherammo);
/* if(self meleeButtonPressed())
{
while(self meleeButtonPressed())
wait .05;
level thread awe\_util::DropPiano(self);
}*/
// z = self.origin[2];
wait .05;
/* dist = self.awe_spinemarker.origin[2] - z;
if(dist<mindist) mindist = dist;
if(dist>maxdist) maxdist = dist;
if(self meleebuttonpressed())
{
self iprintlnbold("Min:" + mindist + " Max:" + maxdist);
mindist = 9999;
maxdist = 0;
}*/
}
}
///////////////
// Functions //
///////////////
Cleanup()
{
CleanupKilled();
CleanupSpawned();
awe\_teamkilling::Cleanup();
awe\_welcomemessages::Cleanup();
}
CleanupKilled(sMeansOfDeath)
{
// Create/Reset variables
if(!isdefined(self.pers["awe_unknown_name"])) self.pers["awe_unknown_name"] = "Unknown Soldier";
self.awe_stance = 0;
// Remove spine marker if present
if(isdefined(self.awe_spinemarker))
{
self.awe_spinemarker unlink();
self.awe_spinemarker delete();
}
awe\_healthbar::CleanupKilled();
awe\_laserdot::CleanupKilled();
awe\_popping::CleanupKilled();
awe\_spawnprotection::CleanupKilled();
awe\_sprinting::CleanupKilled();
awe\_tripwire::CleanupKilled();
awe\_turrets::CleanupKilled(sMeansOfDeath);
}
CleanupSpawned()
{
awe\_bloodyscreen::CleanupSpawned();
}
RunOnSpawn()
{
CleanupSpawned();
// Kill any running threads
self notify("awe_killthreads");
// Limit ammo
awe\_weaponlimiting::ammoLimiting();
// Wait for threads to die
wait .05;
// Attach spinemarker, used by GetStance()
self.awe_spinemarker = spawn("script_origin",(0,0,0));
self.awe_spinemarker linkto (self, "J_Spine4",(0,0,0),(0,0,0));
// self.awe_spinemarker linkto (self, "J_Neck",(0,0,0),(0,0,0));
// Handle the Unknown Soldiers
if(self awe\_util::isUnknown())
{
// Rename Unknown Soldiers
// Get names
names = [];
count = 0;
name = awe\_util::cvardef("awe_unknown_name" + count, "", "", "", "string");
while(name != "")
{
names[names.size] = name;
count++;
name = awe\_util::cvardef("awe_unknown_name" + count, "", "", "", "string");
}
if(names.size)
{
self.pers["awe_unknown_name"] = names[randomInt(names.size)] + " " + randomInt(1000);
self setClientCvar("name", self.pers["awe_unknown_name"]);
if(level.awe_unknownrenamemsg != "none")
self iprintlnbold(level.awe_unknownrenamemsg);
}
// Make sure an unknown player can't do much damage
if(level.awe_unknownreflect)
self.pers["awe_teamkiller"] = true;
}
// Start new threads
self thread EverySecondThread();
self thread EveryFrameThread();
self awe\_coldbreath::RunOnSpawn();
self awe\_healthbar::RunOnSpawn();
self awe\_laserdot::RunOnSpawn();
self awe\_servermessages::RunOnSpawn();
self awe\_spawnprotection::RunOnSpawn();
self awe\_sprinting::RunOnSpawn();
self awe\_turrets::RunOnSpawn();
self awe\_welcomemessages::RunOnSpawn();
//*** hinzugefügt ***//
// self awe\_camping::RunOnSpawn();
//*** ENDE ***//
}
painsound()
{
if(level.awe_teamplay)
team = self.sessionteam;
else
team = self.pers["team"];
nationality = game[team];
num = randomInt(level.awe_voices[nationality]) + 1;
scream = "generic_pain_" + nationality + "_" + num; // i.e. "generic_pain_german_2"
self playSound(scream);
} |