Problem z poleceniem "Important" i "GetNearestWP" [G2] 5162 16

O temacie

Autor X7Coder

Zaczęty 24.04.2017 roku

Wyświetleń 5162

Odpowiedzi 16

X7Coder

X7Coder

Użytkownicy
posty11
Profesjabrak
  • Użytkownicy
Siemka! :D Mam takie pytanie, próbuje zrobić, żeby po dojściu do danego waypoint'a postać za, którą idę odezwała się do mnie, coś tam pogadała, coś zrobiła i sobie poszła. Problem w tym, że po dojściu do WP postać ani nie chce do mnie zagadać, ani nawet jak na nią kliknę nic nie mówi. Nie widzę też, żadnego błędu w kodzie. Pomożecie? :)

Cytuj
INSTANCE DIA_SLD_888_Hans_nagroda (C_INFO)
{
   npc         = SLD_888_Hans;
   nr          = 4;
   condition   = DIA_SLD_888_Hans_nagroda_Condition;
   information = DIA_SLD_888_Hans_nagroda_Info;
   permanent   = FALSE;
   important = true;
};

FUNC INT DIA_SLD_888_Hans_nagroda_Condition()
{
   if Hlp_StrCmp     (Npc_GetNearestWP(self),"NW_CITY_WAY_TO_SHIP_09")
   {
      return TRUE;
   };
};

FUNC VOID DIA_SLD_888_Hans_nagroda_Info()
{
   AI_Output (self, other,"DIA_SLD_888_Hans_nagroda_15_00"); //No i jesteśmy!
   Createinvitems(self, ItMw_Addon_Wymiatacz, 1);
   AI_playani(self, "T_SEARCH");
   AI_Output (self, other,"DIA_SLD_888_Hans_nagroda_01_01"); //Oto i Twoja nagroda, miecz nad miecze, wykuty w czeluściach piekieł!
   B_giveinvitems(self, other, ItMw_Addon_Wymiatacz, 1);
   AI_Output (other, self,"DIA_SLD_888_Hans_nagroda_15_02"); //Wielkie dzięki!

   
   B_LogEntry (TOPIC_Vodka, "Okazało się, że Hans to swój chłop! Teraz to dopiero mam miecz!");
   Npc_ExchangeRoutine(self, "Start");
   self.aivar[AIV_PARTYMEMBER] = false;
   Log_SetTopicStatus(TOPIC_Vodka, LOG_SUCCESS);
   B_GivePlayerXP(XP_Hans_Vodka);
   AI_StopProcessInfos (self);

};
 

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Albo masz zły numer dialogu (sprawdź, czy żadna inna opcja dialogowa z Hansem nie ma nr 4),
albo masz źle wpisaną nazwę WP,
albo masz dużo WP w jednym miejscu i wtedy postać nie jest najbliżej WP, który ustawiłeś.

Spróbuj:
if (Npc_GetDistToWP (self, "WAYPOINT") < 750) //jeśli npc ma mniej niż 7,5m do WP
 

X7Coder

X7Coder

Użytkownicy
posty11
Profesjabrak
  • Użytkownicy
Niestety. Sprawdziłem czy na pewno nie ma 2 opcji numer 4 - nie ma.
Sprawdziłem ponownie nazwę WP, ale to też nie to. Zwłaszcza, że najpierw ma ustawioną rutynę, że idzie do tego miejsca (co działa).
Rzeczywiście jest kilka WP dookoła, ale po zmianie warunku dalej nie ma ochoty na pogawędkę.
 

Fabio

Fabio

The Modders
posty3477
Propsy2157
ProfesjaSkrypter
  • The Modders
