Itharu Team

Forum grupy modderskiej Itharu Team.

  • Nie jesteś zalogowany.

Ogłoszenie

PATRONITE

#1 2017-04-30 16:21:12

Kruk
Administracja Itharu Team
Zarejestrowany: 2016-12-09
Posty: 982

[G2 NK] Nowe rutyny

Proces tworzenia rutyn jest bardzo prosty. Wszystkie działania wykonujemy w folderze AI\Human\TA_Human.

Tworzenie rutyny zaczynamy od utworzenia nowego pliku - ZS_nazwarutyny.d

W środku tworzymy sobie 3 funkcje: ZS_nazwarutyny, ZS_nazwarutyny_loop, ZS_nazwarutyny_end.

Kod:

func void ZS_nazwarutyny(){

/*
Tutaj umieszczamy polecenia, które mają się wykonać w momencie, gdy postać zaczyna rutynę. 
Najczęściej będzie to moment, w którym silnik przywoła tą postać, zatem jest duże prawdopodobieństwo, że nie zauważymy owych działań.

//////

Zazwyczaj zawartość funkcji inicjalizującej rutynę ogranicza się do dodania percepctionów, 
ustawienia chodu czy sprowadzenie NPC'a dokładnie do jego waypointa. 
*/

    Perception_Set_Normal(); // Ustawia perce naszego NPC'a. Bez tego postać nie będzie reagować na żadne bodźce. 
    
    B_ResetAll (self); // NPC chowa broń i przestaje patrzeć się na to, na co patrzył się wcześniej, np. na naszego NPC'a

    AI_SetWalkmode     (self, NPC_WALK); //zmienia bieg na chód

};

Kod:

func int ZS_nazwarutyny_loop(){ //WAŻNE! Loop musi być typu całkowitoliczbowego, ponieważ zwracanie wartości przez tą funkcję jest warunkiem tego, żeby ta funkcja się powtarzała

/*
Loop - czyli pętla. Do pseudopętli rutyny wrzucamy polecenia, które mają się wykonywać w trakcie wykonywania tejże rutyny. To co tu wsadzimy zależy już od naszej kreatywności. Może być to po prostu ciągle jedzenie/picie piwa, albo przywoływanie mobów czy wywoływanie triggerów, funkcji i efektów graficznych.

Pozwolę sobie rzucić jedną z rutyn, które dodałem na potrzeby mojego moda
*/

    var int rand; rand = Hlp_Random(1000); //Tworzymy zmienną, której przypisujemy losową wartość
    if (rand >= 700){
        AI_PlayAni (self,"T_PLUNDER"); 
    }
    else if (rand >=500){
        AI_PlayAni (self,"R_SCRATCHHEAD");
    }
    else if (rand >=300){
        AI_PlayAni (self,"T_LGUARD_2_STAND");
        AI_PlayAni (self,"T_STAND_2_LGUARD");
    }; //zwykłe warunki, w zależności od których postać wykonywać będzie inne czynności
    Ai_Wait (self,1.0); // nakazuje czekać NPC'owi przez sekundę, ma to zabezpieczyć przed zbytnim nakładaniem się animacji, bowiem funkcja jest zaprogramowana tak, że odtwarzają się one dość często

    return LOOP_CONTINUE; //Daje informację o tym, że po zakończeniu tej funkcji loop ma zostać wywołany jeszcze raz, zatem otrzymujemy pseudopętlę. Bez tego prawdopodobnie postać po jednym przejściu loop'a zatnie się.

};

Kod:

func void ZS_nazwarutyny_end(){

/*
W endzie zawieramy to co ma się wykonać po zakończeniu rutyny. Zazwyczaj ta część jest pusta, ale nic nie stoi na przeszkodzie, żeby coś tam wsadzić.
*/

    Wld_PlayEffect("spellFX_Teleport_RING",  self, self, 0, 0, 0, FALSE ); //całkowicie niepotrzebny bajer :P

};

Pewnie teraz chcesz sparsować skrypty, dodać do NPC'a i zobaczyć efekt swojej pracy w grze. Hehe, nie tak szybko. Została jeszcze jedna rzecz do zrobienia.

Wychodzimy z folderu TA_Human. Znajdujemy się w folderze Human, gdzie znajduje się plik TA.d. Otwieramy go.

Znajdują się tu deklaracje (albo rejestracji, nie jestem pewien co do nazewnictwa) wszystkich rutyn z gothica. Jeśli nie umieścimy tutaj deklaracji własnej rutyny, wówczas Gothic będzie krzyczał, że nie zna naszej rutyny.

Zatem jedziemy. Po prostu na samym końcu wrzucamy jedną linijkę:

Kod:

func void TA_nazwarutyny            (var int start_h, var int start_m, var int stop_h, var int stop_m, VAR string waypoint)    {TA_Min        (self,    start_h,start_m, stop_h, stop_m, ZS_nazwarutyny,                waypoint);};

Jak widać, można pójść na łatwiznę i zwyczajnie skopiować jedną z istniejących linijek, po czym zamienić nazwę na początku i w środku.

Teraz wszystko powinno działać.

Co do Gothica 1, prawdopodobnie odbywa się to w ten sam sposób, ale głowy nie dam.


while (!success) try{...}

https://media.discordapp.net/attachments/359470928389865483/410858992965910538/Leiwark_ITH_TEAM_Kruk.png

Offline

 

#2 2017-04-30 17:03:32

ParzivalZ
Administracja Itharu Team
Zarejestrowany: 2016-11-27
Posty: 2192

Re: [G2 NK] Nowe rutyny

Leci props img/smilies/big_smile Świetna robota!


https://i.imgur.com/4MytkTe.png

Offline

 

#3 2017-11-27 12:09:50

ParzivalZ
Administracja Itharu Team
Zarejestrowany: 2016-11-27
Posty: 2192

Re: [G2 NK] Nowe rutyny

Jak będę miał więcej czasu to użyję tego do zrobienia pewnego bajeru.


https://i.imgur.com/4MytkTe.png

Offline

 

Stopka forum

Powered by PunBB
Host by: Hosting
© Copyright 2002–2005 Rickard Andersson



Założ : stronę za darmo