Jak zrobić gadającą owcę? 3804 8

O temacie

Autor TheKetrab

Zaczęty 3.03.2016 roku

Wyświetleń 3804

Odpowiedzi 8

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Wzoruję się na owcy którą można kupić u Pepe.
Ale w grze nie mogę 'zagadać' (nawiązać dialogu) owcy...
Brakuje mi jakiegoś identyfikatora tej owcy gdzieś w skryptach?
Jak zagadać tę owcę?

Skrypt owcy:
INSTANCE Follow_Sheep2 (Mst_Default_Sheep)
{
name = "Moly";

aivar[AIV_ToughGuy] = TRUE;

B_SetVisuals_Sheep();
Npc_SetToFistMode(self);
aivar[AIV_MM_RoamStart] = OnlyRoutine;

start_aistate = ZS_MM_Rtn_Follow_Sheep;
CreateInvItems (self, ItFoMuttonRaw, 1);
};

Dialogi:
// ************************************************************
//      EXIT
// ************************************************************
INSTANCE DIA_Liesel_EXIT(C_INFO)
{
npc = Follow_Sheep2;
nr = 999;
condition = DIA_Liesel_EXIT_Condition;
information = DIA_Liesel_EXIT_Info;
permanent = TRUE;
description = DIALOG_ENDE;
};                       

FUNC INT DIA_Liesel_EXIT_Condition()
{
return TRUE;
};
 
FUNC VOID DIA_Liesel_EXIT_Info()
{
AI_StopProcessInfos (self);
};
// ************************************************************
//   Hallo (Durchsuchen)
// ************************************************************
INSTANCE DIA_Liesel_Hallo (C_INFO)
{
npc = Follow_Sheep2;
nr = 1;
condition = DIA_Liesel_Hallo_Condition;
information = DIA_Liesel_Hallo_Info;
permanent = TRUE;
important       = TRUE;
};                       
FUNC INT DIA_Liesel_Hallo_Condition()
{
if (Npc_IsInState(self, ZS_TALK) && (!PERROTOWCA))
{
return TRUE;
};
};

FUNC VOID DIA_Liesel_Hallo_Info()
{
B_LieselMaeh ();
};
// ************************************************************
//   Komm mit
// ************************************************************
INSTANCE DIA_Liesel_KommMit (C_INFO)
{
npc = Follow_Sheep2;
nr = 1;
condition = DIA_Liesel_KommMit_Condition;
information = DIA_Liesel_KommMit_Info;
permanent = TRUE;
description = "Chodź ze mną.";
};                       
FUNC INT DIA_Liesel_KommMit_Condition()
{
if (npc_knowsinfo (other, DIA_NASZ_306_Perrot_ok)
&& (self.aivar[AIV_PARTYMEMBER] == FALSE)
&& (Npc_KnowsInfo(other, DIA_Liesel_Hallo))
&& (self.aivar[AIV_TAPOSITION] == FALSE))
{
return TRUE;
};
};
 
FUNC VOID DIA_Liesel_KommMit_Info()
{
AI_Output (other, self,"DIA_Liesel_KommMit_15_00"); //Chodź ze mną.
B_LieselMaeh ();

self.aivar[AIV_PARTYMEMBER] = TRUE;

AI_StopProcessInfos (self);
};
// ************************************************************
//   Warte hier
// ************************************************************
INSTANCE DIA_Liesel_WarteHier (C_INFO)
{
npc = Follow_Sheep2;
nr = 1;
condition = DIA_Liesel_WarteHier_Condition;
information = DIA_Liesel_WarteHier_Info;
permanent = FALSE;
description = "To tutaj. Bądź grzeczna.";
};                       
FUNC INT DIA_Liesel_WarteHier_Condition()
{
if (Hlp_StrCmp(Npc_GetNearestWP(self),"OW_PATH_07_15_CAVE3")
&& (self.aivar[AIV_PARTYMEMBER] == TRUE)
&& (Npc_KnowsInfo(other, DIA_Liesel_KommMit))
&& (self.aivar[AIV_TAPOSITION] == FALSE))
{
return TRUE;
};
};
FUNC VOID DIA_Liesel_WarteHier_Info()
{
AI_Output (other, self,"DIA_Liesel_WarteHier_15_00"); //To tutaj. Bądź grzeczna.
B_LieselMaeh ();
AI_Output (other, self,"DIA_Liesel_WarteHier_15_01"); //Mam nadzieję, że to znaczyło "jasne"...

self.aivar[AIV_PARTYMEMBER] = FALSE;
PERROTOWCA = FALSE;
AI_StopProcessInfos (self);
};
 

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Szukałem trochę w pliku ZS_Talk.d, ale nic nie znalazłem :<
Opierałem się też o dialogi smoków i znalazłem to:
FUNC VOID B_AssignDragonTalk_Fire (var c_NPC slf)
{
DIA_Dragon_Fire_EXIT.npc = Hlp_GetInstanceID(slf);
DIA_Dragon_Fire_Hello.npc = Hlp_GetInstanceID(slf);
DIA_Dragon_Fire_WerBistDu.npc = Hlp_GetInstanceID(slf);
DIA_Dragon_Fire_HORT.npc = Hlp_GetInstanceID(slf);

//Die Drachenfragen
B_AssignDragonTalk_Main (slf);

};

Jednak wciąż nie mogę znaleźć czegoś (klasy?), co odpowiada za to żebym mógł nawiązać dialog z owcą.
Pomoże ktoś?
 

Aidan

Aidan

Użytkownicy
posty50
Propsy1
ProfesjaSkrypter
  • Użytkownicy
Probowales zmienic gildie owcy na np farmera albo najemnika czy cos?
 

kaczka

kaczka

RaveN Studio
Definitely not kaczka!
posty2280
Propsy2392
NagrodyV
ProfesjaLvl designer
  • RaveN Studio
  • Definitely not kaczka!
.npc na pewno potrzebne? Może najlepiej sprawdź oryginalny skrypt? Polecam Ctrl + F i wyszukiwanie treści w plikach
 

Toworish

Toworish

Użytkownicy
http://chomikuj.pl/ToWoRiSh
posty1664
Propsy254
ProfesjaNierób
  • Użytkownicy
  • http://chomikuj.pl/ToWoRiSh
INSTANCE Follow_Sheep (Mst_Default_Sheep)
{
name = "Betsy";

aivar[AIV_ToughGuy] = TRUE; //Liesel knn getötet werden, ohne daß jemand sich anpißt!

B_SetVisuals_Sheep();
Npc_SetToFistMode(self);
aivar[AIV_MM_RoamStart] = OnlyRoutine;

start_aistate = ZS_MM_Rtn_Follow_Sheep;
CreateInvItems (self, ItFoMuttonRaw, 1);
};

Masz skrypt betsy. ale nie wiem czy z pomocą tego zrobisz aby gadała :D
 
Niebawem...Pierdolnę se poradniki do Goticzka. Albo i nie, bo sie mnie nie chce.

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Z Betsy zabawiałem się na samym początku.
Teraz spróbowałem wstawić w modzie oryginalną Betsy: insert Follow_Sheep
Wstawiłem Betsy, z którą też nie mogłem porozmawiać.

Mam wykomentowaną jakąś komendę gdzieś w skryptach?
(tak jak okazało się kiedyś, że miałem wykomentowaną komendę B_GiveDeathInv)

e. Dialogi oryginalnej Betsy oczywiście w pliku: B_Liesel.d
 

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Podbijam pytanie: jak zagadać potwora?
Jakiś aivar za to odpowiada? Kombinuję i kombinuję.
Już nie wiem sam jak to obejść. Próbowałem zrobić człowieka z wizerunkiem owcy,
i jak jest zwykły npc - śmiga, ale gdy tylko wkleję mu:

Mdl_SetVisual (self, "Sheep.mds");
Mdl_SetVisualBody (self, "Sheep_Body",DEFAULT,DEFAULT,"",DEFAULT,DEFAULT,-1);

to nie da się zagadać NPC.
 

Toworish

Toworish

Użytkownicy
http://chomikuj.pl/ToWoRiSh
posty1664
Propsy254
ProfesjaNierób
  • Użytkownicy
  • http://chomikuj.pl/ToWoRiSh
Spróbuj teraz jak masz tego npc z tym visualem Skopiować i przerobić i wkleić niżej dialog betsy w pliku: Content/story/B_AssignAmbientInfos/B_Liesel.d

Kluczowe pewnie tutaj będzie:
npc = Follow_Sheep;
Musisz "Follow_Sheep" zmienić na instance twojego npc

Jeśli to nie pomoże to spróbuj dodać swojemu npc rutynę...
A dokładnie to: aivar[AIV_MM_RoamStart] = OnlyRoutine;

start_aistate = ZS_MM_Rtn_Follow_Sheep;

Zamiast standardowej rutyny typowej dla npc.

Eeediiiit:

Jak korzystasz z czystych skryptów to masz pustą funkcję w pliku content/AI/monster/RTN_Monster/ZS_MM_RTN_Follow_Sheep.d

Zawartość tego PLIKU nie funkcji!!! powinna być taka:
// **********************
// ZS_MM_Rtn_Follow_Sheep
// **********************

func void ZS_MM_Rtn_Follow_Sheep()
{
Npc_SetPercTime (self, 1);

Npc_PercEnable (self, PERC_ASSESSPLAYER , B_MM_AssessPlayer);
Npc_PercEnable (self, PERC_ASSESSTALK , B_AssessTalk);

Npc_PercEnable (self, PERC_ASSESSMAGIC , B_AssessMagic);

//ACHTUNG - AIV_TAPOSITION wird benutzt bei Abgabe im Kloster!!!
};

func int ZS_MM_Rtn_Follow_Sheep_Loop ()
{
if (self.aivar[AIV_PARTYMEMBER] == TRUE)
{
if (Npc_GetDistToNpc (self, hero) > 500)
{
if !C_BodyStateContains(self, BS_SWIM)
{
AI_SetWalkmode (self, NPC_RUN);
};

AI_GotoNpc (self, hero);
}
else
{
AI_TurnToNpc (self, hero);
self.wp = Npc_GetNearestWP (self);
};
}
else
{
var int randomMove;
randomMove = Hlp_Random(3);
if (randomMove == 0) {AI_PlayAni(self, "R_ROAM1");};
if (randomMove == 1) {AI_PlayAni(self, "R_ROAM2");};
if (randomMove == 2) {AI_PlayAni(self, "R_ROAM3");};
};

return LOOP_CONTINUE;
};

func void ZS_MM_Rtn_Follow_Sheep_End ()
{

};


// ********************************************
// ZS_MM_Rtn_Follow_Sheep_Balthasar
// ********************************************

func void ZS_MM_Rtn_Follow_Sheep_Balthasar()
{
Npc_SetPercTime (self, 1);

Npc_PercEnable (self, PERC_ASSESSPLAYER , B_MM_AssessPlayer);
};

func int ZS_MM_Rtn_Follow_Sheep_Balthasar_Loop ()
{
if (Npc_GetDistToWP(Balthasar, "NW_BIGMILL_FARM3_BALTHASAR") > 500)
{
if (Npc_GetDistToNpc (self, Balthasar) > 500)
{
if !C_BodyStateContains(self, BS_SWIM)
{
AI_SetWalkmode (self, NPC_RUN);
};

AI_GotoNpc (self, Balthasar);
}
else
{
AI_TurnToNpc (self, Balthasar);
self.WP = Npc_GetNearestWP (self);
};
}
else
{
AI_StartState (self, ZS_MM_Rtn_Roam, 1, "NW_BIGMILL_FARM3_BALTHASAR");
};

return LOOP_CONTINUE;
};

func void ZS_MM_Rtn_Follow_Sheep_Balthasar_End ()
{

};

 
Niebawem...Pierdolnę se poradniki do Goticzka. Albo i nie, bo sie mnie nie chce.

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Bingo! Czyste skrypty jak zwykle nawalają i to dlatego nie mogłem nawiązać dialogu z owcą. Dzięki za pomoc! Dwa propsy lecą.
 


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