FUNC INT DIA_SLD_888_Hans_nagroda_Condition()
{
    if (Npc_GetDistToWP (self, "NW_CITY_WAY_TO_SHIP_09") < 100)
    {
    return TRUE;
    };

To musi zadziałać.

@TheKetrab, jak inny, wcześniejszy dialog będzie miał ten sam numer to nic nie szkodzi, to jest jedynie numer wyświetlania się na liście, na przykład jak masz wybór opcji dialogów.

X7Coder

X7Coder

Użytkownicy
posty11
Profesjabrak
  • Użytkownicy
Jak mówisz, że musi to musi, ale nie umie :D

Wygląda to tak, że podbiegam za nim do tego waypointa i tak sobie stoimy :P

http://www.mediafire.com/view/go5r507050ucqgi/Screenshot%202017-04-25%2000-21-42.jpg

 

Fabio

Fabio

The Modders
posty3477
Propsy2157
ProfesjaSkrypter
  • The Modders
Jak mówisz, że musi to musi, ale nie umie :D

Wygląda to tak, że podbiegam za nim do tego waypointa i tak sobie stoimy :P

http://www.mediafire.com/view/go5r507050ucqgi/Screenshot%202017-04-25%2000-21-42.jpg

Głupie pytanie, ale sparsowałeś skrypty? Te dialogowe też? (redefix zalecam) Odpalasz grę przez starter_mod z reparse scripts?

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Moze imporrant TRUE duzymi literami ? Może zamiast self napisz instance Hansa?
Jak nie to wywal important, ustaw description i sprawdź czy wgl da się porozMawiac. Jak nie, to wywal warunek getdisttowp i sprawdź czy wtedy działa. Przynajmniej będzie wiadomo, co blokuje.
 

Fabio

Fabio

The Modders
posty3477
Propsy2157
ProfesjaSkrypter
  • The Modders
Moze imporrant TRUE duzymi literami ? Może zamiast self napisz instance Hansa?
Jak nie to wywal important, ustaw description i sprawdź czy wgl da się porozMawiac. Jak nie, to wywal warunek getdisttowp i sprawdź czy wtedy działa. Przynajmniej będzie wiadomo, co blokuje.

Tak, nawet małymi literami ma inny kolor :D

X7Coder

X7Coder

Użytkownicy
posty11
Profesjabrak
  • Użytkownicy
Jak mówisz, że musi to musi, ale nie umie :D

Wygląda to tak, że podbiegam za nim do tego waypointa i tak sobie stoimy :P

http://www.mediafire.com/view/go5r507050ucqgi/Screenshot%202017-04-25%2000-21-42.jpg

Głupie pytanie, ale sparsowałeś skrypty? Te dialogowe też? (redefix zalecam) Odpalasz grę przez starter_mod z reparse scripts?



Tak sprasowałem. Odpalam przez "Gothic starter", to chyba nie to samo? :P


Sprawdzę to TRUE i zaraz wam dam znać. Jak nie zadziała to jutro spróbuje sprawdzić bez warunku, albo wgl. na innym WP, może podziała :P

Edit:
Zmiana z true na TRUE nie pomogła, niestety. Sprawdzę to oczywiście nie jutro a po prostu później :P Jak posprawdzam wszystkie możliwe opcje to dam znać czy działa czy też nie :)

Post połączony: 2017-04-25, 00:39
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
W takich przypadkach trzeba kombinować. Próbować sposoby bezsensowne i te niebezsensowne. Gothic jest upośledzony, więc zrób zmienną przed Hans_nagroda_condition i ustaw ją na true jak już npc będzie miał Cię prowadzić, a *_condition zmień na:

FUNC INT DIA_SLD_888_Hans_nagroda_Condition()
{
if (zmienna)
{
   if Hlp_StrCmp     (Npc_GetNearestWP(self),"NW_CITY_WAY_TO_SHIP_09")
   {
      return TRUE;
   };
};
};

Jeśli to nie podziała, to zrób takie coś: self = Hlp_GetNpc(instance Twojego npc); zaraz przed if Hlp_StrCmp     (Npc_GetNearestWP(self),"NW_CITY_WAY_TO_SHIP_09").
 
: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.

X7Coder

X7Coder

Użytkownicy
posty11
Profesjabrak
  • Użytkownicy
Wciąż nie działa, ale to chyba nie z tym problem. Dlaczego tak twierdze, otóż usunąłem cały warunek oraz ten sapcerek. Zmieniłem important na description, i gdy chce zagadać do niego, to tak jakby tego dialogu wgl. nie było. Nie widzę też żadnego błędu, który mógłby to powodować, a parsuje również się bez problemu. Parsuje dobrze, bo zmiana WP z tego co był na inny działała. Wszystko inne też działa tylko ten jeden dialog ma problem.

Tutaj podeślę kod całego dialogu, może wyżej gdzieś zrobiłem jakiś błąd logiczny a go nie widzę
//*********************************************************************
// Info EXIT
//*********************************************************************
INSTANCE DIA_SLD_888_Hans_EXIT   (C_INFO)
{
npc         = SLD_888_Hans;
nr          = 999;
condition   = DIA_SLD_888_Hans_EXIT_Condition;
information = DIA_SLD_888_Hans_EXIT_Info;
permanent   = TRUE;
description = DIALOG_ENDE;
};

