Ostatnie wiadomości

Podrzucam odrobinę przerobioną wersję skryptu autorstwa Vanariusa do Gothica I, bo skrypt z pierwszego postu w tym temacie dotyczy Gothica 2 i pierwsza część Gothica go nie zasysa.


Wpis do dziennika wraz z tytułem zadania - wersja do Gothic I

Tutaj trzeba wejść do pliku B_Functions.d w folderze Gothic\_work\DATA\scripts\Content\AI\AI_Intern i tam podmienić istniejącą funkcję B_LogEntry na:

var int Move_Entry;

func void B_LogEntry (var string topic, var string entry)
{
Log_AddEntry (topic, entry);

var string txt;

txt = ConcatStrings ("Nowy wpis do dziennika (", topic); //początek tekstu, który ma się wyświetlać w tym przypadku jest to "Nowy wpis do dziennika (" Pamiętać żeby dać ten nawias bo wtedy efekt będzie brzydki.
txt = ConcatStrings (txt, ")"); //tutaj tylko zamykamy nawias który rozpoczęliśmy na górze.

if (Move_Entry == FALSE)
{
PrintScreen (/*PRINT_NewLogEntry*/txt, -1, _YPOS_MESSAGE_LOGENTRY, "FONT_OLD_10_WHITE.TGA",_TIME_MESSAGE_GIVEN);

Move_Entry = TRUE;
}
else
{
Move_Entry = FALSE;

PrintScreen (/*PRINT_NewLogEntry*/txt, -1, _YPOS_MESSAGE_LOGENTRY - 5, "FONT_OLD_10_WHITE.TGA",_TIME_MESSAGE_GIVEN);
};

Snd_Play ("LogEntry");
};
Robisz dobrą robotę panie @ikskoks 
Mod został zaktualizowany. Wersja 2.6.9. Hiperłącze jak zawsze w pierwszym poście, tam gdzie sekcja instalacji.
Właśnie wydałem nową wersję programu EA Graphics Manager.
https://github.com/bartlomiejduda/EA-Graphics-Manager/releases/tag/v0.30.0

Pozwala on na edycję obrazów z gier EA, których wcześniej nie dało się edytować za pomocą innych programów.

Napisałem też poradnik, w którym wyjaśniłem, w jaki sposób można stworzyć moda do gry:
https://github.com/bartlomiejduda/EA-Graphics-Manager/blob/main/src/data/docs/EA_Images_Modding_Tutorial.md

Niektóre funkcjonalności powiązane z importem nie są jeszcze dostępne, więc prośba o zasubskrybowanie repozytorium, aby być na bieżąco.
Dużo filozofii tutaj nie ma. Skopiowałem funkcję b_clearruneinv z Gothica II, podmieniłem czary i zrobiłem by się aktywowała w momencie gdy postać jest nieprzytomna/zabita. Dzięki temu otrzymuje się taki efekt jak w Gothic II - np. jak przy zabiciu poszukiwacza, któremu nie da się zabrać zaklęć.

Przydatne jeżeli ktoś dodaje do swojej modyfikacji do Gothica I sporo przeciwników posługujących się runami i nie chce by potem gracz sprzedawał je handlarzom. W Gothic I runy są dość drogie, więc przy większej liczbie przeciwników postać dostałaby dość dużego zastrzyku magicznej rudy.

Wklejam gotowca dla oszczędności sił i czasu, bo nie ma sensu by każdy kolejny modder do swojego projektu wykonywał ten skrypt od nowa.

func void b_clearruneinv(var C_NPC slf)
{
var C_NPC her;
her = Hlp_GetNpc(pc_hero);
if(Hlp_GetInstanceID(self) != Hlp_GetInstanceID(her))
{
Npc_RemoveInvItems(slf,ItArRuneLight,Npc_HasItems(slf,ItArRuneLight));
Npc_RemoveInvItems(slf,ItArRuneFirebolt,Npc_HasItems(slf,ItArRuneFirebolt));
Npc_RemoveInvItems(slf,ItArRuneFireball,Npc_HasItems(slf,ItArRuneFireball));
Npc_RemoveInvItems(slf,ItArRuneFirestorm,Npc_HasItems(slf,ItArRuneFirestorm));
Npc_RemoveInvItems(slf,ItArRuneFireRain,Npc_HasItems(slf,ItArRuneFireRain));
Npc_RemoveInvItems(slf,ItArRuneHeal,Npc_HasItems(slf,ItArRuneHeal));
Npc_RemoveInvItems(slf,ItArRuneChainLightning,Npc_HasItems(slf,ItArRuneChainLightning));
Npc_RemoveInvItems(slf,ItArRuneThunderbolt,Npc_HasItems(slf,ItArRuneThunderbolt));
Npc_RemoveInvItems(slf,ItArRuneThunderball,Npc_HasItems(slf,ItArRuneThunderball));
Npc_RemoveInvItems(slf,ItArRuneIceCube,Npc_HasItems(slf,ItArRuneIceCube));
Npc_RemoveInvItems(slf,ItArRuneIceWave,Npc_HasItems(slf,ItArRuneIceWave));
Npc_RemoveInvItems(slf,ItArRuneDestroyUndead,Npc_HasItems(slf,ItArRuneDestroyUndead));
Npc_RemoveInvItems(slf,ItArRuneWindfist,Npc_HasItems(slf,ItArRuneWindfist));
Npc_RemoveInvItems(slf,ItArRuneStormfist,Npc_HasItems(slf,ItArRuneStormfist));
Npc_RemoveInvItems(slf,ItArRuneTelekinesis,Npc_HasItems(slf,ItArRuneTelekinesis));
Npc_RemoveInvItems(slf,ItArRuneCharm,Npc_HasItems(slf,ItArRuneCharm));
Npc_RemoveInvItems(slf,ItArRuneSleep,Npc_HasItems(slf,ItArRuneSleep));
Npc_RemoveInvItems(slf,ItArRunePyrokinesis,Npc_HasItems(slf,ItArRunePyrokinesis));
Npc_RemoveInvItems(slf,ItArRuneControl,Npc_HasItems(slf,ItArRuneControl));
Npc_RemoveInvItems(slf,ItArRuneBreathOfDeath,Npc_HasItems(slf,ItArRuneBreathOfDeath));
};
};

