Skrypt towarzysza 2744 6

O temacie

Autor Mirrond

Zaczęty 24.09.2011 roku

Wyświetleń 2744

Odpowiedzi 6

Mirrond

Mirrond

Użytkownicy
posty24
  • Użytkownicy

Mirrond

Skrypt towarzysza
2011-09-24, 16:02(Ostatnia zmiana: 2011-09-24, 16:03)
Pracuję nad modem no i... problem jest.

Próbowałem zrobić skrypt towarzysz po swojemu (niby tu jest gdzieś tutorial ale zanadto nie patrzyłem.

No i... w grze dialogi są, ale nie następuje zmiana rutyny NPCa. Jakieś pomysły co spieprzyłem?

NPC:

instance SLD_5008_Mysliwy (NPC_Default)
{
    // ----- NPC -----
    name = "Myśliwy";
    guild = 7;
    id = 5008;
    voice = 2;
    flags = 0;
    npctype = NPCTYPE_FRIEND;
    level = 15;

    // ----- Attributes -----
    B_SetAttributesToChapter (self, 2);

    // ----- Hitchance -----
    HitChance [NPC_TALENT_1H] = 10;
    HitChance [NPC_TALENT_2H] = 10;
    HitChance [NPC_TALENT_BOW] = 10;
    HitChance [NPC_TALENT_CROSSBOW] = 10;

    B_SetNpcVisual (self, MALE, "HUM_HEAD_FATBALD", Face_P_NormalBart_Nefarius, BodyTex_N, ITAR_SLD_L);
    Mdl_SetModelFatness (self, 2);
    Mdl_ApplyOverlayMds (self, "Humans_Relaxed.mds");

    // ----- Give NPC his Talents -----
    B_GiveNpcTalents (self);

    // ----- Inventory -----
    EquipItem    (self, ItMw_1h_Sld_Sword);
    EquipItem    (self, ItRw_Sld_Bow);

    // ------ TA anmelden ------
    daily_routine = Rtn_KHORARIN_5008;
};

FUNC VOID Rtn_KHORARIN_5008 ()
{
TA_Smalltalk(15,00,20,00,"HUT_2_09");
TA_Cook_Stove(20,00,23,50,"HUT_2_STOVE");
TA_Sleep(23,50,12,00,"HUT_2_BED_2");
TA_Stand_Guarding(12,00,15,00,"VILLAGE_ENTRANCE_02");
};

func VOID Rtn_Wait_5008 ()
{  
var c_npc Mysliwy; Mysliwy = Hlp_GetNpc(SLD_5008_Mysliwy);
TA_Guard        (08,00,20,30,Npc_GetNearestWP(Mysliwy));
TA_Guard        (20,30,08,00,Npc_GetNearestWP(Mysliwy));
};

FUNC VOID Rtn_FRIEND_5008 ()
 {
 TA_Follow_Player (06,55,21,00,"VILLAGE_ENTRANCE_03");
 TA_Follow_Player (21,00,06,55,"VILLAGE_ENTRANCE_03");

 };

FUNC VOID Rtn_NOFRIEND_5008 ()
{
TA_Smalltalk(15,00,20,00,"HUT_2_09");
TA_Cook_Stove(20,00,23,50,"HUT_2_STOVE");
TA_Sleep(23,50,12,00,"HUT_2_BED_2");
TA_Stand_Guarding(12,00,15,00,"VILLAGE_ENTRANCE_02");
};




I dialog :

//========================================
//-----------------> OPCJA *KONIEC*
//========================================

INSTANCE DIA_Mysliwy_EXIT(C_INFO)
{
npc         = SLD_5008_Mysliwy;
nr              = 999;
condition = DIA_Mysliwy_EXIT_Condition;
information = DIA_Mysliwy_EXIT_Info;
permanent = TRUE;
description = "KONIEC";
};

FUNC INT DIA_Mysliwy_EXIT_Condition()
{
return TRUE;
};

FUNC VOID DIA_Mysliwy_EXIT_Info()
{
AI_StopProcessInfos (self);
};

//========================================
//-----------------> OPCJA KRADZIEŻY
//========================================

INSTANCE DIA_Mysliwy_PICKPOCKET(C_INFO)
{
npc          = SLD_5008_Mysliwy;
nr       = 900;
condition    = DIA_Mysliwy_PICKPOCKET_Condition;
information  = DIA_Mysliwy_PICKPOCKET_Info;
permanent    = TRUE;
description  = Pickpocket_20;
};

FUNC INT DIA_Mysliwy_PICKPOCKET_Condition()
{
C_Beklauen (20, 43);
};

FUNC VOID DIA_Mysliwy_PICKPOCKET_Info()
{
Info_ClearChoices (DIA_Mysliwy_PICKPOCKET);
Info_AddChoice (DIA_Mysliwy_PICKPOCKET, DIALOG_BACK ,DIA_Mysliwy_PICKPOCKET_BACK);
Info_AddChoice (DIA_Mysliwy_PICKPOCKET, DIALOG_PICKPOCKET ,DIA_Mysliwy_PICKPOCKET_DoIt);
};

FUNC VOID DIA_Mysliwy_PICKPOCKET_DoIt()
{
B_Beklauen ();
Info_ClearChoices (DIA_Mysliwy_PICKPOCKET);
};

FUNC VOID DIA_Mysliwy_PICKPOCKET_BACK()
{
Info_ClearChoices (DIA_Mysliwy_PICKPOCKET);
};

//========================================
//-----------------> HELLO1
//========================================

INSTANCE DIA_Mysliwy_HELLO1 (C_INFO)
{
   npc          = SLD_5008_Mysliwy;
   nr       = 1;
   condition    = DIA_Mysliwy_HELLO1_Condition;
   information  = DIA_Mysliwy_HELLO1_Info;
   permanent = FALSE;
   description = "Kim jesteś?";
};

FUNC INT DIA_Mysliwy_HELLO1_Condition()
{
    if (PROTECTION == 1)
    {
    return TRUE;
    };
};


FUNC VOID DIA_Mysliwy_HELLO1_Info()
{
    AI_Output (other, self ,"DIA_SLD_5008_HELLO1_15_01"); //Kim jesteś?
    AI_Output (self, other ,"DIA_SLD_5008_HELLO1_03_02"); //Pechowym myśliwym. Byłem w odwiedzinach u urodziny, gdy wybuchła epidemia.
    AI_Output (other, self ,"DIA_SLD_5008_HELLO1_15_03"); //Współczuję. Wiesz coś o ich losie?
    AI_Output (self, other ,"DIA_SLD_5008_HELLO1_03_04"); //Nie bardzo.
};

//========================================
//-----------------> HELLO2
//========================================

INSTANCE DIA_Mysliwy_HELLO2 (C_INFO)
{
   npc          = SLD_5008_Mysliwy;
   nr       = 2;
   condition    = DIA_Mysliwy_HELLO2_Condition;
   information  = DIA_Mysliwy_HELLO2_Info;
   permanent = TRUE;
   description = "Próbuję znaleźć lekarstwo na chorobę i przydałaby mi się pomoc. (Towarzysz)";
};

FUNC INT DIA_Mysliwy_HELLO2_Condition()
{
    if (PROTECTION == 1)
    && (HUNTERWITHME == 0)
    && (HUNTERGOODBYE == 0)
    {
    return TRUE;
    };
};


FUNC VOID DIA_Mysliwy_HELLO2_Info()
{
    AI_Output (other, self ,"DIA_Mysliwy_HELLO2_15_01"); //Mam pytanie - próbuję znaleźć lekarstwo na chorobę i przydałaby mi się pomoc. (Towarzysz)
    AI_Output (self, other ,"DIA_Mysliwy_HELLO2_03_02"); //Czego ode mnie oczekujesz?
    AI_Output (other, self ,"DIA_Mysliwy_HELLO2_15_03"); //Pomocy. Na wypadek gdybym na coś wpadł poza wioską.
    AI_Output (self, other ,"DIA_Mysliwy_HELLO2_03_04"); //Na Khorarinie raczej nie ma groźnych zwierząt. Poza jaskiniami.
    AI_Output (other, self ,"DIA_Mysliwy_HELLO2_15_05"); //Mimo to...
    AI_Output (self, other ,"DIA_Mysliwy_HELLO2_03_06"); //Niech będzie. I tak nie mam tutaj nic do roboty.
    HUNTERWITHME = HUNTERWITHME + 1;
    AI_Output (self, other ,"DIA_Mysliwy_HELLO2_03_07"); //Jeśli się rozdzielimy, będe czekał przy bramie.
  Npc_ExchangeRoutine (self, "FRIEND");
};

//========================================
//-----------------> HELLO3
//========================================

INSTANCE DIA_Mysliwy_HELLO3 (C_INFO)
{
   npc          = SLD_5008_Mysliwy;
   nr       = 3;
   condition    = DIA_Mysliwy_HELLO3_Condition;
   information  = DIA_Mysliwy_HELLO3_Info;
   permanent = TRUE;
   description = "Poczekaj tutaj na mnie, ";
};

FUNC INT DIA_Mysliwy_HELLO3_Condition()
{
    if (HUNTERWITHME == 1)
    {
    return TRUE;
    };
};


FUNC VOID DIA_Mysliwy_HELLO3_Info()
{
    AI_Output (other, self ,"DIA_Mysliwy_HELLO3_15_01"); //Poczekaj tutaj na mnie,
    AI_Output (self, other ,"DIA_Mysliwy_HELLO3_03_02"); //Jasne.
    Npc_ExchangeRoutine (self, "WAIT");
    HUNTERWAIT = HUNTERWAIT + 1;
    HUNTERWITHME = 0;
};

//========================================
//-----------------> HELLO4
//========================================

INSTANCE DIA_Mysliwy_HELLO4 (C_INFO)
{
   npc          = SLD_5008_Mysliwy;
   nr       = 4;
   condition    = DIA_Mysliwy_HELLO4_Condition;
   information  = DIA_Mysliwy_HELLO4_Info;
   permanent = TRUE;
   description = "Chodź za mną.";
};

FUNC INT DIA_Mysliwy_HELLO4_Condition()
{
    if (HUNTERWAIT == 1)
    && (HUNTERWITHME == 0)
    {
    return TRUE;
    };
};


FUNC VOID DIA_Mysliwy_HELLO4_Info()
{
    AI_Output (other, self ,"DIA_Mysliwy_HELLO4_15_01"); //Chodź za mną.
    AI_Output (self, other ,"DIA_Mysliwy_HELLO4_03_02"); //Jasne.
    Npc_ExchangeRoutine (self, "FRIEND");
    HUNTERWAIT = 0;
    HUNTERWITHME = HUNTERWITHME +1;
    AI_StopProcessInfos (self);
};

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

INSTANCE DIA_Mysliwy_HELLO5 (C_INFO)
{
   npc          = SLD_5008_Mysliwy;
   nr       = 5;
   condition    = DIA_Mysliwy_HELLO5_Condition;
   information  = DIA_Mysliwy_HELLO5_Info;
   permanent = FALSE;
   description = "Przepraszam, ale już nie będe potrzebował twojej pomocy.";
};

FUNC INT DIA_Mysliwy_HELLO5_Condition()
{
    if (HUNTERWITHME == 1)
    {
    return TRUE;
    };
};


FUNC VOID DIA_Mysliwy_HELLO5_Info()
{
    AI_Output (other, self ,"DIA_Mysliwy_HELLO5_15_01"); //Przepraszam, ale już nie będe potrzebował twojej pomocy.
    AI_Output (self, other ,"DIA_Mysliwy_HELLO5_03_02"); //Rozumiem. Do zobaczenia.
    Npc_ExchangeRoutine (self, "NOFRIEND");
    HUNTERGOODBYE = HUNTERGOODBYE +1;
    HUNTERWITHME = 0;
    AI_StopProcessInfos (self);
};
 

RoMek

RoMek

RaveN Studio
Niewolnik systemu
posty643
Propsy317
ProfesjaAnimator
  • RaveN Studio
  • Niewolnik systemu
W programie do dialogów chyba możesz to zrobić.
 

Mirrond

Mirrond

Użytkownicy
posty24
  • Użytkownicy
Podstawowa odpowiedź na wszystkie pytania dot. skryptów dialogów.

To BYŁO robione w programie. W Easy Dialog Makerze dokładnie -_-

 

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Skoro tak to sprawdź czy dana postać ma taka rutynę opisaną.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

Mirrond

Mirrond

Użytkownicy
posty24
  • Użytkownicy
Rutynę opisaną?  Eeee? 0.o
 

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel

Sawik
Moderator działu

Skrypt towarzysza
#5 2011-09-24, 20:59(Ostatnia zmiana: 2011-09-24, 21:04)
W skrypcie postaci nazwana friend. I tam TA_FollowNPC czy jakoś tak sprawdź dokładniej w tutorialach (są wszystkie opisane, tutorial "Rutyny") Jeszcze ustaw sobie partymember to jak on coś killnie to dostaniesz expa.
BTW jest tutorial od "Towarzyszy" są dwie listy towarzyszy od tego by ich używać.

Edit: Nawet linka podam Link
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

Mirrond

Mirrond

Użytkownicy
posty24
  • Użytkownicy
Aaargh, głupiec ze mnie. Przeoczyłem coś i miałem zły skrypt NPC-a, tylko z podstawową rutyną... dureń xD Temat można zamknąć i/lub do kosza wyrzucić. Sawik masz propsa za chęć pomocy.
 


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