Model "(insert name)" is missing [new toolset user]
#1
Posté 28 juillet 2012 - 01:45
I started using the toolset about 3 days ago. I've read through tutorials, messed around with it just for fun without saving anything and got to know it just a little. So, I've been wanting to make a tini tiny quest. It's all worked out fine so far. I managed to set a quest giver, monsters, dialogues, a stage, waypoints etc ... now, I also finally found out how you actually save it all. By exporting, so I read. It told me that Exporting without dependent resources is the best solution, so I did. I exported it but stumbled over some strange errors along the way, now ... not having any kind of graphic education or yet a very big toolset experience I just moved on, clicked on export again and it seemed to have saved it, as least so it said. So ... I go to start the game and see if it was going to show up in the Other Campaigne menu, and it did. But as soon as I clicked on my self made little add on, it told me: Module of (in my case it was called, swamp_test) is missing.
Now ... I have no idea what I did wrong. I looked under My Documents/BioWare/Dragon Age/AddIns/ and then found it at the very end: swamp_test
Now I click on it and see some files in some folders. I compared it to other files in that folder, for example:
My Documents/BioWare/Dragon Age/AddIns/dao_prc_cp_1
if I then click on module, it has a .cif file besides the data and audio folder, now in my swamp_test folder, I don't see any .cif file. Is that the problem? If so, how can I get a .cif file? If not ... what else is it?
I really thank everybody in advance for any kind of help or suggestions. I am very interested in programming/game designing/drawing/etc the whole area, but have not yet been able to get proper education, still am willing to try it and welcome and praise any help I can get. <3
#2
Posté 28 juillet 2012 - 05:52
#3
Posté 28 juillet 2012 - 03:36
Assuming you're making a stand-alone module:
Under Manage Modules/Properties: Give your module a unique name and UID (I make my name and UID the same). Make sure the starting area is valid, and make sure you've selected a valid waypoint in that area. If you have a custom module script (not a good idea for a beginner), you can select it at this screen as well.
When making new resources, be sure they are created under your own module and NOT the single-player module (as doing this will add to the existing single player files and can potentially cause problems). If you have already done this you may need to reinstall the game and the Toolset entirely, as it can sometimes make the single player campaign and other modules unplayable.
When you export, export without dependent resources by selecting ONLY the files you actually want to export, not everything you see in the resource palette (so in otherwords, only your own files - be sure to put them under a custom folder so you can tell them apart).
If you export any scripts, you will need to navigate to Documents\\BioWare\\Dragon Age\\packages\\core\\override\\toolsetexport and delete all of the exported script files, as the Toolset currently will export dependent scripts with your own. This is A Bad Thing because some of the scripts in the core Toolset resources are different from those used by the main game and can potentially cause problems, leading to errors and save corruption etc. Safe practice is usually just to avoid putting anything in packages\\core\\override\\toolsetexport and just delete the entire folder after exporting your own stuff.
Verify all your files are showing up properly by checking Documents\\Addins\\module_name\\module\\override\\toolsetexport. If they aren't there, something's gone wrong.
Last, go into the game, choose "Other Campaigns", pick your module, and play it. Unless you've set up character generation, you'll spawn as a default character with 1 HP - good for exploring, but not good for combat, so you might want to set up character generation (there are tutorials on the Wiki) for serious testing, or replace the default player character with a high-level one with lots of gear if you don't want to waste time leveling/etc.
As a quick note, I would NOT recommend overriding the default char_stage or messing around much with custom followers/party pickers/etc. until you know what you're doing. If you make a mistake this can completely break your existing single player campaign, and potentially anyone else's if they play your module.
Exporting should look like this:

And the result should look something like this:

Hopefully that all helps. If you have more questions, please let us know.
Modifié par sea-, 28 juillet 2012 - 03:41 .
#4
Posté 28 juillet 2012 - 10:06
Thanks so much for the very detailed and easily understandable/readable answer. I see I would have made several mistakes besides exporting it anyways. I do have to admit that I am rather shy messing around much with it for now anyways, until I have proper education in it. I just wanted to make a tiny surprise quest for my sister, which is basically done in the tutorial. I picked the area, in my case Flemeth's hut, then opened another one, which was the inside of the hut. I put in doors and waypoints, a quest giver and a few monsters. I have made a dialogue and a plot, but I had no idea you even have to make a character generation ... wow. So I will try to just do it all over again and include the character generation in it as well.
My first question that I cannot answer myself by reading through the tutorial is, when is it time to set up the module? I tried to do it first thing, before I did anything. And at the end, once all was done, wanted to put in the starting area, which I found, but I did not find a spot to set the waypoint. It didn't show up when I did, as the tutorial said - go to Module Manager and then click the module you are doing it on. I don't think I ever SAVED anything on the Single Player module, I tried making a new one for what I was working on, but it did not have a place to set the starting waypoint ...
The second is: now let's say I have it all done. I have it set up and also included the required character generation; I wanna save it all so the computer and the game will recognize it and it will be playable in game. So I simply select all the resources I made for this mod and then EXPORT WITHOUT DEPENDENT RESOURCES? You said I should make sure to put them all in a custom folder. Now ... silly question (I apologize) how can I create a folder? Just right click on an empty spot in the resource space, and then click Create New Folder? (Does it have an option like that, or is it more complicated?)
Again I apologize for my lack of knowledge and therefor thank you even more for the patience in general and to even bother with my questions.
#5
Posté 29 juillet 2012 - 01:23
You might already know some of this, so apologies if I'm covering familiar information.SteffiSyndrom wrote...
My first question that I cannot answer myself by reading through the tutorial is, when is it time to set up the module? I tried to do it first thing, before I did anything. And at the end, once all was done, wanted to put in the starting area, which I found, but I did not find a spot to set the waypoint. It didn't show up when I did, as the tutorial said - go to Module Manager and then click the module you are doing it on. I don't think I ever SAVED anything on the Single Player module, I tried making a new one for what I was working on, but it did not have a place to set the starting waypoint ...
You need to create a waypoint in your starting area - right-click in the Area Editor and select Insert Waypoint:

When you have a waypoint down, check the Object Inspector and edit the Name and Tag fields - call them whatever you want, I almost ways use the same name and tag but it doesn't really matter (the tag is what you refer to when you want to specify a waypoint, for example for starting the player at it, entering a new area, or telling a creature to move there - waypoints are extremely useful for scripting more complex events as well):

Go to your Module Manager/Properties and specify the area and waypoint like so (be sure you have saved and/or exported your area):

When you start your module, the player should spawn there at the waypoint you created. There's nothing more to do - the game handles all this automagically, though you can override some of it with scripting if you have need to (such as starting character creation, playing cutscenes, etc.).
More or less, yes. When you create a resource, the Toolset asks you for a path to put the resource in. By default it's blank, but you can change this like so:SteffiSyndrom wrote...
The second is: now let's say I have it all done. I have it set up and also included the required character generation; I wanna save it all so the computer and the game will recognize it and it will be playable in game. So I simply select all the resources I made for this mod and then EXPORT WITHOUT DEPENDENT RESOURCES? You said I should make sure to put them all in a custom folder. Now ... silly question (I apologize) how can I create a folder? Just right click on an empty spot in the resource space, and then click Create New Folder? (Does it have an option like that, or is it more complicated?)

