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

 

Ergebnis 1 bis 4 von 4
  1. Beiträge anzeigen #1 Zitieren
    Waldläufer
    Registriert seit
    Nov 2017
    Ort
    Düsseldorf, NRW, Deutschland
    Beiträge
    123
     
    Vikiller94 ist offline

    [Gothic 2 Script] NPC steht an der Stelle oder macht 2 Animationen an derselben Stelle!!!

    Hallo an alle.

    Ich habe ein großes Problem.

    Mein NPC auf gut deutsch spackt einfach rum. Ich habe alles richtig im Spacer eingestellt:

    - Waynet zeigt alle Verbindungen (bei Freepoints trennt sich die Verbindung (ist auch richtig))
    - Freepoints und Waypoints habe ich alle großgeschrieben
    - Freepoints habe ich mit STAND oder PRAY gekennzeichnet, wie FP_STAND_...
    - Ab und zu folgt er der Route aber ab und zu bleibt er stehen (2 mal Gothic 2 gestartet und das erste Mal geht er nach den Waypoints richtig, das zweite Mal blieb er stehen)

    Wenn ich über Marvin Mode (bmarvinb) die Zeit einstelle, wird er automatisch zu der richtigen Stelle teleportiert aber dennoch wenn die Zeit um ist, bleibt er stehen oder macht die nächste Aktion an dem selben Platz weiter, obwohl die Aktion woanders durchgeführt werden soll.

    NPC-Script:
    __________





    INSTANCE NONE_90000_Geralt (Npc_Default)
    {
    // ------ NSC ------
    name = "Geralt";
    guild = GIL_NONE;
    id = 90000;
    voice = 14;
    flags = 0; //NPC_FLAG_IMMORTAL oder 0
    npctype = NPCTYPE_MAIN;

    // ------ Attribute ------
    B_SetAttributesToChapter (self, 1); //setzt Attribute und LEVEL entsprechend dem angegebenen Kapitel (1-6)

    attribute [ATR_STRENGTH] = 200;
    attribute [ATR_DEXTERITY] = 200;
    attribute [ATR_HITPOINTS] = 100;
    attribute [ATR_HITPOINTS_MAX] = 100;
    attribute [ATR_MANA] = 100;
    attribute [ATR_MANA_MAX] = 100;

    // ------ Kampf-Taktik ------
    fight_tactic = FAI_HUMAN_MASTER; // MASTER / STRONG / COWARD

    // ------ visuals ------ //Muss NACH Attributen kommen, weil in B_SetNpcVisual die Breite abh. v. STR skaliert wird
    B_SetNpcVisual (self, MALE, "Hum_Head_Psionic", Face_N_Xardas, BodyTex_N, ITAR_CorAngar);
    Mdl_SetModelFatness (self, 1);
    Mdl_ApplyOverlayMds (self, "Humans_Militia.mds"); // Tired / Militia / Mage / Arrogance / Relaxed
    Mdl_ApplyOverlayMds (self, "humans_1hST2.mds");




    // ------ Equippte Waffen ------ //Munition wird automatisch generiert, darf aber angegeben werden
    EquipItem (self, ItMw_1H_Blessed_03);
    EquipItem (self, ItRw_Crossbow_H_02);

    // ------ Inventory ------

    CreateInvItems (self, ItPo_Perm_Health, 10);
    CreateInvItems (self, ITAR_DJG_H, 1);
    CreateInvItems (self, ItMi_Gold, 2000);


    // ------ NSC-relevante Talente vergeben ------
    B_GiveNpcTalents (self);


    B_SetFightSkills (self, 60); //Grenzen für Talent-Level liegen bei 30 und 60
    Npc_SetTalentSkill (self, NPC_TALENT_1H, 70);
    Npc_SetTalentSkill (self, NPC_TALENT_2H, 70);
    Npc_SetTalentSkill (self, NPC_TALENT_CROSSBOW, 80);

    // ------ TA anmelden ------
    daily_routine = Rtn_Start_90000;
    };


    FUNC VOID Rtn_Start_90000 ()
    {
    TA_SMOKE_JOINT (09,00,12,00,"WP_GERALT_SMOKEJOINT_04");
    TA_PRACTICE_SWORD (12,00,15,00,"WP_GERALT_TRAINWAY03_07");
    TA_PRAY_INNOS (15,00,19,00,"WP_GERALT_PRAYWAY04_11");
    TA_STAND_ARMSCROSSED (19,00,21,00,"WP_GERALT_ARMSCROSSEDWAY03_14");
    TA_SLEEP (21,00,09,00,"WP_GERALT_GOBEDWAY05_19");
    };



    Danke im Voraus.

    Vikiller94

  2. Beiträge anzeigen #2 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Zitat Zitat von Vikiller94 Beitrag anzeigen
    Code:
    	Npc_SetTalentSkill	(self, NPC_TALENT_1H, 70);
    	Npc_SetTalentSkill	(self, NPC_TALENT_2H, 70);
    	Npc_SetTalentSkill	(self, NPC_TALENT_CROSSBOW, 80);
    Das ist immer noch falsch.
    https://forum.worldofplayers.de/foru...1#post25796930

    Was das NPC Verhalten angeht:
    1. Hast du zusätzliche waypoint in dem Bereich welche nicht mit dem waynet verbunden sind? solche "losen" waypoint machen NPC Navigation kaputt (man sieht die nur im Spacer, nicht ingame mit toggle waynet).
    2. Sind die waypoints alle sehr nah beieinander?
    Die meißten TA Zustände haben so einen Block:
    Code:
    if (Npc_GetDistToWP (self,self.wp) > TA_DIST_SELFWP_MAX) 
    	{
    		AI_GotoWP	(self, self.wp);
    	};
    Falls die waypoint alle sehr nah zusammen sind geht er dann nicht zum wp weil er denkt er ist schon nah genug dran.

    Mach mal bitte im Spacer einen screenshot von dem Bereich wo waypoints und Verbindungslinien zu sehen sind.

    Wenn du im MARVIN mode den NPC fokussierst und J drückst wird dir sein Tagesablauf angezeigt. Steht da alles richtig so wie im Skript?

    Gewöhn dir bitte an code in posts in solch einen block zu setzen:[code]Dein Skript hier[/code]

    edit:
    TA_PRAY_INNOS wird nicht an einem freepoint gemacht sondern an einem mob (benutzbarer Schrein). Wenn er an einem PRAY freepoint beten soll kannst du TA_Pray_Innos_FP benutzen.
    Geändert von Cryp18Struct (26.04.2018 um 17:40 Uhr)

  3. Beiträge anzeigen #3 Zitieren
    Waldläufer
    Registriert seit
    Nov 2017
    Ort
    Düsseldorf, NRW, Deutschland
    Beiträge
    123
     
    Vikiller94 ist offline
    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    Das ist immer noch falsch.
    https://forum.worldofplayers.de/foru...1#post25796930

    Was das NPC Verhalten angeht:
    1. Hast du zusätzliche waypoint in dem Bereich welche nicht mit dem waynet verbunden sind? solche "losen" waypoint machen NPC Navigation kaputt (man sieht die nur im Spacer, nicht ingame mit toggle waynet).
    2. Sind die waypoints alle sehr nah beieinander?
    Die meißten TA Zustände haben so einen Block:
    Code:
    if (Npc_GetDistToWP (self,self.wp) > TA_DIST_SELFWP_MAX) 
        {
            AI_GotoWP    (self, self.wp);
        };
    Falls die waypoint alle sehr nah zusammen sind geht er dann nicht zum wp weil er denkt er ist schon nah genug dran.

    Mach mal bitte im Spacer einen screenshot von dem Bereich wo waypoints und Verbindungslinien zu sehen sind.

    Wenn du im MARVIN mode den NPC fokussierst und J drückst wird dir sein Tagesablauf angezeigt. Steht da alles richtig so wie im Skript?

    Gewöhn dir bitte an code in posts in solch einen block zu setzen:[code]Dein Skript hier[/code]

    edit:
    TA_PRAY_INNOS wird nicht an einem freepoint gemacht sondern an einem mob (benutzbarer Schrein). Wenn er an einem PRAY freepoint beten soll kannst du TA_Pray_Innos_FP benutzen.
    Hallo mein Bester. Tut mir Leid, dass ich lange nicht geantwortet habe. Gestern hatte ich ein harten Tag wegen Schule. Erstmal vielen vielen Dank für deine Hilfe. Die Zeit ist das Problem. Nach einer gewissen Zeit fängt das Spiel an zu hängen und darüber hinaus erfüllt der Held seine Pflichten nicht. Das ist echt komisch. Der bleibt am einen Punkt stehen und macht alle Aufgaben an dieser einen Stelle. Die Waypoints habe ich auseinander gemacht dennoch gleiches Problem. Die Waypoints sind alle verbunden!
    Geändert von Vikiller94 (27.04.2018 um 21:06 Uhr)

  4. Beiträge anzeigen #4 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    hi!
    Aus deinem post wird nicht ersichtlich was du bisher ausprobiert hast.
    Du schreibst das du einen freepoint mit PRAY gekennzeichnet hast, wenn du möchtest das der NPC an diesem Punkt betet ist TA_Pray_Innos_FP die passende Funktion.
    Wenn er an einem Schrein beten soll welches als interaktives Objekt gesetzt wurde(mob, siehe https://wiki.worldofgothic.de/doku.p...mobsplatzieren) dann brauchst du den freepoint nicht und TA_PRAY_INNOS ist die passende Funktion.

    Screenshot im spacer wäre hilfreich damit man einfach mal sehen kann ob du da vielleicht etwas falsch gemacht hast.

    Du könntest dir auch die Funktionen die bei diesen Tagesabläufen aufgerufen werden anschauen und dort print Befehle einbauen um ingame sehen zu können was genau dein NPC macht.
    Hier mal als Beispiel ZS_Smoke_Joint mit eingebauten prints:
    Code:
    // **********************************
    // NSC benutzt Item Joint an Stand-FP
    // **********************************
    
    func void ZS_Smoke_Joint()
    {
    	Perception_Set_Normal();
    	
    	B_ResetAll (self);
    	
    	AI_SetWalkmode 	(self,NPC_WALK);
    	
    	if (Npc_GetDistToWP (self,self.wp) > TA_DIST_SELFWP_MAX) 
    	{
    		print("Ich bin weit genug weg von meinem WP das ich erstmal dort hin gehe.");
    		printDebug("Ich bin weit genug weg von meinem WP das ich erstmal dort hin gehe.");
    		AI_GotoWP	(self, self.wp);
    	}else{
    		print("Ich bin nah genug an meinem WP das ich NICHT hingehe.");
    		printDebug("Ich bin nah genug an meinem WP das ich NICHT hingehe.");
    	};
    	
    	if (Npc_HasItems (self,ItMi_Joint) == 0)
    	{
    		CreateInvItem (self,ItMi_Joint);				
    	};
    	self.aivar[AIV_TAPOSITION] = NOTINPOS;
    };
    
    func int ZS_Smoke_Joint_loop()
    {
    	if (Npc_IsOnFP (self,"STAND"))
    	{
    		print("Ich bin auf einem FP STAND, ich bleibe hier stehen und richte mich am FP aus.");
    		printDebug("Ich bin auf einem FP STAND, ich bleibe hier stehen und richte mich am FP aus.");
    		Ai_AlignToFP (self);
    		if (self.aivar[AIV_TAPOSITION] == NOTINPOS_WALK)
      		{
      			self.aivar[AIV_TAPOSITION] = NOTINPOS;
      		};
    	}	
    	else if (Wld_IsFPAvailable(self,"STAND"))
    	{
    		print("Ich bin NICHT auf einem FP STAND, aber einer ist verfügbar. Ich laufe da jetzt hin.");
    		printDebug("Ich bin NICHT auf einem FP STAND, aber einer ist verfügbar. Ich laufe da jetzt hin.");
    		AI_GotoFP 		(self, "STAND");
    		AI_StandUp 		(self);
    		AI_AlignToFP 	(self);
    		self.aivar[AIV_TAPOSITION] = NOTINPOS_WALK;
    	}
    	else
    	{
    		print("Ich bin NICHT auf einem FP STAND, und keiner ist verfügbar. Ich bleibe einfach wo ich bin und richte mich am WP aus");
    		printDebug("Ich bin NICHT auf einem FP STAND, und keiner ist verfügbar. Ich bleibe einfach wo ich bin und richte mich am WP aus");
    		AI_AlignToWP (self);
    		if (self.aivar[AIV_TAPOSITION] == NOTINPOS_WALK)
      		{
      			self.aivar[AIV_TAPOSITION] = NOTINPOS;
      		};
    	};
    	
    	if (self.aivar[AIV_TAPOSITION] == NOTINPOS)
    	{
    		AI_UseItemToState 	(self,ItMi_JOINT,0);
    		self.aivar[AIV_TAPOSITION] = ISINPOS;
    	};			
    
    //*********************************************************
    //	Hier: RandomAnis
    //********************************************************
    
    	if ((Npc_GetStateTime(self) > 5)
    	&& (self.aivar[AIV_TAPOSITION] == ISINPOS))
    	{
    		AI_PlayAniBS (self,"T_JOINT_RANDOM_1",BS_ITEMINTERACT);
    		Npc_SetStateTime (self, 0);
    	};
    	
    	return LOOP_CONTINUE;
    };
    
    func void ZS_Smoke_Joint_end()
    {
    	AI_UseItemToState (self, ItMi_Joint, -1);
    };

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