Co w tym dialogu jest nie tak? 4310 11

O temacie

Autor Aidano

Zaczęty 18.05.2016 roku

Wyświetleń 4310

Odpowiedzi 11

Aidano

Aidano

Użytkownicy
posty5
ProfesjaScenarzysta
  • Użytkownicy

Aidano

Co w tym dialogu jest nie tak?
2016-05-18, 11:17(Ostatnia zmiana: 2016-05-18, 11:57)
Zrobiłem questa z odzyskaniem łuku jednego myśliwego, jest to pierwszy quest jaki dostaje się w modzie i ma on pełnić rolę podexpienia odrobinę naszej postaci, npc zgubił łuk i prowadzi nas do miejsca w którym ten łuk zgubił. Problem polega na tym, że po doprowadzeniu nas na miejsce, stoi i gapi się na nasza postać, a mam wpisane w skrypcie żeby postać zagadała do nas gdy będziemy w promieniu 60 jednostek długości od WP do którego ma nas zaprowadzić, party się zamknęło quest został zaliczony i żeby dało expa ale nic z tego się nie dzieje. NPC nawet się nie odzywa tylko stoi i się gapi na Bezia. Nie ważne z jakiej strony się stanie, NPC zawsze jest zwrócony w stronę bezia i gapi się nie wiedząc co zrobić. Nawet gdy podniesie się ten łuk z ziemi to i tak nic nie zmienia.

Zamieszczam fragment skryptu odpowiadający za ten quest

//========================================
//-----------------> HELLO5
//========================================

INSTANCE DIA_Boromir_HELLO5 (C_INFO)
{
   npc          = GLA_1_Boromir;
   nr           = 5;
   condition    = DIA_Boromir_HELLO5_Condition;
   information  = DIA_Boromir_HELLO5_Info;
   permanent = FALSE;
   description = "Może mógłbym ci pomóc?";
};

FUNC INT DIA_Boromir_HELLO5_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Boromir_HELLO4))
    {
    return TRUE;
    };
};


FUNC VOID DIA_Boromir_HELLO5_Info()
{
    AI_Output (other, self ,"DIA_Boromir_HELLO5_15_01"); //Może pomogę ci odzyskać twój łuk?
    AI_Output (self, other ,"DIA_Boromir_HELLO5_03_02"); //Hmm... Wiesz co? To nie jest głupi pomysł.
    AI_Output (self, other ,"DIA_Boromir_HELLO5_03_03"); //Sam nie mogę się tam wybrać, bez łuku. Ale z twoją pomocą...
    AI_Output (self, other ,"DIA_Boromir_HELLO5_03_04"); //I możemy przy okazji sobie zapolować...
    AI_Output (self, other ,"DIA_Boromir_HELLO5_03_05"); //No dobrze, niech będzie. Przyjdz do mnie jak będziesz gotowy do drogi.

    MIS_Polowanie = LOG_RUNNING;

    Log_CreateTopic            (TOPIC_Polowanie, LOG_MISSION);
    Log_SetTopicStatus       (TOPIC_Polowanie, LOG_RUNNING);
    B_LogEntry                     (TOPIC_Polowanie,"Boromir stracił swój łuk, postanowiłem, że pomogę mu go odzyskać.");
};

//========================================
//-----------------> HELLO6
//========================================

INSTANCE DIA_Boromir_HELLO6 (C_INFO)
{
   npc          = GLA_1_Boromir;
   nr           = 6;
   condition    = DIA_Boromir_HELLO6_Condition;
   information  = DIA_Boromir_HELLO6_Info;
   permanent = FALSE;
   description = "Chodźmy zapolować!";
};

FUNC INT DIA_Boromir_HELLO6_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Boromir_HELLO5))
    {
    return TRUE;
    };
};


FUNC VOID DIA_Boromir_HELLO6_Info()
{
    AI_Output (other, self ,"DIA_Boromir_HELLO6_15_01"); //Chodźmy zapolować!
    AI_Output (self, other ,"DIA_Boromir_HELLO6_03_02"); //Dobrze, chodź za mną.
    AI_Output (self, other ,"DIA_Boromir_HELLO6_03_03"); //I weź tę broń, przyda ci się.
    CreateInvItems (self, ItMw_1H_Mace_L_03, 1);
    B_GiveInvItems (self, other, ItMw_1H_Mace_L_03, 1);
    self.aivar[AIV_PARTYMEMBER] = TRUE;
    Npc_ExchangeRoutine (self, "Polowanie");
    AI_StopProcessInfos (self);
};

//========================================
//-----------------> HELLO7
//========================================

INSTANCE DIA_Boromir_HELLO7 (C_INFO)
{
   npc          = GLA_1_Boromir;
   nr           = 7;
   condition    = DIA_Boromir_HELLO7_Condition;
   information  = DIA_Boromir_HELLO7_Info;
   permanent = FALSE;
   Important    = TRUE;
};

FUNC INT DIA_Boromir_HELLO7_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Boromir_HELLO6))
    && (Npc_GetDistToWP (other, "SCIERWA") < 500)
    {
    return TRUE;
    };
};


