Jump to content
The Dark Mod Forums

Newbie DarkRadiant Questions


demagogue
 Share

Recommended Posts

You can use freemake for this. You cut the sound there, export it as mp3 or what ever and than use fre:ac to convert it to ogg.

 

@Spooks: It's hard to tell from the distance, but if you upload your fm somewhere and pm me the link I'll take a look. The bounds for the objective states are referring to the numbers that equal the different states I guess (0, 1, 2 and 3). If the number assigned is a different one you get the error me thinks. but I can't say for sure.

  • Like 1

FM's: Builder Roads, Old Habits, Old Habits Rebuild

Mapping and Scripting: Apples and Peaches

Sculptris Models and Tutorials: Obsttortes Models

My wiki articles: Obstipedia

Texture Blending in DR: DR ASE Blend Exporter

Link to comment
Share on other sites

Am I doing something wrong, or does 'set <spawnarg> on <prop>' just not work to stop the prop spawning on a given difficulty level (meaning I'll have either to place a key in DR and bind it instead, or to do something to remove the entity after map load)?

"def_attach6" "atdm:prop_key_simple_steel"
"pos_attach6" "belt_back_right"
"name_attach6" "perimeter_key"
"set name on perimeter_key" "perimeter_key"
"set inv_name on perimeter_key" "the exterior door key"
"set diff_1_nospawn on perimeter_key" "1"
"set diff_2_nospawn on perimeter_key" "1"

Some things I'm repeatedly thinking about...

 

- louder scream when you're dying

Link to comment
Share on other sites

I think the set spawnargs on entities are executed after the map has loaded. Hence set diff_nospawn won't work.

FM's: Builder Roads, Old Habits, Old Habits Rebuild

Mapping and Scripting: Apples and Peaches

Sculptris Models and Tutorials: Obsttortes Models

My wiki articles: Obstipedia

Texture Blending in DR: DR ASE Blend Exporter

Link to comment
Share on other sites

Maybe that would work if you made a custom prop key entityDef and put the diff_nospawn arguments there? Pretty roundabout way to do it, but if it does work it would allow you to def_attach.

Edited by Spooks
  • Like 1

My FMs: The King of Diamonds (2016) | Visit my Mapbook thread sometimes! | Read my tutorial on Image-Based Lighting Workflows for TDM!

 

 

Link to comment
Share on other sites

Maybe that would work if you made a custom prop key entityDef and put the diff_nospawn arguments there? Pretty roundabout way to do it, but if it does work it would allow you to def_attach.

Good idea, but unfortunately that turns out not to work either.

Some things I'm repeatedly thinking about...

 

- louder scream when you're dying

Link to comment
Share on other sites

You could just have a different AI spawned on difficulty-3 that receives the def attach, and the AI on the other difficulties don't. Just make 2 of the same AI and put the relevant diff_X_nospawn spawnargs on each.

  • Like 1

What do you see when you turn out the light? I can't tell you but I know that it's mine.

Link to comment
Share on other sites

I have a custom credits gui file that I want to play when the mission completes. Does anyone know how to do that? I have tried all of the obvious steps but that either results in a) the game crashing b ) the credits being displayed over the main menu or c) the game booting up with just a blank screen.

 

Is it possible to have a custom gui play instead of the mainmenu_success.gui ?

 

My credits.gui file has all of the text and animation included in it so I don't need a de-briefing video or anything else, just the credits.gui file to cue when the mission ends.

Edited by Goldwell
Link to comment
Share on other sites

The easy way is to simply use the same filename as the official end animation, and the game will give priority to the one you package in your pk4 before the TDM packaged version.

 

Edit. You'd need to mirror the folder structure in your pk4 too.

 

Edit2. Sorry you mean the whole gui page, not just the video. Well the same principle works. Just use the same filenames as the game.

What do you see when you turn out the light? I can't tell you but I know that it's mine.

Link to comment
Share on other sites

The easy way is to simply use the same filename as the official end animation, and the game will give priority to the one you package in your pk4 before the TDM packaged version.

 

Edit. You'd need to mirror the folder structure in your pk4 too.

 

Edit2. Sorry you mean the whole gui page, not just the video. Well the same principle works. Just use the same filenames as the game.

 

My credits screen isn't a video though, it's text that scrolls down the screen (found in the credits.gui). If I rename my credits to "mainmenu_success.gui" or even "mainmenu_debriefing_video.gui" it causes the game to crash on boot.

 

edit: my current solution is to just have the gui run before ending the mission and then display the credits screen afterwards. It's not ideal but it will be good enough.

 

Thanks for your help anyway!

Edited by Goldwell
Link to comment
Share on other sites

Short answer is no, not in a simple manner. There isn't such an AI entity in yet, I actually need something like that too. You can replace the animations and vocal sets of a guard with a zombie's with spawnargs, but I'm not so sure about the vulnerability to holy water.

 

Thinking about it you can just def_attach some armor pieces to a zombie and sort of approximate the look of a guard. If you need help with def_attaching and attachment points for AI, you can look it up on the wiki. The only thing I think would be hard to do is get a breastplate to look good.

 

EDIT: Zombie models probably don't have the same def_attach points as regular AI so that's probably out of the question too.

Edited by Spooks

My FMs: The King of Diamonds (2016) | Visit my Mapbook thread sometimes! | Read my tutorial on Image-Based Lighting Workflows for TDM!

 

 

Link to comment
Share on other sites

I'm not so sure about the vulnerability to holy water.

That should be a matter of copying some S/R spawnargs.

 

I gave a zombie a guard's model, def_head, head_joint and head_jointname spawnargs, and it sort of works in the game, but seems unable to fight as either a zombie or a guard would; I don't know whether giving it a zombie's animation set too (with a custom model def. I suppose) would fix that. There are also details like footstep sounds that would need changing.

 

Of course, there's the stuff Bob Necro was working on at http://forums.thedarkmod.com/topic/17200-the-necrobobicon/page-5?do=findComment&comment=382675 but I've no idea whether anyone has made entities to go with those skins.

Edited by VanishedOne

Some things I'm repeatedly thinking about...

 

- louder scream when you're dying

Link to comment
Share on other sites

Just had a look at it again: Apparently the zombie model uses the same skeleton as the guard models, so the animations of the zombie (as far as I understane how animations work) should be transferable to a guard model. If this is the case, you just have to replace "mesh" "models/md5/chars/undead/zombie/tdm_zombie01.md5mesh" with the mesh of the guard you want to depict (e.g. "models/md5/chars/guards/merc_elite/tdm_ai_merc_elite.md5mesh"). All other properties (including animations, vulnerabilities, damage etc) should stay the same, as the zombie definition is still used. Maybe I will find time later on today to test it myself, but I cannot promise anything, so you might want to try it yourself.

Link to comment
Share on other sites

How to change "target" "pathnode" in existing AI? I've tried .setKey(string key, string value), but

"Sets a key on this entity's spawn args. Note that most spawn args are evaluated when
this entity spawns in, so this will not change the entity's behavior in most cases."

Multiple AI exchanged by .setOrgin don't work too well on my map.

S2wtMNl.gif

Link to comment
Share on other sites

