O temacie
Autor
Zaczęty 20.01.2008 roku
Wyświetleń 9379
Odpowiedzi 0
Kazzmir Gość
Na początku zastrzegam, że sposób w jaki tworzę możliwość dowolnej liczby przemian, nie jest sposobem optymalnym. A teraz do rzeczy:1. Znajdujemy w Folderze \Scripts\Content\MAGIC plik .d zaczynający się na "spell_trf_", który będziemy modyfikować.2.Otwieramy (dla przykładu, zmienię czar przemiana w pełzacza, czyli spell_trf_Crawler.d), widzimy coś takiego:Kod: [Zaznacz]//-------- 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 Levelfunc int Spell_Logic_Trf_Crawler(var int manaInvested){ PrintDebugNpc (PD_MAGIC, "Spell_Logic_Transform"); if (manaInvested >= SPL_SENDCAST_TRF_CRAWLER) { Npc_SetActiveSpellInfo(self, MineCrawler); return SPL_SENDCAST; }; return SPL_NEXTLEVEL;};3.Tworzymy zmienną w Story_Globals.d (\Scripts\Content\Story):Kod: [Zaznacz]var int Zmienna_okreslajaca_ile_mozliwych_przemian_bedzie_dostepnych_w_tym_czarze4.W spell_trf_Crawler.d zmieniamy linijkę:Kod: [Zaznacz]Npc_SetActiveSpellInfo(self, MineCrawler);Na coś takiego:Kod: [Zaznacz] if (Zmienna_okreslajaca_ile_mozliwych_przemian_bedzie_dostepnych_w_tym_czarze== 0) { Npc_SetActiveSpellInfo(self, MineCrawler); }else if (Zmienna_okreslajaca_ile_mozliwych_przemian_bedzie_dostepnych_w_tym_czarze== 1) { Npc_SetActiveSpellInfo(self, FireWaran); }else if (Zmienna_okreslajaca_ile_mozliwych_przemian_bedzie_dostepnych_w_tym_czarze== 2) { Npc_SetActiveSpellInfo(self, Lurker); }else if (Zmienna_okreslajaca_ile_mozliwych_przemian_bedzie_dostepnych_w_tym_czarze== 3) { Npc_SetActiveSpellInfo(self, Shadowbeast); };Posłowie: Teraz zależnie jak ustawimy naszą zmienną czar będzie przemieniać nas w określoną bestię (w tym przypadku Pełzacza, Ognistego jaszczura, Topielca lub cieniostwora). Zmienną możemy ustawić na kilka sposobów, podam kilka z nich:1.Tworzymy przedmiot, po którego użyciu pojawia się monolog i wybór konkretnej opcji oznacza zmianę wartości zmiennej.2.Tworzymy dialogi z NPCem, w których zmienna będzie ustawiana.3.W pliku samego czaru dajemy linijkę:Kod: [Zaznacz]Zmienna_okreslajaca_ile_mozliwych_przemian_bedzie_dostepnych_w_tym_czarze= Hlp_Random(4);Co sprawi, że przy każdym użyciu czaru, odbędzie się losowanie w co się zmienimy.Na początku pisałem, że nie jest to rozwiązanie optymalne, ponieważ Gothic nie rozpoznaje na poziomie przedmiotu, jak ustawiona jest zmienna (dobrze rozpoznaje, ale to rozpoznanie nie pomaga tylko wprowadza zamieszanie), więc nie możliwe jest stworzenie kilku run/zwojów , z tym czarem, gdy gra nie rozpozna co który zwój oznacza. Oczywiście jeśli ktoś wymyśli sposób, w którym jeden czar przemiany będzie być użyty na kilka sposobów, zależnie tylko od tego z jakiego przedmiotu korzystamy, niech dopisze się do tego tutoriala.Prawa Autorskie: Dozwolone jest kopiowanie powyższego tutoriala w całości lub części, tylko pod warunkiem umieszczenia informacji, że został on stworzony przeze mnie. W przypadku gdy, ktoś odnajdzie sposób optymalniejszej przemiany (w sposób jaki opisałem powyżej), na niego przechodzą wszystkie prawa co do tego tutoriala.
//-------- 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 Levelfunc int Spell_Logic_Trf_Crawler(var int manaInvested){ PrintDebugNpc (PD_MAGIC, "Spell_Logic_Transform"); if (manaInvested >= SPL_SENDCAST_TRF_CRAWLER) { Npc_SetActiveSpellInfo(self, MineCrawler); return SPL_SENDCAST; }; return SPL_NEXTLEVEL;};
var int Zmienna_okreslajaca_ile_mozliwych_przemian_bedzie_dostepnych_w_tym_czarze
Npc_SetActiveSpellInfo(self, MineCrawler);
if (Zmienna_okreslajaca_ile_mozliwych_przemian_bedzie_dostepnych_w_tym_czarze== 0) { Npc_SetActiveSpellInfo(self, MineCrawler); }else if (Zmienna_okreslajaca_ile_mozliwych_przemian_bedzie_dostepnych_w_tym_czarze== 1) { Npc_SetActiveSpellInfo(self, FireWaran); }else if (Zmienna_okreslajaca_ile_mozliwych_przemian_bedzie_dostepnych_w_tym_czarze== 2) { Npc_SetActiveSpellInfo(self, Lurker); }else if (Zmienna_okreslajaca_ile_mozliwych_przemian_bedzie_dostepnych_w_tym_czarze== 3) { Npc_SetActiveSpellInfo(self, Shadowbeast); };
Zmienna_okreslajaca_ile_mozliwych_przemian_bedzie_dostepnych_w_tym_czarze= Hlp_Random(4);