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 6 von 6
  1. Beiträge anzeigen #1 Zitieren
    Legende der Amazonen Avatar von Bisasam
    Registriert seit
    Dec 2006
    Ort
    Meine Faust in Sinis Gesicht
    Beiträge
    9.639
     
    Bisasam ist offline

    Zuverlässigkeit von InstanceIDs?

    Ich arbeite mit einem variablen Turniersystem wo theoretisch jeder Teilnehmer gewinnen kann.
    Die Sieger merke ich mir, indem ich die InstanzIDs derjenigen Speicher und mir entsprechend später den Npc dafür hole.
    Aber kann es sein, dass diese IDs sich bei jedem Speichern und Laden ändern? Oder sogar während der Laufzeit?
    Ich muss irgendwie ein zuverlässiges System aufstellen, scheitere aber an der Unsicherheit der Werte.


    "Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
    -Korallenkette

  2. Beiträge anzeigen #2 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Die InstanceID ist bloß der Integerwert (d.h. Symbolindex) der Instanz, also z.B. von PC_Hero oder NONE_500_Xardas (oder wie auch immer der genau heißt). Der Wert ändert sich nicht. Solange du also nur menschliche NPCs, die alle eine eindeutige Instanz haben, überprüfst, sollte es da keine Probleme geben.

  3. Beiträge anzeigen #3 Zitieren
    Legende der Amazonen Avatar von Bisasam
    Registriert seit
    Dec 2006
    Ort
    Meine Faust in Sinis Gesicht
    Beiträge
    9.639
     
    Bisasam ist offline
    Bist du sicher? In Gothic 1 hab ich damit getestet und es wurden dauernd die Npcs falsch zugeordnet. Meinen Code habe ich schon doppelt und dreifach überprüft. Vielleicht wieder so ne Macke?


    "Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
    -Korallenkette

  4. Beiträge anzeigen #4 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Zeig mir deinen Code, dann kann ich mehr sagen

  5. Beiträge anzeigen #5 Zitieren
    Legende der Amazonen Avatar von Bisasam
    Registriert seit
    Dec 2006
    Ort
    Meine Faust in Sinis Gesicht
    Beiträge
    9.639
     
    Bisasam ist offline
    Gut, am Ende der Vorrunden schnappe ich mir zwei Leute über ZS_Attack_End:

    Code:
    	/* ---- Ist der Gegner "nur" bewußtlos...  ---- */
    	if ( Npc_IsInState(other, ZS_Unconscious) && (self.fight_tactic != FAI_HUMAN_RANGED))
    	{
    		////////////////
    
    		
    		if BTurnierStage==4 //Runde1
    		{
    			BTurnierStage=5;
    			BKaempfer1=Hlp_GetNpc (self);
    			IDBKaempfer1=Hlp_GetInstanceID (BKaempfer1);
    		};
    		
    		if BTurnierStage==9//Runde2
    		{
    			BTurnierStage=10;
    			BKaempfer2=Hlp_GetNpc (self);
    			IDBKaempfer2=Hlp_GetInstanceID (BKaempfer2);
    		};
    
    };
    Weil durch Speichern und Laden die C_Npc-Variablen (BKaempfer2 ist so eine) gelöscht werden, definiere ich die in der das Turnier steuernden ZS am Anfang immer neu:

    Code:
    	if IDBKaempfer1!=0
    	{
    		BKaempfer1=Hlp_GetNpc(IDBKaempfer1);	
    	};	
    	
    	if IDBKaempfer2!=0
    	{
    		BKaempfer2=Hlp_GetNpc(IDBKaempfer2);	
    	};
    Der Code wird auch definitiv ausgeführt, das weiß ich.

    Der eigentliche Angriff erfolgt hier:

    Code:
    func void VSHalbfinale1()
    {
    	BKaempfer1=Hlp_GetNpc(IDBKaempfer1);
    	BKaempfer2=Hlp_GetNpc(IDBKaempfer2);
    	TurnierAngriff (BKaempfer1,BKaempfer2);
    	TurnierAngriff (BKaempfer2,BKaempfer1); 
    	
    	BTurnierstage=24;
    };
    Ich hole mir da sogar extra nochmal die Npcs neu, für den Fall.

    Die TurnierAngriff-Funktion sieht so aus:

    Code:
    func void TurnierAngriff (var C_NPC Uno, var C_NPC Dos)
    {
    	B_SetAttackReason	(Uno,	AIV_AR_NONE);
    	Uno.aivar[AIV_ARENA]=TRUE;
    	Npc_SetTarget		(Uno,	Dos);
    	AI_StartState		(Uno,	ZS_Attack,	1,	"");
    };
    (In Gothic 1 gibt es B_Attack noch nicht, darum habe ich alle nötigen Funktionen hier reingetan)

    AIV_ARENA sorgt dafür, dass der Npc nicht plündert und nicht von Wachen angegriffen wird u.ä.

    Was passiert, wenn die beiden kämpfen sollen und der Code ausgeführt wird? Einer von beiden zückt die Waffe, steckt sie wieder weg weil angeblich das Ziel ungültig ist und der andere ignorierts komplett. Einmal wollte ein Npc sogar sich selbst angreifen. Da stimmt doch was nicht!


    "Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
    -Korallenkette

  6. Beiträge anzeigen #6 Zitieren
    Legende der Amazonen Avatar von Bisasam
    Registriert seit
    Dec 2006
    Ort
    Meine Faust in Sinis Gesicht
    Beiträge
    9.639
     
    Bisasam ist offline
    Die Lösung: In der ZS_Attack VOR dem Loop nochmal alle Targets setzen.

    Meine Fresse, Gothic warum vergisst du welche Targets ich gesetzt hab!?


    "Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
    -Korallenkette

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