Jedno pytanie - Orc Shaman a Goblin 4660 12

O temacie

Autor karus

Zaczęty 12.05.2010 roku

Wyświetleń 4660

Odpowiedzi 12

karus

karus

Użytkownicy
posty122
  • Użytkownicy

karus

Jedno pytanie - Orc Shaman a Goblin
2010-05-12, 22:24(Ostatnia zmiana: 2010-05-12, 22:27)
Przegladam wlasnie skrypty orka shamana i zwyklego goblina. W tym moje pytanie.

Cytuj
PROTOTYPE Mst_Default_OrcShaman(C_Npc)         
{
   name                     =   "Ork-szaman";
   guild                     =   GIL_ORCSHAMAN;
   npctype                     =   NPCTYPE_GUARD;
   level                     =   50;

Ten urywek kodu zrodlowego ma szaman.

Cytuj
PROTOTYPE Mst_Default_GreenGobbo(C_NPC)         
{
   name                     =   "Goblin";
   guild                     =   GIL_GOBBO;
   aivar[AIV_MM_REAL_ID]         =    ID_GOBBO;
   level                     =   6;

A taki ma goblin.

Teraz mam takie pytanie, czy ktos moglby mi wyjasnic, czy C_NPC przy goblinie swiadczy o tym ze istnieje taka mozliwosc by podobnie jak shaman, goblin byl npctype = guard?

Pozdrawiam i dziekuje za odpowiedz z gory.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Jedno pytanie - Orc Shaman a Goblin
#1 2010-05-12, 22:39(Ostatnia zmiana: 2010-05-12, 22:41)
Tak.

Nie ma żadnych ograniczeń, nawet chrząszczowi możesz dać dowolny npctype, choćby i "npctype_rogue" albo nawet "14". Bez większych problemów możesz dowolnie zmieniać większość parametrów, tylko co ci to właściwie ma dać?

Jeśli chcesz aby dany goblin zachowywał się tak jak "ludzcy" strażnicy, musiałbyś mu też dać ludzką gildię. Inaczej bez względu na to jaki będzie miał npctype, i tak będzie atakował.

karus

karus

Użytkownicy
posty122
  • Użytkownicy
To ma dać to, że goblina postawie w waypoincie dajmy na to x, bedzie wrzucony dialog itp.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Jedno pytanie - Orc Shaman a Goblin
#3 2010-05-12, 23:02(Ostatnia zmiana: 2010-05-12, 23:03)
Można zrobić warunek, aby dialog uaktywniał się kiedy npc znajduje się w danym waypoincie, ale nie ma to nic wspólnego z jego npctype. NpcType ma znaczenie jeśli dany npc jest człowiekiem, w wypadku walki decyduje o niektórych jego zachowaniach (samoczynna agresja, ingerowanie w walkę, ucieczka, pasywność wobec gracza).

karus

karus

Użytkownicy
posty122
  • Użytkownicy
To juz troche jak na moj obecny stan wiedzy zbyt nieco skomplikowane. Generalnie glowie sie nad tym by najnormalniej sobie z Goblinem zagadac, niestety wyskakuje error w linijcie z BODY

Cytuj
instance GRD_5010_Goblin (Mst_Default_BlackGobbo)
{
   //-------- primary data --------
   name       =      "Zaklety Goblin";
   Npctype       =      NPCTYPE_GUARD;
   guild       =      GIL_GRD;
   level       =      3;
   
   voice       =      3;
   id          =      5010;
//------------------------------------------------------------------
   attribute   [ATR_STRENGTH]      =   20;
   attribute   [ATR_DEXTERITY]      =   20;
   
   attribute   [ATR_HITPOINTS_MAX]   =   40;
   attribute   [ATR_HITPOINTS]      =   40;

   attribute   [ATR_MANA_MAX]       =   0;
   attribute   [ATR_MANA]          =   0;
//------------------------------------------------------------------
   protection   [PROT_BLUNT]      =   15;
   protection   [PROT_EDGE]         =   15;
   protection   [PROT_POINT]      =   8;
   protection   [PROT_FIRE]         =   15;
   protection   [PROT_FLY]         =   0;
   protection   [PROT_MAGIC]      =   0;

   
   Mdl_SetVisual         (self,   "Gobbo.mds");                        Body-Mesh      Body-Tex   Skin-Color   Head-MMS   Head-Tex   Teeth-Tex   ARMOR
   Mdl_SetVisualBody (self,   "Gob_Body",      0,         DEFAULT,   "",         DEFAULT,     DEFAULT,   -1);

   B_Scale (self);
   Mdl_SetModelFatness(self,0);   
   
   fight_tactic   =   FAI_GOBBO;
   
        //------------- ai -------------
   daily_routine    = Rtn_start_5010;
   senses          = SENSE_SEE|SENSE_HEAR|SENSE_SMELL;
   senses_range   =   3000;      // 30m

};

FUNC VOID Rtn_start_5010 ()
{
   TA_Stay      (08,00,23,00,"OW_PATH_1_17_5");
   TA_Stay      (23,00,08,00,"OW_PATH_1_17_5");
};

To dzis wyplodzilem, jakies pomysly?:facepalm:  Gdzie robie blad?
 


karus

karus

Użytkownicy
posty122
  • Użytkownicy
Cytuj
/*************************************************************************
**   Zaklety Prototype                                    **
*************************************************************************/

PROTOTYPE ZakletyGobbo(C_NPC)         
{
   name                     =   "Zaklety";
   guild                     =   GIL_GRD;
   npctype         =    NPCTYPE_FRIEND;
   level                     =   6;
//------------------------------------------------------------------
   attribute   [ATR_STRENGTH]      =   20;
   attribute   [ATR_DEXTERITY]      =   20;
   
   attribute   [ATR_HITPOINTS_MAX]   =   40;
   attribute   [ATR_HITPOINTS]      =   40;

   attribute   [ATR_MANA_MAX]       =   0;
   attribute   [ATR_MANA]          =   0;
//------------------------------------------------------------------
   protection   [PROT_BLUNT]      =   15;
   protection   [PROT_EDGE]         =   15;
   protection   [PROT_POINT]      =   8;
   protection   [PROT_FIRE]         =   15;
   protection   [PROT_FLY]         =   0;
   protection   [PROT_MAGIC]      =   0;
//------------------------------------------------------------------
   damagetype                   =   DAM_EDGE;
//   damage      [DAM_INDEX_BLUNT]   =   0;
//   damage      [DAM_INDEX_EDGE]   =   0;
//   damage      [DAM_INDEX_POINT]   =   0;
//   damage      [DAM_INDEX_FIRE]   =   0;
//   damage      [DAM_INDEX_FLY]      =   0;
//   damage      [DAM_INDEX_MAGIC]   =   0;
//------------------------------------------------------------------
   fight_tactic   =   FAI_GOBBO;
//------------------------------------------------------------------
   senses         =   SENSE_HEAR | SENSE_SEE | SENSE_SMELL;
   senses_range   =   3000;      // 30m

   aivar[AIV_MM_Behaviour]      = PACKHUNTER;
   
   aivar[AIV_MM_PercRange]      = 1500;
   aivar[AIV_MM_DrohRange]      = 1000;
   aivar[AIV_MM_AttackRange]   = 700;
   aivar[AIV_MM_DrohTime]      = 4;
   aivar[AIV_MM_FollowTime]   = 10;
   aivar[AIV_MM_FollowInWater] = FALSE;
//------------------------------------------------------------------
   start_aistate            = ZS_MM_AllScheduler;

   aivar[AIV_MM_RestStart]    = OnlyRoutine;   
};
//------------------------------------------------------------------
func void Set_ZakletyGobbo_Visuals()
{
   Mdl_SetVisual         (self,   "Gobbo.mds");
   //                        Body-Mesh      Body-Tex   Skin-Color   Head-MMS   Head-Tex   Teeth-Tex   ARMOR
   Mdl_SetVisualBody      (self,   "Gob_Body",      0,         DEFAULT,   "",         DEFAULT,     DEFAULT,   -1);
};


/*************************************************************************
**   Green Gobbo Club                                        **
*************************************************************************/

INSTANCE ZakletyGobboClub   (ZakletyGobbo)
{
   Set_ZakletyGobbo_Visuals();

   fight_tactic               =   FAI_GOBBO;

   Npc_SetToFightMode (self, ItMw_1h_Club_01); //+5
   attribute[ATR_STRENGTH] = attribute   [ATR_STRENGTH] + 5;// da technisch im Faustkampf
};


/*************************************************************************
**   Green Gobbo Sword                                       **
*************************************************************************/

INSTANCE ZakletyGobboSword (ZakletyGobbo)
{
   Set_ZakletyGobbo_Visuals();
   Npc_SetToFightMode (self, ItMw_1H_Sword_Old_01); //+10
   attribute[ATR_STRENGTH] = attribute   [ATR_STRENGTH] + 10; // da technisch im Faustkampf

};

/*************************************************************************
**   Dialog Goblina - cz1                                    **
*************************************************************************/

INSTANCE DIA_ZakletyGobbo_EXIT(C_INFO)
{
   nr         = 999;
   condition   = DIA_ZakletyGobbo_EXIT_Condition;
   information   = DIA_ZakletyGobbo_Info;
   permanent   = 1;
   description = DIALOG_ENDE;
};                      

FUNC INT DIA_ZakletyGobbo_EXIT_Condition()
{
   return 1;
};

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


/*************************************************************************
**   Dialog Goblina - cz2                                    **
*************************************************************************/

INSTANCE DIA_ZakletyGobbo_Hello (C_INFO)
{

   nr         = 3;
   condition   = DIA_ZakletyGobbo_Hello_Condition;
   information   = DIA_ZakletyGobbo_Hello_Info;
   permanent   = 0;
   description = "Cześć! Jestem tu nowy!";
};                      

FUNC INT DIA_ZakletyGobbo_Hello_Condition()
{
   return 1;
};

FUNC VOID DIA_ZakletyGobbo_Hello_Info()
{   
   AI_Output (other, self,"DIA_ZakletyGobbo_Hello_15_00"); //Cześć! Jestem tu nowy!
   AI_Output (self, other,"DIA_ZakletyGobbo_Hello_02_01"); //A ja jestem Goblin.
   
};

Dobra - generalnie skrypt dziala poprawnie do momentu Dialog Goblina cz1. Goblin sie pojawia w tym waypoincie, nie atakuje, ale stoi jakby byl z jakiegos metalu wykonany. Po prostu zero reakcji, nie chodzi, nie wydaje odgłosów. Kiedy dodaje sekwencje dialogowe wyskakuje error potem przy naprawie skryptow ze condition   = Info_ZakletyGobbo_EXIT_Condition jest niewlasciwym warunkiem. Wiec raczej nie wydaje mi sie prawdpopobone by zwierzeta moglyby mowic ale moge sie mylic :facepalm:
Aha, i gdzie znajde np. dialogi smokow w gothic 2?

Po co tamten post "ciach"? Następnym razem będzie potraktowane to jako spam.
Avallach
 

maciejG

maciejG

Użytkownicy
posty450
Propsy1
  • Użytkownicy
Smoki: Poszukaj w plikach zaczynających się od B_AssignAmbientInfos.
 
Spoiler

jendrzejs

jendrzejs

Użytkownicy
posty586
Propsy31
Profesjabrak
  • Użytkownicy
Wiec raczej nie wydaje mi sie prawdpopobone by zwierzeta moglyby mowic ale moge sie mylic
Mogą.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
To nie rzeczywistość. W Gothicu "zwierzę" różni się od "człowieka" tylko gildią i wyglądem, przy czym wszystkie istniejące parametry można w różne sposoby zmieniać. Skopiuj skrypt jakiegokolwiek NPC, sprawdź czy da się z nim gadać, i wtedy zmień mu wygląd. Same Visuale nie mogą w żaden sposób wpływać na możliwości interakcji.

karus

karus

Użytkownicy
posty122
  • Użytkownicy
Niestety ale goblin sie owszem pojawia (dalem go jako NPcta z visualami goblina) ale stoi jakby byl z metalu. 0 reakcji, kiedy chce z nim zagadac (dialogi wlozone poprawnie) kamera przestawia sie jak na dialogi i... zacinka. Gra Stoi, nic nie mozna zrobic.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Niestety ale goblin sie owszem pojawia (dalem go jako NPcta z visualami goblina) ale stoi jakby byl z metalu. 0 reakcji, kiedy chce z nim zagadac (dialogi wlozone poprawnie) kamera przestawia sie jak na dialogi i... zacinka. Gra Stoi, nic nie mozna zrobic.
Najpierw zrób go jako normalnego NPC, wtedy sprawdź czy dialog będzie działał. Dopiero później, kiedy wszystko będzie ok zmień mu visuale.

karus

karus

Użytkownicy
posty122
  • Użytkownicy
 


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