Jump to content

Home

[WIP] Real Mandalorians


Commas

Recommended Posts

it looks like its coming along really good, and thats good news about the cheeks, that will help keep polys down. i can't wait to start playing around with it. one thing i've been wondering, i've noticed that, unlike armor, helmets and masks don't have a "Texture variation" option when editing the uti. How would i go about applying the different textures to the helmets? The only thing that i can think of is that the texture is refrenced in the model, which means i'd have to have a seprerate mdl for each different texture. is this right?

Link to comment
Share on other sites

  • Replies 118
  • Created
  • Last Reply

Well, I'm going to have to send you a model for each skin. I believe in all, there will be 3 skins, and 5 model variations. (Standard blue, standard red, standard yellow, Kelborn, Mandalore.) Unless you planned on keeping it simpler. I'll have to send you an MDL and MDX for each variation you plan to make. 5 variations = 10 files.

Link to comment
Share on other sites

Not a problem, since I have the model in Gmax, I don't even have to hex edit. I can rename the texture, rename the base, then re-export for each model. Once I finish the first, the rest could be done within minutes. Of course, I'm going to have to apply a texture with a specific name, which I'll give you when the model is ready so you can make your own. :)

Link to comment
Share on other sites

I wrote this script for this mod, and if anyone has the time to double check it for me, I'd appreciate it.

 

[size=1]
void main()
{
//When the mod is finished, you should have a number of these scripts equal
//to the number of modules in the game with Mandalorians.

//You can continue this as much as you want, depending on how many 
//Mandalorians with different templates there are.  You'll have to find out
//The different templates by checking their UTC files.
object blue = standard_mand_template;
object scout = kelborn_template;	
object red = red_mand_template;
object yellow = yellow_mand_template;
object cand = n_mandalore_template();

//Put the different helmets in the Mandalorians' inventory.	
CreateItemOnObject("helmet1", blue,1);
CreateItemOnObject("helmet2", scout,1);
CreateItemOnObject("helmet3", red,1);
CreateItemOnObject("helmet4", yellow,1);
CreateItemOnObject("helmet5", cand,1);

//I don't know the inventory slot number, perhaps ask tk102 or stoffe, then
//fill it in.  This equips the item.
AssignCommand(blue, ActionEquipItem(helmet1, nInventorySlot);
AssignCommand(scout, ActionEquipItem(helmet2, nInventorySlot);
AssignCommand(red, ActionEquipItem(helmet3, nInventorySlot);
AssignCommand(yellow, ActionEquipItem(helmet4, nInventorySlot);
AssignCommand(cand, ActionEquipItem(helmet5, nInventorySlot);

//To use this script, you'll have to find out the name of each module's on enter
//script, name this file to match the on enter script, and rename the original on
//enter script to something else.  You'll have to include each renamed on enter
//script with the mod.  When yuo rename the original on enter script, put the new
//name of that script in the quotes below.
ExecuteScript("old_on_enter_script", OBJECT_SELF);

}
[/size]

 

It's meant to be a replacement On Enter script. What it should do:

 

Create item "helmet1" on object blue, which will be replaced by the standard mandalorian tag, and equip the helmet in the head slot.

 

Create item "helmet2" on object scout, which will be replaced by Kelborn's tag, and equip the helmet in the head slot.

 

Create item "helmet3" on object red, which will be replaced by the red mandalorian tag, and equip the helmet in the head slot.

 

Create item "helmet4" on object yellow, which will be replaced by the yellow mandalorian tag, and equip the helmet in the head slot.

 

Create item "helmet5" on object cand, which will be replaced by the non-party Mandalore tag, and equip the helmet in the head slot.

 

Using the same process to add more tags if necessary. (Like Bralor or Davrel.)

 

Naturally, if a character with said tag does not exist in the module, nothing happens.

 

After that, it should execute the original On Enter script of whatever module the script is set to run in.

 

 

 

So, how'd I do?

 

 

 

 

Additionally, I have a question. If I did this:

 

void main()
{
object blue = npc_template1;
object blue = npc_template2;

CreateItemOnObject("helmet1", blue,1);
}

 

Would the script create the item on both "npc_template1" AND "npc_template2"?

Link to comment
Share on other sites

First of all thanks a lot for helping me with a script Mono, scripting is my biggest weak spot :D. While looking thru KotorTool trying to find all the correct names to insert into the scripts i noticed something: a lot of the mandalorians have their own utc files, for example, every mandalorian in the camp with a name, like xarga and bralor, all have thier own utc files, so you'd have to script a line for each one, so i was trying to think of a way to simplify it so there wasn't so much scripting involved. i was wondering if there a way you can reference a line in appearance.2da in a script? then instead of having to find the tag for every mandalorian in the game you could maybe do:

 

If Row in appearance.2da is Row 35 Alien_Mandalorian_01 Create helmet1,

If Row in appearance.2da is Row 351 Alien_Mandalorian_02 Create helmet2,

If Row in appearance.2da is Row 352 Alien_Mandalorian_03 Create helmet3

UNLESS Character's Tag is "npc_kelborn",

if character's tag is "npc_kelborn" then create helmet4.

 

As you can see i have no idea how to transulate that idea into scripting langauge, but if that were possible, it would make the scripts alot simpler. otherwise i doubt it would be a problem to do it character by character ;)

Link to comment
Share on other sites

Originally posted by Commas

i was wondering if there a way you can reference a line in appearance.2da in a script? then instead of having to find the tag for every mandalorian in the game you could maybe do:

 

If Row in appearance.2da is Row 35 Alien_Mandalorian_01 Create helmet1,

If Row in appearance.2da is Row 351 Alien_Mandalorian_02 Create helmet2,

If Row in appearance.2da is Row 352 Alien_Mandalorian_03 Create helmet3

UNLESS Character's Tag is "npc_kelborn",

if character's tag is "npc_kelborn" then create helmet4.

 

As you can see i have no idea how to transulate that idea into scripting langauge, but if that were possible, it would make the scripts alot simpler. otherwise i doubt it would be a problem to do it character by character ;)

 

It's possible to check what appearance a creature has in a script like you described.

 

The below example is a modified version of the generic AI heartbeat script (k_def_heartbt01.nss), which should affect all Mandalorians everywhere rather than having to hack the area scripts for all places they appear in, when compiled and put in Override.

 

It needs to be modified to use the correct Tags and ResRefs for the helmets where it says so, but otherwise I think it should work as described.

 


void ST_FixMandalorianHelmet();

void main() {
   // ST: Check if it's a Mandalorian appearance type creature running this.
   if ((GetAppearanceType(OBJECT_SELF) == 35)  
       || (GetAppearanceType(OBJECT_SELF) == 351)
       || (GetAppearanceType(OBJECT_SELF) == 352))
   {
       ST_FixMandalorianHelmet();
   }

   // ST: Do the standard AI heartbeat...
   ExecuteScript("k_ai_master", OBJECT_SELF, 1001);
}

void ST_FixMandalorianHelmet() {
   int    nType   = GetAppearanceType(OBJECT_SELF);
   object oHelm   = GetItemInSlot(INVENTORY_SLOT_HEAD);
   string sTag    = GetTag(oHelm);
   string sResRef = "";

   // ST: It's a blue-armored Mandalorian
   if ((nType == 35) && (!GetIsObjectValid(oHelm) || (sTag != "BlueHelmTag")))  {
       sResRef = "BlueHelmetResref";
   }
   // ST: It's Kelborn...
   else if ((GetTag(OBJECT_SELF) == "npc_kelborn") && (!GetIsObjectValid(oHelm) || (sTag != "KelbornHelmTag"))) {
       sResRef = "KelbornHelmetResref";
   }   
   // ST: It's a non-Kelborn red-armored Mandalorian   
   else if ((nType == 351) && (!GetIsObjectValid(oHelm) || (sTag != "RedHelmTag")))  {
       sResRef = "RedHelmetResref";
   }       
   // ST: It's a yellow-armored Mandalorian
   else if ((nType == 352) && (!GetIsObjectValid(oHelm) || (sTag != "YellowHelmTag")))  {
       sResRef = "YellowHelmetResref";
   }       

   // ST: Proper helmet not equipped, spawn and equip one.
   if (sResRef != "") {
       oHelm = CreateItemOnObject(sResRef, OBJECT_SELF, 1, TRUE);
       ActionEquipItem(oHelm, INVENTORY_SLOT_HEAD, TRUE);

   }
}

Link to comment
Share on other sites

wow, thanks stoffe! this looks awesome! i'll be sure to put it to good use!

 

One question, for mandalore if i use this:

//For Mandalore
   else if ((nType == 462) && (!GetIsObjectValid(oHelm) || (sTag != "MandaloreHelmTag))) {
sResRef = "MandaloreHelmetResref";

will that equip both the NPC Mandalore with a Helmet, and the mandalore joins your party? or will i still need to modify the script that makes mandalore join the party for him to continue to wear a helmet after he joins?

 

also, does anyone know the how to find the numerical code for the "equipslotslocked" column in appearance.2da The only ones present in the 2da are "2" to lock the armor slot and "1979" to lock ALL the slots, i need to be able to lock mandalore's armor, helmet and one wrist slot.

 

edit: that last part about slot locking isn't really important tho, it would just mean that you could take off mandalore's helmet and reveal who he really is at anytime in the game, or remove his wrist launcher. you wouldn't be able to equip the items on anyone else as they will be restricted to mandalore.

Link to comment
Share on other sites

Originally posted by Commas

One question, for mandalore if i use this:

(snip)

else if ((nType == 462) && (!GetIsObjectValid(oHelm) || (sTag != "MandaloreHelmTag))) {

sResRef = "MandaloreHelmetResref";[/code]

will that equip both the NPC Mandalore with a Helmet, and the mandalore joins your party?

 

It should only affect the non-partymember mandalore since party members have their own set of AI scripts, and does not use the default set which is what I modified above.

 

Originally posted by Commas

also, does anyone know the how to find the numerical code for the "equipslotslocked" column in appearance.2da

 

Try 259, I believe that should lock the armor slot, the helmet slot and the right forearm slot.

 

As far as I can see the equipslotslocked column contains a bitfield value with OR-ed together values representing all slots that should be locked. The numbers for the different slots seem to be:

 

0x0001 - Head (1)

0x0002 - Body (2)

0x0004 - Unknown (4)

0x0008 - Hands (8)

0x0010 - Right Weapon (16)

0x0020 - Left Weapon (32)

0x0040 - Unknown (64)

0x0080 - Left forearm (128)

0x0100 - Right forearm (256)

0x0200 - Implant (512)

0x0400 - Belt (1024)

 

Add together the decimal values (those within the paratheses above) for each slot you want to lock and put the resulting sum in the equipslotslocked column.

 

 

EDIT: If you use the above posted script, don't forget to modify it to use the real ResRefs and Tags you have set in your item templates. Where it says for example RedHelmetResRef you'd put the ResRef (filename without UTI suffix) of your red helmet template. MandaloreHelmetResref as you mentioned in your example above is for example not a valid ResRef... :)

Link to comment
Share on other sites

Originally posted by Mono_Giganto

Ok, here's a better shot of that helmet I showed earlier, not quite so low-res.

 

Mandalore

Kelborn

Standard Mandalorians

 

Needs to be mapped, then Commas is gonna give the skinning a go, hopefully the map will make his job easy... :)

Looks great, I like how the antenna is different for the different ranked mandalorians. This is going to be a great mod.

Link to comment
Share on other sites

Originally posted by DarthMoeller

Looks great, I like how the antenna is different for the different ranked mandalorians. This is going to be a great mod.

Agreed!

 

Helmets look great Mono, and great idea Commas :thumbsup:

 

This is definitely turning out to be a "must mod" :D

Link to comment
Share on other sites

I've been working on Mandalore's body model, trying to patch up the holes in the mesh for Commas, and while I was working on it, I quickly took this shot.

 

This, once skinned, is basically the new appearance for Mandalore, with the different antenna positions for the standard Mandalorians and Kelborn.

Link to comment
Share on other sites

Hmmmm well, that Antenna isnt Mandalorian.

 

The Antenna is actualy a Feature customised by Boba and Jango onto their Original Mandalorian Helmet to plug into their Firespray "Slave 1"

 

The Original Mandalorian Helmet, looks like the "Standard Mandalorian Pic"

 

However, i really like the Kelborn idea of having it down infront of his face, As this could serve as a Interface for Working on computers and repairing items.

 

However i see Mandalore's Helmet not needing one, but the Helmet *does* need something to make it unique.

 

MAybe some Frilly stuff at the bottom or Retro colors.. naw im JK lol

 

But maybe some Scratches, a crack, or a few War Customizations.

 

Just my two cents.

 

:)

Link to comment
Share on other sites

well, i haven't updated this in a while, so i thought i'd show you all the new mandalorian armor i've been working on.

 

its VERY similar to the old mandalorian armor, the major difference here is that the model is now the same as mandalore's helmetless model. I've done this because it allows me to give the model a head (I'm using Daghon Gent's head in this screen shot) which will let them all wear their new helmets. Mandalore's new armor is also in this screen shot, but without a helmet, so if you don't want to know what is under there don't click the link as it is a spoiler.

 

New Mandalorian Armors

 

Also, as you can see in the above pic there are no more holes in the back of the model, thanks to svösh and mono

 

feedback is totally welcome.

Link to comment
Share on other sites

Originally posted by Commas

Also, as you can see in the above pic there are no more holes in the back of the model, thanks to svösh and mono

 

Meh, svösh did the whole thing. When he fixed the weighting he also went ahead and filled the other two holes. :thumbsup:

 

 

:forkyou: You can always credit me for the helmet though.

 

And we're using the doc's head because, lacking hair, it's one of the smaller heads the game has to offer, so we don't have to cheapen the mandalorians with 20-foot long helmets. :rolleyes:

Link to comment
Share on other sites

Originally posted by Mono_Giganto

:forkyou: You can always credit me for the helmet though.

 

Don't worry, you get all the credit for the helmet. infact, you've put in so much work on this mod that i pretty much consider it to be a joint mod between you and me ("Real Mandalorians by Commas and Mono_Giganto" its gotta nice ring to it ;) ), especailly since you are doing the hardest part :D All i've done is make some textures and edit a few .2da's, the helmet however is the heart and soul of this mod as that is what is really going to make these Real Mandalorians.

 

I've also got to give BIG thanks to stoffe for all the help she's given me with the scripts for this mod, as i am a total script-tard and never would have been able to do it on my own, and to svösh for fixing mandalore's holes.

Link to comment
Share on other sites

i'm not making any announcements as to when this will be released because honestly, i do not know, i'm not really at a stage where i can make an estimate

 

as for mandalore's helmet, i do not think i will be able to make it removable, his head clips like mad thru his new helmet, so i imgine that what ever does end up being underneath the helmet will not be very pretty to look at, so his helmet will have remain locked, but don't worry, i'll give it some decent stats :D

Link to comment
Share on other sites

Originally posted by Commas

i'm not making any announcements as to when this will be released because honestly, i do not know, i'm not really at a stage where i can make an estimate

 

as for mandalore's helmet, i do not think i will be able to make it removable, his head clips like mad thru his new helmet, so i imgine that what ever does end up being underneath the helmet will not be very pretty to look at, so his helmet will have remain locked, but don't worry, i'll give it some decent stats :D

 

Yeah, the good doc's head is still a bit too big for my standards, I'm gonna have to remove his nose Michael Jackson style. Helmet will likely not be removeable.

Link to comment
Share on other sites

^^^Jacko's nose is awful isn't it? :p

 

well, i've made one last armor texture, this time a special suit for kelborn that will match his unique helmet much better than his old red suit:

 

Kelborn's New Threads

 

its not completely done yet, but that will give you an idea of the color scheme

 

i do have a question for our resident scripters (again...) or anyone else out there who might be willing to help out

 

i know that its not chill to edit the UTC files as it can be a game breaker sometimes. I've added a new line to appearance.2da for the new kelborn appearance, but the only way i can think to get it to show up is by changing his appearance in his UTC, but UTC's are a no no, so i need to do it by script, preferably the one stoffe posted earlier for the heartbeat script.

 

so i've tried my best and inserted the line in BOLD into the script stoffe gave me

 

void ST_FixMandalorianHelmet();

void main() {
   // ST: Check if it's a Mandalorian appearance type creature running this.
   if ((GetAppearanceType(OBJECT_SELF) == 35)  
       || (GetAppearanceType(OBJECT_SELF) == 351)
       || (GetAppearanceType(OBJECT_SELF) == 352))
   {
       ST_FixMandalorianHelmet();
   }

   // ST: Do the standard AI heartbeat...
   ExecuteScript("k_ai_master", OBJECT_SELF, 1001);
}

void ST_FixMandalorianHelmet() {
   int    nType   = GetAppearanceType(OBJECT_SELF);
   object oHelm   = GetItemInSlot(INVENTORY_SLOT_HEAD);
   string sTag    = GetTag(oHelm);
   string sResRef = "";

   // ST: It's a blue-armored Mandalorian
   if ((nType == 35) && (!GetIsObjectValid(oHelm) || (sTag != "BlueHelmTag")))  {
       sResRef = "BlueHelmetResref";
   }
   // ST: It's Kelborn...
   else if ((GetTag(OBJECT_SELF) == "npc_kelborn") && (!GetIsObjectValid(oHelm) || (sTag != "KelbornHelmTag"))) {
       sResRef = "KelbornHelmetResref";
   }   
   [b]//Here's the stuff i added to change' kelborn's appearance
   else if ((GetTag(OBJECT_SELF) == "npc_kelborn")ChangeObjectAppearance( object oKelborn, int 671 );[/b]

   // ST: It's a non-Kelborn red-armored Mandalorian   
   else if ((nType == 351) && (!GetIsObjectValid(oHelm) || (sTag != "RedHelmTag")))  {
       sResRef = "RedHelmetResref";
   }       
   // ST: It's a yellow-armored Mandalorian
   else if ((nType == 352) && (!GetIsObjectValid(oHelm) || (sTag != "YellowHelmTag")))  {
       sResRef = "YellowHelmetResref";
   }       

   // ST: Proper helmet not equipped, spawn and equip one.
   if (sResRef != "") {
       oHelm = CreateItemOnObject(sResRef, OBJECT_SELF, 1, TRUE);
       ActionEquipItem(oHelm, INVENTORY_SLOT_HEAD, TRUE);

   }
}

can any one verify whether the above line is writen correctly, and if its not help me figure out how to write it correctly?

 

edit: a quick question about the above script as well, is this meant to be inserted directly into the existing heartbeat script, or done by naming it as the heartbeat script and using ExecuteScript to run the real heartbeat script? i tried just adding it in but everytime i tried to compile i got an error (before i made the new change for kelborn), however the ExecuteScript way did seem to work, i was just wondering about alternatives

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...