Have you tried this? (Edit: or is there a specific need to change the AI's initial target instead of a node's in the path it's following?)

 

http://wiki.thedarkmod.com/index.php?title=Path_Nodes#Switching_from_one_Path_network_to_another

Edited by VanishedOne
  • Like 1

Some things I'm repeatedly thinking about...

 

- louder scream when you're dying

Link to comment
Share on other sites

Just had a look at it again: Apparently the zombie model uses the same skeleton as the guard models, so the animations of the zombie (as far as I understane how animations work) should be transferable to a guard model. If this is the case, you just have to replace "mesh" "models/md5/chars/undead/zombie/tdm_zombie01.md5mesh" with the mesh of the guard you want to depict (e.g. "models/md5/chars/guards/merc_elite/tdm_ai_merc_elite.md5mesh"). All other properties (including animations, vulnerabilities, damage etc) should stay the same, as the zombie definition is still used. Maybe I will find time later on today to test it myself, but I cannot promise anything, so you might want to try it yourself.

 

Replacing only the mesh wouldn't do anything, I had to change some other stuff but it seems to be working now (ai moves and attacks using zombie animations). Here's the def file for the zombie class if anyone wants to try it.

 

 

 

//

// =================== ZOMBIES =====================braaains====

//

 

 

model tdm_monster_zombie01

{

// This zombie is using the standard proguard skeleton

inherit tdm_ai_proguard

 

mesh models/md5/chars/guards/proguard/tdm_ai_proguard_use.md5mesh

 

channel torso ( *Spine_Dummy)

channel legs ( origin Pelvis Pelvis2 *Hips)

 

anim walk1 models/md5/chars/undead/zombie/zombie_walk.md5anim

{

frame 5 footstep

frame 23 footstep

frame 44 footstep

frame 64 footstep

frame 85 footstep

frame 103 footstep

}

anim walk2 models/md5/chars/undead/zombie/zombie_walk.md5anim

{

frame 5 footstep

frame 23 footstep

frame 44 footstep

frame 64 footstep

frame 85 footstep

frame 103 footstep

}

anim run models/md5/chars/undead/zombie/zombie_run.md5anim

{

frame 8 footstep

frame 24 footstep

frame 40 footstep

frame 55 footstep

frame 71 footstep

frame 88 footstep

}

anim idle models/md5/chars/undead/zombie/zombie_idle.md5anim

anim zombie_idle_look_left_01 models/md5/chars/undead/zombie/zombie_idle_look_left_01.md5anim

anim zombie_idle_shift_01 models/md5/chars/undead/zombie/zombie_idle_shift_01.md5anim

{

frame 27 footstep

frame 44 footstep

frame 121 footstep

frame 133 footstep

}

anim zombie_idle_shift_back models/md5/chars/undead/zombie/zombie_idle_shift_back.md5anim

{

frame 12 footstep

frame 88 footstep

}

anim zombie_idle_shift_right_01 models/md5/chars/undead/zombie/zombie_idle_shift_right_01.md5anim

{

frame 30 footstep

frame 125 footstep

}

 

anim sleep_idle models/md5/chars/undead/zombie/zombie_sleep.md5anim

anim stand_2_sleep models/md5/chars/undead/zombie/zombie_idle_2_sleep.md5anim

{ frame 1 disableWalkIK }

 

anim sleep_2_stand models/md5/chars/undead/zombie/zombie_sleep_2_idle.md5anim

{ frame 40 enableWalkIK }

 

anim melee_attack models/md5/chars/undead/zombie/zombie_attack_lefthand.md5anim

{

frame 12 sound snd_swing

frame 15 melee melee_zombie_Left

 

}

 

anim melee_attack2 models/md5/chars/undead/zombie/zombie_attack_righthand.md5anim

{

frame 19 sound snd_swing

frame 22 melee melee_zombie_Right

 

}

 

anim melee_attack3 models/md5/chars/guards/proguard/combat_sword_attack_overhead.md5anim

{

prevent_idle_override

 

frame 19 sound snd_swing

frame 23 melee melee_zombie_Right

 

}

 

 

// needs some attention for 2.01

/* anim melee_attack3 models/md5/chars/undead/zombie/zombie_attack_bite_eat.md5anim

{

frame 15 sound snd_swing

frame 18 melee atdm:damage_generic

}

*/

//zombie looks too smart when he kneels down

anim kneel_down models/md5/chars/undead/zombie/zombie_idle_look_left_01.md5anim

 

 

}

 

 

// Base definition

entityDef atdm:ai_undead_zombie_base

{

"inherit" "atdm:ai_humanoid_undead"

"editor_displayFolder" "AI/Internal/Base Class"

"editor_usage" "Don't use; base class for all zombies"

 

"head_joint" "Head"

"def_head" "atdm:ai_head_baseguard_prohelmet"

"offsetHeadModel" ".2 0 -12" // defaultvalue if set

"atdm:ai_head01_commoner_old" "1.1 0 -.1"

 

"team" "9"

"rank" "1"

"health" "150"

"def_melee_set" "atdm:ai_melee_set_skilled"// grayman #3331

"can_be_flatfooted" "0"

 

"melee_range" "48"

 

 

"anim_rate_melee_attack" "1.7"

 

"anim_rate_run" "1.1"

 

"sleep_location" "0" // grayman #3396 - 1 = sleep on a bed, 0 = sleep on the floor

 

"turn_rate" "260"

 

"snd_footstep" "zombie_footstep"

"snd_footstep_puddle" "movement_water"

"snd_footstep_wading" "movement_water"

"snd_footstep_carpet" "human_female_carpet"

 

 

"def_vocal_set" "atdm:ai_vocal_set_zombie_01"

"snd_rustle" "nosound"

"snd_swing" "fist_whoosh"

 

 

 

"idle_bark_interval_min" "20"

"idle_bark_interval_max" "30"

 

"alert_idle_bark_interval_min" "6"

"alert_idle_bark_interval_max" "10"

 

// attachment positions for the new skeleton

"attach_pos_name_hipsheathl" "hip_sheath_l"

"attach_pos_joint_hipsheathl" "Hips"

"attach_pos_origin_hipsheathl" "6.5 6.7 -6.2" //f/b, u/d, s/s

"attach_pos_angles_hipsheathl" "10 140 -10"

 

"attach_pos_name_handr" "hand_r"

"attach_pos_joint_handr" "RightHand"

"attach_pos_origin_handr" "0 0 4.4"

"attach_pos_angles_handr" "260 90 0"

 

"attach_pos_name_handl" "hand_l"

"attach_pos_joint_handl" "LeftHand"

"attach_pos_origin_handl" "-2 -0.8 -4.5"

"attach_pos_angles_handl" "80 -90 0"

 

// greebo: needed different hand attach position due to the longbow being rotated differently

"attach_pos_name_handrbow" "hand_r_bow"

"attach_pos_joint_handrbow" "RightHand"

"attach_pos_origin_handrbow" "0 0 4.4"

"attach_pos_angles_handrbow" "90 90 0"

 

// greebo: needed different hand attach position due to the longbow being rotated differently

"attach_pos_name_handlbow" "hand_l_bow"

"attach_pos_joint_handlbow" "LeftHand"

"attach_pos_origin_handlbow" "-2 -0.8 -4.5"

"attach_pos_angles_handlbow" "-80 90 0"

 

"attach_pos_name_hipbackr" "belt_back_right"

"attach_pos_joint_hipbackr" "Hips"

"attach_pos_origin_hipbackr" "-4 8 4" // x, height, width

"attach_pos_angles_hipbackr" "90 90 0"

 

// greebo: needed different back attach position since the longbow is different to hammers

"attach_pos_name_bowholster" "bow_holster_pos_rl"

"attach_pos_joint_bowholster" "Spine2"

"attach_pos_origin_bowholster" "-5 -5 0" //middle value controls distance from back

"attach_pos_angles_bowholster" "0 90 25"

 

//these need double-checking

"attach_pos_name_slbackrl" "slung_across_back_rl"

"attach_pos_joint_slbackrl" "Spine2"

"attach_pos_origin_slbackrl" "14 -6 -6" //middle value controls distance from back

"attach_pos_angles_slbackrl" "0 90 25"

 

"attach_pos_name_slbacklr" "slung_across_back_lr"

"attach_pos_joint_slbacklr" "Spine2"

"attach_pos_origin_slbacklr" "14 -2 -6"

"attach_pos_angles_slbacklr" "0 90 -5"

 

 

 

 

"ik_numLegs" "2"

"ik_minWaistAnkleDist" "0"

"ik_footSize" "0"

"ik_waist" "Pelvis2"

"ik_hip1" "LeftUpLeg"

"ik_hip2" "RightUpLeg"

"ik_knee1" "LeftLeg"

"ik_knee2" "RightLeg"

"ik_ankle1" "LeftFoot"

"ik_ankle2" "RightFoot"

//normally a knee joint

//"ik_dir1" "LeftFoot"

//"ik_dir2" "RightFoot"

"ik_foot1" "LeftToeBase"

"ik_foot2" "RightToeBase"

}

 

// greebo's Zombie

 

entityDef atdm:ai_undead_zombie

{

"inherit" "atdm:ai_undead_zombie_base"

 

 

 

"editor_displayFolder" "AI/Monsters/Undead/Zombies"

"editor_usage" "A walking corpse with gaping mouth"

 

// FIXME: Not sure if this ragdoll is appropriate for the skinny mesh

"ragdoll" "guard_base_newskel"

 

"model" "tdm_monster_zombie01"

 

"anim" "idle"

 

 

 

 

"idle_animations_interval" "18" // in seconds +/- 20%

"idle_search_animations_interval" "10" // in seconds +/- 20% - grayman #3857

 

"idle_animations" "zombie_idle_look_left_01,zombie_idle_shift_01,zombie_idle_shift_back,zombie_idle_shift_right_01"

"idle_animations_torso" ""

"idle_animations_sitting" ""

 

"unarmed_melee" "1"

"attack_cone" "70"

"attack_accuracy" "0"

"mass" "70"

 

"snd_bounce" "body_collapse_soft"

}

 

// this refers to the same zombie now; leftover from D3

entityDef atdm:ai_undead_zombie_alt01

{

"inherit" "atdm:ai_undead_zombie"

 

"editor_displayFolder" "AI/Monsters/Undead/Zombies"

"editor_usage" "A bloodier version of the default zombie"

"skin" "skins/monsters/zombie/tdm_zombie01_bloody"

}

 

 

 

 

entityDef melee_zombie_Left {

// melee specific parameters

"snd_hit" "weapon_hit_default"

 

"kickDir" "0 -1 0"

 

// damage parameters

"damage" "20"

 

 

 

"knockback" "15"

 

"kick_time" "350"

"kick_amplitude" "1.1"

 

"dv_time" "100"

}

 

entityDef melee_zombie_Right {

"snd_hit" "weapon_hit_default"

 

"kickDir" "0 1 0"

 

"damage" "20"

 

 

"knockback" "20"

 

"kick_time" "350"

"kick_amplitude" "1.1"

 

"dv_time" "100"

}

 

 

 

 

 

 

nPol1oA.jpg?1

 

 

Edited by level
  • Like 4
Link to comment
Share on other sites

Just out of curiosity: What else did you have to change? Skimming over your def files I saw, I forgot the head, but I am not sure what else was changed. Anyway, I am glad, that it did work without too much effort :smile:

Edited by Destined
Link to comment
Share on other sites

level: Bravo! That looks useful. :) I assume it would work with the other human models as well?

Come the time of peril, did the ground gape, and did the dead rest unquiet 'gainst us. Our bands of iron and hammers of stone prevailed not, and some did doubt the Builder's plan. But the seals held strong, and the few did triumph, and the doubters were lain into the foundations of the new sanctum. -- Collected letters of the Smith-in-Exile, Civitas Approved

Link to comment
Share on other sites

One point I just noticed going thorugh the zombie def: in the ragdoll section you did not change the model.

 

// FIXME: Not sure if this ragdoll is appropriate for the skinny mesh
"ragdoll" "guard_base_newskel"

"model" "tdm_monster_zombie01"

"anim" "idle"

 

When you KO or kill an AI, it gets exchanged with a ragdoll. So it might be that, as soon as your zombie gets killed, it changes from the guard model to the zombie model. Maybe you want to check that.

Link to comment
Share on other sites

One point I just noticed going thorugh the zombie def: in the ragdoll section you did not change the model.

 

// FIXME: Not sure if this ragdoll is appropriate for the skinny mesh

"ragdoll" "guard_base_newskel"

 

"model" "tdm_monster_zombie01"

 

"anim" "idle"

 

When you KO or kill an AI, it gets exchanged with a ragdoll. So it might be that, as soon as your zombie gets killed, it changes from the guard model to the zombie model. Maybe you want to check that.

 

That's part of the original code, I didn't change it. I just tested it anyway and it seems to work fine.

 

level: Bravo! That looks useful. :) I assume it would work with the other human models as well?

 

Yes. Just change this line

 

mesh models/md5/chars/guards/proguard/tdm_ai_proguard_use.md5mesh

 

in the def I posted above to whatever other model you want and that's it

 

 

SftY9Zm.jpg

 

Edited by level
  • Like 2
Link to comment
Share on other sites

Zombie. Apocalypse. Level.

 

If I had known this when I made The Rats Triumphant... :ph34r:

Come the time of peril, did the ground gape, and did the dead rest unquiet 'gainst us. Our bands of iron and hammers of stone prevailed not, and some did doubt the Builder's plan. But the seals held strong, and the few did triumph, and the doubters were lain into the foundations of the new sanctum. -- Collected letters of the Smith-in-Exile, Civitas Approved

Link to comment
Share on other sites

Does anyone else notice that speakers are not muffled when the player is underwater?

 

I just realized when the player is underwater any speakers emitting sound above the water are heard without any muffle.

 

Is this a bug or just a feature not yet added... Or does no one else care? I've thought about placing a vis portal horizontally and having a big sound loss effect on it but that doesn't really feel like its the right solution

Edited by Goldwell
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


  • Recent Status Updates

    • freyk

      Some years earlier i created some launchers for TDM. uploaded today some new sourcecode and executables on my github repo.
       
      · 0 replies
    • Epifire

      Say, I know it's been a while since the site got overhauled from the crash. But did we ever figure out if/how to get the recent topics & replies list back? It's not a total deal breaker but it was nice for becoming a thread creeper again...


      · 2 replies
    • Epifire

      Some of you who've been on the TDM discord know I was out of work last Winter, just putting in hrs for the developer portfolio. Currently I've been working a seasonal job to pay the bills and now I'm finally in my last week before I get bumped off. Things will be tight but I'm planning a long off period to make as much content as I can. Big plans in Unreal Engine as well as my most ambitious TDM collab yet! Never been so excited to be a stuck at home to pursue my life's work. With a lotta time and maybe some luck, I'm hoping to get enough art work done that I may start applying around to studios.
      · 4 replies
    • STiFU

      I finally got around to play Prey and I truly loved it. It is an incredible homage to System Shock and Deus Ex. While the gameplay is not en par with those two titles, the game makes up for that with its well written lore and story. The whole "world" just feells so authentic and it features a ton of really god environmental story-telling. Recommended for every immersive sim fan, i.e., everyone on this forum.
      · 2 replies
    • jaxa

      Alder Lake has arrived:
      https://forums.thedarkmod.com/index.php?/topic/18055-2016-cpugpu-news/page/15/&tab=comments#comment-466190
       
      · 0 replies
×
×
  • Create New...