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 9 von 9
  1. Beiträge anzeigen #1 Zitieren
    Avatar von Gilver
    Registriert seit
    Nov 2008
    Ort
    da wo mein Ruhestein ist
    Beiträge
    0
     
    Gilver ist offline

    Manaregneration

    Wie kann ich , den Helden nen Manareg einbauen den er schon von Anfang an besitzt , also nicht so wie in der Mana Reloaded Mod , was genau muss ich den Scripts den ändern ?

  2. Beiträge anzeigen #2 Zitieren
    Held Avatar von Teron Gorefiend
    Registriert seit
    Nov 2006
    Ort
    im Alchemielabor
    Beiträge
    5.121
     
    Teron Gorefiend ist offline
    ich habe meine mana reg so


    ne schleife:

    if (mana_reg >0)

    [
    mana_reg2 = mana_reg2 +1;
    };

    if (mana_reg2 == 5)
    {
    NPC (changeAttribute, hero, MANA mana_reg)
    mana_reg2=0;
    };

    beim ersten Dialog mit Xardas musst du dann einfach nur mana_reg = x;

    wobei x für Mana steht, der der Held alle 5 Sekunden erhält, somit sind auch regenerationen von über 1 per Sekunde möglich. und es ist einfach durch items die reg zu erhöhen.

    wenn du es einfach haben willst, kannst du aber auch einfach im ersten dialog schreiben.

    hero.attribute[REGENERATEMANA] = y;

    alle y Sekunden erhälst du einen Manapunkt 0 = kein mana

  3. Beiträge anzeigen #3 Zitieren
    Abenteurer Avatar von Ildorion
    Registriert seit
    Jun 2004
    Beiträge
    92
     
    Ildorion ist offline
    Das Thema ist zwar schon ziemlich alt, aber ich habe trotzdem mal eine Frage dazu:

    Da ich noch nicht ganz kapiert haben, wann genau die einzelnen Funktionen aufgerufen werden, würde ich gerne wissen, in welche Skriptdatei ich diese Schleife einfügen müsste.

    Am liebsten wäre mit eine prozentuale Lösung, gibt es für diesen Zweck eine Funktion, die den maximalen Manawert liefert?
    Ich alleine gegen alle Orks? Ein bisschen unfair!

    Vielleicht sollte ich mit links kämpfen...

  4. Beiträge anzeigen #4 Zitieren
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    15.246
     
    Milky-Way ist offline
    Du kannst es in jedes Skript schreiben, das geparst wird. Die Funktion muss von einem (z.B. sekündlichen) Trigger aufgerufen werden. Das Skript ruft dann wieder den Trigger auf, der nach einer Sekunde das Skript aufruft,... (siehe Forumssuche/Wiki Triggerschleifen).

    Code:
    self.attribute[ATR_MANA_MAX]
    liefert das maximale Mana von self.

  5. Beiträge anzeigen #5 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Zu erwähnen wäre, dass self in Triggern NICHT initialisiert ist und man daher mit
    Code:
    var c_npc slf; slf = Hlp_GetNpc(Meine_Npc_Instanz);
    slf.attribute[ATR_MANA_MAX]
    arbeiten muss.

  6. Beiträge anzeigen #6 Zitieren
    Abenteurer Avatar von Ildorion
    Registriert seit
    Jun 2004
    Beiträge
    92
     
    Ildorion ist offline
    Danke erstmal für die Antworten.

    Das mit dem Trigger habe ich hingekriegt, aber bei prozentualen Lösung hakts noch.

    Meine Methode sieht so aus:

    Code:
    func void MANA_REG ()
    {
    	var float mana_neu;
    	mana_neu = hero.attribute[ATR_MANA] + hero.attribute[ATR_MANA_MAX] * 2 / 100;
    
    	if (Mana_Neu > hero.attribute[ATR_MANA_MAX])
    	{
    		hero.attribute[ATR_MANA] = hero.attribute[ATR_MANA_MAX];
    	};
    
    	else
    	{
    		hero.attribute[ATR_MANA] = mana_neu;
    	};
    
    	Wld_SendTrigger ("MY_TRIGGER");
    };
    Ich will dem Spieler jede Sekunde 2% seines maximalen Manas wiedergeben, aber ich habe irgendwo im Syntaxtutorial gelesen, dass man mit floats nicht rechnen kann. Kann man das irgendwie anders Lösen?

    Achja, ich bekomme in der Zeile:
    "mana_neu = hero.attribute[ATR_MANA] += hero.attribute[ATR_MANA_MAX] * 2 / 100;"
    einen Syntaxerror für HERO.ATTRIBUTE
    Ich alleine gegen alle Orks? Ein bisschen unfair!

    Vielleicht sollte ich mit links kämpfen...
    Geändert von Ildorion (12.03.2010 um 11:54 Uhr)

  7. Beiträge anzeigen #7 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Gothic kann man Floats nicht rechnen, "man" schon. In der Editing-FAQ ist im letzten Post eine Übersicht über diverse nützliche Threads verlinkt. Dort wirst du eine Float-Implementierung von Sektenspinner finden.

  8. Beiträge anzeigen #8 Zitieren
    Abenteurer Avatar von Ildorion
    Registriert seit
    Jun 2004
    Beiträge
    92
     
    Ildorion ist offline
    Falls jemand Interesse hat, hier meine Lösung:

    Code:
    func void MANA_REG ()
    {
    	var int mana_neu; var int d1; var int d2; var int f; var int mana_max;
    	d1 = mkf (2);
    	d2 = mkf (100);
    	f = divf (d1, d2);
    	mana_max = mkf (hero.attribute[ATR_MANA_MAX]);
    	mana_neu = hero.attribute[ATR_MANA] + truncf (mulf (mana_max, f));
    	
    
    	if (mana_neu <= hero.attribute[ATR_MANA_MAX])
    	{
    		hero.attribute[ATR_MANA] = mana_neu;
    	}
    
    	else 
    	{
    		hero.attribute[ATR_MANA] = hero.attribute[ATR_MANA_MAX];
    	};
    
    	Wld_SendTrigger ("MY_TRIGGER");
    };
    Der Held bekommt jede Sekunde 2% seines Max Manas wieder.
    Grundlage ist die Float-Implementierung von Sektenspinner, mit der man einen prozentualen Anteil des Max Manas berechnen kann
    Ich alleine gegen alle Orks? Ein bisschen unfair!

    Vielleicht sollte ich mit links kämpfen...

  9. Beiträge anzeigen #9 Zitieren
    Waldläufer
    Registriert seit
    Oct 2006
    Beiträge
    164
     
    cocomoloco ist offline
    Zitat Zitat von Ildorion Beitrag anzeigen
    Falls jemand Interesse hat, hier meine Lösung:

    Code:
    func void MANA_REG ()
    {
    	var int mana_neu; var int d1; var int d2; var int f; var int mana_max;
    	d1 = mkf (2);
    	d2 = mkf (100);
    	f = divf (d1, d2);
    	mana_max = mkf (hero.attribute[ATR_MANA_MAX]);
    	mana_neu = hero.attribute[ATR_MANA] + truncf (mulf (mana_max, f));
    	
    
    	if (mana_neu <= hero.attribute[ATR_MANA_MAX])
    	{
    		hero.attribute[ATR_MANA] = mana_neu;
    	}
    
    	else 
    	{
    		hero.attribute[ATR_MANA] = hero.attribute[ATR_MANA_MAX];
    	};
    
    	Wld_SendTrigger ("MY_TRIGGER");
    };
    Der Held bekommt jede Sekunde 2% seines Max Manas wieder.
    Grundlage ist die Float-Implementierung von Sektenspinner, mit der man einen prozentualen Anteil des Max Manas berechnen kann
    Sorry für den 7-Jahre-Nekro, aber ich möchte genau diese Sequenz bei mir einfügen, vorzugsweise in eine andere Mod.

    Problem: Ich habe absolut keine Ahnung vom Modden. Nada. Ich habe mir das Wiki durchgelesen und bin so weit gekommen:
    - habe die Mod, in die ich die Manareg. einfügen möchte, mit VDFS extrahiert
    - habe die Sequenz von oben in irgendein bestehendes Skript der mod mithilfe von GothicSourcer am Ende eingefügt

    Jetzt weiß ich aber nicht weiter. Wenn ich das richtig verstanden habe, muss ich das Verzeichnis nun irgendwie zurück in eine .mod Datei bringen und an irgendeinem Punkt noch irgendetwas parsen. Keine Ahnung wo und wie aber.

    Kann irgendjemand helfen?

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