News:

Welcome to World of Banished!

Main Menu

Brick Tenements and Rowhouses from the Industrial Revolution

Started by AzemOcram, December 08, 2014, 11:20:59 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

AzemOcram

I managed to fix the point list and compile the mod without any errors but now my mod doesn't seem to show up. There is a little circle in the housing toolbar where I thought my sprite should have showed up. If I click it, the game crashes. I can write the error code if that helps.

--Ocram

RedKetchup

thats the names and links written in your template.
at the toolbar description.


ToolbarDescription toolbar
{
   SpriteSheet _spriteSheet = "UI/NMTownSpriteSheet.rsc"; // thats the name of your .rsc file in the UI folder that contain the name of your icon and which .png it's linked to.
   String _spriteName = "NewMedievalHouse1F";  // thats the name of your icon for that building inside your spritesheet file

   StringTable _stringTable = "UI/NMTownStringTable.rsc"; // thats the name of your stringtable.rsc file in the UI folder that contain these 3 infos
   String _stringName = "NewMedievalHouse1F"; // the name of this building that will appear when you mouse over the icon
   String _stringNameLwr = "NewMedievalHouse1FLwr"; // the name of this building in lower case caracters
   String _toolTip = "NewMedievalHouse1FTip"; // the text your tooltip will say for this building when you mouse over.

   String _statusStrings
   [
      "CreateOk",
      "CreateBlocked",      
   ]

   int _group = 2;
}

> > > Support Mods Creation developments with Donations by Paypal  < < <
Click here to Donate by PayPal .

RedKetchup

the spitesheet.rsc matching this example should have this written inside :

SpriteSheet resource
{
   String _materialName = "UI\NMTownSpriteSheetMaterial.rsc";
   String _imageName = "Build\NMTownSpriteSheet.png";
   int _imageWidth = 512;
   int _imageHeight = 512;
   bool _padForFiltering = true;
   
   Sprite _sprites
   [
      { String _name = "NewMedievalHouse1F";      String _source = "UI/Sprite/NewMedievalHouse1F.png"; } // the name and the .png name of the icon
   ]
}
> > > Support Mods Creation developments with Donations by Paypal  < < <
Click here to Donate by PayPal .

RedKetchup

the stringtable.rsc matching this example should have this written inside :

StringTable resource
{
   Entry _strings
   [

      { String _name = "NewMedievalHouse1F";            String _text = "Medieval 1st Floor Residence"; } // the name and the title we see in game
      { String _name = "NewMedievalHouse1FLwr";         String _text = "medieval 1st floor residence"; } // the same in lower cases
      { String _name = "NewMedievalHouse1FTip";         String _text = "Medieval Houses are set for housing your citizens."; } // the tooltip when mouseover
   ]
}
> > > Support Mods Creation developments with Donations by Paypal  < < <
Click here to Donate by PayPal .

RedKetchup

if you get those line perfect you should get your icon on the toolbar.


then after. as you put them on the ground : it crashes.

can be many cases.
1st : can you post a screenshot of your shematic view 1 in your 3dsmax ?
> > > Support Mods Creation developments with Donations by Paypal  < < <
Click here to Donate by PayPal .

AzemOcram

Well, I got the icon to show:


However, when I clicked on it, this happened:
An access violation has occurred in Runtime-x64-profile.dll.
A crash dump has been saved.

Callstack:
Runtime-x64-profile.dll(0x00000000e193ba23)
Runtime-x64-profile.dll(0x00000000e1939bbd)
ntdll.dll(0x0000000077789f1f)
ntdll.dll(0x0000000077788842)
ntdll.dll(0x00000000777bdb38)
Runtime-x64-profile.dll(0x00000000e19b64f8)
Application-x64-profile.exe(0x000000003f437b03)
Application-x64-profile.exe(0x000000003f439b65)
Application-x64-profile.exe(0x000000003f3d3cd8)
Runtime-x64-profile.dll(0x00000000e1a0da38)
Runtime-x64-profile.dll(0x00000000e1a0c353)
Application-x64-profile.exe(0x000000003f398ba8)
Runtime-x64-profile.dll(0x00000000e1973c9a)
Runtime-x64-profile.dll(0x00000000e1974198)
Runtime-x64-profile.dll(0x00000000e1974098)
Application-x64-profile.exe(0x000000003f311a24)
Application-x64-profile.exe(0x000000003f311021)
Application-x64-profile.exe(0x000000003f47f8cc)
kernel32.dll(0x00000000776659cd)
ntdll.dll(0x000000007779b981)