To co jest wyżej wkleiłem zwyczajowo do pliku "B_InExtremo.d" w Gothic\_work\DATA\scripts\Content\Story\B.

By funkcja się wywoływała wklejasz B_ClearRuneInv(self); w plikach "ZS_Dead.d" i "ZS_Unconscious.d". Oba pliki znajdują się w Gothic\_work\DATA\scripts\Content\AI\ZS_Human.

W pliku "ZS_Dead.d" możesz wkleić B_ClearRuneInv(self); pod B_GiveDeathInv();, zaś w ZS_Unconscious.d" tuż poniżej self.aivar[AIV_PLUNDERED] = FALSE;

Te wycinki powinny wyglądać wówczas tak:

W "ZS_Dead.d":

B_GiveDeathInv();
B_ClearRuneInv(self); //klaue alle runen!!

W "ZS_Unconscious.d"

self.aivar[AIV_PLUNDERED] = FALSE;
B_ClearRuneInv(self);//Hoshi, damit der Player keine Runen findet!

Gotowe!
(...)
Chętnie odpowiem na pytania i z góry dzięki za opinie :)

Nieźle to wygląda, trochę dodatkowych mechanik nie zaszkodzi, zwłaszcza że są w pełni opcjonalne. Czekam na premierę modyfikacji. :)
II tura testów trwa/zmierza ku końcowi. Ja cały czas wprowadzam poprawki. Za jakieś 2 tygodnie obstawiam, że będę mógł zacząć III turę testów. Planuję również wtedy zrobić live na YT w formie Q&A a w tle sobie gram w MT i opowiadam jak nie będzie pytań.
I jak tam prace nad modem, dalej?
Testy zostały zakończone. Trwają teraz pracę na poprawkami oraz udoskonalanie moda.

W międzyczasie chciałbym wszystkim zaprezentować jedną z autorskich nowości, która pojawi się w modyfikacji.
Crafting bo o nim będzie mowa, jest podzielony na różne umiejętności takie jak np. Alchemia, Kowalstwo czy Łuczarstwo. Istnieją jeszcze inne dziedziny jak tworzenie run, pozyskiwanie zasobów czy wytwarzanie różnego rodzaju amunicji. Skupię się jednak tutaj na Alchemii bo to w niej zaimplementowana została nowość co do której będę wdzięczny za przekazane opinie od Was :)
A więc tak umiejętności Alchemii, Kowalstwa oraz Łuczarstwa posiadają trzy stopnie rozwoju - Podstawowy/Zaawansowany/Mistrz. Każdy poziom daje graczowi możliwość tworzenia potężniejszych przedmiotów - to tak w wielkim skrócie ;). W samej alchemii wpadłem na pomysł, a żeby wykorzystać pomysł z G1 gdzie mikstury dające bonusy na stałe do statystyk były w 3 różnych wersjach czyli na przykładzie mikstury siły jest to: Esencja, Wyciąg oraz Eliksir. Problemów z takim systemem jest wiele przede wszystkim opłacalność robienia Esencji jeżeli można poczekać na eliksir który jest mocniejszy a przecież też potrzebuje tej samej rośliny do jej stworzenia. Dlatego wypracowałem system progresji dla mikstur o efektach stałych (poza specjalnymi!). A więc jakie mikstury będą zawierały taki system - Mikstury siły, zręczności, inteligencji, życia, many oraz wytrzymałości.

Jak działa ten system?
Działa w bardzo prostu sposób - już na pierwszym poziomie alchemii jeżeli znajdziemy/zakupimy recepturę np. na miksturę zręczności to możemy zacząć tworzyć jej podstawową wersję czyli Esencję. Jeżeli spełnimy warunki to znaczy uwarzymy łacznie 50 mikstur jakichkolwiek oraz uwarzymy 5 esencji i nauczymy się kolejnego poziomu alchemii to nasza receptura awansuje na kolejny poziom, dzięki czemu można zacząć tworzyć już wyciągi, które dają większy bonus do zręczności, a finałem oczywiście jest eliksir (3poziom), który daje największy boost.
Dlaczego jest to opłacalna inwestycja?
Wszystkie mikstury powyżej wymienione, które znajdziemy w świecie gry/zakupimy są w wersji pierwszej czyli Esencja, która zapewnia najmniejszy boost do statystyki, dlatego warzenie potek będzie miało tutaj większy sens - szczególnie na trybie udręki :)
Na koniec porcja screenów jak w ogóle wygląda menu craftingu (tak, nie tylko alchemii) oraz jak prezentuje się opisany przeze mnie system.

https://imgur.com/a/JRmu7E1

Chętnie odpowiem na pytania i z góry dzięki za opinie :)
czy umie ktos wyciagnac skrypty jezykowe z najnowszej wersji odyseji to sprubuję je przetłumaczyć

Brak polskich znaków, interpunkcji, oraz pełnoprawny błąd ortograficzny to nie rzeczy które chcesz umieszczać w poście gdzie oferujesz swoje usługi jako tłumacz ;)
Do góry