Files
swg-main-wiki/How-To-Add-New-Housing.md
2019-10-02 22:23:09 +01:00

258 lines
20 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
![](https://i.imgur.com/11dMYWi.jpg)
![](https://i.imgur.com/WWLWN9A.jpg)
![](https://i.imgur.com/7TxwJ5b.jpg)
![](https://i.imgur.com/lQ9Yrfj.jpg)
![](https://i.imgur.com/b53DhLq.jpg)
![](https://i.imgur.com/yYoocIX.jpg)
![](https://i.imgur.com/lU9T2NT.jpg)
![](https://i.imgur.com/fNQE29A.jpg)
===============================================================
Original discussion thread text for search result purposes:
SWGSOURCE
FORUMS
MARK FORUMS READ
SEARCH FORUMS
SUBSCRIBED FORUMS
SUBSCRIBED THREADS
NEW THREADS
SHOWCASESWG FILESMEMBERSCHAT1 / 5
/
Forums
SWG NGE Source Server Development
FAQ & Guides
How To: Add New Housing (i.e. TCG Houses NOT in game)
Discussion in 'FAQ & Guides' started by Cekis, May 26, 2017.
Subscribe to Thread
Cekis
Cekis
Well-Known Member
Joined:Sep 3, 2016
Messages:93
Likes Received:32
#1Cekis, May 26, 2017 Last edited: May 27, 2017
THIS IS NOT A COMPLETE GUIDE... lots needs to be done to ensure it's possible. However, this should get you started and get you MOST of the way there.
While chatting today I decided to see if the missing houses could be added easily. Well, I wouldn't call it easy, but I would call it detailed and potentially problematic. I don't have the patience or the time right now to see this through, but if you want to take a stab at it, this is what I found out when trying to add Yoda's Hut to the game.
First, we need to somehow recreate the missing files from their compiled versions that live in the client TRE files.
Since they're not in the codebase, you will need to pull them from the Client side files stored in the TRE files. Some research using Sytner's IFF Editor (SIE) shows that the Yoda Hut is found in patch_55_shared_00.tre. In that patch file, you'll see we need to add several new files to the codebase.
But how do you find them? One rule I've learned is, "always start with object/tangible"... we know it's a player structure, and we know it's a TCG item... so let's start in the TCG folder structure in object/tangible, specifically our series folder (which remember from above is "series8").
Boom... there is a file in that folder called, "shared_deco_yoda_house.iff"... we know from experience that we should have a corresponding file in our sys.server folder structure so let's go create that first.
Create a new file in
dsrc/sku.0/sys.server/compiled/game/object/tangible/tcg/series8/deco_yoda_house.tpf
.
Using existing housing in game (i.e. the Diner, Relaxation Pool, etc) we can use these as starting points to mirror from. Let's choose the Diner for our example.
Copy the contents from the Diner's version of this file (found in the series1 folder) which is "shared_structure_deed_diner.tpf" into the new yoda version you just created.
Next, let's make sure our structure mirrors that of the Diner's files.
Open
dsrc/sku.0/sys.server/compiled/game/object/tangible/tcg/series1/structure_deed_diner.tpf
You'll first need to create a NEW file for Yoda's house... let's make sure we put it in a new folder for the Series 8 TCG stuff at the same level as the other series folders... call it "series8".
Just copy/paste the contents from the diner's file in that new file you created in the new series8 folder. Name it structure_deed_yoda_house.tpf
In the Diner's file you'll see a reference to a "sharedTemplate"... this is the template that exists in the sys.shared structure and as it is also "SHARED" with the client template. (things that exist in both server and client are considered "shared" and link to both in one way or another).
In your new file, first change the sharedTemplate to match: sharedTemplate = "object/tangible/tcg/series8/shared_structure_deed_yoda_house.iff"
Now go to the sys.shared structure:
dsrc/sku.0/sys.shared/compiled/game/object/tangible/tcg/
Add a NEW folder in that directory called "series8".
Add a NEW file in that directory called shared_structure_deed_yoda_house.iff
Copy the contents from the diner's version of that file (again, still in the sys.shared side of things), "series1/shared_structure_deed_diner.iff" into the contents of the yoda file from the previous step.
This file has 2 settings we need to change. The first setting is the "objectName"... This is the name of the object as derived from the client string files (that also exist in the TRE's)... looking at the TRE's we can derive what this value SHOULD be (more covered on this later): item_tcg_loot_reward_series8_yoda_house_deed
The second setting, "detailedDescription" is also a reference to the client side string files. It should be changed to item_tcg_loot_reward_series8_yoda_house_deed
The third setting is a reference to the appearance file... this is what the deed will look like in game. You can use SIE to determine what appearance you want it to use, but for now, let's stick with the default deed look. We're now done with this part of the effort.
Ok, now that we have the beginning structure in place I would say that we can be done, but theres more to adding a structure to the game than that.
The game needs reference points. It needs references to the deed (which weve given it already), but it also needs references to the house that the deed generates. Therefore, we need to connect the deed to a physical house… and construction of that house (the red box and terminal that shows up when you generate a house from a deed)… and entry to the house… and rooms heights, elevators, signs and terminal locations… etc.
First things first… lets make sure the deed correctly shows the construction markers when generated. Well need to copy what the Diner does to do this:
Lets first open the player_structure.tab and make sure the game knows how to build the house. Open
dsrc/sku.0/sys.server/compiled/game/datatables/structure/player_structure.tab
Add a new line, copying from what is listed for the diner, and change the following values:
Change the first value to
object/building/player/player_house_tcg_8_yoda_house.iff
. This is the structure template file.
Change the next value to
object/building/player/construction/construction_player_house_tcg_8_yoda_house.iff
This is the construction template file.
Change the “Lot_Reduction” value to “2” this should be how many lots are deducted when placed.
Change the “Eject_Range” value to 32.
Change the “Maint_Rate” to 13. This is how much the building costs in maintenance.
Adjust the other values as you see fit.
On the next line, the terminal is defined. Play with the values and make sure its in the right cell (should probably be “entry”) in order to spawn it correctly as it likely doesnt spawn correctly when using the diners values. Come back to this once you can place the building. Once the building is placed, you'll be able to first see what room/cell the terminal SHOULD be in (by using Ctrl-Shift-G when in game) and then you can figure out where you'd like to place it (i.e. by figuring out coordinates when in game).
If you plan to hang signs, youll need to add values in the “player_structure_sign.tab” file in the same folder. Ill leave this for experimentation, but remember sign placement is also done by the code as well depending on what building it's being placed on. The exact script that controls this escapes me at the moment - do a file search for the template name of the sign you wish to hang and you'll likely find it.
Open the Diners construction file located here:
dsrc/sku.0/sys.server/compiled/game/object/building/player/construction/construction_player_diner.tpf
Create a new file for Yodas Hut in the SAME folder… name it construction_player_tcg_8_yoda_house.tpf
Copy the contents of the diners construction file into the new Yoda construction file you just created.
Youll need to change 1 property setting in this file called, “sharedTemplate” Make sure its set to
object/building/player/construction/shared_construction_player_tcg_8_yoda_house.iff
Now, go to that location and create a new file there with the same name as that setting. Youll find it in
dsrc/sku.0/sys.shared/compiled/game/object/building/player/construction
Again, copy the contents from the diners version of this file into the new file you just created in the previous step.
In this file youll notice a few things… first, it has a reference to a “footprint” file called “structureFootprintFileName”. This is the reference to the actual footprint (the space the building takes up on the ground when under construction the red box) for the building.
Youll see a few other properties in this file, but you dont need to change any of them as they all pertain to ONLY the construction phase and are temporary.
We need to figure out what our name SHOULD be for our footprint… so… back to the patch_56 TRE file.
The patch_56 TRE file shows a file in that folder called
footprint/building/player/shared_player_house_tcg_yoda_house.sfp
so make sure “structureFootprintFileName” is set to this value.
Lets go create that file in our sys.shared folder structure.
Create a new file in
dsrc/sku.0/sys.shared/compiled/game/footprint/building/player
called, shared_player_house_tcg_yoda_house.mif (notice the new “MIF” extension? Good!).
This file is essentially the “template” for the client side version of the file… it specifies what the fields are and what values should be stuffed into those fields.
Copy the contents of the Diners version into this file and lets get to work!
First, all values will need to be modified here. Lets open SIE again and look at the footprint file,
footprint/building/player/shared_player_city_diner.spf
to get an understanding of the values and how they work.
Make sure you actually have the patch files AND the TOC versions of them in the same folder or else you wont actually be able to view them in SIE.
Looking at the diner file in SIE we see the structure has a FOOT element, a 0000 element, a INFO element and a PRNT element. Wow, so does our footprint file in our codebase! You guessed it, they line up nicely with the hex values in the footprint compiled file.
Yodas footprint file shows the following values:
Width is 5.
Height is 5.
Pivot X is 2.
Pivot Y is 2.
Since the float values are 8.0 in the diners file and the float hex is the same between diner and yodas house, Im making an assumption they should not be changed from 8.0 (but dont expect me to figure out why right now).
Make sure the “PRNT” element is structured the same way as it shows in the SPF file… basically, you should have 5 cstring values each set to “HFFFFFH”.
Next, we need to also make sure the Construction Restriction file is set appropriately (this was learned when I was modifying the “item_stats.tab” file)
Create a file in the
dsrc/sku.0/sys.server/compiled/game/building/player/city
folder called yoda_house_no_planet_restriction.tpf and copy the Diners file version contents into it (diners file version is “diner_no_planet_restriction.tpf”).
Change the “sharedTemplate” to be “object/building/player "/city/shared_yoda_house_no_planet_restriction.iff”
Go create that file in
dsrc/sku.0/sys.shared/compiled/game/object/building/player/city
Copy the diners shared version into that new file.
Next, we need to change the “hooks” into the client files to now point to the correct things.
Change “structureFootprintFileName” to equal “footprint/building/player/shared_player_city_yoda_house.sfp” (note, this file may not actually exist in the client files)
Change “portalLayoutFilename” to equal "appearance/poi_all_yoda_house.pob” (per looking in patch_56s appearance folder and seeing what other files live there)
Change “objectName” to equal “building_name” and “player_house_tcg_8_yoda_house_n” (this is a string value tied into the client string file: “string/en/building_name.stf”)
Change “detailedDescription” to equal “building_detail” and “player_house_tcg_8_yoda_house_d” (this is a string value tied into the client string file: “string/en/building_detail.stf”)
Change “lookAtText” to equal “building_name” and “player_house_tcg_8_yoda_house_d”
Change “clientDataFile” to equal “clientdata/building/shared_player_house_tatooine_small_style_01.cdf”. Heres where things get a bit dicey… basically, there is no clientdatafile for the Yoda house (I couldnt find one anyway), so were going to use another file in place of it and HOPE that it works.
Were now done with the Construction Phase file mods.
On to the BUILDING itself…
This is where I went, “Hmm… ok, this is stuff I dont want to necessarily dive into”. But… let me get you started down the path.
The most difficult thing is knowing how to create a final structure in game. Each structure has a set entry, set cells, some have elevators, etc. Cell heights come in to play as well (think of the Naboo structures and how high their ceilings are. So, heres what I found:
First, create an entry for the building in the master_item.tab file. Copy what the diner has and adjust accordingly:
First cell should be the name that you use to generate the deed: item_tcg_loot_reward_series8_yoda_house
Next cell should be the name of the template that is generated:
object/tangible/tcg/series8/deco_yoda_house.iff
Change the text, “Structure Deed: Diner” to “Structure Deed: Yoda House”
Change the description (the stuff in quotes) to whatever you want.
Next, create an entry in the item_stats.tab file. Again, copy what the diner has and adjust accordingly:
First cell should be the name that you use to generate the deed: “item_tcg_loot_reward_series8_yoda_house”
Next cell should be the construction restriction file:
Code:Select All
"string/player_structure.deed.template=object/building/player/city/yoda_house_no_planet_restriction.iff,int:player_structure.deed.buildtime=90"
Youll need to modify the cell heights if they dont line up properly (or the house doesnt spawn). Modify
dsrc/sku.0/sys.server/compiled/game/datatables/structure/cell_height.tab
and add a line for the floor height and the ceiling height. Since its a small structure, my guess is you can use what is set for a generic single story Tatooine house (roughly 4.6 max, 0.75 min).
Next, modify the ejection point table,
dsrc/sku.0/sys.server/compiled/game/datatables/pob/pob_ejection_point.tab
and add a line for the Yoda House that tells the game where to put people when theyve been ejected from the house (i.e. a house that has been suddenly marked private). Copy what is there for the diner and adjust the filenames appropriately (you may need to play with the values to get it to work right).
That should get the building to spawn in game… youll need to give it the regular spawn commands to spawn it… remember you need to recompile all of the TPFs, MIFs, etc to make things work properly. You can find this info out in the SB guides posted earlier…
Happy Adding!
REPORT BOOKMARKLIKE + QUOTE REPLY
Erusman and IrishDarkshadow like this.
Erusman
Erusman
Well-Known Member
Joined:May 9, 2016
Messages:673
Likes Received:298
#2Erusman, May 26, 2017 Last edited: May 26, 2017
Awesome job with making this guide. Yeah a lot of the later TCG items were added via patch updates from SOE as you noted. I have some later client and shared patches 58, 59, etc. I have to look but I have a complete client from Dec 2011 when they shut the servers down. Its basically the same if you download projectswg client. They have everything from final.
One thing I noticed with SB latest client (its the same as v2.1 of NGE one I posted for everyone); I noticed
you guys added after patch_55 a patch_70? Is this a custom consolidated .tre you guys put together?
I haven't had a chance to look to see its contents.
Plus, it is possible if we fix or modify the dsrc server-side. You can compress those server files to .sot and load entire client from them.
This was first introduced in the win32 build and v1.6 NGE client I uploaded. Darth later implemented those changes that I introduced and had the SB server run from 6 .sot files.
Essentially this cuts down on patches and ensures the greatest compatibility. Client would load from 6 .sot files. And actually loads faster. Something to think about. One theory I had was to go in and modify the compression technique to just one huge 4gb .sot file. Your entire server and client would run from just that one file.
Your NGE client folder would basically have just a dozen files in it. (1 .sot; 5 .cfg; 4 .dll; 2 .exe)
REPORT BOOKMARKLIKE + QUOTE REPLY
Cekis
Cekis
Well-Known Member
Joined:Sep 3, 2016
Messages:93
Likes Received:32
#3Cekis, May 27, 2017
Patch 70 was a patch I created, but it was never updated properly so it's out of date (I still have the latest). It basically takes things from patch_56 and adds them to the game... we fixed a lot of issues this way (but I'm drawing a blank on what exactly). It allowed me to pick and choose without trumping other things found in patch_56 that did not need updating.
I won't be making SOT's... I don't believe in them. :p Reasons why is because of what you just stated... you have to re-download the entire thing with each update (each updated SOT) which would be a MUCH LARGER download than the individual patch files... we're still too fluid on that in order to make a single large package. So, I dig the patch files that SOE originally came up with FOR NOW. I know others feel otherwise, but I'm just not a fan of that method YET.
REPORT BOOKMARKLIKE + QUOTE REPLY
Erusman
Erusman
Well-Known Member
Joined:May 9, 2016
Messages:673
Likes Received:298
#4Erusman, May 27, 2017
Cekis said: ↑
Patch 70 was a patch I created, but it was never updated properly so it's out of date (I still have the latest). It basically takes things from patch_56 and adds them to the game... we fixed a lot of issues this way (but I'm drawing a blank on what exactly). It allowed me to pick and choose without trumping other things found in patch_56 that did not need updating.
I won't be making SOT's... I don't believe in them. :p Reasons why is because of what you just stated... you have to re-download the entire thing with each update (each updated SOT) which would be a MUCH LARGER download than the individual patch files... we're still too fluid on that in order to make a single large package. So, I dig the patch files that SOE originally came up with FOR NOW. I know others feel otherwise, but I'm just not a fan of that method YET.
Yeah I went in with tre explorer to see what you done on the patch 70 late last night. Soon as we get a src to work from we can start adding a lot of the content from the other patches. A good reference is projectswg for last tre's used up to Dec 15th 2011. They are actually using Client 0.0.223.189 which was the last before closure. I would like to see that as a goal for the vanilla server.
Yep, the SOT is more geared toward server admins and ability to use one single file for updates rather then hundreds of thousands. There are some speed improvements for load times on server and client. Its something for us to think about later. OR those who wish to use the technique on their own personal server. I would recommend keeping it as an option in our future source projects for those who wish to use it. However, sticking with SOE original technique for anything we do live.
REPORT BOOKMARKLIKE + QUOTE REPLY
Seefoe
Seefoe
Member
Joined:Nov 21, 2017
Messages:7
Likes Received:0
#5Seefoe, Nov 24, 2017
Erusman said: ↑
They are actually using Client 0.0.223.189 which was the last before closure. I would like to see that as a goal for the vanilla server.
There are some packet changes between the client from the source and final release client, we'd have to figure out which packets changed in order to use it. In my honest opinion, I don't think using the final release client is a good idea since we don't have the source to it.
REPORT BOOKMARKLIKE + QUOTE REPLY
Write your reply...
Write your reply...
Users Who Are Viewing This Thread (Users: 1, Guests: 0)
Users Who Have Read This Thread (Total: 0)
Share This Page
ABOUT US
Community for sharing and guides on how to get a SWG Server up and running. Our goal is to allow people to share information freely and publicly and to preserve that information.
QUICK JUMP
Home
About
Forums
Downloads
USEFUL LINKS
Alpha
Delta
Omega
REGULATIONS
Forum software by XenForo™ ©2010-2017 XenForo Ltd.
SWGSource
Home
Help
Terms and Rules
===============================================================