12-27-2012, 01:08 AM
Acesta este un tutorial simplu realizat de Raducu' (pentru Gothic 1) si de Stuart (pentru Gothic2) care va va arata cum puteti insera un NPC in joc.
Gothic 1
Va trebuie gothic_mod_developmentkit si gothic1_playerkit-1.08k
Intrati in gothic_mod_developmentkit si ve-ti vedea un fisier cu numele gothic continutul acestui fisier va trebuie sa il puneti in Gothic 1 si iar gothic1_playerkit-1.08k il dezarhivati undeva iar fisierul system il puneti in fisierul cu gothic.
Sa incepem:
Intrati in gothic/_work/DATA/scripts/content/story/npc si deschideti un script de acolo cu Notepad.
Eu am ales scriptul -BAU_900_Ricelord.
//Am terminat cu scriptul personajului acum intrati in startup gothic\_work_data\scripts\contetnt\story/StartUp deschideti-l cu un editor si dati bara in jos usor pana ajungeti la
//----------------Bauern--------------------------------- (akolo sunt in randuri toate personajele din NewCamp) Dati ENTER dupasi adaugati
//Acum intrati in GothicStarted click pe Reparse All Scripts si va duceti langa Rice Lord si ar trebuie sa va apara perosnajul daca ati completat totul cum e aici.
Gothic 2
Pentru gothic 2 faci aproape la fel ca la gothic 2....Salvezi scriptu in \Gothic Gothic2\_work\Data\Scripts\Content\Story\NPC
Un exemplu de script din gothic 2 :
Gothic 1
Va trebuie gothic_mod_developmentkit si gothic1_playerkit-1.08k
Intrati in gothic_mod_developmentkit si ve-ti vedea un fisier cu numele gothic continutul acestui fisier va trebuie sa il puneti in Gothic 1 si iar gothic1_playerkit-1.08k il dezarhivati undeva iar fisierul system il puneti in fisierul cu gothic.
Sa incepem:
Intrati in gothic/_work/DATA/scripts/content/story/npc si deschideti un script de acolo cu Notepad.
Eu am ales scriptul -BAU_900_Ricelord.
Code:
instance [color=red]BAU_900_Ricelord[/color] (Npc_Default)
{
//-------- primary data --------
name = [color=red]"The Rice Lord"; // Pentru inceput dati numele personajului. In loc de The Rice Lord dati orice alt nume care nu mai exista in Gothic 1.
npctype = NPCTYPE_GUARD; //Aici trebuie sa va alegeti modul de comportament al NPC-ului, cum sa se comporte cum sa stea etc.
guild = GIL_BAU; //Aici trebuie sa puneti guildul NPC-ului, de exemplu pentru guard GRD (uitati-va prin celelalte scripturi daca vreti sa mai vedeti cum se zice si la alte gulde)
level = 10; //Aici scrieti ce lvl sa aiba personajul[/color]
voice = 12; //Aici vocea personajului daca nu vreti sa o modificati o lasati asa
id = 900; //aici trebuie sa-i dati un numar personajului, un numar pe care nu-l mai are nimeni ca de exemplu 999(daca numarul il mai are cineva va va da eroare)
//-------- abilities --------//Abilitatile personajului
attribute[ATR_STRENGTH] = 50; //Cata forta sa aiba
attribute[ATR_DEXTERITY] = 10; //Cata dexteritate sa aiba
attribute[ATR_MANA_MAX] = 0;
attribute[ATR_MANA] = 0;
attribute[ATR_HITPOINTS_MAX]= 170;
attribute[ATR_HITPOINTS] = 170;
//-------- visuals --------
// animations
Mdl_SetVisual (self,"HUMANS.MDS");
Mdl_ApplyOverlayMds (self,"Humans_Arrogance.mds");
// body mesh ,bdytex,skin,head mesh ,headtex,teethtex,ruestung
Mdl_SetVisualBody (self,"Hum_Body_CookSmith",1,1,"Hum_Head_FatBald",91 , 0,-1);
B_Scale (self);
Mdl_SetModelFatness(self,2);
fight_tactic = FAI_HUMAN_STRONG;
//-------- Talente --------
Npc_SetTalentSkill (self,NPC_TALENT_1H,1); //de aici va puteti alege ce talente sa aiba acest personaj, sa fie maestru Two Handed sau orice alte talente pentru inceput nu e obligatoriu sa alegeti;
//-------- inventory --------//de aici pueti alege sa sa aiba NPC-ul in inventatory;
CreateInvItems (self, ItFoRice,10);
CreateInvItem (self, ItFoWine);
CreateInvItems(self, ItMiNugget,40);
EquipItem (self, Heerscherstab);
CreateInvItem (self, ItMi_Alchemy_Moleratlubric_01);
//CreateInvItem (self,ItKey_RB_01);
EquipItem (self, Ring_des_Lebens);
//-------------Daily Routine-------------
//coordonatele NPC-ului
daily_routine = Rtn_start_900;
};
FUNC VOID Rtn_start_900 ()
{
TA_Boss (07,00,20,00,"NC_RICELORD");
TA_SitAround (20,00,24,00,"NC_RICELORD_SIT");
TA_Sleep (24,00,07,00,"NC_RICEBUNKER_10");
};
Code:
Lucrurile principale care trebuie schimbate la acest npc sunt:
name = "Legend";
id = 999;
//Si nu uitati sa schimbati de jos de la Daily Routine acele 2 numere in loc de 900 sa puneti numarul vostru de la id si anume in cazul meu 999 de exemplu:
//ATENTIE daca dupmneavoastra completati acest script ca mine trebuie sa dati save as si sa il salvati sub numele asta
BAU_999_Legend
------------Daily Routine-------------
daily_routine = Rtn_start_999;
};
FUNC VOID Rtn_start_999()
{
TA_Boss (07,00,20,00,"NC_RICELORD");
TA_SitAround (20,00,24,00,"NC_RICELORD_SIT");
TA_Sleep (24,00,07,00,"NC_RICEBUNKER_10");
};
//----------------Bauern--------------------------------- (akolo sunt in randuri toate personajele din NewCamp) Dati ENTER dupa
Code:
Wld_InsertNpc (BAU_900_Ricelord,"NC_DAM"); //Im Ricebunker
Code:
Wld_InsertNpc (BAU_999_Legend,"NC_DAM"); //Im Ricebunker
Gothic 2
Pentru gothic 2 faci aproape la fel ca la gothic 2....Salvezi scriptu in \Gothic Gothic2\_work\Data\Scripts\Content\Story\NPC
Un exemplu de script din gothic 2 :
Code:
instance Pal_200_Hagen (Npc_Default)
{
// ------ NSC ------
name = "Lord Hagen";
guild = GIL_PAL;
id = 200;
voice = 4;
flags = NPC_FLAG_IMMORTAL; //Joly: NPC_FLAG_IMMORTAL
npctype = NPCTYPE_MAIN;
// ------ AIVARS ------
aivar[AIV_ToughGuy] = TRUE;
aivar[AIV_ToughGuyNewsOverride] = TRUE;
aivar[AIV_IGNORE_Murder] = TRUE;
aivar[AIV_IGNORE_Theft] = TRUE;
aivar[AIV_IGNORE_Sheepkiller] = TRUE;
// ------ Attribute ------
B_SetAttributesToChapter (self, 6);
// ------ Kampf-Taktik ------
fight_tactic = FAI_HUMAN_MASTER;
// ------ Equippte Waffen ------
EquipItem (self, ItMw_2h_Pal_Sword);
// ------ Inventory ------
B_CreateAmbientInv (self);
// ------ visuals ------
B_SetNpcVisual (self, MALE, "Hum_Head_Fighter", Face_N_Tough_Okyl, BodyTex_N, ITAR_PAL_H);
Mdl_SetModelFatness (self, 1.5);
Mdl_ApplyOverlayMds (self, "Humans_Militia.mds");
// ------ NSC-relevante Talente vergeben ------
B_GiveNpcTalents (self);
// ------ Kampf-Talente ------
B_SetFightSkills (self, 80);
// ------ TA anmelden ------
daily_routine = Rtn_Start_200;
};
FUNC VOID Rtn_Start_200 ()
{
TA_Stand_ArmsCrossed (08,00,20,00,"NW_CITY_HAGEN");
TA_Stand_ArmsCrossed (20,00,08,00,"NW_CITY_HAGEN");
};
FUNC VOID Rtn_ShipFree_200 ()
{
TA_Stand_Guarding (08,00,23,00,"NW_CITY_UPTOWNPARADE_HAGEN");
TA_Stand_Guarding (23,00,08,00,"NW_CITY_UPTOWNPARADE_HAGEN");
};