Potworek pokazujący się w danym WP po zakończeniu dialogu. 4864 15

O temacie

Autor Pragasek

Zaczęty 7.03.2010 roku

Wyświetleń 4864

Odpowiedzi 15

Pragasek

Pragasek

Użytkownicy
posty334
Propsy39
ProfesjaSkrypter
  • Użytkownicy
Witam. Chciałbym zrobić coś takiego, że np. Diego każe nam powybijać Gobliny które pojawiły się w jaskini gdzie leży Nek. I chciałbym, żeby po zakończeniu rozmowy z Diegiem te gobliny automatycznie się tam pokazały.

Używałem już Wld_InsertNpc po dialogu ale pokazuje mi błąd w spacerze...

Jak to zrobić?

Pozdrawiam

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Witam. Chciałbym zrobić coś takiego, że np. Diego każe nam powybijać Gobliny które pojawiły się w jaskini gdzie leży Nek. I chciałbym, żeby po zakończeniu rozmowy z Diegiem te gobliny automatycznie się tam pokazały.

Używałem już Wld_InsertNpc po dialogu ale pokazuje mi błąd w spacerze...

Jak to zrobić?

Pozdrawiam
Wld_InsertNpc to jak najbardziej odpowiednia funkcja, widocznie źle jej  użyłeś - porównaj ze startup.d i sprawdź logi w zSpy. Ewentualnie możesz dać te gobliny gdziekolwiek i użyć ai_teleport.

Pragasek

Pragasek

Użytkownicy
posty334
Propsy39
ProfesjaSkrypter
  • Użytkownicy
Właściwie to chodzi o zębacze tylko te gobliny to był tylko przykład bo nie chcę by ktoś wiedział co się Będzie dziać w moim modzie :]

Ale nie wydaje mi się bym użył wld insert źle.

Wld_InsterNpc (Snapper,"OW_PATH_3001_MOVE");
Wld_InsterNpc (Snapper,"OW_PATH_3001_MOVE2");
Wld_InsterNpc (Snapper,"OW_PATH_3001_MOVE3");
Wld_InsterNpc (Snapper,"OW_PATH_3001_MOVE4");


To dałem po dialogu, jednak mam błąd ;)

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Właściwie to chodzi o zębacze tylko te gobliny to był tylko przykład bo nie chcę by ktoś wiedział co się Będzie dziać w moim modzie :]

Ale nie wydaje mi się bym użył wld insert źle.

Wld_InsterNpc (Snapper,"OW_PATH_3001_MOVE");
Wld_InsterNpc (Snapper,"OW_PATH_3001_MOVE2");
Wld_InsterNpc (Snapper,"OW_PATH_3001_MOVE3");
Wld_InsterNpc (Snapper,"OW_PATH_3001_MOVE4");


To dałem po dialogu, jednak mam błąd ;)
Jaki konkretny błąd i czy na pewno w TEJ funkcji?

Pragasek

Pragasek

Użytkownicy
posty334
Propsy39
ProfesjaSkrypter
  • Użytkownicy
błąd Unknown Identifier : Wld_InsetrNpc

Oraz mam jeszcze jedno pytanko.
Co jest źle w tym dialogu?
Ponieważ gdy osiągam 70 siły w dialogu jest dalej, że nie jestem zbyt silny? O co chodzi?

Oto dialog:
//========================================
//-----------------> OrcDecision
//========================================

INSTANCE DIA_Lee_OrcDecision (C_INFO)
{
   npc = SLD_700_Lee;
   nr = 1;
   condition = DIA_Lee_OrcDecision_Condition;
   information = DIA_Lee_OrcDecision_Info;
   permanent = TRUE;
   description = "Czy jestem już gotowy by wyruszyć na ziemie orków?";
};

FUNC INT DIA_Lee_OrcDecision_Condition()
{
if (Npc_KnowsInfo (other, DIA_Lee_OrcLand))
{
return TRUE;
};
};


func VOID DIA_Lee_OrcDecision_Info()
{
AI_Output (other, self ,"DIA_Lee_OrcDecision_15_01"); //Czy jestem już gotowy by wyruszyć na ziemie orków?
if (hero.attribute[ATR_STRENGTH] == 70)
{
AI_Output (self, other ,"DIA_Lee_OrcDecision_03_02"); //Tak. Wydaje mi się, że jesteś wystarczająco silny!
AI_Output (self, other ,"DIA_Lee_OrcDecision_03_03"); //Teraz gdy masz już dosyć siły by wyruszyć na ziemie orków, przydziele ci kogoś do pomocy.

Log_SetTopicStatus   (CH1_SoldierTrening,LOG_SUCCESS);
B_LogEntry (CH1_SoldierTrening,"Mój trening się zakończył. Teraz Lee wybierze kogoś dla mnie do pomocy.");
Info_ClearChoices (DIA_Lee_OrcDecision);
B_GiveXP  (3500);
misja_ukonczona = 1;
}
else
{
AI_Output (self, other ,"DIA_Lee_OrcDecision_03_04"); //Nie! Nie jesteś wystarczająco silny! Trenuj więcej i wróć gdu uznasz że jesteś silniejszy!
};
};


Oczywiście dodałem zmienną do Story_Global oraz dodałem po zakończeniu zadania...

Pozdrawiam

EDIT

Acha i jeszcze coś funkcja AI_Teleport nie działa również. Nie pokazuję błędu w spacerze ale nie teleportuje tych zebaczy...

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
błąd Unknown Identifier : Wld_InsetrNpc

Oraz mam jeszcze jedno pytanko.
Co jest źle w tym dialogu?
Ponieważ gdy osiągam 70 siły w dialogu jest dalej, że nie jestem zbyt silny? O co chodzi?

Oto dialog:
//========================================
//-----------------> OrcDecision
//========================================

INSTANCE DIA_Lee_OrcDecision (C_INFO)
{
   npc = SLD_700_Lee;
   nr = 1;
   condition = DIA_Lee_OrcDecision_Condition;
   information = DIA_Lee_OrcDecision_Info;
   permanent = TRUE;
   description = "Czy jestem już gotowy by wyruszyć na ziemie orków?";
};

FUNC INT DIA_Lee_OrcDecision_Condition()
{
if (Npc_KnowsInfo (other, DIA_Lee_OrcLand))
{
return TRUE;
};
};


func VOID DIA_Lee_OrcDecision_Info()
{
AI_Output (other, self ,"DIA_Lee_OrcDecision_15_01"); //Czy jestem już gotowy by wyruszyć na ziemie orków?
if (hero.attribute[ATR_STRENGTH] == 70)
{
AI_Output (self, other ,"DIA_Lee_OrcDecision_03_02"); //Tak. Wydaje mi się, że jesteś wystarczająco silny!
AI_Output (self, other ,"DIA_Lee_OrcDecision_03_03"); //Teraz gdy masz już dosyć siły by wyruszyć na ziemie orków, przydziele ci kogoś do pomocy.

Log_SetTopicStatus   (CH1_SoldierTrening,LOG_SUCCESS);
B_LogEntry (CH1_SoldierTrening,"Mój trening się zakończył. Teraz Lee wybierze kogoś dla mnie do pomocy.");
Info_ClearChoices (DIA_Lee_OrcDecision);
B_GiveXP  (3500);
misja_ukonczona = 1;
}
else
{
AI_Output (self, other ,"DIA_Lee_OrcDecision_03_04"); //Nie! Nie jesteś wystarczająco silny! Trenuj więcej i wróć gdu uznasz że jesteś silniejszy!
};
};


Oczywiście dodałem zmienną do Story_Global oraz dodałem po zakończeniu zadania...

Pozdrawiam

EDIT

Acha i jeszcze coś funkcja AI_Teleport nie działa również. Nie pokazuję błędu w spacerze ale nie teleportuje tych zebaczy...

Co do Wld_InsertNpc to dwukrotnie popełniłeś literówki, najlepiej skopiuj ją z startup i tylko zmień npc i waypoint, od strony skryptów nie ma żadnej różnicy pomiędzy dialogiem a startupem i na pewni tej funkcji da się użyć.

Co do problemu z siłą, to zamiast "==" w warunku użyj ">=". Obecnie np przy 71 punktach warunek nie jest spełniony.

Pragasek

Pragasek

Użytkownicy
posty334
Propsy39
ProfesjaSkrypter
  • Użytkownicy
Jeest! Zębacze się pojawiły! Ale mam ostatnie dwa problemy!

Otóż gdy gadam z Lee gdy już mam +70 siły ta opcja się nie usuwa! Mimo że dałem Info_ClearChoices (DIA_Lee_OrcDecision); dalej się nie usuwa!

I drugi problem jaki mam dać warunek aby kolejna opcja się pokazała u Lee po zabiciu Zębaczy? Od razu mówię że zębaczy jest 4!

Pozdrawiam

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Cytuj
Otóż gdy gadam z Lee gdy już mam +70 siły ta opcja się nie usuwa!
W tym dialogu daj zmienną która ustawia się na 1. W jego condition daj warunek że tylko jeśli ta zmienna wynosi 0. Co prawda nigdy w życiu nie napisałem żadnego skryptu dialogu (:) ) ale wydaje mi się że poza tym można by ewentualnie użyć parametru permanent = 0.

jaki mam dać warunek aby kolejna opcja się pokazała u Lee po zabiciu ZębaczyUmieść ten warunek w condition opcji dialogowej. Może on być albo że mają 0 hp, albo lepiej Npc_IsDead(instance). Jednak w obu przypadkach trzeba by każdemu zębaczowi nadać unikatowy identyfikator.

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Cytuj
Otóż gdy gadam z Lee gdy już mam +70 siły ta opcja się nie usuwa! Mimo że dałem Info_ClearChoices (DIA_Lee_OrcDecision); dalej się nie usuwa!
Dodaj do tego dialogu:
DIA_Lee_OrcDecision.permanent = 0;

Pragasek

Pragasek

Użytkownicy
posty334
Propsy39
ProfesjaSkrypter
  • Użytkownicy
A o jaki "unikatowy identyfikator" chodzi?

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Cytuj
A o jaki "unikatowy identyfikator" chodzi?
Musisz zrobić nowego zębacza.
instance zebacz (var C_NPC) //tutaj zamiast var c_npc powinno być chyba mst_default_snapper
{
 //bla bla, dane zębacza
};
I nie trzeba robić 4 różnych. Wystarczy jedna nazwa obiektu (instance), a później w dialogu
if (Npc_IsDead(zebacz)>=4)
{
   return 1;
};

Pragasek

Pragasek

Użytkownicy
posty334
Propsy39
ProfesjaSkrypter
  • Użytkownicy
A można troche dokładniej? Gdzie mam zrobic tego zebacza itd.

Pragasek

Pragasek

Użytkownicy
posty334
Propsy39
ProfesjaSkrypter
  • Użytkownicy
>>>>>>>Odświeżam<<<<<<<<

Nadal czekam na pomoc iż przedłuża to moje prace nad modem :)

Pragasek

Pragasek

Użytkownicy
posty334
Propsy39
ProfesjaSkrypter
  • Użytkownicy
>>>O D Ś W I E Ż A M<<<

Dobra... Jakoś udało mi się zrobić dialog po zabiciu zębaczy ale teraz kolejny maluttki problem...
Przedstawię wam go tak...

Odpalam Gothica. Idę do Npc zlecającego Questa i w dialogach jest od razu opcja Wybiłem Zębacze, lecz dopiero co zacząłem gre... Ok ignoruję tą opcje i wybieram opcje w której zleca nam zadanie wybicia tych zębaczy! Po zakończeniu rozmowy o quescie opcja o wybiciu zębaczy nagle znika :P ... Ok ide, wybijam zębacze, wracam do npc i ponownie pojawia się opcja Wybiłem Zębacze!

Dziwne co?
W takim przypadku wszystko działa ale czy jest jakiś sposób który uniemożliwi pokazywanie się tej opcji dopiero przy starcie gry?

Pozdrawiam

jendrzejs

jendrzejs

Użytkownicy
posty586
Propsy31
Profesjabrak
  • Użytkownicy
Dać odpowiednie warunki w dialogach.
 

Pragasek

Pragasek

Użytkownicy
posty334
Propsy39
ProfesjaSkrypter
  • Użytkownicy
A myślisz, że jestem na tyle głupi by nie dać odpowiednich warunków? Gdyby to chodziło o te warunki na pewno bym tego nie pisał a że to nie działa to musi być na to jakiś inny sposób... Może jakaś zmienna? Nie wiem... PozdErr

Problem pomogłem rozwiązać przez GG, temat zamykam :P
Avallach


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