Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Seite 2 von 10 « Erste 1234569 ... Letzte »
Ergebnis 21 bis 40 von 196
  1. Beiträge anzeigen #21 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Zitat Zitat von joey1990 Beitrag anzeigen
    1. warum funktioniert es nur bei menschen? nicht bei orks, tieren, echsenmenschen ect.
    Es gibt Zwei unterschiedliche Schadenswahrnehmungen. Wahrscheinlich rufst du deinen code zurzeit nur in B_AssessDamage auf. Es gibt auch B_MM_AssessDamage.

    Zitat Zitat von joey1990 Beitrag anzeigen
    gibt es eine funktion die zb wenn waffe angelegt ist wirkt?
    Code:
    var C_ITEM weapon; weapon = Npc_GetReadiedWeapon(other);
    if(Hlp_getInstanceID(weapon) == ITMW_WHATEVER){
    //mach was
    }

    edit:
    Deine Funktion benutzt die variablen slf und oth:
    Code:
    func void B_RagnaSpecialDamage (var C_NPC oth, var C_NPC slf)
    Später greifst du dann auf self zu:
    Code:
    Npc_ChangeAttribute (self, ATR_HITPOINTS, -1);
    und auch auf hero:
    Code:
    Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE", hero, hero, 0, 0, 0, false );
    Das solltest du vereinheitlichen und in dieser Funktion nur slf und oth verwenden.
    Geändert von Cryp18Struct (13.02.2018 um 21:13 Uhr)

  2. Beiträge anzeigen #22 Zitieren
    General Avatar von joey1990
    Registriert seit
    Aug 2008
    Ort
    Germanien/Thüringen/Hermsdorfer Kreuz
    Beiträge
    3.342
     
    joey1990 ist offline
    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    Es gibt Zwei unterschiedliche Schadenswahrnehmungen. Wahrscheinlich rufst du deinen code zurzeit nur in B_AssessDamage auf. Es gibt auch B_MM_AssessDamage.
    ja, nur da rufe ich den code auf, soll ich ihn dann in B_MM_AssessDamage auch aufrufen?


    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    Code:
    var C_ITEM weapon; weapon = Npc_GetReadiedWeapon(other);
    if(Hlp_getInstanceID(weapon) == ITMW_WHATEVER){
    //mach was
    }
    ahh danke, das versuche ich gleich mal

    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    edit:
    Deine Funktion benutzt die variablen slf und oth:
    Code:
    func void B_RagnaSpecialDamage (var C_NPC oth, var C_NPC slf)
    Später greifst du dann auf self zu:
    Code:
    Npc_ChangeAttribute (self, ATR_HITPOINTS, -1);
    und auch auf hero:
    Code:
    Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE", hero, hero, 0, 0, 0, false );
    Das solltest du vereinheitlichen und in dieser Funktion nur slf und oth verwenden.
    also wie genau müsste das dann aussehen? hero und self durch oth und slf ersetzen :/

  3. Beiträge anzeigen #23 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Zitat Zitat von joey1990 Beitrag anzeigen
    ja, nur da rufe ich den code auf, soll ich ihn dann in B_MM_AssessDamage auch aufrufen?
    Ja. B_MM_ASSESSDAMAGE ist halt die Funktion welche von nicht menschlichen NPCs benutzt wird(Tiere, Orks, ...).
    Zitat Zitat von joey1990 Beitrag anzeigen
    also wie genau müsste das dann aussehen? hero und self durch oth und slf ersetzen :/
    in B_AssessDamage ist self derjenige welcher getroffen wird und other derjenige welcher zugeschlagen hat. Wenn du dort
    Code:
    B_RagnaSpecialDamage (other, self);
    aufrufst, dann ist in der Funktion B_RagnaSpecialDamage slf derjenige welcher getroffen wird und oth ist derjenige welcher zugeschlagen hat.

    In der Funktion kannst du dann immer slf und oth verwenden, je nachdem ob ein Effekt bei dem Kerl gestartet werden soll welcher getroffen wurde oder halt bei dem welcher zugeschlagen hat.

    edit:
    Zurzeit würfelst du eine Zufallszahl zwischen 0 und 89
    Code:
    DamageRandyRagna = Hlp_Random (90);
    und fragst dann ab ob diese Zahl kleinergleich 90 ist
    Code:
    (DamageRandyRagna <= 90)
    Das könntest du dir auch sparen. Weil das immer der Fall ist.

    Willst du denn das der Spezialeffekt immer kommt wenn jemand mit dieser Waffe getroffen wird oder nur manchmal?
    Geändert von Cryp18Struct (13.02.2018 um 21:38 Uhr)

  4. Beiträge anzeigen #24 Zitieren
    General Avatar von joey1990
    Registriert seit
    Aug 2008
    Ort
    Germanien/Thüringen/Hermsdorfer Kreuz
    Beiträge
    3.342
     
    joey1990 ist offline
    also es soll immer der blitz kommen!

  5. Beiträge anzeigen #25 Zitieren
    General Avatar von joey1990
    Registriert seit
    Aug 2008
    Ort
    Germanien/Thüringen/Hermsdorfer Kreuz
    Beiträge
    3.342
     
    joey1990 ist offline
    Kannst du mir den code bitte fehlerfrei machen... ich blcike nun nicht mehr durch... geschafft ist nun das monster, orks ect blitze bekommen und die waffe nur angelegt die blitze machen!

  6. Beiträge anzeigen #26 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Naja, dann kannst du den ganzen Kram mit der Zufallszahl auch weglassen.
    edit: poste mal deinen jetzigen stand.

  7. Beiträge anzeigen #27 Zitieren
    General Avatar von joey1990
    Registriert seit
    Aug 2008
    Ort
    Germanien/Thüringen/Hermsdorfer Kreuz
    Beiträge
    3.342
     
    joey1990 ist offline
    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    Naja, dann kannst du den ganzen Kram mit der Zufallszahl auch weglassen.
    edit: poste mal deinen jetzigen stand.
    Spoiler:(zum lesen bitte Text markieren)
    Code:
    var int RagnaWaffe;
    
    func void B_RagnaSpecialDamage (var C_NPC oth, var C_NPC slf) //other ist angreifer, slf ist victim
    {
    
    
    var C_ITEM weapon; weapon = Npc_GetReadiedWeapon(other);
    if(Hlp_getInstanceID(weapon) == Itmw_uriziel_03)
    {
    RagnaWaffe=True;
    };
    
    
    
    	if (Hlp_GetInstanceID(oth) == Hlp_GetInstanceID(hero))
    	{
    		var int DamageRandyRagna;
    		DamageRandyRagna = Hlp_Random (50);
    
    	
    		if ((RagnaWaffe==True) && (DamageRandyRagna <= 50)) 
    			{
    	
    				if (slf.flags != NPC_FLAG_IMMORTAL)
    				{
    					Wld_PlayEffect("spellFX_BELIARSRAGE", slf, slf, 0, 0, 0, true );
    					B_MagicHurtNpc (self, self, 90);  
    		Wld_PlayEffect("VOB_BLUEMAGICBURN", slf, slf,  0, 0, 0, true);  // eventll. Feuerschaden so eintragen ...		Wld_PlayEffect("VOB_BLUEMAGICBURN", hero, self, 2, 20, DAM_FIRE, TRUE); (habe ich noch nicht getestet)
    		Npc_ChangeAttribute (self, ATR_HITPOINTS, 0);       			
    				};
    
    				//Ambient Pfx
    				Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE", oth, oth, 0, 0, 0, false ); 
    					B_MagicHurtNpc (self, self, 90);
    		Wld_PlayEffect("VOB_BLUEMAGICBURN", slf, slf,  0, 0, 0, true);  // eventll. Feuerschaden so eintragen ...		Wld_PlayEffect("VOB_BLUEMAGICBURN", hero, self, 2, 20, DAM_FIRE, TRUE); (habe ich noch nicht getestet)
    		Npc_ChangeAttribute (self, ATR_HITPOINTS, 0);  
    			};
    	
    		if ((RagnaWaffe==True) && (DamageRandyRagna <= 50))  // Effekt
    		{
    				//Ambient Pfx
    				Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE", hero, hero, 0, 0, 0, false ); 
    		Wld_PlayEffect("VOB_BLUEMAGICBURN", slf, slf,  0, 0, 0, true);  // eventll. Feuerschaden so eintragen ...		Wld_PlayEffect("VOB_BLUEMAGICBURN", hero, self, 2, 20, DAM_FIRE, TRUE); (habe ich noch nicht getestet)
    		Npc_ChangeAttribute (self, ATR_HITPOINTS, 0);
      
      
     
    		};
    	};
    };

  8. Beiträge anzeigen #28 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Als Grundgerüst kann ich dir das hier anbieten:
    Code:
    func void B_RagnaSpecialDamage (var C_NPC oth, var C_NPC slf) //oth ist angreifer, slf ist der getroffene. Aufruf aus B_AssessDamage und B_MM_AssessDamag mit B_RagnaSpecialDamage(other, self)
    {
    	var C_ITEM weapon; weapon = Npc_GetReadiedWeapon(oth);
    	if(Hlp_getInstanceID(weapon) == Itmw_uriziel_03)
    	{
    		if (Hlp_GetInstanceID(oth) == Hlp_GetInstanceID(hero)) // Falls auch andere NPCs diese Waffe benutzen können sollen kann diese Abfrage weg
    		{
    			if ((slf.flags & NPC_FLAG_IMMORTAL) != NPC_FLAG_IMMORTAL) // bitfield beachten, könnte ja auch unsterbliche Geister geben
    			{
    				Wld_PlayEffect("spellFX_BELIARSRAGE", slf, slf, 0, 0, 0, true );
    				Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE", slf, slf, 0, 0, 0, false );
    				B_MagicHurtNpc (oth, slf, 90);
    				Wld_PlayEffect("VOB_BLUEMAGICBURN", slf, slf,  0, 0, 0, true);  // eventll. Feuerschaden so eintragen ...		Wld_PlayEffect("VOB_BLUEMAGICBURN", hero, self, 2, 20, DAM_FIRE, TRUE); (habe ich noch nicht getestet)
    			};
    		};
    
    	};
    };
    Bei Treffer bekommen nicht unsterbliche NPCs Extraschaden und den Blitz-vom-Himmel-Effekt.
    Beim hero kommt immer ein bläulicher Effekt.

    Feuerschaden würde ich direkt der Waffe im Waffenscript geben.

    edit: fehler behoben und effekt bei hero weg
    edit2: Auch "spellFX_BELIARSRAGE_COLLIDE" bei getroffenem
    Geändert von Cryp18Struct (13.02.2018 um 22:37 Uhr)

  9. Beiträge anzeigen #29 Zitieren
    General Avatar von joey1990
    Registriert seit
    Aug 2008
    Ort
    Germanien/Thüringen/Hermsdorfer Kreuz
    Beiträge
    3.342
     
    joey1990 ist offline
    Zitat Zitat von Cryp18Struct Beitrag anzeigen

    Bei Treffer bekommen nicht unsterbliche NPCs Extraschaden und den Blitz-vom-Himmel-Effekt.
    Beim hero kommt immer ein bläulicher Effekt.
    okay danke erstmal... allerding soll nicht der hero den blauen effekt bekommen sondern der vom blitz getroffene

    Edit: kann es auch ne möglichkeit geben, solange der blaue effekt auf den gegner wirkt, das solange eine bestimmte zahl HP pro sek. abgezogen wird?

  10. Beiträge anzeigen #30 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Du könntest der Waffe Feuerschaden geben. Hier mal ein schwerer Ast welcher 70 BLUNT und 30 FIRE Schaden macht. Wenn man damit jemanden trifft brennt er.
    Code:
    INSTANCE ItMw_1h_Bau_Mace (C_Item)
    {	
    	name 				=	"Feuer-Schwerer Ast";  
    
    	mainflag 			=	ITEM_KAT_NF;
    	flags 				=	ITEM_AXE;	
    	material 			=	MAT_WOOD;
    
    	value 				=	100;
    
    	
    	damageType				=	DAM_BLUNT|DAM_FIRE;
    	damage[DAM_INDEX_BLUNT]	=	 70;
    	damage[DAM_INDEX_FIRE]	=	30;
    	
    	
    	damageTotal  		= 	100;
    	range    			=  	120;		
    
    	cond_atr[2]   		=	ATR_STRENGTH;
    	cond_value[2]  		=	10;
    	visual 				=	"ItMw_010_1h_Club_01.3DS";
    
    	description			= name;
    	TEXT[2]				= NAME_Damage;					COUNT[2]	= damageTotal;
    	TEXT[3] 			= NAME_Str_needed;				COUNT[3]	= cond_value[2];
    	TEXT[4] 			= NAME_OneHanded;
    	TEXT[5]				= NAME_Value;					COUNT[5]	= value;
    };

  11. Beiträge anzeigen #31 Zitieren
    General Avatar von joey1990
    Registriert seit
    Aug 2008
    Ort
    Germanien/Thüringen/Hermsdorfer Kreuz
    Beiträge
    3.342
     
    joey1990 ist offline
    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    Du könntest der Waffe Feuerschaden geben. Hier mal ein schwerer Ast welcher 70 BLUNT und 30 FIRE Schaden macht. Wenn man damit jemanden trifft brennt er.
    Code:
    INSTANCE ItMw_1h_Bau_Mace (C_Item)
    {	
    	name 				=	"Feuer-Schwerer Ast";  
    
    	mainflag 			=	ITEM_KAT_NF;
    	flags 				=	ITEM_AXE;	
    	material 			=	MAT_WOOD;
    
    	value 				=	100;
    
    	
    	damageType				=	DAM_BLUNT|DAM_FIRE;
    	damage[DAM_INDEX_BLUNT]	=	 70;
    	damage[DAM_INDEX_FIRE]	=	30;
    	
    	
    	damageTotal  		= 	100;
    	range    			=  	120;		
    
    	cond_atr[2]   		=	ATR_STRENGTH;
    	cond_value[2]  		=	10;
    	visual 				=	"ItMw_010_1h_Club_01.3DS";
    
    	description			= name;
    	TEXT[2]				= NAME_Damage;					COUNT[2]	= damageTotal;
    	TEXT[3] 			= NAME_Str_needed;				COUNT[3]	= cond_value[2];
    	TEXT[4] 			= NAME_OneHanded;
    	TEXT[5]				= NAME_Value;					COUNT[5]	= value;
    };

    Ja, das weis ich, das habe ich bei einigen waffen auch schon gemacht... nur hier brennen halt gegner durch ein blaues feuer.... wenn ich das jetzt in der waffe festlege, kommt ein normales feuer dazu, sieht dann nicht sonderlich schön aus.. deshalb die frage ob das möglich ist solange der VOB_BLUEMAGICBURN ist, das da sekweise leben abgezogen wird^^

  12. Beiträge anzeigen #32 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Ich habe gerade nicht viel Zeit und verweise einfach mal auf einen alten post von mir:
    https://forum.worldofplayers.de/foru...1#post25692260

  13. Beiträge anzeigen #33 Zitieren
    General Avatar von joey1990
    Registriert seit
    Aug 2008
    Ort
    Germanien/Thüringen/Hermsdorfer Kreuz
    Beiträge
    3.342
     
    joey1990 ist offline
    okay, danke... ein problem ahbe ich allerdings noch... sobald ich die waffe einmal angelegt habe, springt der effekt immernoch auf alle waffen und die fäuste über...egal ob ich dann die waffe noch im inventar habe oder nicht

  14. Beiträge anzeigen #34 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    dieses Skript
    https://forum.worldofplayers.de/foru...1#post25737762
    sollte nicht solche Symptome verursachen.

    Hast du vielleicht noch Reste deines alten codes nicht entfernt? Poste ruhig nochmal B_RagnaSpecialDamage und die beiden AssessDamage Funktionen.

  15. Beiträge anzeigen #35 Zitieren
    General Avatar von joey1990
    Registriert seit
    Aug 2008
    Ort
    Germanien/Thüringen/Hermsdorfer Kreuz
    Beiträge
    3.342
     
    joey1990 ist offline
    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    dieses Skript
    https://forum.worldofplayers.de/foru...1#post25737762
    sollte nicht solche Symptome verursachen.

    Hast du vielleicht noch Reste deines alten codes nicht entfernt? Poste ruhig nochmal B_RagnaSpecialDamage und die beiden AssessDamage Funktionen.
    Okay... ich habe das allerdings in die B_BeliarsWeaponSpecialDamage eingefügt.... was ich noch herausgefunden habe, das die beliarwaffe keinen blitz mehr macht... bzw auch den schaden nicht... hier mal der gesamte code... meine neue waffe ist rot:


    B_BeliarsWeaponSpecialDamage

    Spoiler:(zum lesen bitte Text markieren)
    Code:
    var int RavenBlitz;
    
    func void B_BeliarsWeaponSpecialDamage (var C_NPC oth, var C_NPC slf) //other ist angreifer, slf ist victim
    {
    	if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Raven)) //HACK: egal, welche Waffe Raven hat
    	{
    		//Ambient Pfx
    		Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE", slf, slf, 0, 0, 0, FALSE );
    			
    			if (RavenBlitz <= 0)
    			{
    				Wld_PlayEffect("spellFX_BELIARSRAGE",  oth, oth, 0, 0, 0, FALSE );
    								
    				B_MagicHurtNpc (slf, oth, 50); //Extraschaden von Raven!
    				
    				RavenBlitz += 1;
    			}
    			else if (RavenBlitz >= 3) 
    			{
    				var int RavenRandy; RavenRandy = Hlp_Random(3);
    				if (RavenRandy <= 50)
    				{
    					RavenBlitz = 0; //wieder von vorne
    				};
    			}
    			else
    			{
    				RavenBlitz += 1;
    			};
    			
    	}
    	else if (Hlp_GetInstanceID(oth) == Hlp_GetInstanceID(hero))
    	{
    		var int DamageRandy;
    		DamageRandy = Hlp_Random (100);
    
    		if (C_ScHasReadiedBeliarsWeapon())
    		&& (DamageRandy <= BeliarDamageChance) 
    			{
    				if (slf.aivar[AIV_MM_REAL_ID] == ID_DRAGON_UNDEAD) //beim untoten Drachen nimmt der SC Schaden
    				{
    					Wld_PlayEffect("spellFX_BELIARSRAGE", oth, oth, 0, 0, 0, FALSE );
    					B_MagicHurtNpc (slf, oth, 100); 
    				}
    				else if (slf.flags != NPC_FLAG_IMMORTAL)
    				{
    					Wld_PlayEffect("spellFX_BELIARSRAGE", slf, slf, 0, 0, 0, FALSE );
    					B_MagicHurtNpc (oth, slf, 100);  			
    				};
    				//Ambient Pfx
    				Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE", hero, hero, 0, 0, 0, FALSE );
    			};
    	
    		if (C_ScHasReadiedBeliarsWeapon())
    		&& (DamageRandy <= 100) // Effekt
    		{
    				//Ambient Pfx
    				Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE", hero, hero, 0, 0, 0, FALSE );
    		};
    	};
    };
    
    var int RagnaWaffe;
    
    func void B_RagnaSpecialDamage (var C_NPC oth, var C_NPC slf) //oth ist angreifer, slf ist der getroffene. Aufruf aus B_AssessDamage und B_MM_AssessDamag mit B_RagnaSpecialDamage(other, self)
    {
    	var C_ITEM weapon; weapon = Npc_GetReadiedWeapon(oth);
    	if(Hlp_getInstanceID(weapon) == Itmw_uriziel_03)
    	{
    		if (Hlp_GetInstanceID(oth) == Hlp_GetInstanceID(hero)) // Falls auch andere NPCs diese Waffe benutzen können sollen kann diese Abfrage weg
    		{
    			if ((slf.flags & NPC_FLAG_IMMORTAL) != NPC_FLAG_IMMORTAL) // bitfield beachten, könnte ja auch unsterbliche Geister geben
    			{
    				Wld_PlayEffect("spellFX_BELIARSRAGE", slf, slf, 0, 0, 0, true );
    				Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE", slf, slf, 0, 0, 0, false );
    				B_MagicHurtNpc (oth, slf, 100);
    				Wld_PlayEffect("VOB_BLUEMAGICBURN", slf, slf,  0, 0, 0, true);  // eventll. Feuerschaden so eintragen ...		Wld_PlayEffect("VOB_BLUEMAGICBURN", hero, self, 2, 20, DAM_FIRE, TRUE); (habe ich noch nicht getestet)
                                    B_MagicHurtNpc (oth, slf, 20);
    			};
    		};
    
    	};
    };


    B_AssessDamage

    Spoiler:(zum lesen bitte Text markieren)
    Code:
    // ****************************************************************
    // B_AssessDamage
    // --------------
    // wird durchWahrnehmung PERC_AssessDamage ÜBERALL her aufgerufen
    // (also auch aus ZS_Attack, AR kann sich allerdings NICHT ändern!)
    // ****************************************************************
    
    func void B_AssessDamage ()
    {
    	var C_NPC Quarho; Quarho = Hlp_GetNpc (NONE_ADDON_111_Quarhodron);
    	var C_NPC Rhadem; Rhadem = Hlp_GetNpc (NONE_ADDON_112_Rhademes);
    
    	if	((Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Quarho)))
    	||	((Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Rhadem)))
    	{
    		B_GhostSpecialDamage (other, self);
    		return;
    	};
    	
    //***********************************************
    
    
    // Ragna spezial Waffe
    
    	B_BeliarsWeaponSpecialDamage (other, self);
    	B_RagnaSpecialDamage (other, self);
    	B_RagnaSpecialDamage2 (other, self);
    	
    //***********************************************
    
    var C_ITEM ma_pfeil; ma_pfeil = Npc_GetReadiedWeapon(other);
    	if (ma_pfeil.munition==ItRw_Addon_MagicArrow)
    	|| (ma_pfeil.munition==ItRw_Addon_Magicbolt)
    	{
    		self.Aivar[AIV_MAGIEPFEIL] = True;                                    // Markiert das Ziel
    		Wld_PlayEffect("VOB_BLUEMAGICBURN", self, self,  0, 0, 0, False);  // eventll. Feuerschaden so eintragen ...		Wld_PlayEffect("VOB_BLUEMAGICBURN", hero, self, 2, 20, DAM_FIRE, TRUE); (habe ich noch nicht getestet)
    		Npc_ChangeAttribute (self, ATR_HITPOINTS, -1);                     // eventuell zusätzlichen Feuerschaden einfügen mit -HP, das funktioniert auf jeden Fall
    		self.Aivar[AIV_MAGIEPFEIL] = false;                                   // Zielmarkierung aufheben, wichtig sonst wird endlos ein Feuereffekt nach dem anderen abgeschossen, was zum Absturz des Games führt
    	};
    
    	var C_ITEM br_pfeil; br_pfeil = Npc_GetReadiedWeapon(other);
    	if (br_pfeil.munition==ItRw_ADDON_FireArrow)
            || (br_pfeil.munition==ItRw_ADDON_Firebolt)
            || (br_pfeil.munition==ItRw_DemonArrow)
    	{
    		self.Aivar[AIV_BRANDPFEIL] = True;                       // Markiert das Ziel
    		Wld_PlayEffect("Vob_Burn", self, self,  0, 0, 0, False);  // eventll. Feuerschaden so eintragen ...		Wld_PlayEffect("Vob_Burn", hero, self, 2, 20, DAM_FIRE, TRUE); (habe ich noch nicht getestet)
    		Npc_ChangeAttribute (self, ATR_HITPOINTS, -1);        // eventuell zusätzlichen Feuerschaden einfügen mit -HP, das funktioniert auf jeden Fall
    		self.Aivar[AIV_BRANDPFEIL] = false;                      // Zielmarkierung aufheben, wichtig sonst wird endlos ein Feuereffekt nach dem anderen abgeschossen, was zum Absturz des Games führt
    	};
    
    	B_BeliarsWeaponSpecialDamage (other, self);
    
    	//B_MM_SpecialAttack (other);
    
            //AIVARS
    	
    	if (self.aivar[AIV_ArenaFight] == AF_AFTER)
    	{
    		self.aivar[AIV_ArenaFight] = AF_AFTER_PLUS_DAMAGE;
    	};
    	
    	if self.aivar [AIV_EnemyOverride] == TRUE
    	{
    		var C_NPC RAV; RAV = Hlp_GetNpc(BDT_1090_Addon_Raven);
    		
    		if (Hlp_GetInstanceID(self) == (Hlp_GetInstanceID(RAV)))
    		{
    			self.aivar [AIV_EnemyOverride] =	FALSE;
    		};
    	};
    	// ------ Wenn NSC im ZS_Attack ------
    	if (Npc_IsInState(self,ZS_Attack))
    	{
    		// EXIT IF...
    		
    		// ------ Freunde ignorieren Treffer vom Spieler im Kampf ------
    		if (Npc_IsPlayer (other))
    		&& (self.npctype == NPCTYPE_FRIEND)
    		{
    			return;
    		};
    		
    		// ------ Partymember ignorieren Treffer vom Spieler im Kampf ------
    		if (Npc_IsPlayer (other))
    		&& (self.aivar[AIV_PARTYMEMBER] == TRUE)
    		{
    			return;
    		};
    		if (self.aivar[AIV_PARTYMEMBER] == TRUE)
    		&&  (other.aivar[AIV_PARTYMEMBER] == TRUE)
    		{
    			return;
    		};
    		// FUNC
    		
    		// ------ Wenn ich von jemand ANDEREM getroffen werde ------
    		if (Hlp_GetInstanceID (other) != self.aivar[AIV_LASTTARGET])
    		{
    			// ------ NEUER Angreifer ist NPC ODER zum zweiten MAl (von Hero) getroffen ------
    			if (self.aivar[AIV_HitByOtherNpc] == Hlp_GetInstanceID (other))
    			|| (Hlp_GetInstanceID(other) != Hlp_GetInstanceID(hero)) 
    			{
    				Npc_SetTarget (self, other); //Ziel wechseln
    			}
    			else //NEUER Angreifer ist hero und trifft zum ersten mal
    			{
    				self.aivar[AIV_HitByOtherNpc] = Hlp_GetInstanceID (other); //EIN Freischlag
    			};
    		};
    			
    		return;
    	};
    	
    	
    	// EXIT IF
    	
    	// ------ NSC ist ENEMY ----- 
    	if (B_AssessEnemy())
    	{
    		return;
    	};
    	
    	// ------ Egill/Enim NSCs (Story-Angreifer) ------
    	if (!Npc_IsPlayer(other))
    	&& (other.aivar[AIV_ATTACKREASON] == AR_NONE)
    	{
    		B_Attack (self, other, AR_NONE, 0);		//angreifen oder fliehen
    		return;
    	};
    		
    	// ------ Spieler hat mit NK-Waffe angegriffen ------
    	if (Npc_IsInFightMode (other, FMODE_MELEE))
    	|| (Npc_IsInFightMode (other, FMODE_FIST))
    	|| (Npc_IsInFightMode (other, FMODE_NONE)) //oder Waffe wieder weggesteckt (nicht ermittelbar)
    	{
    		// ------ NSC ist freundlich ODER npctype_friend ------
    		if (Npc_GetAttitude (self, other) == ATT_FRIENDLY)
    		|| ( (self.npctype == NPCTYPE_FRIEND) && Npc_IsPlayer(other) )
    		{
    			// ------- nur wenn ich zum ERSTEN Mal geschlagen werde -------
    			if (!Npc_IsInState(self, ZS_ReactToDamage))
    			{
    				Npc_ClearAIQueue	(self);
    				B_ClearPerceptions	(self);							//schaltet alle Wahrnehmungen ab - so kann keine später priorisierte diesen Stateaufruf verhindern (s. z.B. AssessFightSound + AssessDamage)
    				AI_StartState		(self, ZS_ReactToDamage, 0, "");
    				return;												//im unterern B_Attack wird ein ClearQueue aufgerufen, der den AI_StartState direkt wieder aus der queue löscht
    																	// - sicherheithalber bei allen AI_StartState-Aufrufen return anfügen
    			};
    		};
    	};	
    	
    	// FUNC
    	
    	B_Attack (self, other, AR_ReactToDamage, 0);		//angreifen oder fliehen
    	return;
    };




    B_MM_AssessDamage

    Spoiler:(zum lesen bitte Text markieren)
    Code:
    // *****************
    // B_MM_AssessDamage
    // *****************
    
    func void B_MM_AssessDamage ()
    {
    	self.aivar[AIV_MM_PRIORITY] = PRIO_ATTACK;
    
            var C_ITEM ma_pfeil; ma_pfeil = Npc_GetReadiedWeapon(other);
    	if (ma_pfeil.munition==ItRw_Addon_MagicArrow)
            || (ma_pfeil.munition==ItRw_Addon_Magicbolt)
    	{
    		self.Aivar[AIV_MAGIEPFEIL] = True;                                    // Markiert das Ziel
    		Wld_PlayEffect("VOB_BLUEMAGICBURN", self, self,  0, 0, 0, False);  // eventll. Feuerschaden so eintragen ...		Wld_PlayEffect("VOB_BLUEMAGICBURN", hero, self, 2, 20, DAM_FIRE, TRUE); (habe ich noch nicht getestet)
    		Npc_ChangeAttribute (self, ATR_HITPOINTS, -1);                     // eventuell zusätzlichen Feuerschaden einfügen mit -HP, das funktioniert auf jeden Fall
    		self.Aivar[AIV_MAGIEPFEIL] = false;                                   // Zielmarkierung aufheben, wichtig sonst wird endlos ein Feuereffekt nach dem anderen abgeschossen, was zum Absturz des Games führt
    	};
    
    	var C_ITEM br_pfeil; br_pfeil = Npc_GetReadiedWeapon(other);
    	if (br_pfeil.munition==ItRw_ADDON_FireArrow)
            || (br_pfeil.munition==ItRw_ADDON_Firebolt)
            || (br_pfeil.munition==muni)
            || (br_pfeil.munition==ItRw_DemonArrow)
    	{
    		self.Aivar[AIV_BRANDPFEIL] = True;                       // Markiert das Ziel
    		Wld_PlayEffect("Vob_Burn", self, self,  0, 0, 0, False);  // eventll. Feuerschaden so eintragen ...		Wld_PlayEffect("Vob_Burn", hero, self, 2, 20, DAM_FIRE, TRUE); (habe ich noch nicht getestet)
    		Npc_ChangeAttribute (self, ATR_HITPOINTS, -1);        // eventuell zusätzlichen Feuerschaden einfügen mit -HP, das funktioniert auf jeden Fall
    		self.Aivar[AIV_BRANDPFEIL] = false;                      // Zielmarkierung aufheben, wichtig sonst wird endlos ein Feuereffekt nach dem anderen abgeschossen, was zum Absturz des Games führt
    	};
    
    	B_BeliarsWeaponSpecialDamage (other, self);
    	B_RagnaSpecialDamage (other, self);
    	B_RagnaSpecialDamage2 (other, self);
    
    
    
    	// EXIT IF
    	
    	// ------ SONDERFALL: Magic Golem ------ 				//JUUUUNGEEEEE!!!
    	if (Npc_HasItems (other, Holy_Hammer_MIS) > 0)
    	{
    		var C_NPC MagGol; MagGol = Hlp_GetNpc(MagicGolem);
    		Npc_GetInvItem(other, Holy_Hammer_MIS); //befüllt 'item'
    		var C_ITEM OthWeap; OthWeap = Npc_GetReadiedWeapon(other);
    		
    		if (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(MagGol))
    		&& (Hlp_GetInstanceID(OthWeap) == Hlp_GetInstanceID(item))
    		{
    			Npc_ChangeAttribute (self, ATR_HITPOINTS, -1000);
    			return;
    		};
    	};		
    	
    	if (self.guild == GIL_STONEGUARDIAN)
    	&& (self.aivar[AIV_EnemyOverride] == TRUE)
    	{
    		if (self.aivar[AIV_MM_REAL_ID] != ID_Masterguardian)
    		{
    			B_AWAKE_STONEGUARDIAN (self);
    		}
    		else
    		{
    			Npc_ChangeAttribute (self, ATR_HITPOINTS, self.attribute	[ATR_HITPOINTS_MAX]);
    		};		
    		
    	};	
    	
    
    	
    	// ----- wenn Monster Beute von Angreifer ------
    	if (C_PredatorFoundPrey(other,self))
    	{
    		Npc_ClearAIQueue	(self);
    		Npc_SetTarget 		(self, other);
    		B_ClearPerceptions	(self);
    		AI_StartState 		(self, ZS_MM_Flee, 0, "");	
    		return;
    	};
    	
    	if (self.aivar[AIV_MM_REAL_ID]	== 	ID_Swarm)
    	{
    		Npc_ChangeAttribute (other, ATR_HITPOINTS, -15);
    	};
    
    	// ------ wenn Monster im ZS_Attack ------
    	if (Npc_IsInState(self,ZS_MM_Attack))
    	{
    		// EXIT IF...
    	
    		// ------ Partymember ignorieren Treffer vom Spieler im Kampf ------
    		if (Npc_IsPlayer (other))
    		&& (self.aivar[AIV_PARTYMEMBER] == TRUE)
    		{
    			return;
    		};
    		
    		//B_MM_SpecialAttack (self);
    		// ------ HACK: von Skelettmagier getroffene Skelette ignorieren Schaden ------
    		if (self.aivar[AIV_MM_REAL_ID] == ID_SKELETON)
    		&& (other.aivar[AIV_MM_REAL_ID] == ID_SKELETON_MAGE)
    		{
    			return;
    		};
    		
    		// FUNC
    		
    		// ------ Wenn ich von jemand ANDEREM getroffen werde ------
    		if (Hlp_GetInstanceID (other) != self.aivar[AIV_LASTTARGET])
    		{
    			if (self.aivar[AIV_HitByOtherNpc] == Hlp_GetInstanceID (other))
    			{
    				Npc_SetTarget (self, other); //Ziel wechseln, wenn zum zweiten Mal getroffen
    			}
    			else
    			{
    				self.aivar[AIV_HitByOtherNpc] = Hlp_GetInstanceID (other); //EIN Freischlag
    			};
    		};
    			
    		return;
    	};
    	
    	// FUNC
    	
    	Npc_ClearAIQueue	(self);
    	Npc_SetTarget		(self, other);
    	B_ClearPerceptions	(self);
    	AI_StartState		(self, ZS_MM_Attack, 0, "");
    	return;
    };

  16. Beiträge anzeigen #36 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Wie sieht denn B_RagnaSpecialDamage2 aus?

  17. Beiträge anzeigen #37 Zitieren
    General Avatar von joey1990
    Registriert seit
    Aug 2008
    Ort
    Germanien/Thüringen/Hermsdorfer Kreuz
    Beiträge
    3.342
     
    joey1990 ist offline
    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    Wie sieht denn B_RagnaSpecialDamage2 aus?
    mit dem effekt nach dem ablegen? ... habe das jetzt nochmal getestet und es funktioniert.....

    also ist alles okay... ausser das die klaue beliars den extraschaden/blitz nicht mehr macht

  18. Beiträge anzeigen #38 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Du rufst die Funktion B_RagnaSpecialDamage2 auf. Zeig mal bitte was da gemacht wird.

    Wegen Klaue Beliars schau mal welchen Wert BeliarDamageChance hat:
    Code:
    func void B_BeliarsWeaponSpecialDamage (var C_NPC oth, var C_NPC slf) //other ist angreifer, slf ist victim
    {
    	print(IntToString(BeliarDamageChance)); // zum Testen diese Zeile hier einfügen
    	if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Raven)) //HACK: egal, welche Waffe Raven hat
    	{
    [rest der Funktion normal lassen]
    Wenn du dir die Klaue zum Testen einfach ercheatest wird der Wert wahrscheinlich nie gesetzt. Das passiert normalerweise in B_UpgrateBeliarsWeapon() wenn man am Schrein betet.

  19. Beiträge anzeigen #39 Zitieren
    General Avatar von joey1990
    Registriert seit
    Aug 2008
    Ort
    Germanien/Thüringen/Hermsdorfer Kreuz
    Beiträge
    3.342
     
    joey1990 ist offline
    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    Du rufst die Funktion B_RagnaSpecialDamage2 auf. Zeig mal bitte was da gemacht wird.
    Da fängt der gegner nur feuer mit einen kleinem schaden....
    wenn ich nämlich feuerschaden im waffenskript mache müsste ich den auf 250 setzen, damit auch jeder gegner feuer fängt (wegen dem rüstungsschutz der gegener) da wäre die waffe zu mächtig....! es sollen quasi die gegner nur feuer fangen, ohne großen schaden und egal wie hoch deren feuerschutz ist! das funktioniert aber auch soweit ich getestet habe ganz gut.

    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    Wegen Klaue Beliars schau mal welchen Wert BeliarDamageChance hat:
    Code:
    func void B_BeliarsWeaponSpecialDamage (var C_NPC oth, var C_NPC slf) //other ist angreifer, slf ist victim
    {
    	print(IntToString(BeliarDamageChance)); // zum Testen diese Zeile hier einfügen
    	if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Raven)) //HACK: egal, welche Waffe Raven hat
    	{
    [rest der Funktion normal lassen]
    Wenn du dir die Klaue zum Testen einfach ercheatest wird der Wert wahrscheinlich nie gesetzt. Das passiert normalerweise in B_UpgrateBeliarsWeapon() wenn man am Schrein betet.
    Ja, ich habe sie nur hergecheatet... sollte ich sie mal zum testen als rohwaffe cheaten und weihen ?

    EDIT: okay, es lag am cheaten^^
    Geändert von joey1990 (14.02.2018 um 11:44 Uhr)

  20. Beiträge anzeigen #40 Zitieren
    General Avatar von joey1990
    Registriert seit
    Aug 2008
    Ort
    Germanien/Thüringen/Hermsdorfer Kreuz
    Beiträge
    3.342
     
    joey1990 ist offline
    Ich habe noch eine frage zu diesem code...

    Spoiler:(zum lesen bitte Text markieren)
    Code:
    			AI_PlayAni (self, "S_FIRE_VICTIM");
    			Wld_PlayEffect("VOB_MAGICBURN",  slf, slf, 0, 0, 0, TRUE );
                                    B_MagicHurtNpc (oth, slf, 10);


    lässt ja die gegner in flammenaufgehen und zappeln ....
    wie bekomme ich das hin, das sie ca 3 sek zappeln?


    sieht der code so aus zappeln sie garnicht und brennen nur :/


    Spoiler:(zum lesen bitte Text markieren)
    Code:
    			AI_PlayAni (self, "S_FIRE_VICTIM");
    			Wld_PlayEffect("VOB_MAGICBURN",  slf, slf, 0, 0, 0, TRUE );
                                    B_MagicHurtNpc (oth, slf, 10);
    			NPC_StopAni (self,"S_FIRE_VICTIM");

Seite 2 von 10 « Erste 1234569 ... Letzte »

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide