-
Hat sich erledigt, der Fehler lag wo cryp ihn vermutet hat.
-
Noch ein kleines Problem. Beim Heilungszauber aus G1 werden die Spruchrollen nicht verbraucht, woran könnte das liegen?
Code:
//-------- Spell Commands --------
// SPL_DONTINVEST = 0; // Es können keine weiteren Manapunkte investiert werden. Erst durch CTRL loslassen geht der Spell ab
// SPL_RECEIVEINVEST = 1; // Wirkung durchgeführt, es können weitere Invest kommen, zB.bei Heal nach jedem Pöppel
// SPL_SENDCAST = 2; // Starte den Zauber-Effekt (wie CTRL loslassen), automatischer Abbruch
// SPL_SENDSTOP = 3; // Beende Zauber ohne Effekt
// SPL_NEXTLEVEL = 4; // setze den Spruch auf den nächsten Level
const int SPL_HEALING_HP_PER_MP = 10; // Heal (HP pro Mana)
const int SPL_HEALING_MANACOST = 1;
instance SPELL_HEAL_G1(C_Spell_Proto)
{
time_per_mana = 250;
spellType = SPELL_NEUTRAL;
targetCollectAlgo = TARGET_COLLECT_CASTER;
canTurnDuringInvest = 0;
targetCollectRange = 0;
targetCollectAzi = 0;
targetCollectElev = 0;
};
func int spell_logic_Heal(var int manaInvested)
{
if((self.attribute[ATR_HITPOINTS] < self.attribute[ATR_HITPOINTS_MAX]) && (self.attribute[ATR_MANA] >= SPL_HEALING_MANACOST))
{
self.attribute[ATR_MANA] -= SPL_HEALING_MANACOST;
Npc_ChangeAttribute(self,ATR_HITPOINTS,SPL_HEALING_HP_PER_MP);
return SPL_NEXTLEVEL;
};
return SPL_SENDSTOP;
};
-
Zitat von Moe
Noch ein kleines Problem. Beim Heilungszauber aus G1 werden die Spruchrollen nicht verbraucht, woran könnte das liegen?
Ich bin ein bisschen verwirrt. Ich habe ein paar Fragen:- Das ist der Heilungszauber aus Gothic 1?
- Also nicht die Fremdenheilung aus dem Zauberpaket?
- Warum schreibst du dann in diesen Thread? (Die letzten Posts hatten übrigens auch nichts mit dem Zauberpaket zu tun. Blink und Entriegeln sind beide nicht teil des Zauberpakets und haben jeweils eigene Threads hier im Forum.) Das verwirrt ein wenig.
- Das Skript, das du gepostet hast kommt so direkt aus Gothic 1?
- Ist deine Absicht, den Zauber in Gothic 2 zu laufen zu bringen?
Mit der Annahme, dass du alle Fragen mit Ja beantwortest, wäre noch mehr Code nötig dir zu helfen. Z.B.- Welche Animation wird verwendet? Wenn Animationen für instante Zauber für Aufrechterhaltungs- oder Aufladezauber verwendet werden, werden diese nicht vernünftig abgeschlossen.
- SPL_SENDCAST ist notwendig, um den Zauber erfolgreich abzuschließen = Spruchrolle wird entfernt.
- Hast du auch Einträge in die Spell_ProcessManaRelease vorgenommen? Dort müssen Aufrechterhaltungs- und Aufladezauber mit SPL_SENDCAST eingetragen sein.
-
1. Nein, das ist HealOther umgemünzt auf HealSelf eben so wie in G1.
2. Siehe 1.
3. Sorry.
4. Siehe 1.
5. Ja.
Es wird die Aufrechterhaltungs Ani aus G1 benutzt.
Eintrag in Spell_ProcessManaRelease ist vorhanden.
Ich habe gerade herausgefunden, dass die Spruchrolle sehr wohl verbraucht wird, aber nur wenn man nach Zaubern kein Mana mehr hat. Wenn man noch Mana übrig hat, aber schon voll geheilt ist, dann bleibt die Spruchrolle im Inventar.
edit: Dasselbe ist auch bei der Fremdenheilung.
Geändert von Moe (27.11.2019 um 11:02 Uhr)
-
Zitat von Moe
Nein, das ist HealOther umgemünzt auf HealSelf eben so wie in G1.
Ah, das war mir nicht bewust. Ich hätte dabei vllt nicht FremdenHeilung als Vorlage genommen, weil der weder ein Aufrechterhaltungszauber ist noch auf den Spieler selbst angewand wird.
Zitat von Moe
Nein, das ist HealOther umgemünzt auf HealSelf eben so wie in G1. [...] Es wird die Aufrechterhaltungs Ani aus G1 benutzt. [...] Eintrag in Spell_ProcessManaRelease ist vorhanden. [...] Ich habe gerade herausgefunden, dass die Spruchrolle sehr wohl verbraucht wird, aber nur wenn man nach Zaubern kein Mana mehr hat. Wenn man noch Mana übrig hat, aber schon voll geheilt ist, dann bleibt die Spruchrolle im Inventar.
Siehe zweiter Punkt meiner zweiten Liste. Du brauchst in dem Skript das SPL_SENDCAST
Zitat von Moe
edit: Dasselbe ist auch bei der Fremdenheilung.
Wie meinst du das? Fremdenheilung aus dem Skriptpaket ist doch ein instanter Zauber.
EDIT: Verwende mal SPL_RECEIVEINVEST anstatt SPL_NEXTLEVEL.
Geändert von mud-freak (27.11.2019 um 11:41 Uhr)
-
Bei SPL_RECEIVEINVEST passiert dasselbe wie bei SPL_NEXTLEVEL.
Bei SPL_SENDCAST ist es kein Aufrechterhaltungszauber mehr.
-
Zitat von Moe
Bei SPL_RECEIVEINVEST passiert dasselbe wie bei SPL_NEXTLEVEL.
Nimm dir am besten Mal einen bestehenden Aufrechterhaltungs- oder Aufladezauber aus Gothic 2 als Vorlage. Kopier ihn dir und ändere ihn Stück für Stück ab. Wie gesagt ist die Animation auch ausschlaggebend dafür, ob der Zauber als Aufrechterhaltungs- oder Aufladezauber funktioniert. Aus dem Zauberpaket kannst du dir z.B. den Manasucht-Zauber als Vorlage nehmen. Bei dem funktioniert das ganze ja.
-
Okay, ich hab es.
So funktionierts:
Code:
const int SPL_HEALING_HP_PER_MP = 10; // Heal (HP pro Mana)
const int SPL_HEALING_MANACOST = 1;
instance SPELL_HEAL_G1(C_Spell_Proto)
{
time_per_mana = 250;
spellType = SPELL_NEUTRAL;
targetCollectAlgo = TARGET_COLLECT_CASTER;
canTurnDuringInvest = 0;
targetCollectRange = 0;
targetCollectAzi = 0;
targetCollectElev = 0;
};
func int spell_logic_Heal(var int manaInvested)
{
if((self.attribute[ATR_HITPOINTS] < self.attribute[ATR_HITPOINTS_MAX]) && (self.attribute[ATR_MANA] >= SPL_HEALING_MANACOST))
{
self.attribute[ATR_MANA] -= SPL_HEALING_MANACOST;
Npc_ChangeAttribute(self,ATR_HITPOINTS,SPL_HEALING_HP_PER_MP);
return SPL_RECEIVEINVEST;
};
if (self.attribute[ATR_HITPOINTS] >= self.attribute[ATR_HITPOINTS_MAX])
{
return SPL_SENDCAST;
};
return SPL_SENDSTOP;
};
-
Zitat von Moe
Okay, ich hab es.
Super! Danke fürs Teilen, das wird sicher den ein oder anderen Modentwickler freuen.
-
Adventurer
Will it be possible to have this as a Ninja patch?
-
Zitat von Vic7im
Will it be possible to have this as a Ninja patch?
Yes and no. While it's theoretically possible to create a patch, it is generally not a good idea to make new spells available to any mod. This introduces at best balancing issues, but may as well break the whole mod. Mod developers pour a lot of time and effort into balancing their work - I want to respect that, instead of causing them trouble.
I created the First Mage Kit, which includes two spells. There I was very careful to mess with the game balance as little as possible.
-
Einmalposter
Hi, Mud! It's a russian scenario man from mod on gothic 2 Nostalgy. Do you remember us?
So, my question is about your spells and your works. Can you do some new spells exactly for our mod for payment? Just new abilities, 2-3. I will describe it for you. If you have Skype pls send it to me, we really want to add things to 1.1 version after released G2 Nostalgy 1.0
-
I'll leave it here again. A in mod dirty swamp . There is a spell SPL_Elevate. When using it together with the enemy, the mover did not rise from the ground and I flew out with a mathematical error.
I couldn't repeat such a crash again.
Code:
Warn: 0 D: VOB: illegal call of vob::BeginMovement() from a collision notification callback .... <zVobMove.cpp,#1461>
Warn: 0 =============================================== CALLSTACK : ============================================================== .... <zError.cpp,#474>
Warn: 0 0023:00514D8E (0x0135FA44 0x089EE194 0x155D12F0 0x29DBD118) Gothic2.exe, zMAT4::operator=()+14 byte(s), P:\dev\g2addon\release\ZenGin\_dieter\zAlgebra.cpp, line 552+14 byte(s) .... <zError.cpp,#474>
Warn: 0 0023:0061E527 (0x00000001 0x089EDF48 0x00000000 0xC27E13D6) Gothic2.exe, zCVob::EndMovement()+1111 byte(s), P:\dev\g2addon\release\ZenGin\_dieter\zVobMove.cpp, line 1764+100 byte(s) .... <zError.cpp,#474>
Warn: 0 0023:00602E95 (0x00000001 0x00000000 0x08007038 0x0135FBC4) Gothic2.exe, zCVob::DoFrameActivity()+565 byte(s), P:\dev\g2addon\release\ZenGin\_dieter\zVob.cpp, line 2268 .... <zError.cpp,#474>
Warn: 0 0023:006C87EB (0x0864BF18 0x00000000 0x00000000 0x0864BF18) Gothic2.exe, oCGame::Render()+331 byte(s), P:\dev\g2addon\release\Gothic\_ulf\oGame.cpp, line 2658 .... <zError.cpp,#474>
Warn: 0 0023:70770FE1 (0x00400000 0x0152409B 0x0135FE70 0x00000000) SHW32.DLL, UnionCore::CUnion::DefineCRTVersion()+6513 byte(s) .... <zError.cpp,#474>
Warn: 0 0023:00425E6E (0x0082F0EC 0x00000006 0x00090860 0x0864BF18) Gothic2.exe, CGameManager::Run()+1598 byte(s), P:\dev\g2addon\release\Gothic\_bert\oGameManager.cpp, line 767+47 byte(s) .... <zError.cpp,#474>
Warn: 0 0023:0078188B (0x0000002C 0x00012601 0x00000000 0x00000000) Gothic2.exe, MainProg()+75 byte(s), P:\dev\g2addon\release\Gothic\_ulf\Phoenix.cpp, line 111 .... <zError.cpp,#474>
Warn: 0 0023:00503270 (0x00400000 0x00000000 0x0152409B 0x00000001) Gothic2.exe, HandledWinMain()+928 byte(s), P:\dev\g2addon\release\ZenGin\_carsten\zWin32.cpp, line 1169 .... <zError.cpp,#474>
Warn: 0 0023:00502DFD (0x0135FE74 0x00000000 0x0152409B 0x00000001) Gothic2.exe, WinMain()+141 byte(s), P:\dev\g2addon\release\ZenGin\_carsten\zWin32.cpp, line 1054+17 byte(s) .... <zError.cpp,#474>
Warn: 0 0023:707721DA (0x3C428278 0x3C428278 0x3C428278 0x3C4E9E03) SHW32.DLL, UnionCore::CUnion::InitApp()+1658 byte(s) .... <zError.cpp,#474>
Warn: 0 ======================================= UNHANDLED EXCEPTION OCCURED ====================================================== .... <zError.cpp,#474>
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|