Admiral Mod - Spawnprotection

Nightwing
Hi

Mag mir einer bei der Spawnprotection helfen??

Ich bekomm das irgendwie nicht hin.

Der geschützte Player soll zwar seine Waffe behalten, aber für die Dauer der Protection keinen Damage verursachen.

Hier der Code:

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:
activateSpawnHealth() {

	if(game["am_player_spawn_protect"] != 1) return;


    self endon("disconnect");
	self endon("killed_player");

	
	// * Wenn schon Protection, dann nicht nochmal *
    if(isDefined(self.spawnProtection)) return;
	self.spawnProtection = true;
	
	
	if(game["am_error_logfile"] == 1) logPrint("activateSpawnHealth\n");
	
	
	self iprintln(&"AM_MP_YOU_ARE_PROTECTED"); 
	
    
    wait 1; // 1 Sekunde warten, bis die HeadIcons eingestellt sind und man sie bearbeiten kann!
    
    

    protect_time = game["am_player_spawn_protect_time"];   
    wait 0.1;
    
    self deletePlayerHudElementByName("spawnHealth");
 	self createPlayerHudElement("spawnHealth", 120,420,"center","middle","fullscreen","fullscreen",false,"gfx/hud/hud@health_cross.tga",24,24,1,0,1,1,1);
    wait 1;

    
    self fadeOverPlayerHudElement("spawnHealth",0.05,0.8);
    self scaleOverPlayerHudElement("spawnHealth",0.1, 64, 64);    
    self scaleOverPlayerHudElement("spawnHealth",0.05, 34, 34);
    
    
    
    startpos = self.origin;    
    
    // * Protection Zeit *
    for(i=0;i<((protect_time-1)*2);i++) {        
        
        // * Abfragen ob Spieler aus dem Bereich laeuft *
        if(distance(startpos, self.origin) > 80) break;     
        
        wait 0.5;   // * 2 Mal pro Sekunden abfragen *  
    }



Danke für Eure Hilfe

ToM
{LSB} Squall69
Hallo Tom,

Hab mir das Script nicht wirklich angesehen aber auf die Schnelle würd ich sagen das du etwas im PlayerDamge Teil einbaun musst.
Nightwing
Hi Markus

Danke für den Tip, den PlayerDamage werd ich mir nachher zu Gemüte führen Augenzwinkern

ToM

EDIT:

Hab in der Funktion PlayerDamage in der Datei admiral_mod_player.gsc folgenden Code eingefügt:

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:
PlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime) {
		
	
	if(game["am_error_logfile"] == 1) logPrint("PlayerDamage\n");

//*** geändert für HELLZone AM **///

    	if(isPlayer(eAttacker) && self.spawnprotection == true || self.spawnprotection == true) return;

	
//*** ENDE für HELLZone AM **///
	
	self endon("disconnect");

	
	/*
	iprintln(iDamage);
	iprintln(sMeansOfDeath);
	iprintln(sWeapon);
	iprintln(vPoint);	
	*/
	
	if(isDefined(sWeapon) && (sWeapon == "gas_grenade_mp" || sWeapon == "fire_grenade_mp")) {
	
		if(isDefined(eAttacker) && isPlayer(eAttacker) && isDefined(eAttacker.clientid) && isDefined(eAttacker.pers["team"])) {
	
			level thread maps\mp\gametypes\_admiral_mod_weapons_class::CreateWeaponSpecialFX(eAttacker.clientid, eAttacker.pers["team"], iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir);
			return;
		}
	}



Müsste funktionieren.
Nightwing
auch bei dem Versuch, wie oben beschrieben, tut es nicht.

Ich hab nun die Lösung, hier der Code:

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:
activateSpawnHealth() {

	if(game["am_player_spawn_protect"] != 1) return;


    self endon("disconnect");
	self endon("killed_player");

	
	// * Wenn schon Protection, dann nicht nochmal *
    if(isDefined(self.spawnProtection)) return;
	self.spawnProtection = true;
	
	
	if(game["am_error_logfile"] == 1) logPrint("activateSpawnHealth\n");
	
	
	self iprintln(&"AM_MP_YOU_ARE_PROTECTED"); 
	
    
//    wait 1; // 1 Sekunde warten, bis die HeadIcons eingestellt sind und man sie bearbeiten kann!
    
    

    protect_time = game["am_player_spawn_protect_time"];   
    wait 0.1;
/*    
    self deletePlayerHudElementByName("spawnHealth");
 	self createPlayerHudElement("spawnHealth", 120,420,"center","middle","fullscreen","fullscreen",false,"gfx/hud/hud@health_cross.tga",24,24,1,0,1,1,1);
    wait 1;

    
    self fadeOverPlayerHudElement("spawnHealth",0.05,0.8);
    self scaleOverPlayerHudElement("spawnHealth",0.1, 64, 64);    
    self scaleOverPlayerHudElement("spawnHealth",0.05, 34, 34);
*/    
    
    
    startpos = self.origin;    
    
    // * Protection Zeit *
    for(i=0;i<((protect_time-1)*2);i++) {        
        
        // * Abfragen ob Spieler aus dem Bereich laeuft *
        if(distance(startpos, self.origin) > 80) break;     
        
	// * Wenn Spieler attackiert, dann kein Schutz mehr *
	if( self attackButtonPressed() ) break;  
		
        wait 0.5;   // * 2 Mal pro Sekunden abfragen *  
		
	}
     
/*    
    // * Fade *
    self fadeOverPlayerHudElement("spawnHealth",1,0);
    self scaleOverPlayerHudElement("spawnHealth",0.5, 10, 10);
      
   
   	self deletePlayerHudElementByName("spawnHealth");


   	
    
    wait 1;
*/        
    self.spawnProtection = undefined;

	self iprintln(&"AM_MP_YOU_ARE_NOT_PROTECTED");    
	
}



Feuert der geschützte Spieler die Waffe ab, endet seine Protection

ToM

PS: Das dusselige Health Cross über der Birne hab ich gleich mal entfernt grosses Grinsen