FUNC INT DIA_SLD_888_Hans_EXIT_Condition()
{
return TRUE;
};

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

//*********************************************************************
// Info Hello
//*********************************************************************
INSTANCE DIA_SLD_888_Hans_Hello   (C_INFO)
{
npc         = SLD_888_Hans;
nr          = 1;
condition   = DIA_SLD_888_Hans_Hello_Condition;
information = DIA_SLD_888_Hans_Hello_Info;
permanent   = FALSE;
description = "Witaj!";
};

FUNC INT DIA_SLD_888_Hans_Hello_Condition()
{
return TRUE;
};

FUNC VOID DIA_SLD_888_Hans_Hello_Info()
{
AI_Output (other,self ,"DIA_SLD_888_Hans_Hello_15_00"); //Witaj!
AI_Output (self ,other,"DIA_SLD_888_Hans_Hello_01_01"); //A no witam, witam...

};

//*********************************************************************
// Vodeczka
//*********************************************************************
INSTANCE DIA_SLD_888_Hans_Vodka   (C_INFO)
{
npc         = SLD_888_Hans;
nr          = 2;
condition   = DIA_SLD_888_Hans_Vodka_Condition;
information = DIA_SLD_888_Hans_Vodka_Info;
permanent   = FALSE;
description = "Coś nie tak?";
};

FUNC INT DIA_SLD_888_Hans_Vodka_Condition()
{
if(npc_knowsinfo(other, DIA_SLD_888_Hans_Hello))
{
return TRUE;
};
};

FUNC VOID DIA_SLD_888_Hans_Vodka_Info()
{
AI_Output (other ,self,"DIA_SLD_888_Hans_Vodka_15_00"); //Coś nie tak?
AI_Output (self ,other,"DIA_SLD_888_Hans_Vodka_01_01"); //Aaa bo wiesz...
AI_Output (other ,self,"DIA_SLD_888_Hans_Vodka_15_02"); //No o co chodzi?
AI_Output (self ,other,"DIA_SLD_888_Hans_Vodka_01_03"); //Napiłbym się gorzałki, ale nie mogę się stąd ruszyć...
AI_Output (other ,self,"DIA_SLD_888_Hans_Vodka_15_04"); //Co dostanę jak przyniosę ci flaszke?
AI_Output (self ,other,"DIA_SLD_888_Hans_Vodka_01_05"); //Przynieś mi ją, a nie pożałujesz!
AI_Output (other ,self,"DIA_SLD_888_Hans_Vodka_15_06"); //Co to ma być za flaszka?
AI_Output (self ,other,"DIA_SLD_888_Hans_Vodka_01_07"); //Idź do Heńka, znajdziesz go obok Harada, powiedz mu, że ja Cię przysłałem, będzie wiedział o co chodzi.

Log_CreateTopic (Topic_Vodka, LOG_MISSION);
Log_SetTopicStatus(TOPIC_Vodka, LOG_RUNNING);
B_LogEntry (TOPIC_Vodka, "Hans chce, żebym przyniósł mu wódkę od Heńka.");
AI_StopProcessInfos (self);

};

//*********************************************************************
// Mam vodke!
//*********************************************************************
INSTANCE DIA_SLD_888_Hans_complete   (C_INFO)
{
npc         = SLD_888_Hans;
nr          = 3;
condition   = DIA_SLD_888_Hans_complete_Condition;
information = DIA_SLD_888_Hans_complete_Info;
permanent   = FALSE;
description = "Pozdrowienia od Heńka";
};

FUNC INT DIA_SLD_888_Hans_complete_Condition()
{
if(npc_knowsinfo(other, DIA_SLD_888_Hans_Vodka))
&& (npc_hasitems (other, ItFo_Booze)>=1)
{
return TRUE;
};
};


