Problem z Wld_SetTime (Nie ucina dialogu) 2880 8

O temacie

Autor Lobos

Zaczęty 13.08.2018 roku

Wyświetleń 2880

Odpowiedzi 8

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Witam
Chce by po dialogu nastąpiła zmiana czasu. Gdy dodaje dodaje Wld_SetTime do funkcji to działa to tak że nie zakańcza mi dialogu, po kliknięciu bohater stoi i nie da się nic kliknąć, popularny bug w gothicu.

Jak wywalam to Wld_SetTime to wszystko działa ale potrzebuje tej funkcji.
Jak mogę to jeszcze inaczej wywołać ?

Próbowałem zmieniać turyne, teleportować NPCta i siebie na inne WP ale jest to samo.

INSTANCE DIA_Carlos_KILOFY (C_INFO)
{
   npc          = SLD_3203_Carlos;
   nr           = 2;
   condition    = DIA_Carlos_KILOFY_Condition;
   information  = DIA_Carlos_KILOFY_Info;
   permanent = TRUE;
   description = "Co z tymi kilofami ?";
};

FUNC INT DIA_Carlos_KILOFY_Condition()
{
//if (Npc_KnowsInfo (other, DIA_Carlos_REKOJESCI))
if (Carlos_dzien == FALSE)

    {
return TRUE;
    };
};


FUNC VOID DIA_Carlos_KILOFY_Info()
{
if  (Wld_IsTime (06,00,20,00))
{
    AI_Output (other, self ,"DIA_Carlos_KILOFY_15_01"); //Co z tymi kilofami ?
    AI_Output (self, other ,"DIA_Carlos_KILOFY_03_02"); //Pokaże ci jak zrobić prawdziwy kilof a potem zrobisz tak następne
    AI_Output (self, other ,"DIA_Carlos_KILOFY_03_03"); //Zaczynajmy..
Carlos_dzien = TRUE;

    Info_ClearChoices (DIA_Carlos_KILOFY);
    Info_AddChoice (DIA_Carlos_KILOFY, "Dobra..", DIA_Carlos_KILOFY_OK);
}
else
{
AI_Output (self, other ,"DIA_Carlos_KILOFY_03_04"); //Wróć tu za dnia jak będe pracować, a teraz zmykaj już.
AI_PlayAni(self, "t_getlost");
};
};

FUNC VOID DIA_Carlos_KILOFY_OK()
{
AI_StopProcessInfos (self);
Wld_PlayEffect("WYGASZANIE_KOWAL",  hero, hero, 0, 0, 0, FALSE); 
Wld_SetTime (14,00);




};
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Uroki Gothica. Czasami pomaga wpierdzielenie 5x AI_StopProcessInfos. Druga opcja to opóźnienie zmiany czasu przez Frame Functions lub Trigger. Polecałbym opóźnienie. Dialogi średnio wyłączają się po 1.5 sekundzie, jeśli dobrze pamiętam, więc ustawiając to na 3 sekundy po dialogu będzie najlepszym rozwiązaniem.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Cruc

Cruc

Użytkownicy
posty667
Propsy236
Profesjabrak
  • Użytkownicy
Czasem udawało mi się zażegnać takie błędy poprzez zastosowanie dodatkowej linijki

AI_StopProcessInfos (hero);
Przydać się może również:

Npc_ClearAIQueue (self);
Ostatecznie stwórz sobie triggera, który przy pierwszym wywołaniu nic nie zrobi, a w drugim, po jakimś niedużym delay'u, zmieni czas.
 
while (!success) try{...}

Najlepszy modder od gothic multiplayer - polecam pytać go o wszystko!

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
 

Fabio

Fabio

The Modders
posty3477
Propsy2157
ProfesjaSkrypter
  • The Modders
Dzięki

Napisz może czy pomogło i jak tak to co, na pewno ułatwi to komuś innemu w przyszłości rozwiązanie takiego problemu. :D

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
WLD_SetTime nie jest funkcją zawarta w managerze zdarzeń gry. Jedyne mądre rozwiązanie to stworzenie triggera opartego na zmiennej, aby czas nie zmienił się podczas dialogu. To, że gra od tego wariuje jest spowodowane zbugowaniem się rutyn po nagłej zmianie czasu ;)
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Dokładnie tak.
Z poziomu dialogu są same bugi. Pomogło zrobienie triggerow, aczkolwiek zauważyłem że gdy NPC z ktorym prowadzimy dialog i stosujemy Wld_Settime śpi (po zmianie czasu)bo akurat tak rutyna mu wypada, to nic się nie buguje i można odpalać to dialogiem.
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Dokładnie tak.
Z poziomu dialogu są same bugi. Pomogło zrobienie triggerow, aczkolwiek zauważyłem że gdy NPC z ktorym prowadzimy dialog i stosujemy Wld_Settime śpi (po zmianie czasu)bo akurat tak rutyna mu wypada, to nic się nie buguje i można odpalać to dialogiem.

W takim wypadku można zmienić tymczasowo rutyny na takie, które będą odpowiadały aktualnemu miejscu npc. Zapewne o tym pomyślałeś, ale jakby ktoś nie pomyślał to ma rozwiązanie. :P
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Można też skorzystać z LeGo i pakietu AI_Function.
func void AI_SetTime(var int h, var int m) {
    AI_Function_II(hero, Wld_SetTime, h, m);
};

FUNC VOID DIA_Carlos_KILOFY_OK()
{
AI_StopProcessInfos (self);
Wld_PlayEffect("WYGASZANIE_KOWAL",  hero, hero, 0, 0, 0, FALSE); 
AI_SetTime(14,00);
};
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie


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