Home Gothic Gothic II Gothic 3 Gothic 4 Downloads Forums

 

Seite 2 von 10 « Erste 1234569 ... Letzte »
Ergebnis 21 bis 40 von 195
  1. Beiträge anzeigen #21
    Chosen One Avatar von rockfest
    Registriert seit
    Jul 2005
    Ort
    Bucharest
    Beiträge
    6.287
     
    rockfest ist offline
    Zitat Zitat von eXecutioner_id
    OK what do I know now:

    If I whant to make a new NPC in the world I have to take an older NPC's file and edit it as CeeX said. To insert him you I have to use marvin and type the name of the instance.
    this is not totally correct. you can create a new NPC without copying one from an older NPC. This is the easiest way to do it(copying) and for now it is good. To insert him you have to put him in the startup.d . Watch out for the routines cause he will go when you will tell him to go and not when you inserted him in the script.

    Now I whant not to need to insert the NPC every time I load the game. (hopefully Rockfest helped me).

    I whant to make a simple dialogue for the NPC. (good old Rockfest helped me again).
    You're welcome. the dialogues are more complex than that but when i will have time i will continue writting. but IMO it is best to read that tutorial made by Alistair. If you have questions just ask them.

    I whant to pack the NPC into a file so that I can distribute it to you guys for testing and suggestions.
    You will open the VDFSTool and hit Builder. After that put the Gothic.dat in the list(you can find the bar with + - ... in the left of the screen. After that hit build and you're finished.
    Create a file called mod.ini and read from the wiki what you have to do. luck yto you

  2. Beiträge anzeigen #22
    Knight Avatar von eXecutioner
    Registriert seit
    Oct 2005
    Beiträge
    1.584
     
    eXecutioner ist offline
    Look at this script. Is this good enough?

    Code:
      Wld_InsertNpc           (BAU_939_Alexandros,            "NW_FARM1_OUT_01");
    He should be at Lobart's farm right? Well he isn't. Well at least I didn't found him.

    Tomorrow we'll work again my friend.

    See Ya!

    eXecutioner

    PS: Rockfest. I'll enter Yahoo! <essanger tomorrow to...
    Building Stronger Communities Blog - Bringing people closer together trough the power of words!

  3. Beiträge anzeigen #23
    Demigod Avatar von Sumpfkrautjunkie
    Registriert seit
    Nov 2004
    Ort
    München
    Beiträge
    9.091
     
    Sumpfkrautjunkie ist offline
    He should be at Lobart's farm right? Well he isn't. Well at least I didn't found him.
    What have you written in his daily routine?
    It isnt imortant where you insert a NPC in the World.
    ITs important which TA he has, if you want to find him.

  4. Beiträge anzeigen #24
    Veteran Avatar von MladjanDJ
    Registriert seit
    Nov 2005
    Beiträge
    617
     
    MladjanDJ ist offline
    One more thread about modding I fell sorry for myself I would like to know that but I dont,
    I should learn yes I sholud learn... from now on call me Mladjan the Modder .
    [Bild: smil4340b8e6955e911oo.gif] Shit here is rockfest
    [Bild: club08qz.gif]Ok everybody party's over go home noughting to see here move along
    Hi rockfest I didnt do anything it was...

  5. Beiträge anzeigen #25
    Knight Avatar von eXecutioner
    Registriert seit
    Oct 2005
    Beiträge
    1.584
     
    eXecutioner ist offline
    Now I whant not to need to insert the NPC every time I load the game.
    You didn't understood me. I whant the NPC to appear in the world before I load the game (or maby in the process). Just like Xardas is in front of me when I load a new game and I don't have to insert him. How can this be done.

    PS: I tryed the tutorial on RPGDot about dialogues and it game me a sum of errors when I tryed to enter the game .

    OK. I'll try something simpler.

    How can I insert and write on blank piece of papers and put them in the game. You know those ones: like example the stinking note...etc. Do they have a limit to wich you can write on them? I see that in the game they aren't novels you know!?

    See Ya!

    eXecutioner

    PS: I'm glad that the forum is back online .
    Building Stronger Communities Blog - Bringing people closer together trough the power of words!
    Geändert von eXecutioner_id (28.12.2005 um 09:18 Uhr)

  6. Beiträge anzeigen #26
    Chosen One Avatar von rockfest
    Registriert seit
    Jul 2005
    Ort
    Bucharest
    Beiträge
    6.287
     
    rockfest ist offline
    Code:
    instance BAU_946_Alexander (Npc_Default)
    {
    	// ------ NSC ------
    	name 		= "Alexander";
    	guild 		= GIL_OUT;
    	id 			= 946;
    	voice 		= 5;
    	flags       = 0;						
    	npctype		= NPCTYPE_MAIN;
    	
    	// ------ Attributes ------
    	B_SetAttributesToChapter (self, 1);										
    	// ------ Fight_Tactic ------
    	fight_tactic = FAI_HUMAN_COWARD;
    	
    	// ------ Equippte Waffen ------					EquipItem (self, ItMw_1h_Bau_Axe);
    	
    	// ------ Inventory ------
    	B_CreateAmbientInv  (self);
    
    		
    	// ------ visuals ------					
    	B_SetNpcVisual (self, MALE, "Hum_Head_Fatbald", Face_N_Weak_Herek, BodyTex_N, ITAR_Bau_L);		
    	Mdl_SetModelFatness (self, 0);
    	Mdl_ApplyOverlayMds (self, "Humans_Tired.mds");
    
    	// ------ NSC-relevante Talente vergeben ------
    	B_GiveNpcTalents (self);
    	
    	// ------ Kampf-Talente ------					B_SetFightSkills (self, 10); 
    
    	// ------ TA anmelden ------
    	daily_routine 		= Rtn_Start_946;
    };
    
    FUNC VOID Rtn_BugsThere_946 ()
    {
     TA_Stand_WP (08,00,20,00,"NW_FARM1_OUT_01");
     TA_Stand_WP (20,00,08,00,"NW_FARM1_OUT_01");
    };
    This is the NPC. Do this and put in startup.d this : Wld_InsertNpc (BAU_939_Alexandros,"NW_FARM1_OUT_01"); .
    After that reparse the files and start the game. If you want to put the dialogue as well remember to change the npc = ..... with the right instance.

  7. Beiträge anzeigen #27
    Knight Avatar von eXecutioner
    Registriert seit
    Oct 2005
    Beiträge
    1.584
     
    eXecutioner ist offline
    Ok thanx. I'l try it.

    [EDIT] Thanks Rockfest. It worked like a charm. My character now stands near Lobart (at about a meter behind him) and he will stay there untill he will need sleep.

    As you wrote here the code:

    TA_Stand_WP (08,00,20,00,"NW_FARM1_OUT_01");
    TA_Stand_WP (22,00,08,00,"NW_FARM1_OUT_01");

    You showed me to put it in: FUNC VOID Rtn_BugsThere_939 ()

    Maby you were wron, maby you whanted to test me so I fugured out for myself to put the code:

    TA_Stand_WP (08,00,20,00,"NW_FARM1_OUT_01");
    TA_Sleep (22,00,08,00,"NW_FARM1_INSTABLE_BED");

    in: FUNC VOID Rtn_Start_939 () (yeah preety lame no?) Well I left the sleep function.

    I'm curious what will happen at 22:00 because there are two characters with the same bed. Slumber party?

    I also saved the game with the character inserted. Will he show up when I start the game again (ie: exit the game and enter/load again). When I load the save game he's there.

    I'll make a short dialogue for him and will send him to you for testing if it's allright with you.

    See Ya!

    eXecutioner

    PS: See this link
    Building Stronger Communities Blog - Bringing people closer together trough the power of words!
    Geändert von eXecutioner_id (28.12.2005 um 14:37 Uhr)

  8. Beiträge anzeigen #28
    Chosen One Avatar von rockfest
    Registriert seit
    Jul 2005
    Ort
    Bucharest
    Beiträge
    6.287
     
    rockfest ist offline
    You do know that you made some mistakes no?
    1. If there is more than one routine in the NPC's script then that means these are alternate routines. You will activate them in dialogues scripts, events scripts, and so on. Every function(routine) must be a 24 hour schedule. That means that you have to give him something to do between 0-24 h. In your case Alexandros is doing nothing between 20-22. i never made this mistake so i don't know know what's the error in here but i know this : a routine must have 2 action otherwise the engine will be confused :
    Example not good : TA_Concert (08,00,08,00,"Xardas");
    Good example : TA_Concert (08,00,20,00,"Xardas"); TA_Stand_Drinking (20,00,08,00,"Xardas");
    In your case you have the first routine : Rtn_Start_939. This must be a 24 h complete one. In order to change the routine to Rtn_BugsThere_939 you have to use this function : NPC_ExchangeRoutine (BugsThere); . like i said, use it in another dialogue or other place. Ok?

  9. Beiträge anzeigen #29
    Knight Avatar von eXecutioner
    Registriert seit
    Oct 2005
    Beiträge
    1.584
     
    eXecutioner ist offline
    Is this example of Alexandros good?



    Code:
    instance BAU_939_Alexandros (Npc_Default)
    {
    	// ------ NSC ------
    	name 		= "Alexandros";
    	guild 		= GIL_OUT;
    	id 			= 939;
    	voice 		= 5;
    	flags       = 0;									
    
    								//NPC_FLAG_IMMORTAL oder 0
    	npctype		= NPCTYPE_MAIN;
    	
    	// ------ Attribute ------
    	B_SetAttributesToChapter (self, 1);							
    
    										//setzt 
    
    Attribute und LEVEL entsprechend dem angegebenen Kapitel (1-6)
    		
    	// ------ Kampf-Taktik ------
    	fight_tactic		= FAI_HUMAN_COWARD;	// MASTER / STRONG / COWARD
    	
    	// ------ Equippte Waffen ------							
    
    										//Munition 
    
    wird automatisch generiert, darf aber angegeben werden
    	EquipItem			(self, ItMw_1h_Bau_Axe);
    	
    	// ------ Inventory ------
    	B_CreateAmbientInv 	(self);
    
    		
    	// ------ 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_Weak_Herek, 
    
    BodyTex_N, ITAR_Bau_L);		
    	Mdl_SetModelFatness	(self, 0);
    	Mdl_ApplyOverlayMds	(self, "Humans_Tired.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, 10); //Grenzen für Talent-Level liegen bei 30 und 60
    
    	// ------ TA anmelden ------
    	daily_routine 		= Rtn_Start_939;
    };
    //Joly: NIE AUF EINE BANK ODER THRON SETZEN
    
    FUNC VOID Rtn_Start_939 ()
    {	
    	TA_Stand_WP (08,00,22,00,"NW_FARM1_OUT_01");
            TA_Stand_WP (22,00,08,00,"NW_FARM1_OUT_01");
    };
    //Joly: NIE AUF EINE BANK ODER THRON SETZEN
    
    FUNC VOID Rtn_BugsThere_939 ()
    {	
    	TA_Stand_Drinking	(08,00,22,00,"NW_FARM1_ENTRANCE_03");
            TA_Sleep	        (22,00,08,00,"NW_FARM1_INSTABLE_BED");
    };
    //Joly: NIE AUF EINE BANK ODER THRON SETZEN
    
    FUNC VOID Rtn_ObesessionRitual_939 ()
    {	
    	TA_Smoke_Joint				(07,30,23,00,"NW_LITTLESTONEHENDGE_01");	
       	TA_Smoke_Joint 				(23,00,07,30,"NW_LITTLESTONEHENDGE_01");
    };
    //Joly: NIE AUF EINE BANK ODER THRON SETZEN
    
    FUNC VOID Rtn_Kloster_939 ()
    {	
    	TA_Stand_Drinking	(08,00,22,00,"NW_MONASTERY_PLACE_07");
        TA_Sleep 			(22,00,08,00,"NW_MONASTERY_NOVICE04_07");
    };
    //Joly: NIE AUF EINE BANK ODER THRON SETZEN
    
    FUNC VOID Rtn_Flee_939 ()
    {	
    	TA_Stand_Drinking	(08,00,22,00,"NW_TAVERNE_CROSS");
        TA_Sleep 			(22,00,08,00,"NW_TAVERNE_CROSS");
    };
    I whanted to add items into his inventory and edit something at him and I was givven many new errors. I pressed ENTER 1 minute I think.
    Building Stronger Communities Blog - Bringing people closer together trough the power of words!

  10. Beiträge anzeigen #30
    Chosen One Avatar von rockfest
    Registriert seit
    Jul 2005
    Ort
    Bucharest
    Beiträge
    6.287
     
    rockfest ist offline
    I whanted to add items into his inventory and edit something at him and I was givven many new errors. I pressed ENTER 1 minute I think.
    That's easy to do. You can insert items in a characters inventory during a dialogue, an event or even when you create the character. The function is like this :
    CreateInvItems (NPC,ITEM,x);
    NPC = can be self or other. Depending when you use the function. Example : if you're using in a character script then it will be self. If it's in a dialogue script then it can be other or self depending on who do you want to create it. remember AI_Output function?
    ITEM = it's the instance of the item you want to insert.
    x = it's a number and it represents how many items do you want to create in the inventory.

    Ok...now you created the item. But if it's a sword the you want to equip it. no? Btw, before equiping an item remember that it has to be in the inventory first.
    EquipItem (NPC,ITEM);
    NPC = see CreateInvItems.
    ITEM = see CreateInvItems;

    Is this example of Alexandros good?
    You can delete this :
    Code:
    FUNC VOID Rtn_ObesessionRitual_939 ()
    {	
    	TA_Smoke_Joint				(07,30,23,00,"NW_LITTLESTONEHENDGE_01");	
       	TA_Smoke_Joint 				(23,00,07,30,"NW_LITTLESTONEHENDGE_01");
    };
    //Joly: NIE AUF EINE BANK ODER THRON SETZEN
    
    FUNC VOID Rtn_Kloster_939 ()
    {	
    	TA_Stand_Drinking	(08,00,22,00,"NW_MONASTERY_PLACE_07");
        TA_Sleep 			(22,00,08,00,"NW_MONASTERY_NOVICE04_07");
    };
    //Joly: NIE AUF EINE BANK ODER THRON SETZEN
    
    FUNC VOID Rtn_Flee_939 ()
    {	
    	TA_Stand_Drinking	(08,00,22,00,"NW_TAVERNE_CROSS");
        TA_Sleep 			(22,00,08,00,"NW_TAVERNE_CROSS");
    };
    But you can leave it...do as you want. I like my scripts to be clean when i can chose this option.

    PS : A thing i forgot about the dialogues. If you want the output text to appear in the game you have to do this :
    1. Delete OUINFO.inf(it's in the _compiled folder),ou.bin and ou.csl(their both in the cutscene folder).
    2. Reparse the scripts and open spacer.
    3. Hit the output-units button and then Upload(or something like that), then wait and hit Save. After that close spacer and open the game.

  11. Homepage besuchen Beiträge anzeigen #31
    Knight Avatar von DeadlyArrow
    Registriert seit
    May 2005
    Ort
    Vilnius
    Beiträge
    1.854
     
    DeadlyArrow ist offline
    I've made new NPC Now Vino has a friend...
    I have a few dumb questions^^
    1. If you use notepad - with which encoding you must save *.d file (I saved with unicode and it was corrupted, so i used file editor)
    2. Starter do not parsed scripts, so i writed it in gothic.src and made new dat, still i wonder why it couldn't parse (as always i do everything in a complicated way)

    And further guestions^^ about dialogs making
    Where i must write something to make a dat file with dialog? I made a dialog file (DIA_BAU_999_Name.d) and saved it in Story\Dialoge, also I writed the line in src file (Story\Dialoge\DIA_BAU_999_Name.d) but it gives me error "DIA_BAU_999_Name.d not found"
    I could make errors in the dialoge file of course, but maybe i still need to write about it somewhere

  12. Beiträge anzeigen #32
    Chosen One Avatar von rockfest
    Registriert seit
    Jul 2005
    Ort
    Bucharest
    Beiträge
    6.287
     
    rockfest ist offline
    If you use notepad - with which encoding you must save *.d file (I saved with unicode and it was corrupted, so i used file editor)
    Use ANSI. It worked for me.
    Starter do not parsed scripts, so i writed it in gothic.src and made new dat, still i wonder why it couldn't parse (as always i do everything in a complicated way)
    I didn't quite understood your problem but here's how i parse scripts :
    1. Make/Edit the script.
    2. Open Spacer and chose World->Reparse Scripts
    3. Chose Gothic.src and then it starts.
    I don't know what did you wanted to make a new .dat an i don't know if this works. If you want to parse only a single file then don't forget that if the script contains functions(and most of them do contain) you will need the scripts in the src with these functions. So it is best to leave the scripts from _intern, AI, FAI in the src and work only with the story,items scripts. At least this is how i do it...and don't forget that you have to compile the dialogues first.

    Where i must write something to make a dat file with dialog? I made a dialog file (DIA_BAU_999_Name.d) and saved it in Story\Dialoge, also I writed the line in src file (Story\Dialoge\DIA_BAU_999_Name.d) but it gives me error "DIA_BAU_999_Name.d not found"
    I could make errors in the dialoge file of course, but maybe i still need to write about it somewhere
    Well make sure that you have written the path correct and i see that again you try to create new dat's. It's my opinion that you should work with the dat's from the original game and try to parse them from the spacer.

  13. Homepage besuchen Beiträge anzeigen #33
    Knight Avatar von DeadlyArrow
    Registriert seit
    May 2005
    Ort
    Vilnius
    Beiträge
    1.854
     
    DeadlyArrow ist offline
    tnx, rockfest

    if anibody knows of real good step-by-step dialoge making tutorial, plz give me a link (it even can be in German, but it must be as detailed as possible)

  14. Beiträge anzeigen #34
    Chosen One Avatar von rockfest
    Registriert seit
    Jul 2005
    Ort
    Bucharest
    Beiträge
    6.287
     
    rockfest ist offline
    if anibody knows of real good step-by-step dialoge making tutorial, plz give me a link (it even can be in German, but it must be as detailed as possible)
    I hope this is good :

    Tutorial for creating dialogues in DAEDALUS. by rockfest

    First, you will find in the attachment of this post 4 scripts, please read this first and then open the scripts.


    STEP 1.

    What do we need to know about dialogue scripts?
    They need a NPC to be tied with. In the script there will be two NPC interacting : self, the NPC wich the player is talking with and other wich is the player or the hero(it's the same).

    STEP 2.

    An instance of a dialogue is a C_INFO class. Before trying to write a script you should know what a C_INFO class is.

    CLASS C_INFO
    {
    VAR INT npc;
    VAR INT nr;
    VAR INT important;
    VAR FUNC condition;
    VAR FUNC information;
    VAR STRING description;
    VAR INT trade;
    VAR INT permanent;
    };

    You should know by now what int,func and string means. If not then i would recommend to read the little it is in the Wiki or some tutorials about C++.
    VAR INT npc = This should be the character wich this dialogue belongs to. It must be in every instance of a dialogue and the character must be the same. Remember that it is the instance and not the script file.
    VAR INT nr = This is the number of the dialogue. It represents the place in the main conversation. Further explanations will come in the right time. Any number can be put in here.
    VAR INT important = The options for this variable are : TRUE or FALSE. This tells the game if the current instance should be initiated by the NPC or not. If it's set TRUE then NPC will be the one starting the dialogue, otherwise the player will have to select him.
    VAR FUNC condition = It is one of the two required function for an instance of a dialogue. This is an INT function so it will return TRUE and making the dialogue available or FALSE and make it unavailable. The function can always return TRUE or have complicated conditions.
    VAR FUNC information = This is the second function needed for the instance and contains the "data". That means that the text of the dialogue should be in this function. It is a void function wich means it will return nothing.
    VAR STRING description = This is the text wich appears on the screen. Selecting that text will enable the instance(dialogue) to start.
    VAR INT trade = This is used for the characters wich are traders. It can be TRUE or FALSE.
    VAR INT permanent = After having the dialogue with the player the NPC will delete from his memory the talked dialogue. If you set this to TRUE then the dialogue will allways be available for disscusion.

    Knowing what all of these are doing you might have figured a small ideea of the dialogue system. These variables, like in other classes, can be used or not. It depends on what instance of a dialogue you want to use. Let's take an example : If you want a NPC who will greet you for the first time when you will see him then the instance will look like this:

    INSTANCE DIA_Ramon_Hello (C_Info)
    {
    npc = BDT_1071_Addon_Ramon;
    nr = 1;
    condition = DIA_Ramon_Hello_Condition;
    information = DIA_Ramon_Hello_Info;
    important = TRUE;
    permanent = FALSE;
    };

    Observe that the variable important is set TRUE wich will enable the NPC to start the dialogue and the variable important is set to FALSE wich will make the dialogue to dissapear after it has been discused.
    As you can see there is no description set because the dialogue doesn't need to be selected and will not remain permanent.The nr variable is set as 1 because it will be the first thing the NPC and the hero will talk about.
    An example of a dialogue should go something like this :
    Ramon : Hy there!
    Hero : Hey! How are you?
    Ramon : Good.

    STEP 3.

    The Condition function is very important. Depending on what result it returns determines if the dialogue will be available or not. Like i said before the function can be a simple one :

    FUNC INT DIA_Ramon_Hello_Condition ()
    {
    return TRUE;
    };

    or it can be a very complex one. Let's take for example this situation : Ramon is sitting outside the tavern and waiting for his fear to be destroyed. His fear is a seeker waiting for our hero somewhere on the map. So we have our first condition : Seeker dead. The second condition should be to check if the chapter is bigger that 3. A seeker doesn't exist before that no? So we have our second condition : Chapter >= 3.
    We can continue with examples and conditions but i hope that you will understand with these two. This example is a weird one because the hero can't know Ramon's fear if he didn't talked with him before but the point to this is the understandig of the condition function.
    Here's how it should look.

    FUNC INT DIA_Ramon_Hello_Condition ()
    {
    if (Npc_IsDead (Seeker)) && (Kapitel >= 3)
    {
    return TRUE;
    };
    };

    There are alot of functions used in these kind of conditions. The most used are : Npc_KnowsInfo () = checks if a dialogue has been talked with the hero(any dialogue, not only the one from this script), Npc_IsDead () = checks if an instance of a NPC is dead or not and of course you can have any variable declared in any other script(journal, other dialogues, events) and check for it in conditions like these...example : Kapitel

    STEP 4.

    The Information function is where all the texts and other functions are. I will give an easy example from the dialogue wich i told earlier :

    Ramon : Hy there!
    Hero : Hey! How are you?
    Ramon : Good.

    In order for this to appear in the game you will have to write this :

    FUNC VOID DIA_Ramon_HellO_Info ()
    {
    AI_Output (self,other,"DIA_Ramon_Hello_05_00"); //Hy there!
    AI_Output (other,self,"DIA_Ramon_Hello_05_01"); //Hey! How are you?
    AI_Output (self,other,"DIA_Ramon_Hello_05_02"); //Good.
    };

    Let's start with the begining...
    AI_Output (NPC,NPC,"<statement>"); //<text> This is a general function of the output of the text. So let's take them one-by-one :
    AI_Output () = it's the function wich makes the text appear on screen.
    (NPC,NPC,...) = the two NPC's are the hero(other) and the NPC(self). Depending on who will say the text they will be in this order : self,other(if the NPC says the text) or other,self(if the hero says the text).
    (...,"<statement>"); = This is the identifier for the audio part of the text output. Let's take an example : DIA_Ramon_Hello_05_00 . the first part : DIA_Ramon_Hello it's the name of the function or the instance in this case. After that this sequence of numbers :05_00...05 is the pitch of the voice. If you're making non-audio mod then you can ignore and put this number. 00 is the counter of the text. In every instance of a dialogue you will have to count the text outputs with this number. Starting from 00...how long it has to be.
    //<text> = This is the only place where this : / is ignored as a comment. Whaterver follows after this : // will appear in the game as a text.

    Having that understood you only need to know that you can use all the known and unknown functions in here. If-then-else, assignments, variable checking and other things that come into your mind can be done in here.
    Another very used functions are the journal editing ones. In most of the cases all the journal logs will be put in here. Here's an example :

    Log_CreateTopic(TOPIC_Seeker,LOG_MISSION);
    Log_SetTopicStatus (TOPIC_Seeker,LOG_RUNNING);
    B_LogEntry (TOPIC_Seeker,"Ramon will not say hello to me if his fear won't dissapear.");

    Log_CreateTopic(<topic variable>,<type of topic>); = This creates a topic in the journal lof without any information in it. The topic variable must be a string const declared in Story_Globals.d . In this case it can be const string TOPIC_Seeker = "Ramon's fear"; . What you declare in the story_globals will appear as the title of the topic in the log.
    Log_SetTopicStatus (<topic variable>,<status>); = Sets the status of the topic. This is used for closing or opening a topic(finished or unfinished quests).
    B_LogEntry (<topic variable>,<string>); = Adds a text to the topic.

    STEP 5. Choices

    Choices can be added in any kind of number and in instance of a dialogue. The correct syntax is :
    Info_AddChoice (<dialogue instance>,<string>,<identifier>);
    <dialogue instance> = it's the name of the instance. In this case it's : DIA_Ramon_Hello.
    <string> = This does the same thing as the description variable. It's the text wich will appear on the screen as a choice.
    <identifier> = This must be formed from : the instance name+identifier. Here's an example for better understanding : DIA_Ramon_Hello_Choice . It can be whatever you want.

    To clear the screen of any choice you can use this usefull function :
    Info_ClearChoices(<dialogue instance>);
    I don't think you will need any further explanations.

    STEP 6. Compiling the text output

    I don't know if i said this or not but there is more than parsing the scripts in the game in order to appear the text on the screen. If you want the text to appear in the game you have to do this :
    - Delete OUINFO.inf from the _compiled folder and ou.bin and ou.csl from the cutscene folder. After this parse the scripts in the spacer or how you like to do it.
    - After this enter spacer and press the output units button. Chose UPDATE and a long list will start to load if you deleted those files. After this chose SAVE and exit the spacer.

    Now your dialogues should be in the game if the scripts had no errors and you did exactly as i said.


    I think that this covers the basic stuff. Most of the options and other functions you can find in the german dialogues wich should be studied very closely. You have the freedom to try every function and experiment.
    Before i will give a full example you should read something from Sumpfkrautjunkie's post(it's on the first page). You can see there all the functions needed for creating a character and explained very well.

    Now if we know the basics let's start building two characters and two dialogues for each one.

    The Test character.
    You can give him any attributes you want and in principle any look you want. The thing we need from him is to ignore what armor the hero is wearing and to have 2 routines.
    The first one can be done with the aivars. You can find the list with all the available aivars in the AI_Constants.d . In principle this is an array called aivar with alot of usefull things for the NPC's. Most of them are self explained by the name so you won't have any problems with this. If we want the hero to ignore the armor then search in the aivars script for the one we need.
    The right syntax for aivars is : aivar [<example>] = TRUE;. In the <example> field you will have to put the one we need. Aivars can have TRUE or FALSE value.
    The next thing i said we need is the NPC to have 2 routines. One where he will stand all day long in front of Xardas's tower. An example of a waypoint is : NW_XARDAS_TOWER_02 and another one is to stand near the entrance of the tower. In this case it's : Xardas
    And we are done with the Test NPC. If we are at NPC creation then we will need another instance of a seeker. Just copy the content of another one and name your instance as you wish(remember that it has to have a unique id and instance). You can put him at this waypoint : NW_XARDAS_MONSTER_INSERT_01
    PS : Don't forget to put these NPC's in Startup.d and be carefull that there is another NPC wich is inserted with the seeker. Put the original one in a comment.

    The dialogues
    As for the dialogues...the seeker will have a simple dialogue and after that he will attack. The function for attack is : B_Attack(self,other,AR_NONE, 1); You already know what the variables mean, if not then study the B_Attack.d script.
    Now for the Test character. This is a short version of the scene :

    - Hero is exiting from the tower. Test will say hello. Hero will ask him how is he doing and Test will say his problem(he can't return from the city because down the road there is a weird guy so he is afraid). After this all you have to do is to go and kill the seeker.
    If you noticed by now there are two problems. The hero is lv 0 and somehow he needs to raise his attributes and fast. The second problem is that he doesn't have any equipment to kill a Seeker. I will let you be creative at this and let you come up with some ideeas. You can find all the functions needed in the german scripts wich should have been read (at least a few of them) by now.
    Btw, make a quest out of this wich will appear in the journal and i think that this is all. Just in case you get stuck you can find my versions (the dialogues are lame but i wrote them without thinking to much at this matter so don't be surprised if they are stupid) of the scripts as attachements to this post.

    Bye now and a happy new year. ^^
    Angehängte Dateien

  15. Homepage besuchen Beiträge anzeigen #35
    Knight Avatar von DeadlyArrow
    Registriert seit
    May 2005
    Ort
    Vilnius
    Beiträge
    1.854
     
    DeadlyArrow ist offline
    Oh, you did a great job writing all this, be sure that i will use it
    btw Happy New Year!!!!

  16. Beiträge anzeigen #36
    Knight Avatar von eXecutioner
    Registriert seit
    Oct 2005
    Beiträge
    1.584
     
    eXecutioner ist offline
    Great job Rockfest. You know you should copy this to make a tutorial about Gothic scripting.

    I have a few questions:

    - in ...\Gothic II\_work\Data\Scripts\CONTENT\Story\NPC there are all the NPC's of the game. Theyre ID's are sorted between 900 and 4304 with a few gaps. I am refering to the human characters and not the monsters or orcs. Now the question is. Can I put in a new NPC an ID below 900 and higher that 4304?
    Like BAU_100_NPC.

    - the letters in the NPC's instance (BAU, BDT, DJG, DMT, KDF, etc.). What do they mean? Can I make a new one? Like for example ROB_100_NPC.

    See Ya!

    eXecutioner

    [PS] wWw, youre tutorial is good. Great job writeing it.

    [EDIT] Thanx. Can you give me the coordonates of Lester? I've made an NPC
    (BAU_939_Edirek - and he has theplatform of Bodo so I don't think that BAU is only for peasants) and I whant to make him sit near LEster's fire. Do you know tha waypoints? Or should I use the same as Lester's?
    Building Stronger Communities Blog - Bringing people closer together trough the power of words!
    Geändert von eXecutioner_id (02.01.2006 um 17:42 Uhr)

  17. Homepage besuchen Beiträge anzeigen #37
    Knight Avatar von DeadlyArrow
    Registriert seit
    May 2005
    Ort
    Vilnius
    Beiträge
    1.854
     
    DeadlyArrow ist offline
    Zitat Zitat von eXecutioner_id
    - the letters in the NPC's instance (BAU, BDT, DJG, DMT, KDF, etc.). What do they mean? Can I make a new one? Like for example ROB_100_NPC.
    it's guild, i think you can't make your own
    BAU - peasant
    BDT - bandit
    KDW – water mage
    MIL - militia
    PIR - pirate
    VLK - citizen
    DJG – dragon hunter
    KDF – fire mage
    NOV - novice
    PAL - paladin
    SLD - mercenary
    NONE – without guild

    and next question: how i can modify stats of hero, and where i can set place where he appears (for exp, first he appears in Xardas' tower, how can i change it)?
    Geändert von DeadlyArrow (02.01.2006 um 17:36 Uhr)

  18. Beiträge anzeigen #38
    Demigod Avatar von Sumpfkrautjunkie
    Registriert seit
    Nov 2004
    Ort
    München
    Beiträge
    9.091
     
    Sumpfkrautjunkie ist offline
    how i can modify stats of hero,
    If you want to Modify his beginningstats you must open :\_work\data\Scripts\Content\Story\NPC\PC_Hero.d
    Thre are several values you can modify.

    But if you want to modify them during the game you should use this in Dialogues:
    Code:
    Npc_ChangeAttribute	(self,	ATR_STRENGTH,	778);
       Npc_ChangeAttribute	(self,	ATR_DEXTERITY,	54);
       Npc_ChangeAttribute	(self,	ATR_MANA_MAX,	-54);
       Npc_ChangeAttribute	(self,	ATR_MANA,	-5);
       Npc_ChangeAttribute (self,	ATR_HITPOINTS,	354);
       Npc_ChangeAttribute	(self,	ATR_HITPOINTS_MAX,	9);
    You can put there also negative values, if you want that the heroe loses e.g. Mana or Dex

    and where i can set place where he appears (for exp, first he appears in Xardas' tower, how can i change it)?
    I dont really know, but if you open the Spacer there is a special vob on the plache you start, called START_GOTHIC2

    I think you need a Waypoint in your wolrd with this Name.

  19. Beiträge anzeigen #39
    Chosen One Avatar von rockfest
    Registriert seit
    Jul 2005
    Ort
    Bucharest
    Beiträge
    6.287
     
    rockfest ist offline
    i wrote this :
    Zitat Zitat von rockfest
    Aivars can have TRUE or FALSE value
    This is not 100% correct. Sorry. Aivars can have other values as well. Just search in AI_Constants.d and you will see.
    PS : I can't modify the post cause it's too big and my net connection would crash.
    Zitat Zitat von executioner
    [PS] wWw, youre tutorial is good. Great job writeing it.
    thanks.
    Zitat Zitat von executioner
    - in ...\Gothic II\_work\Data\Scripts\CONTENT\Story\NPC there are all the NPC's of the game. Theyre ID's are sorted between 900 and 4304 with a few gaps. I am refering to the human characters and not the monsters or orcs. Now the question is. Can I put in a new NPC an ID below 900 and higher that 4304?
    You can create any new id you want. I don't see why you couldn't. But like you said there are alot of gaps and they are done with logic. Just follow the id's with the guild and you will see what am i talking about.
    Zitat Zitat von executioner
    [EDIT] Thanx. Can you give me the coordonates of Lester? I've made an NPC
    (BAU_939_Edirek - and he has the platform of Bodo so I don't think that BAU is only for peasants) and I whant to make him sit near LEster's fire. Do you know tha waypoints? Or should I use the same as Lester's?
    About Lester's waypoint...just open spacer and you will see all the waypoints/freepoints and you can create or move them. You will have to save the world after this(don't forget to compile the world and after that to compile the light, i recommend medium, and after that save as a compiled zen,ASCII). You can put how many NPC's you want on a waypoint(actually this is how i do it, insert all the NPC's in a waypoint and they will follow their routines) but be carefull on what actions you give NPC's on the same waypoint...it wouldn't look good for one who's cooking in plain air next to another one who is doing a good job .
    Code:
    const int GIL_NONE						= 0		;	// (keine)
    const int GIL_HUMAN						= 1		;	// Special Guild -> To set Constants for ALL Human Guilds --> wird verwendet in Species.d
    const int GIL_PAL	= 1;	// Paladin
    const int GIL_MIL	= 2;	// Miliz
    const int GIL_VLK	= 3;	// Bürger
    const int GIL_KDF	= 4;	// Magier
    const int GIL_NOV	= 5;	// Magier Novize
    const int GIL_DJG	= 6;	// Drachenjäger
    const int GIL_SLD	= 7;	// Söldner
    const int GIL_BAU	= 8;	// Bauer
    const int GIL_BDT	= 9;	// Bandit
    const int GIL_STRF	= 10; 	// Prisoner, Sträfling
    const int GIL_DMT	= 11;	// Dementoren
    const int GIL_OUT	= 12; 	// Outlander (z.B. kleine Bauernhöfe)
    
    const int GIL_PIR	= 13;	//Pirat
    const int GIL_KDW	= 14;	//KDW
    There are more of these in Constants.d script. You can translate the guilds with altavista. You asked if you can create a new one...if this means if you can name the instance or the file how you want it then you are free to do it but if you want to create a new guild the it's a little bit complicated(not very complicated ).

    ----------------------------------------------------------

    Zitat Zitat von deadlyarrow
    and next question: how i can modify stats of hero, and where i can set place where he appears (for exp, first he appears in Xardas' tower, how can i change it)?
    For the stats Sumpfkrautjunkie said what you need and he is right about the StartPoint. It is like a waypoint but i think it must be unique for every world and you can modifiy it like a normal vob :
    - select it
    - press M
    - move it left,right,forward,backward with the arrow keys, up and down with the A and Y keys and rotate it with the Insert...Page Down keys.
    In addition with what Sumpfkrautjunkie said you can set with a easier function the hero's stats :
    B_SetAttributesToChapter (<NPC>, <chapter>)
    - in this case the NPC is other and the chapter characteristics you can find/edit in B_SetAttributesToChapter.d script.
    Geändert von rockfest (03.01.2006 um 03:28 Uhr)

  20. Homepage besuchen Beiträge anzeigen #40
    Knight Avatar von DeadlyArrow
    Registriert seit
    May 2005
    Ort
    Vilnius
    Beiträge
    1.854
     
    DeadlyArrow ist offline
    @Sumpfkrautjunkie @rockfest
    tnx a lot

Seite 2 von 10 « Erste 1234569 ... Letzte »

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide