|
-
Pfx-Effekte auf Items
Hey. In Gothic 2 werden ja irgendwie Pfx-Effekte über Items gelegt. Bei Tränken und Spruchrollen zum Beispiel.
In der Gothic 1 Alpha war das auch mal drin. War aber immer verbugged. Hat jemand mal versucht, das in Gothic 1 zu integrieren oder kann mir jemand sagen, wie das in Gothic 2 realisiert wurde und ob das theoretisch machbar ist?
-
Abenteurer
Eigentlich ist das ganz einfach, Wenn du dir die Tränke Scripts anschaust, solltest du schnell erkennen wie man das hin bekommt.
Man muss im Item Script einfach zwei Einträge machen.
Code:
wear = WEAR_EFFECT;
effect = "SPELLFX_WEAKGLIMMER_BLUE";
Bei "SPELLFX_???" gibt es noch mehr Effekte die so anfangen, das bestimmt dann den visuellen Effekt, irgendwo gab es dazu mal eine Liste
Funktioniert bei jeden Item / Rüstung.
Im Item script sieht das dann wie folgt aus.
Code:
INSTANCE ItPo_Mana_03(C_Item){
name = NAME_Trank;
mainflag = ITEM_KAT_POTIONS;
flags = ITEM_MULTI;
value = Value_ManaElixier;
visual = "ItPo_Mana_03.3ds";
material = MAT_GLAS;
on_state[0] = UseItPo_Mana_03;
scemeName = "POTIONFAST";
wear = WEAR_EFFECT;
effect = "SPELLFX_MANAPOTION";
description = "Mana Elixier";
TEXT[1] = NAME_Bonus_Mana;
COUNT[1] = Mana_Elixier;
TEXT[5] = NAME_Value;
COUNT[5] = Value_ManaElixier;
};
-
Ja in Gothic 2, Gothic 1 kennt diese Funktion "effect" aber gar nicht, wie mir scheint.
-
18.05.2019 17:13
#4
Zitat von lali
Ja in Gothic 2, Gothic 1 kennt diese Funktion "effect" aber gar nicht, wie mir scheint.
Ich denke so einfach wird das nicht. Du musst sicherlich die PFX in die System Scripts einfügen.
Also unter _work\Data\Scripts\System\PFX.
Wenn es mal ein Teil der Engine war wird es entweder dort noch auskommentiert stehen oder du musst anfangen es zu reproduzieren. Weiss ja nicht ob es eine Version von Gothic im world wide web gibt die dieses noch als beispiel irwo enthält
-
Zitat von Illari
Ich denke so einfach wird das nicht. Du musst sicherlich die PFX in die System Scripts einfügen.
Also unter _work\Data\Scripts\System\PFX.
Wenn es mal ein Teil der Engine war wird es entweder dort noch auskommentiert stehen oder du musst anfangen es zu reproduzieren. Weiss ja nicht ob es eine Version von Gothic im world wide web gibt die dieses noch als beispiel irwo enthält
Ja, wollte mich erstmal schlau machen, wie es in Gothic 2 gelöst ist, damit ich nach diesen Ansätzen suchen kann. In Gothic 1 unter System/PFX ist schonmal "INSTANCE MAGICGLOW" ausgeklammert. // Aber ganz unten ist nochmal eine gleichnamige Instanz mit dem selben Namen. Mal testen.^^
edit:
// Also diese beiden MagicGlows sind was ganz unterschiedliches. Aber die Frage ist ja, gibt es eine Funktion in Gothic, die es ermöglicht, so einen Pfx an ein Item zu heften.
Geändert von lali (18.05.2019 um 17:27 Uhr)
-
In GFA von mud-freak wird ein Effekt an den gerade verschossenen Pfeil geklebt
(Gothic 1 und 2 werden hier unterschiedlich behandelt):
Code:
//https://github.com/szapp/GothicFreeAim/blob/develop/_work/data/Scripts/Content/GFA/_intern/rangedShooting.d#L402
// 5th: Add trail strip FX for better visibility
// The horizontal position of the camera is aligned with the arrow trajectory, to counter the parallax effect and to
// allow reasonable aiming. Unfortunately, when the projectile flies along the out vector of the camera (exactly
// away from the camera), it is barely to not at all visible. To aid visibility, an additional trail strip FX is
// applied. This is only necessary when the projectile does not have an FX anyway (e.g. magic arrows). The trail
// strip FX will be removed later once the projectile stops moving.
if (GOTHIC_BASE_VERSION == 2) {
// Gothic 1 does not offer effects on items
if (Hlp_StrCmp(MEM_ReadString(projectilePtr+oCItem_effect_offset), "")) { // Projectile has no FX
MEM_WriteString(projectilePtr+oCItem_effect_offset, GFA_TRAIL_FX);
const int call2 = 0;
if (CALL_Begin(call2)) {
CALL__thiscall(_@(projectilePtr), oCItem__InsertEffect);
call2 = CALL_End();
};
};
} else {
// Simplified mechanics for Gothic 1
Wld_PlayEffect(GFA_TRAIL_FX_SIMPLE, projectile, projectile, 0, 0, 0, FALSE);
};
Du könntest also probieren an eine referenz auf das item zu kommen und dann mit Wld_PlayEffect einen Effekt zu starten. Falls das bei items welche in der Welt herumliegen funktioniert, müsste man das wahrscheinlich nach jedem laden eines Spielstandes erneut machen, weil die Partikeleffekte da ja verschwinden.
-
Danke! Was meinst du mit "an eine Referenz auf das Item" kommen? Was kann ich mir darunter vorstellen?
Es ist also nicht machbar, den Effekt irgendwie einfach in das Item-Skript einzufügen? Oder einen Effekt z.B. an eine Item-Kategorie zu heften? Zum Beispiel an alle Ringe und Amulette oder an alle Scrolls und Runen. Das wäre vielleicht am einfachsten.
-
Zitat von lali
Danke! Was meinst du mit "an eine Referenz auf das Item" kommen? Was kann ich mir darunter vorstellen?
Es ist also nicht machbar, den Effekt irgendwie einfach in das Item-Skript einzufügen? Oder einen Effekt z.B. an eine Item-Kategorie zu heften? Zum Beispiel an alle Ringe und Amulette oder an alle Scrolls und Runen. Das wäre vielleicht am einfachsten.
Wenn du Wld_PlayEffect mit einem in der Welt herumliegendem item als Ziel aufrufen willst, brauchst du ja eine referenz auf das item die du als Parameter an die Funktion übergeben kannst.
Also ganz grob:
Code:
var zcVob meinVob;
meinVob = // hier muss meinVob irgendwie sinnvoll befüllt werden
Wld_PlayEffect("Effektname", meinVob, meinVob, 0, 0, 0, FALSE);
Du könntest dir evt. diese Funktion von mud-freak als Vorlage nehmen:
https://github.com/szapp/GothicFreeA...jectiles#world
Und dann für alle in der Welt liegenden Manatränke Effekt X starten und für alle in der Welt liegenden Heiltränke Effekt Y starten ...
Ich bin mir halt nicht sicher ob das überhaupt funktionieren wird, kann ja sein das Effekte außerhalb der KI-Glocke gar nicht existieren in G1 oder so.
-
Apprentice
Zitat von Cryp18Struct
Wenn du Wld_PlayEffect mit einem in der Welt herumliegendem item als Ziel aufrufen willst, brauchst du ja eine referenz auf das item die du als Parameter an die Funktion übergeben kannst.
Also ganz grob:
Code:
var zcVob meinVob;
meinVob = // hier muss meinVob irgendwie sinnvoll befüllt werden
Wld_PlayEffect("Effektname", meinVob, meinVob, 0, 0, 0, FALSE);
Du könntest dir evt. diese Funktion von mud-freak als Vorlage nehmen:
https://github.com/szapp/GothicFreeA...jectiles#world
Und dann für alle in der Welt liegenden Manatränke Effekt X starten und für alle in der Welt liegenden Heiltränke Effekt Y starten ...
Ich bin mir halt nicht sicher ob das überhaupt funktionieren wird, kann ja sein das Effekte außerhalb der KI-Glocke gar nicht existieren in G1 oder so.
As far as I know, this function only has effect once, so you would have to call it in framefunction / hook / triggerscript.
It would certainly affect performance, because you would have to act on the lists during the game, even if you would call it in the hook.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|
|