Przypisywanie dialogu powtarzalnego 1978 4

O temacie

Autor

Zaczęty 21.04.2012 roku

Wyświetleń 1978

Odpowiedzi 4

gothic1210
  • Gość
Witam. Mam problem z przypisaniem dialogów do kilku powtarzalnych NPC. Znalazłem taki kod:
Cytuj
FUNC VOID B_AssignAmbientInfos_Tpl_8(var c_NPC slf)
{
   B_AssignFindNpc_ST(slf);
   
   Info_Tpl_8_EXIT.npc               = Hlp_GetInstanceID(slf);
   Info_Tpl_8_EinerVonEuchWerden.npc   = Hlp_GetInstanceID(slf);
   Info_Tpl_8_WichtigePersonen.npc      = Hlp_GetInstanceID(slf);
   Info_Tpl_8_DasLager.npc            = Hlp_GetInstanceID(slf);
   Info_Tpl_8_DieLage.npc            = Hlp_GetInstanceID(slf);
};
I w ogóle go nie rozumiem. Gdzie tu jest napisane, że npc z X instancją ma ten dialog? Z góry dzięki za pomoc.
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
W skrypcie NPCa określasz, jaki ma typ. Przy type wpisujesz type_ambient, albo coś w tym stylu.

gothic1210
  • Gość
Zrobiłem to na początku  :D  
Jednak w dalszym ciągu nie wiem skąd Gotik pobiera sobie instancje tych NPC. Z tego co mi wiadomo to selfem może być np. kopacz który stoi obok nas w kopalni albo strażnik itd. Więc skoro tam jest zapisane slf, to ten dialog jest dla pierwszego lepszego selfa? A przecież nie mają go wszyscy lecz (w tym wypadku) strażnicy świątynni.

Pomyślałem, że może zrobiłbym to inaczej. Dopuszczalna jest taka składnia:
Cytuj
var int bandyci;
bandyci = instancja1, instancja2, instancja3;

FUNC VOID B_AssignAmbientInfos_Tpl_8(var c_NPC slf)
{
B_AssignFindNpc_ST(slf);

Info_Tpl_8_EXIT.npc = Hlp_GetInstanceID(bandyci);
Info_Tpl_8_EinerVonEuchWerden.npc = Hlp_GetInstanceID(bandyci);
Info_Tpl_8_WichtigePersonen.npc = Hlp_GetInstanceID(bandyci);
Info_Tpl_8_DasLager.npc = Hlp_GetInstanceID(bandyci);
Info_Tpl_8_DieLage.npc = Hlp_GetInstanceID(bandyci);
};
?
 

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Assignambientinfos. Jeszcze kilka godzin nie mam dostępu do Gothica więc nie podam dokładnej ścieżki, chyba story/assingambientinfos/*.d
Kieruj się gotowymi skryptami, nie jest to skomplikowane.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

gothic1210
  • Gość

gothic1210
Gość

Przypisywanie dialogu powtarzalnego
#4 2012-04-21, 14:31(Ostatnia zmiana: 2012-04-21, 14:37)
Zrobiłem własny plik i wrzuciłem tutaj: E:\Gotik 1\_Work\Data\Scripts\Content\Story\B\B_AssignAmbientInfos_Bau_3.d
Skrypt:
Cytuj
NSTANCE Info_Bau_3_Exit(C_INFO)
{
   nr              = 999;
   condition   = Info_Bau_3_Exit_Condition;
   information   = Info_Bau_3_Exit_Info;
   permanent   = TRUE;
   description     = "Zakończ";
};

FUNC INT Info_Bau_3_Exit_Condition()
{
   return TRUE;
};

FUNC VOID Info_Bau_3_Exit_Info()
{
   AI_StopProcessInfos   (self);
};

//========================================
//-----------------> Info_Bau_3_New
//========================================

INSTANCE Info_Bau_3_New (C_INFO)
{
   nr           = 1;
   condition    = Info_Bau_3_New_Condition;
   information  = Info_Bau_3_New_Info;
   permanent   = TRUE;
   description   = "Poszukujecie ludzi?";
};

FUNC INT Info_Bau_3_New_Condition()
{
    if (Npc_GetTrueGuild(other) != GIL_BAU)
    {
    return TRUE;
    };
};


FUNC VOID Info_Bau_3_New_Info()
{
    AI_Output (other, self ,"Info_Bau_3_New_15_01"); //Poszukujecie ludzi?
    AI_Output (self, other ,"Info_Bau_3_New_03_02"); //Nie wiem. Rekrutacją zajmuje się Mordrag. Z nim pogadaj.
};
[...]

FUNC VOID B_AssignAmbientInfos_Bau_3(var c_NPC slf)
{
   Info_Bau_3_Exit.npc               = Hlp_GetInstanceID(slf);
   Info_Bau_3_New.npc   = Hlp_GetInstanceID(slf);
   Info_Bau_3_Szef.npc      = Hlp_GetInstanceID(slf);
   Info_Bau_3_Camp.npc            = Hlp_GetInstanceID(slf);
   Info_Bau_3_Humor.npc            = Hlp_GetInstanceID(slf);
   Info_Bau_3_Help.npc    = Hlp_GetInstanceID(slf);
};
Ponadto npcty mają ambient tak jak Adanos kazał.

O teraz przeglądając skrypty skojarzyłem, że ta cyferka w instancjiach to jest nr głosu. Ja dałem 3 mimo iż moi npc nie mają takiego. Może tu tkwi problem?'

EDYCJA: Zlokalizowałem plik w którym to wszytsko jest po definiowane. Zaraz zobaczę czy działa.
 


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