I almost forgot, here is a picture of my 3Ds Max scene showing hierarchy:


--Ocram

RedKetchup

your schematic seems ok. just to be sure : between your draw (when you made your walls, windows, roof, and applied your texture... ) and between this 'save' that you have presently, did you export to an .OBJ (wavefont) file ? and then save and reset your 3dsmax and then 'import' that .OBJ file (and select load everything and merge in 1 single mesh <= it is a check box when you import an OBJ)) ?

i always do that, it fix alot of 'incompatibilties' between 3dsmax and the game banished.


if you didnt done it , and you want to try it, now.  i suggest you to delete the build01 and build02 and then export. dont export the 3 mesh and merge them back in 1 single.

(if i ask you that it is just to make sure your .FBX is totally compatible with the game. if it is the case, then it is your code in one of your .rsc)
> > > Support Mods Creation developments with Donations by Paypal  < < <
Click here to Donate by PayPal .

RedKetchup

and if you want to pass this check up for now... can you post me your template in [code ] [/ code]
> > > Support Mods Creation developments with Donations by Paypal  < < <
Click here to Donate by PayPal .

AzemOcram

Here is the template file:


// layout of the entity
ComponentDescription resource
{
// how often to update
UpdatePriority _updatePriority = Fourth;

// declare types that will be used
Description _descriptions
[
"ui",

"map",
"zone",
"toolbar",
"createplaced",
"decal",
"model",
"highlight",
"picking",
"interact",
"particle",
"storage",
"work",
"statusicon",
"ambientemitter",
"Common.rsc:fireStoneHouse",

"statemachine",
"cleararea",
"workplace",
"build",
"destroy",
"residence",
]
}

AmbientEmitterDescription ambientemitter
{
bool _addOnCreate = false;
SoundEffect _soundEffects
[
"Audio/Effects/FireEffect.rsc"
"Audio/Effects/CrowdEffect.rsc"
]
}

ClearAreaDescription cleararea { }
StateMachineDescription statemachine { }
ZoneDescription zone { }

DestroyDescription destroy
{
int _damagedSkin = 1;
int _damagedDecal = 1;
}

StatusIconDescription statusicon
{
SpriteSheet _spriteSheet = "StatusIcons\BuildingIconSpriteSheet.rsc";
bool _fixedSize = true;
float _size = 0.04;
float _zoffset = 1.33;
}

ToolbarDescription toolbar
{
SpriteSheet _spriteSheet = "UI/NarrowHouseSpriteSheet.rsc";
String _spriteName = "BuildNarrowHouse";

StringTable _stringTable = "UI/NarrowHouseStringTable.rsc";
String _stringName = "NarrowHouse";
String _stringNameLwr = "NarrowHouseLwr";
String _toolTip = "NarrowHouseTip";

String _statusStrings
[
"CreateOk",
"CreateBlocked",
]

int _group = 2;
}

CreatePlacedDescription createplaced
{
PathBits _placeBits = Normal | Obstacle;

int _width = 2;
int _height = 5;
int _footprintRotation = 0;

PathBits _placeBitArray
[
Normal | Obstacle,
Normal | Obstacle | Fast | Faster,
]
String _placeBitmap =
"00
00
00
00
11";

ComponentDescription _allowAndRemove = "Template/Clear.rsc";
}

MapDescription map
{
PathType _pathType = Immovable;
String _pathBitmap =
"##
##
##
#_
..";

bool _addToOverhead = true;
Color _mapColor = 0xFF545454;
}

