Koleś który idzie za mną 5283 13

O temacie

Autor Okrutny

Zaczęty 7.02.2010 roku

Wyświetleń 5283

Odpowiedzi 13

Okrutny

Okrutny

Użytkownicy
posty120
  • Użytkownicy

Okrutny

Koleś który idzie za mną
2010-02-07, 12:07(Ostatnia zmiana: 2010-02-07, 12:09)
No właśnie. Umiem robić npc ale nie znam się na dialogach i oczyścicie na tym by dany NPC za nami chodził.

Cz ktoś mi ładnie wytłumaczy krok po kroku co? gdzie? i jak?

I jeszcze jedno jak zrobić żeby jakiś potwór a;bo zwierzę za nami lazło, nawet gdy do innego świata przejdziemy ?

Sorry za dwa tematy coś mi się porąbało.
 

pawbuj

pawbuj

Użytkownicy
posty1623
Propsy135
ProfesjaSkrypter
  • Użytkownicy
cholera, temat wałkowany był co najmniej kilka razy, tak ciężko poszukać....
rutyna TA_fOLLLOW
 

Okrutny

Okrutny

Użytkownicy
posty120
  • Użytkownicy
Ja nie wiem co to rutyna.
 

jendrzejs

jendrzejs

Użytkownicy
posty586
Propsy31
Profesjabrak
  • Użytkownicy

jendrzejs

Koleś który idzie za mną
#3 2010-02-07, 17:41(Ostatnia zmiana: 2010-02-07, 17:43)
To poczytaj tutki.A jak nie to się skryptami nie zajmuj.Znajomośc i nazwy funkcji(podstawowych) itp. to podstawa skryptera.
 

fifka

fifka

DreamVader
posty563
Propsy50
ProfesjaTłumacz
  • DreamVader

fifka
DreamVader

Koleś który idzie za mną
#4 2010-02-07, 17:42(Ostatnia zmiana: 2010-02-07, 17:42)
matko jest o tym z 15 tematów wystarczy poszukać albo obejżyj filmm czipa17 "tworzenie modów od A do Z"
 
Naprawdę dokopałeś się do postów typa nieaktywnego na forum od 10 lat? Weź wyjdź z domu.

Okrutny

Okrutny

Użytkownicy
posty120
  • Użytkownicy
Pierdolić funkcje podać  mi porostu nie możecie jak mam to niby zrobić?
 

Tomek

Tomek

Użytkownicy
Kapitan Rob
posty2181
Propsy2189
ProfesjaNierób
  • Użytkownicy
  • Kapitan Rob
Pierdolić funkcje podać  mi porostu nie możecie jak mam to niby zrobić?
Pierdolić to możesz dzieci na plebani. Jak chcesz coś osiągnąć wszystko po kolei olewając, zwłaszcza takie podstawy? Skoro już jednak piszę, wypadałoby pomóc. W takim razie rada: naucz się tworzyć npc. Będziesz wiedział jak wstawiać rutynę.
 

WonderiuS
  • Gość
Po prostu zajrzyj do skryptu Wrzoda, to zrozumiesz, o co chodzi. Właściwie to możesz zrobić skrypt swojego NPC na podstawie skryptu Wrzoda i powinno działać. Nie testowałem tego, ale jestem pewien że powinno działać.
 

Pawciow

Pawciow

Użytkownicy
posty533
Propsy70
ProfesjaTłumacz
  • Użytkownicy
akurat wstawianie rutyny przy tworzeniu npc to jest łatwe, wystarczy na forum poszukać lub przejrzeć sam skrypt npca z gry...

Okrutny

Okrutny

Użytkownicy
posty120
  • Użytkownicy

Okrutny

Koleś który idzie za mną
#9 2010-02-07, 21:45(Ostatnia zmiana: 2010-02-07, 23:57)
NPC umiem robić ale mi o G2 chodzi! Próbowałem kopiować to follow ale błędy wyskakiwały to se spokój dałem>
 

Tomek

Tomek

Użytkownicy
Kapitan Rob
posty2181
Propsy2189
ProfesjaNierób
  • Użytkownicy
  • Kapitan Rob
NPC umiem robić ale mi o G2 chodzi! Próbowałem kopiować to follow ale błędy wyskakiwały to se spokój dałem>
Jeśli są błędy to się je poprawia. Czy to nie oczywiste? Dawanie SE spokoju nie jest drogą to osiągnięcia sukcesu.
 

Pawciow

Pawciow

Użytkownicy
posty533
Propsy70
ProfesjaTłumacz
  • Użytkownicy

Pawciow

Koleś który idzie za mną
#11 2010-02-08, 07:15(Ostatnia zmiana: 2010-02-08, 07:15)
ja zrobiłem wilka Burka na zasadzie owcy Betsy z Gothica 2 NK (że się zagaduje, żeby z nami poszedł i można gdzieś zostawić Burka;] ) ; przynajmniej w przypadku zwierzaka(podejrzewam, że również npc) przy przejściu do nowego świata (ja testowałem przejście z Khorinis do Górniczej Doliny), to zwierzak nie przechodzi razem z nami, tylko znika-także wędrujący za nami zwierzak będzie tylko w obrębie danego świata

Okrutny

Okrutny

Użytkownicy
posty120
  • Użytkownicy
To jak to niby mam zrobić. I nie chce osiągać żadnego sukcesu.  tak po prostu chce to zrobić, sam dla siebie. Ale ni idzie mi to za dobrze mógłbyś Pawcio podać skrypty?   (wiem że trzeba 2 plików)
 

Pawciow

Pawciow

Użytkownicy
posty533
Propsy70
ProfesjaTłumacz
  • Użytkownicy

Pawciow

Koleś który idzie za mną
#13 2010-02-08, 15:04(Ostatnia zmiana: 2010-02-11, 12:08)
wstawię tu skrypty, jak chcesz z małym opisem, to co wiem-odnośnie zwierzaka ; zrobiłem npca, zagaduje się do niego, żeby z nami szedł-ok-ale nie mogę go "przystopować"-nie pojawia mi się czemuś dialog, z opcją zaczekaj tutaj

ok zwierzak (na podstawie owcy Betsy z G2 NK):
-pliki:
Story\B_Content\B_Come_Wolf.d - utworzyć
Story\B_AssignAmbientInfos\B_Burek.d - utworzyć
AI\Monster\RTN_Monster\ZS_MM_Rtn_Friend_Wolf.d -utworzyć
Story\NPC\Monster\MST_Wolf.d - zmodyfikować
Story\Npc_Globals.d - zmodyfikować
Story\Startup.d - zmodyfikować

B_Come_Wolf.d:
func void B_Come_Wolf()
{
AI_Output(self,other,"DIA_Wolf_15_00"); //Haaau!   <--ogólnie funkcja i to co odpowiada Burek, gdy zagadujemy do niego
};

B_Burek.d (nasz dialog z Burkiem):
instance DIA_Burek_EXIT(C_Info)
{
npc = Friend_Wolf; <-- instance utworzony w pliku MST_Wolf.d
nr = 999;
condition = DIA_Burek_EXIT_Condition;
information = DIA_Burek_EXIT_Info;
permanent = TRUE; <--powoduje, że zawsze można zagadać do Burka
description = Dialog_Ende;
};


func int DIA_Burek_EXIT_Condition()
{
return TRUE;
};

func void DIA_Burek_EXIT_Info()
{
AI_StopProcessInfos(self);
};


instance DIA_Burek_Hallo(C_Info)
{
npc = Friend_Wolf;
nr = 1; <--numer dialogu(w naszym skrypcie wszędzie mamy 1, bo za każdym razem, gdy zagadujemy,  Burek robi co innego); gdyby były inne numery w dialogach poniżej(kolejno np. 2,3 itd.), to wszystkie opcje rozmowy byłyby dostępne od razu;
condition = DIA_Burek_Hallo_Condition;
information = DIA_Burek_Hallo_Info;
permanent = FALSE; <--false-dialog pokazuje się tylko raz(gdy 1wszy raz zagadamy do Burka)
description = "Cześć...";
};


func int DIA_Burek_Hallo_Condition()
{
return TRUE;
};

func void DIA_Burek_Hallo_Info()
{
AI_Output(other,self,"DIA_Burek_Hallo_15_00"); //Cześć piesku.
B_Come_Wolf(); <--to, co mówi Burek z pliku B_Come_Wolf.d
};


instance DIA_Burek_KommMit(C_Info)
{
npc = Friend_Wolf;
nr = 1;
condition = DIA_Burek_KommMit_Condition;
information = DIA_Burek_KommMit_Info;
permanent = TRUE;  <--true-powoduje, że ten dialog pokazuje się zawsze, po uprzednim wykonaniu dialogu DIA_Burek_WarteHier ("Zaczekaj tutaj") lub gdy zagadamy 1wszym razem
description = "Chodź ze mną.";
};


func int DIA_Burek_KommMit_Condition()
{
if((self.aivar[AIV_PARTYMEMBER] == FALSE) && Npc_KnowsInfo(other,DIA_Burek_Hallo) && (self.aivar[AIV_TAPOSITION] == FALSE))   <--w wolnym tłumaczeniu: jeśli Burek nie jest z nami w "drużynie" i zagadaliśmy wcześniej do niego, to może zostać wykonana kolejna funkcja (i dialog) poniżej
{
return TRUE;
};
};

func void DIA_Burek_KommMit_Info()
{
AI_Output(other,self,"DIA_Burek_KommMit_15_00"); //Burek do nogi. Idziemy. <--nasza gadka
B_Come_Wolf(); <-- gadka Burka
self.aivar[AIV_PARTYMEMBER] = TRUE; <--zagadując do Burka,  dołącza on do naszej "drużyny"i za nami wszędzie łazi
AI_StopProcessInfos(self); <--kończy dialog
};


instance DIA_Burek_WarteHier(C_Info)
{
npc = Friend_Wolf;
nr = 1;
condition = DIA_Burek_WarteHier_Condition;
information = DIA_Burek_WarteHier_Info;
permanent = TRUE;
description = "Zaczekaj tutaj!";
};


func int DIA_Burek_WarteHier_Condition()
{
if((self.aivar[AIV_PARTYMEMBER] == TRUE) && Npc_KnowsInfo(other,DIA_Burek_Hallo) && (self.aivar[AIV_TAPOSITION] == FALSE)) <-- jeśli Burek jest w naszej drużynie, zagadaliśmy do niego wcześniej, wykonana zostaje poniższa funkcja (i dialog)
{
return TRUE;
};
};

func void DIA_Burek_WarteHier_Info()
{
AI_Output(other,self,"DIA_Burek_WarteHier_15_00"); //Zaczekaj tutaj! <-nasza gadka
B_Come_Wolf(); <- gadka Burka
self.aivar[AIV_PARTYMEMBER] = FALSE; <-wykonanie funkcji powoduje, że Burek tymczasowo odłącza się od naszej drużyny(przestaje za nami łazić)
AI_StopProcessInfos(self);
};

ZS_MM_Rtn_Friend_Wolf.d -plk z rutyną przygotowany specjalnie dla naszego Burka:
func void ZS_MM_Rtn_Friend_Wolf()
{
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); <--wszystko ogólnie powoduje, że można gadać do Burka i że on może z nami gadać itp.
};

func int ZS_MM_Rtn_Friend_Wolf_Loop()  <--pętla naszej rutynki
{
var int randomMove;
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
{
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_Friend_Wolf_End()
{
};

cała rutyna chodzenia lub niechodzenia Burka za naszym bohaterem (nie potrafię tu wyjaśnić o co po kolei chodzi-bo nie testowałem różnych wartości itp, żeby sprawdzić, za co która odpowiada mniej więcej-zali skrypter ze mnie mierny  :roll: -ale tak to ma wyglądać)

MST_Wolf.d (wklejasz w dowolnie który plik mst, oczywiście odpowiednio należy zmienić nazwę poszczególnych plików później-można nawet do ścierwojada wkleić ;] , ale ja wkleiłem do MST_Wolf.d):
<kawałek, który wstawiamy na koniec skryptu>
instance Friend_Wolf(Mst_Default_Wolf) <--po instance nazwa zwierzaka(można później przywołać zwierzę w grze za pomocą konsoli, insert friend_wolf w tym przypadku; Mst_Default_Wolf-korzysta z prototypu Wilka ustalonego na początku  tego skryptu
{
name = "Burek"; <-- imię zwierzaka
guild = gil_sheep; <--ustalenie gildii (i to, co poniżej)
aivar[AIV_MM_REAL_ID] = id_sheep; <--id zwierzaka, jak się ustawi na inne zwierzę np. id_wolf, to ludzie będą atakować naszego kompana bez ostrzeżenia; najlepiej ustawiać takie same id i guild np. guild = gil_wolf i aivar[AIV_MM_REAL_ID] = id_wolf;
level = 0; <--poziom zwierzaka
//attribute[ATR_STRENGTH] = 50;
//attribute[ATR_DEXTERITY] = 50;
//attribute[ATR_HITPOINTS_MAX] = 100;
//attribute[ATR_HITPOINTS] = 100;
//protection[PROT_BLUNT] = 75;
//protection[PROT_EDGE] = 75;
//protection[PROT_POINT] = 25;
//protection[PROT_FIRE] = 75;
//protection[PROT_FLY] = 75;   <-- atrybuty, wiadomo
B_SetAttitude(self,ATT_FRIENDLY); <--nastawiony przyjacielsko do nas(i do innych istot, nawet jakbyśmy mu ustawili guild i real id na wolf)
aivar[AIV_ToughGuy] = TRUE; <-- zwierzak nie reaguje na morderstwo itp.;p

B_SetVisuals_Wolf(); <--wygląd wilka (określony w prototype na początku skryptu)
Npc_SetToFistMode(self);
aivar[AIV_MM_RoamStart] = OnlyRoutine; <--sposób poruszania się zwykłego wilka

start_aistate = ZS_MM_Rtn_Friend_Wolf; <--początkowa rutyna-nasz rutynka (func void ZS_MM_Rtn_Friend_Wolf() ) z tegoż pliku-łażenie i niełażenie za nami
CreateInvItems(self,ItFoMuttonRaw,1); <--to, co ma w sobie Burek, gdy zginie, to można wyciągnąć(tutaj mięsko)
};

Npc_Globals.d:
var C_Npc Liesel;
var C_NPC Burek; <--nasz Burek
var C_Npc Igaraz;

Liesel = Hlp_GetNpc(Follow_Sheep);
Burek = Hlp_GetNpc(Friend_Wolf); <---nasz Burek
Igaraz = Hlp_GetNpc(NOV_601_Igaraz);

zmienną var C_Npc i odniesienie do niej w Hlp_GetNpc najlepiej wstawiać w tym samym miejscu (u mnie pomiędzy Betsy a Igarazem)

Startup.d
func void STARTUP_NewWorld_Part_Xardas_01()
{
Wld_InsertItem(ItBe_Addon_STR_5,"FP_SPAWN_X_GUERTEL");
Wld_InsertNpc(NONE_100_Xardas,"NW_XARDAS_START");
Wld_InsertNpc(Friend_Wolf,"NW_XARDAS_START");
wstawiamy dowolnie, ale musi być zgodność waypointów ze światem-u mnie w newworld_part_xardas tu ustawiłem Burka na początku gry w wieży tam, gdzie gadamy na początku z Xardasem (przykładowo)

tyle...odnośnie aivarów(jak to nazywam) w rutynach, to jeszcze nie skumałem co do czego, ale tak to ma wyglądać, jak to przedstawiłem (przykładowo  :D  )


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