To change a folder (or name of a resource) after creating it, you will need to right-click that resource in the Palette Window and select "Check In." You'll get a pop-up asking you for a note - just skip over it - and you'll notice your resource no longer has a green checkmark next to it. From there, you can right-click the resource, choose Properties, and then edit the name or folder. If no folder exists, it will automatically be created when you confirm the change, so you can move large numbers of resources around easily this way.
Once your resources are in the folders you want, you'll need to select them, right-click and choose "Check Out" to be able to edit them again. Once you've changed the name, any hard references to the resource will need to be fixed, for example, a script that refers to R"test_item.uti" will not work if you rename the item to test_item_100.uti. You can change the folders around as much as you like, though.
Note: do NOT select "Undo Checkout" - doing so will allow you to move or delete a resource, but you will also lose any of its content as well, i.e. a dialogue will no longer have any lines in it. The whole checking in/out setup is a legacy feature from when BioWare developed Dragon Age using a central server with lots of networked workstations - for home users it's basically useless, and you should avoid messing around with it unless you're sure you want to delete or move something outright.
The folders themselves don't really matter - they are only reflected in the Toolset database itself. However, they are extremely useful when you're working on large modules with lots of individual resources, potentially dozens or hundreds (see BioWare's own Single Player module for reference). For keeping things nice and organised, using folders to sort your work can be essential.
Hopefully that all gets you on the right track - sorry if it was a bit long-winded, but the Toolset is not that intuitive to jump into and most people here who know how to use it have either used it for years already, or have worked with previous BioWare games like NWN and NWN2. The Wiki is still pretty good though, and I'd recommend reading everything with the name "tutorial" in the title you can find.
Modifié par sea-, 29 juillet 2012 - 01:30 .
#6
Posté 30 juillet 2012 - 09:55
That helped a lot and gave me the required "aha!" moments I needed. I will give it another try right away and see how it goes, after I made sure I've read my way through all the other tutorials as well (especially the character generator one, since I have not even looked into that yet nor even considered it necessary) and will let you know how it went this time.
Thanks again for helping me at all and for also being very kind and understanding.
I really tend to jump into stuff that I have never dealt with before, then get frustrated with it and wonder why I can't understand it after so and so many hours only
I really appreciate being able to ask questions that might sound really silly or simple to others, without being put down for it or something. Hope you have a great day!
#7
Posté 30 juillet 2012 - 10:29
#8
Posté 31 juillet 2012 - 03:53
Just type the folder name/s in the Folder field of the Create New Resource window that pops up and it will automatically create them. For example:
\\Steff\\Areas\\
Or whatever naming scheme makes sense to you. Refer to sea-'s pic above, where he used \\Test_Module\\Test_areas\\. In future, once you have an existing folder structure in place, to create new resources you can simply right click on a folder in the Resource Palette, in the pop-up menu go to New and at the top of the list will be the appropriate resource for that folder. When the Create New Resource window opens, that folder will then automatically be set as the location to create the resource.
Modifié par DarthParametric, 31 juillet 2012 - 04:00 .
#9
Posté 31 juillet 2012 - 05:27
A quick run-down:
1) The Toolset itself uses an SQL database to store data, not folders and files like Windows.
2) Similarly, in the Toolset, all the resources you create are just that - data, not individual files like you get in Windows, such as DOCs, WAVs, etc. That's generally why tutorials will call them resources, not files.
3) When you hit "export", you're basically telling the Toolset to compile the data you have saved into individual files, like what you see in Windows Explorer normally. So, your scripts, for example, are used to create NSS and NCS files, items become UTI files, etc. These are what the game executable reads, not the Toolset database itself.
It's a bit confusing, but once you realize you're dealing with a database rather than files, things begin to make a bit more sense. Unfortunately, it also means your project is tied to the database, so be very careful about backing it up regularly just in case you run into problems and have to reinstall. There's a page or to on the DA Builder Wiki that cover the backup process.
Last, since you're setting up character generation, if you haven't yet found it, have a look at this page:
http://social.biowar...cter_generation
You will need to do some basic scripting, although that page gives you code you can copy-paste. Scripting is, unfortunately, the most intimidating and difficult part of using the Toolset, but that's also where the gameplay itself happens, as you'll need to use scripts to do everything from make characters walk around, to check plot progress, or basically do anything specific outside of the basic game functions (like talking to NPCs and fighting enemies). If you know C++ or any other programming language, however, it shouldn't be that hard to get into.
#10
Posté 31 juillet 2012 - 06:26
http://social.biowar...nd_the_Database
Although the link seems to be dead for me at the moment for some reason. There is also a video of it:
#11
Posté 02 août 2012 - 07:35
For example, I tried to do as the tutorial told me. I tried to get the computer to realize the plot of the quest, just as it is described in the tutorial, now ... it didn't work. I tried to simply put that under the Character Generator script that I had pasted, but all it did recognize was the character generator, but nothing of the quest scripting I have tried to add to it. Is that because I had two "void main()"s in it? Can I just have one of these, and then just add what else I want scripted? I hope I am making sense here ... but as sea- said, scripting is by far the most difficult challenge I've stumbled upon in the Toolset so far.
Thanks again for all the support.
#12
Posté 02 août 2012 - 11:39
Scripts are assigned to different game objects - the module itself (for anything that needs to happen anywhere/anytime), or areas, or characters, or placeables, or plots. Almost every type of resource has a "Script" field that lets you specify a script to use with it. Otherwise, they will use the default script, which handles almost everything automatically for you, i.e. it makes enemies fight the player, take damage when hit, die when their HP hits 0, etc, or makes doors open when you click on them.
So, if you have a plot, you also want a script attached to it (check the Object Inspector when you have the plot open). You'll want to put your code in that new script file. To get things to happen when a plot flag is changed, you will need to use a script to determine which plot flag is being updated, and perform the necessary actions.
Here's a quick example:
1) Imagine I have a plot called "my_plot" with the flags "QUEST_RECEIVED" and "QUEST_COMPLETED".
2) I have a script associated with the plot called "my_plot_script"
3) The goal is to give the player gold when the plot flag QUEST_COMPLETED changes to 1.
To do this, we need the following script. Note that this just the plot_core script, which is a template for handling plot updates provided by BioWare.
//::///////////////////////////////////////////////
//:: Plot Events Template
//:: Copyright (c) 2003 Bioware Corp.
//:://////////////////////////////////////////////
/*
Plot events
*/
//:://////////////////////////////////////////////
//:: Created By: Yaron
//:: Created On: July 21st, 2006
//:://////////////////////////////////////////////
#include "log_h"
#include "utility_h"
#include "wrappers_h"
#include "plot_h"
//#include "PLOT_NAME_GOES_HERE"
int StartingConditional()
{
event eParms = GetCurrentEvent(); // Contains all input parameters
int nType = GetEventType(eParms); // GET or SET call
string strPlot = GetEventString(eParms, 0); // Plot GUID
int nFlag = GetEventInteger(eParms, 1); // The bit flag # being affected
object oParty = GetEventCreator(eParms); // The owner of the plot table for this script
object oConversationOwner = GetEventObject(eParms, 0); // Owner on the conversation, if any
int nPlotType = GetEventInteger(eParms, 5);
int bIsTutorial = GetM2DAInt(TABLE_PLOT_TYPES, "IsTutorial", nPlotType);
int bIsCodex = GetM2DAInt(TABLE_PLOT_TYPES, "IsCodex", nPlotType);
int nResult = FALSE; // used to return value for DEFINED GET events
object oPC = GetHero();
plot_GlobalPlotHandler(eParms); // any global plot operations, including debug info
if(nType == EVENT_TYPE_SET_PLOT) // actions -> normal flags only
{
int nValue = GetEventInteger(eParms, 2); // On SET call, the value about to be written (on a normal SET that should be '1', and on a 'clear' it should be '0')
int nOldValue = GetEventInteger(eParms, 3); // On SET call, the current flag value (can be either 1 or 0 regardless if it's a set or clear event)
// IMPORTANT: The flag value on a SET event is set only AFTER this script finishes running!
switch(nFlag)
{
}
}
else // EVENT_TYPE_GET_PLOT -> defined conditions only
{
switch(nFlag)
{
}
}
plot_OutputDefinedFlag(eParms, nResult);
return nResult;
}Where you see #include "PLOT_NAME_GOES_HERE", you will need to type #include "PLT_MY_PLOT". This tells the script to include the plot file in itself so it can refer to the plot's flags. You can also include other scripts, in order to refer to things written in them.Second, under "switch(nFlag)", we need to refer to a plot flag. To do this we would type "case QUEST_COMPLETED:", which tells the game to check if the plot flag being updated is the right one. You can use multiple case statements to check multiple plot flags in the same script. Under that, we want to type "if (nValue == 1)", which is just a check to see whether the plot flag is being set true. This isn't necessary in most cases but may be needed if you have actions that are executed when a plot flag is set false.
Third, we need to actually tell the game to give the player money. There's an easy way to do this, fortunately. Underneath the "if (nValue == 1)" statement above, we need to include "RewardMoney(25,50,1);". This function asks for copper, silver and gold in that order, so this function will give the player 25 coppers, 50 silver, and 1 gold.
Put together, the script should look like this:
#include "log_h"
#include "utility_h"
#include "wrappers_h"
#include "plot_h"
#include "plt_my_plot"
int StartingConditional()
{
event eParms = GetCurrentEvent(); // Contains all input parameters
int nType = GetEventType(eParms); // GET or SET call
string strPlot = GetEventString(eParms, 0); // Plot GUID
int nFlag = GetEventInteger(eParms, 1); // The bit flag # being affected
object oParty = GetEventCreator(eParms); // The owner of the plot table for this script
object oConversationOwner = GetEventObject(eParms, 0); // Owner on the conversation, if any
int nPlotType = GetEventInteger(eParms, 5);
int bIsTutorial = GetM2DAInt(TABLE_PLOT_TYPES, "IsTutorial", nPlotType);
int bIsCodex = GetM2DAInt(TABLE_PLOT_TYPES, "IsCodex", nPlotType);
int nResult = FALSE; // used to return value for DEFINED GET events
object oPC = GetHero();
plot_GlobalPlotHandler(eParms); // any global plot operations, including debug info
if(nType == EVENT_TYPE_SET_PLOT) // actions -> normal flags only
{
int nValue = GetEventInteger(eParms, 2); // On SET call, the value about to be written (on a normal SET that should be '1', and on a 'clear' it should be '0')
int nOldValue = GetEventInteger(eParms, 3); // On SET call, the current flag value (can be either 1 or 0 regardless if it's a set or clear event)
// IMPORTANT: The flag value on a SET event is set only AFTER this script finishes running!
switch(nFlag)
{
case QUEST_COMPLETED:
{
if (nValue == 1)
{
RewardMoney(25,50,1);
}
break;
}
}
}
}
else // EVENT_TYPE_GET_PLOT -> defined conditions only
{
switch(nFlag)
{
}
}
plot_OutputDefinedFlag(eParms, nResult);
return nResult;
}Once that is assigned to your plot, and you update the plot flag, the player will receive the money reward. How to update the plot flag is up to you. It can be done easily in conversations (such as when the player completes a quest for an NPC and speaks to him/her), but can also be done through scripting.
For instance, if you have a quest to kill enemies, you will need to assign a new script to an area resource that checks for the EVENT_TYPE_TEAM_DESTROYED event (triggered when all members of a given team are killed), check what team is dead, and then use WR_SetPlotFlag(); to update your plot. Then, you can check your "enemies dead" flag at the quest giver NPC using a conditional line in the conversation, and update the "quest complete" flag in there. There are tutorials on the DA Builder Wiki that cover how to do this in more detail.
The key thing to note is that plot flags are just variables - they can be either 0 or 1. This means they can be updated in just about any way - when the player kills some enemies, clicks on an object, talks to an NPC, enters an area, etc.
I realise this was pretty basic and might have sounded confusing. Furthermore, the syntax of scripting using C can be complicated. Learning some basic programming will help you immensely in understanding how scripts work, how to write them, etc. But, that said, if you just want to use the basics, tutorials will get you fairly far.





Retour en haut