FUNC VOID DIA_SLD_888_Hans_complete_Info()
{
AI_Output (other, self,"DIA_SLD_888_Hans_complete_15_00"); //Pozdrowienia od Heńka!
B_giveinvitems (other, self, ItFo_Booze, 1);
B_UseItem(self, ItFo_Booze);
AI_Output (self, other,"DIA_SLD_888_Hans_complete_01_01"); //Oooo chłopie, wielkie dzięki! Tego było mi trzeba!
AI_Output (self, other,"DIA_SLD_888_Hans_complete_01_02"); //A teraz obiecana nagroda, chodź za mną!


B_LogEntry (TOPIC_Vodka, "Gdzie on mnie prowadzi? Coś mi tu śmierdzi...");
//Npc_ExchangeRoutine(self, "GO");
self.aivar[AIV_PARTYMEMBER] = TRUE;
AI_StopProcessInfos (self);

};
//*********************************************************************
// Nagroda
//*********************************************************************
INSTANCE DIA_SLD_888_Hans_nagroda (C_INFO)
{
npc         = SLD_888_Hans;
nr          = 4;
condition   = DIA_SLD_888_Hans_nagroda_Condition;
information = DIA_SLD_888_Hans_nagroda_Info;
permanent   = FALSE;
description = "BleBle";
};


FUNC INT DIA_SLD_888_Hans_nagroda_Condition()
{
      return TRUE;
};

FUNC VOID DIA_SLD_888_Hans_nagroda_Info()
{
AI_Output (self, other,"DIA_SLD_888_Hans_nagroda_15_00"); //No i jesteśmy!
Createinvitems(self, ItMw_Addon_Wymiatacz, 1);
AI_playani(self, "T_SEARCH");
AI_Output (self, other,"DIA_SLD_888_Hans_nagroda_01_01"); //Oto i Twoja nagroda, miecz nad miecze, wykuty w czeluściach piekieł!
B_giveinvitems(self, other, ItMw_Addon_Wymiatacz, 1);
AI_Output (other, self,"DIA_SLD_888_Hans_nagroda_15_02"); //Wielkie dzięki!


B_LogEntry (TOPIC_Vodka, "Okazało się, że Hans to swój chłop! Teraz to dopiero mam miecz!");
Npc_ExchangeRoutine(self, "Start");
self.aivar[AIV_PARTYMEMBER] = false;
Log_SetTopicStatus(TOPIC_Vodka, LOG_SUCCESS);
B_GivePlayerXP(XP_Hans_Vodka);
AI_StopProcessInfos (self);

};







 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
To wywal pliki OU i zreparsuj (redefixem) ponownie.
 
: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.

X7Coder

X7Coder

Użytkownicy
posty11
Profesjabrak
  • Użytkownicy
Robiłem tak spacerem. Redfix rozumiem, że to program typu jak spacer? Gdzie go mogę znaleźć? Nie mogę znaleźć nic w googlu :P
 

Halicor

Halicor

Użytkownicy
Hauptsturmfuhrer
posty365
Propsy57
ProfesjaNierób
  • Użytkownicy
  • Hauptsturmfuhrer

X7Coder

X7Coder

Użytkownicy
posty11
Profesjabrak
  • Użytkownicy
Nie wiem jak szukasz ale http://imgur.com/QioRYYS -.-

Nic dziwnego, że mi nie wyskoczyło, jak źle wpisywałem :P Wybacz, mój błąd  :facepalm:


Edit: Sprasowało się ładnie, ale wciąż nie działa ostatni dialog... :/
 

Dwuokicyklop

Dwuokicyklop

Użytkownicy
posty6
Profesjabrak
  • Użytkownicy
Fragment dialogu Mordraga z gothic 1, może coś ci się przyda:
Spoiler
instance  Org_826_Mordrag_GotoNewcamp(C_INFO)
{
npc = Org_826_Mordrag;
nr = 3;
condition = Org_826_Mordrag_GotoNewcamp_Condition;
information = Org_826_Mordrag_GotoNewcamp_Info;
permanent = 0;
description = "Chodźmy do Nowego Obozu!";
};                       

FUNC int  Org_826_Mordrag_GotoNewcamp_Condition()
{
if (Npc_KnowsInfo(hero,Org_826_Mordrag_JoinNewcamp))
{
return 1;
};
};

FUNC VOID  Org_826_Mordrag_GotoNewcamp_Info()
{
AI_Output (other, self,"Org_826_Mordrag_GotoNewcamp_15_00"); //Chodźmy do Nowego Obozu!
AI_Output (self, other,"Org_826_Mordrag_GotoNewcamp_11_01"); //Dobra! Chodź za mną!

Mordrag_GotoNC_Day = Wld_GetDay();

AI_StopProcessInfos (self);

Npc_SetPermAttitude(self,ATT_FRIENDLY); // damit hat der Spieler einen Freischlag. Nach dem zweiten wehrt sich Mordrag!

if (Npc_GetTrueGuild(hero) == GIL_NONE)
{
Log_CreateTopic (CH1_JoinNC, LOG_MISSION);
Log_SetTopicStatus (CH1_JoinNC, LOG_RUNNING);
};
B_LogEntry (CH1_JoinNC, "Mordrag zgodził się zaprowadzić mnie do Nowego Obozu. Mam tylko nadzieję, że to nie jakaś pułapka!");

self.aivar[AIV_PARTYMEMBER] = TRUE;

Npc_ExchangeRoutine (self,"GUIDE");
};

// **************************************************
// AM NEWCMAP ANGEKOMMEN
// **************************************************

instance  Org_826_Mordrag_AtNewcamp(C_INFO)
{
npc = Org_826_Mordrag;
nr = 3;
condition = Org_826_Mordrag_AtNewcamp_Condition;
information = Org_826_Mordrag_AtNewcamp_Info;
permanent = 0;
important = 1;
};                       

FUNC int  Org_826_Mordrag_AtNewcamp_Condition()
{
if ( Npc_KnowsInfo(hero,Org_826_Mordrag_GotoNewcamp) && Hlp_StrCmp(Npc_GetNearestWP(self),"OW_PATH_07_21") )
{
self.flags = 0;
return 1;
};
};

FUNC VOID  Org_826_Mordrag_AtNewcamp_Info()
{
if (Mordrag_GotoNC_Day > (Wld_GetDay()-2))
{
AI_Output (self, other,"Org_826_Mordrag_AtNewcamp_11_00"); //No to jesteśmy.
}
else
{
AI_Output (self, other,"Org_826_Mordrag_AtNewcamp_LATE_11_00"); //Myślałem, że już tu nie dotrzesz! Zresztą nieważne - jesteśmy na miejscu!
};
AI_Output (self, other,"Org_826_Mordrag_AtNewcamp_11_01"); //Za tą bramą rozciąga się Nowy Obóz. Porozmawiaj z Laresem, on ci pomoże. Daj mu ten cenny pierścień.
AI_Output (self, other,"Org_826_Mordrag_AtNewcamp_11_02"); //To twoja przepustka do Laresa. Trzeba mieć nie lada powód, żeby się z nim spotkać.
AI_Output (self, other,"Org_826_Mordrag_AtNewcamp_11_03"); //Wiesz co? Po zastanowieniu - chyba posiedzę tu parę dni. Zarobiłem już niezłą sumkę, a w Starym Obozie zaczyna robić się trochę za gorąco.
AI_Output (self, other,"Org_826_Mordrag_AtNewcamp_11_04"); //Jak byś czegoś potrzebował - znajdziesz mnie w karczmie na środku jeziora. Uważaj na siebie!
AI_Output (other, self,"Org_826_Mordrag_AtNewcamp_15_05"); //Do zobaczenia.

CreateInvItems  (self, MordragsRing, 1);
B_GiveInvItems (self, other, MordragsRing, 1);

B_GiveXP (XP_ArrivedWithMordrag);
B_LogEntry (CH1_JoinNC, "Stoimy przed główną bramą Nowego Obozu. Mordrag dał mi pierścień, który mam przekazać Laresowi, przywódcy Szkodników. Ma mi to pomóc w zostaniu członkiem Nowego Obozu. Mordrag przez jakiś czas zostanie w karczmie na jeziorze.");
var C_NPC lares; lares = Hlp_GetNpc(Org_801_Lares);
Lares.aivar [AIV_FINDABLE]=TRUE;

MordragKO_StayAtNC = TRUE;
self.aivar[AIV_PARTYMEMBER] = FALSE;

AI_StopProcessInfos (self);

Npc_ExchangeRoutine(self,"START");
};

Skomentowałeś to na czas jakiś testów czy zapomniałeś?
Spoiler
//Npc_ExchangeRoutine(self, "GO");
 

X7Coder

X7Coder

Użytkownicy
posty11
Profesjabrak
  • Użytkownicy
Dobra, zrobiłem tak jak było na początku, skompilowałem wszystko jeszcze raz i wszystko pięknie działa :) Dzięki za pomoc :)

@Dwuokicyklop Tak dałem w komentarz, żeby sprawdzić czy wgl. rozmowa działała. Ale nie działała xD No ale teraz gra i buczy ;P
 


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