FUNC VOID DIA_Boromir_HELLO7_Info()
{
    AI_Output (self, other ,"DIA_Boromir_HELLO7_03_01"); //No i po wszystkim. Teraz poszukaj tego łuku. Będę czekał gdzieś w okolicy.

self.aivar[AIV_PARTYMEMBER] = FALSE;

    Npc_ExchangeRoutine (self, "Koniec");
    AI_StopProcessInfos (self);

};

//========================================
//-----------------> HELLO8
//========================================

INSTANCE DIA_Boromir_HELLO8 (C_INFO)
{
   npc          = GLA_1_Boromir;
   nr           = 8;
   condition    = DIA_Boromir_HELLO8_Condition;
   information  = DIA_Boromir_HELLO8_Info;
   permanent = FALSE;
   description = "Znalazłem twój łuk.";
};

FUNC INT DIA_Boromir_HELLO8_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Boromir_HELLO7))
    && (Npc_HasItems (other, ItRw_Bow_M_03) >=1)
    {
    return TRUE;
    };
};


FUNC VOID DIA_Boromir_HELLO8_Info()
{
    AI_Output (other, self ,"DIA_Boromir_HELLO8_15_01"); //Znalazłem twój łuk.
    AI_Output (other, self ,"DIA_Boromir_HELLO8_15_02"); //Prosze, weź go.
    AI_Output (self, other ,"DIA_Boromir_HELLO8_03_03"); //Dziękuję, równy z ciebie chłop. Powinieneś stawić się w naszym obozie. Z pewnością znalazłoby się u nas miejsce dla kogoś takiego.
    AI_Output (other, self ,"DIA_Boromir_HELLO8_15_04"); //Może kiedyś.
    AI_Output (self, other ,"DIA_Boromir_HELLO8_03_05"); //Jak byś czegoś potrzebował, będę polował w okolicy.
    AI_Output (other, self ,"DIA_Boromir_HELLO8_15_06"); //Dzięki.
    AI_Output (self, other ,"DIA_Boromir_HELLO8_03_07"); //Trzymaj się.
   
B_GiveInvItems (other, self, ItRw_Bow_M_03, 1);
B_UseItem (self, ItRw_Bow_M_03);
    CreateInvItems (self, ItRw_Arrow, 30);
        B_LogEntry                     (TOPIC_Polowanie,"Oddałem łuk do rąk własnych.");
    Log_SetTopicStatus       (TOPIC_Polowanie, LOG_SUCCESS);
    MIS_Polowanie = LOG_SUCCESS;

    B_GivePlayerXP (100);
};

Zaktualizowałem skrypt. Teraz postać normalnie do nas zagaduje po dojściu do WP ale po tym jak mówi "No i po wszystkim. Teraz poszukaj tego łuku. Będę czekał gdzieś w okolicy." Powien zmienić rutyne, a zamiast tego stoi i gapi się tak, jak pisałem wcześniej. Coś napisałem nie tak? Dodam jeszcze, że w grze kiedy wpisałem na tym NPC w konsoli "edit focus" i zmieniłem WP na inny to npc zaczął biec do tego WP i stał przy nim gapiąc się tak samo jak wcześniej
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
(Npc_GetDistToWP (other, "SCIERWA") < 60) <- 60 centymetrów od Waypointa. Czyli praktycznie musisz wejść na wp.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Aidano

Aidano

Użytkownicy
posty5
ProfesjaScenarzysta
  • Użytkownicy
zwiekszałem już odległość i działało trochę lepiej ale NPC i tak nie zmienił rutyny tak jak kazałem w skrypcie. po oddaniu łuku ma iść do ogniska i siedzieć tam ale nie robi tego. stoi i gapi sie caly czas tak samo z tą różnicą, że zadanie zostało wykonane.


Post połączony: 2016-05-18, 11:58
zaktualizowałem skrypt i opis problemu
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Pokaż skrypt tej rutyny. Zmień tez godzinę w grze i zobacz czy npc dalej stoi.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Aidano

Aidano

Użytkownicy
posty5
ProfesjaScenarzysta
  • Użytkownicy
Godzine zmieniałem już, probowalem chyba wszystkiego ale nie mam juz pomysłów.

Oto skrypt postaci

instance GLA_1_Boromir (Npc_Default) // instancja postaci
{
// ------ NSC ------
name = "Boromir"; //imie
guild = GIL_NONE; // gildia
id = 1; // ID - takie jak w instancji
voice = 1; // glos postaci
level = 20;
flags       = 0; //0= smiertelna postac 1= niesmiertelna
npctype = NPCTYPE_MAIN;  // rodzaj npc wrogi, przyjazny itp

// ------ Attribute ------
attribute[ATR_STRENGTH] = 60;
attribute[ATR_DEXTERITY] = 100;
attribute[ATR_MANA_MAX] = 10;
attribute[ATR_MANA] = 10;
attribute[ATR_HITPOINTS_MAX] = 200;
attribute[ATR_HITPOINTS] = 200;

// ------ Kampf-Taktik ------
fight_tactic = FAI_HUMAN_STRONG; // MASTER / STRONG / COWARD / MAGE --- Styl walki

// ------ Equippte Waffen ------ //Munition wird automatisch generiert, darf aber angegeben werden
EquipItem (self, ItMw_1h_Mil_Sword);    // przedmiot, ktory postac bedzie miala na sobie

// ------ Inventory ------
B_CreateAmbientInv (self);  //inwentarz losowy postaci

// ------ visuals ------ //Muss NACH Attributen kommen, weil in B_SetNpcVisual die Breite abh. v. STR skaliert wird
B_SetNpcVisual (self, MALE, "Hum_Head_FatBald", Face_N_Normal16, BodyTex_N, ITAR_DJG_Crawler);
Mdl_SetModelFatness (self, 2);
Mdl_ApplyOverlayMds (self, "Humans_Militia.mds"); // Tired / Militia / Mage / Arrogance / Relaxed

// ------ NSC-relevante Talente vergeben ------
B_GiveNpcTalents (self);

// ------ Kampf-Talente ------ //Der enthaltene B_AddFightSkill setzt Talent-Ani abhängig von TrefferChance% - alle Kampftalente werden gleichhoch gesetzt
B_SetFightSkills (self, 60); //Grenzen für Talent-Level liegen bei 30 und 60 // Talent walki w %

//-------- Talente --------   //jego umiejętności, czerwona cyfra odpowiada za poziom umiejętności
    Npc_SetTalentSkill (self, NPC_TALENT_2H,2);// broń 2h, mistrz 
    Npc_SetTalentSkill (self, NPC_TALENT_1H,2);// broń 1h, mistrz
    Npc_SetTalentSkill (self, NPC_TALENT_BOW,2);// łuk, mistrz
   Npc_SetTalentSkill (self, NPC_TALENT_CROSSBOW,2);//kusza, mistrz
   Npc_SetTalentSkill   (self, NPC_TALENT_MAGE,      6);// 6 krąg magii

// ------ TA anmelden ------
daily_routine = Rtn_Start_1000; // nazwa Rutyny startowej
};

FUNC VOID Rtn_Start_1000 () // rutyna
{
TA_Stand_Guarding (12,00,21,00,"BOROMIR_STRAZ");
    TA_Stand_Guarding (21,00,12,00,"BOROMIR_STRAZ");
};

FUNC VOID Rtn_Polowanie_1 () // rutyna
{
TA_Guide_Player (05,00,20,00,"SCIERWA");
TA_Guide_Player (20,00,05,00,"SCIERWA");
};

FUNC VOID Rtn_Koniec_2 () // rutyna
{
TA_Sit_Campfire (05,00,20,00,"CAMP_BOROMIR");
TA_Sit_Campfire (20,00,05,00,"CAMP_BOROMIR");
};
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
W dialogu zmień nazwę rutyny z koniec na koniec_2 powinno działać. :ok:
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Aidano

Aidano

Użytkownicy
posty5
ProfesjaScenarzysta
  • Użytkownicy
hmm... nie wpadłem na to, bo w oryginalnych skryptach nazwy rutyn w dialogach pisze sie bez _nr dam znać jak poszło



Post połączony: 2016-05-18, 12:29
Nie, nadal wygląda to tak samo.
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
To teraz rzecz w 100 zależna od błędu... Dodałeś freepointa w świecie na miejscu  gdzie ma być ten npc? Jak nie to dodaj
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

FOgidel

FOgidel

Użytkownicy
posty60
Propsy100
ProfesjaSkrypter
  • Użytkownicy
Trzeci człon rutyny CHYBA powinien być ID postaci. Właśnie dlatego CHYBA w dialogach przy zmianie rutyny jest tylko środkowy człon.
Spróbuj. Daj znać. A jak się nie uda, to nie wiem.
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
ID nie może wynosić 1. Jak dobrze pamiętam, to id = 1 ma bohater.
Zmień id na jakieś unikalne, powiedzmy 10000. I w nazwach rutyn użyj tego id.

Aidano

Aidano

Użytkownicy
posty5
ProfesjaScenarzysta
  • Użytkownicy
Trzeci człon rutyny CHYBA powinien być ID postaci. Właśnie dlatego CHYBA w dialogach przy zmianie rutyny jest tylko środkowy człon.
Spróbuj. Daj znać. A jak się nie uda, to nie wiem.

Racja, dzięki stary. trochę było z tym je***ia bo musiałem przy okazji zmienić instancje każdego NPC :trollface:, ale twoja rada pomogła. Dziękuję ślicznie, problem został rozwiązany :D
 

FOgidel

FOgidel

Użytkownicy
posty60
Propsy100
ProfesjaSkrypter
  • Użytkownicy
Racja, dzięki stary. trochę było z tym je***ia bo musiałem przy okazji zmienić instancje każdego NPC :trollface:, ale twoja rada pomogła. Dziękuję ślicznie, problem został rozwiązany :D

Nie ma za co!
 


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