[G2NK] Trójpoziomowa gildia? 3347 5

O temacie

Autor HellVard

Zaczęty 20.04.2020 roku

Wyświetleń 3347

Odpowiedzi 5

HellVard

HellVard

Użytkownicy
posty520
Propsy91
Profesjabrak
  • Użytkownicy
Nie zabijajcie mnie jeśli już był taki temat, ale póki co go nie znalazłem. Mam pytanie:

Czy jest możliwe stworzenie trójpoziomowej gildii (np. Nowicjusz > Mag Ognia > Arcymag Ognia) i czy/lub możliwe jest przechodzenie z gildii do gildii jak miało to miejsce w G1 (zmiana np. ze strażnika w SO na Najemnika w NO)? Jest w ogóle różnica między jednym, a drugim z punktu widzenia sposobu działania skryptów?

Skelly

Skelly

Użytkownicy
posty13
Propsy9
ProfesjaScenarzysta
  • Użytkownicy
Wydaje mi się, że skoro w samym Gothicu były trópoziomowe gildie/frakcje, to jest to jak najbardziej możliwe. Tym bardziej, że były kiedyś modyfikacje z owymi gildiami, jeśli się nie mylę. Trzeba by poszperać w skryptach/plikach gotowych już frakcji. Mam wrażenie, że może to działać na takiej zasadzie - Nowicjusz, Mag Ognia i Arcymag Ognia to tak naprawdę odzielne frakcje. Powiedzmy, że jesteś Nowicjuszem. Kiedy już bohater spełni powiedzmy "wymagania" aby przejść na etap Maga Ognia, to trzeba by wywołać funkcję, dzięki której bohater dostawałby nową frakcję, jaką jest w tym przypadku Mag Ognia. Można ją wywołać np. za pomocą dialogu. Czyli, jesteś nowicjuszem, idziesz do Pyrokara i wybierasz dialog np "Jestem gotów aby zostać Magiem" i za pomocą tego dialogu wywołujesz funkcję, która dodaje ci nową frakcję jaką jest Mag Ognia. I tak z każdą inną. Wydaje mi się, że na takiej zasadzie możnaby to zrobić.
 

bogu9821

bogu9821

Użytkownicy
posty406
Propsy185
ProfesjaProgramista
  • Użytkownicy
Oczywiście, że się da.
W gothicu działa to tak, że każda gildia to inna wartość zmiennej guilds, która jest tak naprawdę indexem do struktury danych, przechowującą informacje o nastawieniach npc.
Trzeba jednak zaznaczyć, że nie można w ŁATWY sposób rozszerzyć tablicy gildii, wiec jest zdany na te gildie, co są już zhardocowane w silniku.
Czyli używasz tych z oryginalnego gothica + masz chyba jedną lub 2 wolne gildie, które możesz sobie jak chcesz użyć, jednak lepiej je zostawić dla potworów, bo w silniku są także zhardcodowane metody typu oCNpc::IsHuman.
Ale sama zmiana gildii jest prosta jak drut i możesz w dowolnej chwili, jaką chcesz rangę dać jakiemu chcesz npc:
hero.guild = GIL_MIL; //stała z constanst.d i to jest gildia strażnika, możesz dać dowolną inną
Npc_SetTrueGuild (hero, GIL_MIL);
 
while(false) Do();

HellVard

HellVard

Użytkownicy
posty520
Propsy91
Profesjabrak
  • Użytkownicy
Dzięki za info. Mam jednak jeszcze jedno pytanie, bo skoro jak mówisz:
masz chyba jedną lub 2 wolne gildie, które możesz sobie jak chcesz użyć, jednak lepiej je zostawić dla potworów, bo w silniku są także zhardcodowane metody typu oCNpc::IsHuman.

To jak tą kwestię rozwiązali twórcy takich modów jak Returning czy Przeznaczenie, gdzie dochodzą ze 3 nowe gildie?

bogu9821

bogu9821

Użytkownicy
posty406
Propsy185
ProfesjaProgramista
  • Użytkownicy
W returningu: po pierwsze zmienili parę istniejących gildii, takich jak gil_out, gil_empty_d na swoje, a po drugie błędnie użyli gildii powyżej 16 dla ludzi.
Ogólnie returning jest tak naprawdę bardzo źle napisany, ale jakoś działa.
Dla ludzi można brać gildie tylko do 16, część istniejących można przerobić na swoje.
Chyba, że przepisze się parę metod z silnika, takich jak oCNpc::IsHuman, bo inaczej będą błędy, których w returningu trochę jest, wtedy można nawet zrobić 66 gildii ludzkich bez żadnych błędów (jeżeli też zmienimy w skryptach niektóre zachowania ai, ale  do tego mamy dostęp, a do silnika nie masz dostępu).
Ale aby zwiększyć limit 66 gildii, trzeba mieć naprawdę sporą wiedzę na temat reverse engineeringu,
lub przepisać całkowicie system gildii (najlepiej na unionie).
Można też zniwelować ilość używanych gildii, poprzez użycie aivarów i np. zrobić gildię strażnika/paladyna jako jedną i odróżniać je tylko za pomocą wartością aivara, ale wtedy trzeba sporo pozmieniać w skryptach, jednak można w ten sposób uzyskać więcej gildii.
 
while(false) Do();

HellVard

HellVard

Użytkownicy
posty520
Propsy91
Profesjabrak
  • Użytkownicy
Dzięki za wyczerpującą odpowiedź, nie wszystko zrozumiałem szczerze mówiąc, bo w modowaniu Gothica jestem zielony jak świeżo pomalowana trawa przed siedzibą KC PZPR ;) Na szczęście 66 gildii nie potrzebuję, wystarczy mi jedna - dwie, o ile w ogóle się za to wezmę, bo pomysłów trochę mam, gorzej z wolnym czasem... Jeszcze raz dzięki!


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry