Ten tutek pokazuje jak zrobić by dana postać za nami podążała, i w wybranym momencie wracała na swoje miejsce.
Pokażę wam to na przykładzie mojej postaci o nazwie Lee.
No to zapinamy pasy i jedziemy^^
Zacznijmy od skryptu postaci:
Nas interesuje rutyna:
func void Rtn_Follow_2047 ()
{
TA_FollowPC (23,00,16,00,"NC_SMALL_CAVE_CENTER");
TA_FollowPC (16,00,23,00,"NC_SMALL_CAVE_CENTER");
};
Dajemy tą rutynę jako drugą
Funkcja TA_FollowPC odpowiada za to iż postać za nami podąża.
Waypoint "NC_SMALL_CAVE_CENTER" odpowiada za to gdzie dana postać będzie gdy powiemy że nie jest nam już potrzebna(bynajmniej ja tak myślę:P ).
Tyle musicie wiedzieć z skryptu postaci,a teraz skrypt dialogu:
//========================================
//-----------------> PODAZAJ
//========================================
INSTANCE DIA_Lee_PODAZAJ (C_INFO)
{
npc = SLD_2047_Lee;
nr = 2;
condition = DIA_Lee_PODAZAJ_Condition;
information = DIA_Lee_PODAZAJ_Info;
permanent = TRUE;
description = "Chodź ze mną!";
};
FUNC INT DIA_Lee_PODAZAJ_Condition()
{
return TRUE;
};
func VOID DIA_Lee_PODAZAJ_Info()
{
AI_Output (other, self ,"DIA_Lee_PODAZAJ_15_01"); //Chodź ze mną!
AI_Output (self, other ,"DIA_Lee_PODAZAJ_03_02"); //Ruszajmy!
self.aivar[AIV_PARTYMEMBER] = TRUE;
AI_StopProcessInfos (self);
Npc_ExchangeRoutine (self,"FOLLOW");
};
//========================================
//-----------------> WRACAJ
//========================================
INSTANCE DIA_Lee_WRACAJ (C_INFO)
{
npc = SLD_2047_Lee;
nr = 3;
condition = DIA_Lee_WRACAJ_Condition;
information = DIA_Lee_WRACAJ_Info;
permanent = TRUE;
description = "Nie jesteś mi już potrzebny.";
};
FUNC INT DIA_Lee_WRACAJ_Condition()
{
return TRUE;
};
func VOID DIA_Lee_WRACAJ_Info()
{
AI_Output (other, self ,"DIA_Lee_WRACAJ_15_01"); //Nie jesteś mi już potrzebny.
AI_Output (self, other ,"DIA_Lee_WRACAJ_03_02"); //A więc niech tak będzie.
self.aivar[AIV_PARTYMEMBER] = TRUE;
AI_StopProcessInfos (self);
Npc_ExchangeRoutine(self,"START");
};
Nas interesuje dialog DIA_Lee_PODAZAJ oraz DIA_Lee_WRACAJ.
Zajmijmy się tym pierwszym. Jeśli chcemy żeby postać za nami podążała musimy dać opcję:
Npc_ExchangeRoutine (self,"FOLLOW");
Odpowiada ona za uruchomienie rutyny postaci:
func void Rtn_Follow_2047 ()
{
TA_FollowPC (23,00,16,00,"NC_SMALL_CAVE_CENTER");
TA_FollowPC (16,00,23,00,"NC_SMALL_CAVE_CENTER");
};
Teraz ta postać będzie podążać za nami dopóki ktoś jej nie zabije, lub jej nie odeślemy. Teraz zajmijmy się pytaniem co zrobić by postać za nami już nie szła. Otóż odpowiedź leży w tym miejscu:
func VOID DIA_Lee_WRACAJ_Info()
{
AI_Output (other, self ,"DIA_Lee_WRACAJ_15_01"); //Nie jesteś mi już potrzebny.
AI_Output (self, other ,"DIA_Lee_WRACAJ_03_02"); //A więc niech tak będzie.
self.aivar[AIV_PARTYMEMBER] = TRUE;
AI_StopProcessInfos (self);
Npc_ExchangeRoutine(self,"START");
};
Znowu zmieniamy rutynę postaci na zwykłą (czyli "start" tak jak jest to w tej linijce):
Npc_ExchangeRoutine(self,"START");
Mam nadzieję że zrozumiałe, w razie pytań pytajcie. Jak bym nie odpowiedział to na pewno znajdzie się ktoś kto wam to wytłumaczy.
Pozwalam kopiować tego tutka, pod warunkiem iż wspomnicie że ja jestem jego autorem, chyba że ktoś znajdzie jeszcze błędy i je poprawi, wtedy tutek przechodzi na jego autorstwo.
Pozdrawiam.