DecalDescription decal
{
MaterialInstance _materials
[
"Terrain/TiledDecals/BuildingFootprint8Material.rsc"
"Terrain/TiledDecals/BuildingFootprint8DamageMaterial.rsc"
]
bool _tiled = false;
float _initialAlpha = 0.5;
float _mapWidth = 2048.0;

DecalLocation _decalLocations
[
{
float _x0 = 0.0;
float _y0 = 0.0;
float _x1 = 256.0;
float _y1 = 320.0;
}
{
float _x0 = 256.0;
float _y0 = 0.0;
float _x1 = 512.0;
float _y1 = 320.0;
}
{
float _x0 = 512.0;
float _y0 = 0.0;
float _x1 = 768.0;
float _y1 = 320.0;
}
{
float _x0 = 768.0;
float _y0 = 0.0;
float _x1 = 1024.0;
float _y1 = 320.0;
}
{
float _x0 = 0.0;
float _y0 = 320.0;
float _x1 = 256.0;
float _y1 = 640.0;
}
{
float _x0 = 256.0;
float _y0 = 320.0;
float _x1 = 512.0;
float _y1 = 640.0;
}
]
}

PickingDescription picking
{
MaterialInstance _selectMaterial = "Material/SelectionMask/SelectionMask.rsc";
PickingGroup _meshes
[
{
PickingMesh _mesh
[
"Models\NarrowHouseBuild01Picking.rsc",
"Models\NarrowHouseBuild02Picking.rsc",
"Models\NarrowHousePicking.rsc"
]
}
//
//PickingMesh _mesh
//[
// "Models\Buildings\NarrowHouse\NarrowHouse2Build01Picking.rsc",
// "Models\Buildings\NarrowHouse\NarrowHouse2Build02Picking.rsc",
// "Models\Buildings\NarrowHouse\NarrowHouse2Picking.rsc"
//]
//
]
}

ModelDescription model
{
MeshGroup _meshes
[
{
GraphicsMesh _mesh
[
"Models\NarrowHouseBuild01Mesh.rsc",
"Models\NarrowHouseBuild02Mesh.rsc",
"Models\NarrowHouseMesh.rsc"
]
}
]

int _displayIndex = 0;
int _subIndex = 0;
bool _randomIndex = false;
}

HighlightDescription highlight
{
EdgeGroup _meshes
[
{
EdgeMesh _mesh
[
"Models\NarrowHouseBuild01Mesh.rsc:edge"
"Models\NarrowHouseBuild02Mesh.rsc:edge"
"Models\NarrowHouseMesh.rsc:edge"
]
}
]

// materials for drawing selection with no mesh
MaterialInstance _maskMaterial = "Material/SelectionMask/SelectionMask.rsc";
MaterialInstance _edgeMaterial = "Material/SelectionEdge/SelectionEdge.rsc";
}


InteractDescription interact
{
PointList _pointList = "Models\NarrowHousePoints.rsc";
}

ParticleDescription particle
{
ParticleAttachment _systems
[
{
Time _fadeInOutTime = 2.0;
bool _addOnCreate = false;
bool _addOnNotify = false;
Particle _particle = "ParticleSystems\Fire\FireSmall.rsc";
}
{
bool _addOnCreate = false;
Particle _particle = "ParticleSystems\ChimneySmoke\ChimneySmoke.rsc";
String _attachNode = "smoke";
}
]
}

StorageDescription storage
{
RawMaterialFlags _storageFlags = Edible | Fuel;
bool _areaBasedLimit = false;
bool _available = false;
int _volumeLimit = 1000;
}

WorkDescription work
{
int _defaultWorkers = 3;
}

WorkPlaceDescription workplace
{
// no actual work done here once the building is built
//Profession _profession = null;
//Profession _pickupProfession = null;
}

BuildDescription build
{
int _workRequired = 20;

BuildRequirement _buildRequirement
[
{
ComponentDescription _rawMaterial = "Template/RawMaterialWood.rsc";
int _count = 4;
}
{
ComponentDescription _rawMaterial = "Template/RawMaterialStone.rsc";
int _count = 10;
}
]
}

ResidenceDescription residence
{
int _maxApartments = 1;
int _maxOccupants = 4;
float _temperatureForFuel = 50.0;
float _fuelPerResource = 80.0;
}

UIDescription ui
{
int _displayPage = 1; // set to 1 for tab layout
Dialog _dialog = "Dialog/StandardDialog.rsc:entity";

ElementController _controllers
[
{
ObjectType _type = ResidenceUI;
ElementDescription _element = "Dialog/Residence.rsc:residence";
String _insertAt = "pageTab";
ElementDescription _tabButton = "Dialog/Residence.rsc:buttonTabResidence";
}
//
// ObjectType _type = UpgradeUI;
// ElementDescription _element = "Dialog/Upgrade.rsc:upgradeButton";
// String _insertAt = "pageTabGroup";
// DialogControllerConfig _config = "upgradeConfig";
//
{
ObjectType _type = StorageUI;
ElementDescription _element = "Dialog/Storage.rsc:storageShort";
String _insertAt = "pageTab";
ElementDescription _tabButton = "Dialog/Storage.rsc:buttonTabStorage";
}
{
ObjectType _type = BuildUI;
ElementDescription _element = "Dialog/Build.rsc:build";
String _insertAt = "pageBuild";
}
{
ObjectType _type = DestroyUI;
ElementDescription _element = "Dialog/Destroy.rsc:destroy";
String _insertAt = "pageDestroy";
}
{
ObjectType _type = WorkPlaceUI;
ElementDescription _element = "Dialog/Work.rsc:workPlace";
String _insertAt = "userTitle0";
}
{
ObjectType _type = StatusIconUI;
ElementDescription _element = "Dialog/Building.rsc:icons";
String _insertAt = "userTitle1";
}
]
}

//UpgradeUIConfig upgradeConfig
//
// ComponentDescription _upgradeTo = "Template/RowHouse.rsc";
//


I hope I commented out currently unused code correctly. There are also parts of the template in which I do not know how they work or what they do so I left them alone.

--Ocram

RedKetchup

ok first :

here at
   DecalLocation _decalLocations
   [
      {
         float _x0 = 0.0;
         float _y0 = 0.0;
         float _x1 = 256.0;
         float _y1 = 320.0;   
      }

......


you have 6 decal for 6 models. if you have only 1 model, delete all the others :)
or put all the others lines with //


everything else seems fine
> > > Support Mods Creation developments with Donations by Paypal  < < <
Click here to Donate by PayPal .

AzemOcram

Thank you @RedKetchup for helping. After redoing a lot of files, I found out that the biggest problem was the .FBX file. ShockPuppet fixed it for me. He said the following in chat.
"had to rename the standard, you called it ModestRowhousetexture, it needed just ModestRowhouse. Also, the dummies inside the fbx were named but not existing in 3d space, no idea why, i rebuilt them. Also, the model himself was thousands of times too big, i think maybe you use meters? Banished uses inches as default"
After those fixes, I got the game to run and build my rowhouses. Proof: http://imgur.com/a/LO7Gl


Now that I have that working, I can finish my mod within one week after I graduate from my community college (which will be in a little over a week).

Thanks again to RedKetchup, Kraylerg, and ShockPuppet!

--Ocram

RedKetchup

Quote from: AzemOcram on June 02, 2015, 09:28:11 PM
had to rename the standard, you called it ModestRowhousetexture, it needed just ModestRowhouse

i didnt called anything. just said the standart need to be the same name as your texture ^^. maybe some misunderstanding .. .somewhere :)

thats what i thought about the size :)  i was totally sure it was 100x too big :) this is exactly why i told you to go check in game ;)

i am extremly happy you resolved all your problems. next issus i was about to ask you to mail me your code/files so i fix it. you know, by internet like that, without seeing any file... it is a bit hard to put finger on all the problems :P

personally i use meter ? inch ? i dont know ^^ i used it as it comes when i install it hehe. all i know a box of 1,0 x 1,0 x 1,0 = 1 tile in game. so if i do a building 4x6 tiles, i do my walls 4,0 per 6,0 in 3dsmax.
> > > Support Mods Creation developments with Donations by Paypal  < < <
Click here to Donate by PayPal .

chillzz

looking at the model compared to the wooden house i guess it needs to grow at least 1.5 to 2 times.


yours is a full 2 story building with roof, while the wooden house is 1 story.
wooden house door top is about the bottom of your 2nd story windows.
support New Medieval Town development!
click here to donate via PayPal to RedKetchup

AzemOcram

Seeing how bad I made the scale of the height, I will make 2 types of alterations. One will make it a proper 2 story house, and one will make it a short 1.5 story house (with a capacity for a family of 3). I will also change the textures, including a window texture for the front and sides.

--Ocram

RedKetchup

take your time :)

took me 2 months minimum to make something that worth something :)
> > > Support Mods Creation developments with Donations by Paypal  < < <
Click here to Donate by PayPal .