Jump to content

Cerez

Members
  • Posts

    1,429
  • Joined

  • Last visited

Everything posted by Cerez

  1. As far as I know, you have to edit this in the NPC file (which is a text file) in the PK3. You can create a number of custom NPCs you use, place them in an NPC file under "ext_data/npcs/", and package it as a PK3 to place in your "base" folder. It doesn't matter if those models/skins already have an NPC file -- you can create additional NPCs for them as needed. Here's an example of an NPC: ahsoka { playerModel ahsoka saber tano saber2 tano2 saberColor green saber2Color yellow weapon WP_SABER saberStyle 0 FP_HEAL 2 FP_LEVITATION 3 FP_SPEED 2 FP_PUSH 3 FP_PULL 2 FP_TELEPATHY 2 FP_GRIP 1 FP_LIGHTNING 0 FP_RAGE 0 FP_PROTECT 2 FP_ABSORB 2 FP_DRAIN 0 FP_SEE 3 FP_SABERTHROW 0 FP_SABER_DEFENSE 3 FP_SABER_OFFENSE 3 forcePowerMax 120 forceRegenRate 100 forceRegenAmount 1 rank commander reactions 5 aim 4 move 5 aggression 5 evasion 3 intelligence 5 move 5 vigilance 0.9 visrange 2048 earshot 1024 hfov 160 vfov 160 scale 94 playerTeam TEAM_PLAYER enemyTeam TEAM_ENEMY class CLASS_JEDI sex female yawSpeed 140 walkSpeed 55 runSpeed 250 acceleration 15 snd ahsoka sndcombat ahsoka sndjedi ahsoka health 250 dismemberProbHead 5 dismemberProbArms 30 dismemberProbLegs 30 dismemberProbHands 30 dismemberProbWaist 15 moveType walk } "Weapon" holds the value you're looking for. Depending on what weapon you give the NPC, their behaviour will change also.
  2. Hi and welcome! Not only are we "fighting the good fight", but we're still producing tons of new quality content for the JK games, so feel free to give it your all. There are dozens of projects currently actively in progress that are aimed at both improving the game and producing new Star Wars content for it. We also have a tutorials section with a lot of good tutorials that will surely help you get back in shape. It's good to see a "new (old)" face. So come, join, and dig in. No reason to hold back, and there's always help if you get stuck.
  3. You can override Kyle simply by creating a new playermodel and calling its models/players/ folder "kyle". That's the only way to change it currently, and it's not very useful, as it will simply make everyone that model instead of Kyle. The default playermodel for an unknown skin in MP is determined in the game's code to be Kyle, so to change that, you would need to rewrite that part of the game, essentially. This is something I've often thought about. For example, instead of seeing Kyles, we could have a randomise script run and present a random skin from the user's library. However, to match the sex a rewrite of the server code would be needed as well to convey the playermodel's gender from client to server, and server to client. In one word, if you're just starting out, don't go there. It's very complicated. Can be done -- nothing's impossible -- but it would require a lot of work, and a new binary distribution. Which doesn't make it very practical, even if achieved -- unless it was adapted into a large-scale and widely distributed project, such as OpenJK.
  4. Well, if we're talking about improving on the original game and its gameplay, I don't think it is useless criticism. Personally, I would love to see a revamped and improved AI in JKA. It would refresh the game experience, and increase the fun factor.
  5. Holy crap! I had no idea Dark Disciple was this good! This is a 'don't miss' for any Clone Wars fan: https://itunes.apple.com/us/audiobook/dark-disciple-star-wars-unabridged/id1004685364

    1. Kualan

      Kualan

      I actually found the closing 1/3rd to be unbearable D:

      It had potential, though.

    2. Cerez

      Cerez

      Really? :o I haven't gotten to that part yet. No spoilers. ;)

    3. Cerez

      Cerez

      What a pity. Brilliant start, and great story concept, then turned strange halfway through, and treated with a quite awful finish -- you're right. It's like the author completely rushed the ending, even going as far as failing to research what she was writing about properly.

  6. Nope. @@ensiform implemented it into SP as well. (Thank you!!!) (More details here.) On topic, JKA's NPC AI was criticised from the first moment the game came out, and it was never really up to par -- which is a shame, considering a huge part of the gaming experience in JKA is reliant on NPC and bot AI. https://en.wikipedia.org/wiki/Star_Wars_Jedi_Knight:_Jedi_Academy It really would be good for (an) experienced coder(s) to sit down an rewrite the NPC behaviour to something a little less predictable, and a little more intelligent and interactive.
  7. Version 1.0

    1,145 downloads

    RELEASED: 14 December 2015 AUTHOR: Cerez (cerezk.oz@gmail.com) DESCRIPTION: A stylish, hi-res, Jedi Knight themed, neutral colour (gray) background for your console, so that text in any colour, including black, will be visible, and easy to read. INSTALLATION: ----------------------------------- Simply move the PK3 file into the "base" folder of your game directory. KNOWN BUGS: ----------------------------------- None. CREDITS: ----------------------------------- Designed by: Cerez PERMISSIONS: ----------------------------------- Hereby permission is given to anyone to edit and create derivative works of the contents of this mod.
  8. Just closed a 12-year-old chapter in my life.

    1. Show previous comments  5 more
    2. Cerez

      Cerez

      Hahahaha! You don't wanna know! XD

    3. Numfast
    4. Ping

      Ping

      Because it could land her in prison.

  9. An 800x600 px screen will be a problem with most professional software out there. These days they are not only designed for 1024x768 px, but even sometimes for common widescreen resolutions, such as 1280x768. 800x600 px is very little to work with for the UI. And yeah, you don't need a plugin to see the selected mesh's vertex count -- you just need to be able to see the whole UI of Blender. But if you do look for a plugin, make sure that it is for your exact version of Blender. Most Blender plugins are version specific, and won't work with an older or newer release than what they were designed for. Or, I found a better way to go is to download a version of Blender that that plugin was made for. It's easier to switch your version of Blender than to hunt for a plugin that works with your current version. http://www.blender.org/download/previous-versions/
  10. http://blenderartists.org/forum/showthread.php?138343-Getting-The-Vertex-Count-Of-A-Mesh
  11. Fair enough, but you can take my word for it -- they are above the floor, at the right level (and exactly the same height), and there is not a single obstacle between the three navgoals. It's a flat surface where the three navgoals (and their close waypoint companions) are laid out like this: o | o- -o For the sake of the experiment, I tried to make it as straightforward as possible -- and it still fails, hehh! >.<'
  12. Those are not numbers. Those are the entities, and it contains all the information about the setup you've asked for. I'm not working with a MAP file. I'm working with a BSP, and using ENT modding to add the waypoints and other entities needed. I've provided a screenshot before (the last one). The same screenshot applies. I've only moved the stairs navgoal down to ground level. As for dowait, dowait is actually do wait. It's just a shorthand for it. IBIze (the compiler) turns it into a do wait pair when you compile the script. So whether you write a do wait pair or the shorthand dowait makes to difference in the final script that gets executed. It's always a do wait pair in the end.
  13. Hmm... explain me this. The following script will make the character walk to wpoint1, then wpoint3, and then stop: rem ( "Random Walker Test Script" ); affect ( "walker", FLUSH ) { set ( "SET_WEAPON", "WP_NONE" ); set ( "SET_PLAYER_TEAM", "TEAM_PLAYER" ); set ( "SET_ENEMY_TEAM", "TEAM_ENEMY" ); set ( "SET_BEHAVIOR_STATE", "BS_DEFAULT" ); set ( "SET_CHASE_ENEMIES", "true" ); set ( "SET_LOOK_FOR_ENEMIES", "true" ); set ( "SET_IGNOREALERTS", "false" ); set ( "SET_WALKING", "true" ); set ( "SET_RUNNING", "false" ); wait ( 4000.000 ); task ( "ranWalk1" ) { set ( "SET_NAVGOAL", "wpoint1" ); } task ( "ranWalk2" ) { set ( "SET_NAVGOAL", "wpoint2" ); } task ( "ranWalk3" ) { set ( "SET_NAVGOAL", "wpoint3" ); } declare ( FLOAT, "ranNum"); set ( "ranNum", 3 ); loop ( -1 ) { if ( get ( FLOAT, "ranNum" ) > 2 ) { do ( "ranWalk3" ); wait ( "ranWalk3" ); set ( "ranNum", 2 ); } else () { if ( get ( FLOAT, "ranNum" ) > 1 ) { do ( "ranWalk2" ); wait ( "ranWalk2" ); set ( "ranNum", 1 ); } else () { if ( get ( FLOAT, "ranNum" ) > -1 ) { do ( "ranWalk1" ); wait ( "ranWalk1" ); set ( "ranNum", 3 ); } } } } } How does that work? o.O Where the hell is the game getting these instructions from?
  14. Tried it, but this only causes the script to hang the first time the loop runs, waiting for the other two tasks (that didn't run) to finish. There's really no other place for me to put the waits, script-wise. This is my current setup: { "classname" "NPC_spawner" "origin" "1139 -3261 455" "NPC_type" "ahsoka" "spawnflags" "32" "angle" "71" "npc_targetname" "walker" "spawnscript" "walker" } { "classname" "waypoint_navgoal" "origin" "139 -3652 455" "targetname" "wpoint1" } { "classname" "waypoint" "origin" "125 -3573 455" "target" "wpoint2" "target2" "wpoint3" } { "classname" "waypoint_navgoal" "origin" "1239 -3361 455" "targetname" "wpoint2" } { "classname" "waypoint" "origin" "1183 -3358 455" "target" "wpoint3" "target2" "wpoint1" } { "classname" "waypoint_navgoal" "origin" "-812 -3268 455" "targetname" "wpoint3" } { "classname" "waypoint" "origin" "-733 -3271 455" "target" "wpoint2" "target2" "wpoint1" } At one point I had added the waypoint targets to the navgoals as well, just to make sure that it wasn't the lack of that link that was breaking the walk cycle. It wasn't. As you said, the targets on the navgoals are optional, really, as long as you have the properly targeted waypoints next to them.
  15. I was hopeful this would show something, but nope... No message received when the script fails to continue running. Apparently the game thinks everything's okay. Makes sense, considering that it never realises that the navgoal walk function had finished, but not returned successfully. Based on careful observation, I'm pretty sure this is what's happening: 1. The navgoal is set and the character starts walking to navgoal. 2. The wait for the task containing the navgoal function for some reason ends abruptly, and a second navgoal setting is superimposed on the original process -- here lies the bug. 3. This breaks the loop cycle, causing one of the tasks to never return successfully, even when the NPC reaches the navgoal. It's quite a strange bug, really. But occasionally you can see the character change navgoals halfway through the path, walking between them -- which, if you have a look at my script, is quite impossible, and shouldn't be happening. That's how I know it's definitely something on the code-side going wrong, and a second navgoal task firing while the first one has still not finished (superimposed).
  16. The Coruscant Jedi Temple simulation is off, guys. Unfortunately I don't have the tools with JKA to do it. Due to limitations and bugs with the scripting system, the game falls short for purpose in this case... It's a shame. I really wanted to do this. :'(

  17. Yes, exactly. I was hoping to randomise that behaviour a little bit as well by giving the NPC a few possible activities to choose from. That way even if the player follows them, they may not do the same thing they did last time (yesterday). I was hoping I could script in detail an interactive living simulation environment for the Jedi Temple on Coruscant, but unfortunately JKA has disappointed me in this regard. It just doesn't have what it takes to make it happen... Too unstable, too unreliable, too buggy... It's a big letdown in modding, to be honest. For the first time I really feel the game's limits. Edit: Would be nice to find out what's happening code-side with that SET_NAVGOAL timeout/misfire, though...
  18. Okay, after hours and hours and hours of testing, and scripting everything by the book, I've come to undeniable evidence that indeed a bug in the programming is responsible. I've placed all three navgoals in line on a flat surface, with a corresponding waypoint next to them, and linked them all up properly (as @@eezstreet has kindly noted it in detail). The following script will half the time succeed in doing what it's supposed to, and half the time fail, sometimes in the middle of a walk from point to point, making the character walk to the next designated navgoal and stop -- despite the fact that the script is intructed to run in an infinite loop. rem ( "Random Walker Test Script" ); affect ( "walker", FLUSH ) { set ( "SET_WEAPON", "WP_NONE" ); set ( "SET_PLAYER_TEAM", "TEAM_PLAYER" ); set ( "SET_ENEMY_TEAM", "TEAM_ENEMY" ); set ( "SET_BEHAVIOR_STATE", "BS_DEFAULT" ); set ( "SET_CHASE_ENEMIES", "true" ); set ( "SET_LOOK_FOR_ENEMIES", "true" ); set ( "SET_IGNOREALERTS", "false" ); set ( "SET_WALKING", "true" ); set ( "SET_RUNNING", "false" ); wait ( 4000.000 ); task ( "ranWalk1" ) { set ( "SET_NAVGOAL", "wpoint1" ); } task ( "ranWalk2" ) { set ( "SET_NAVGOAL", "wpoint2" ); } task ( "ranWalk3" ) { set ( "SET_NAVGOAL", "wpoint3" ); } loop ( -1 ) { if ( random ( 0, 3 ) > 2 ) { do ( "ranWalk3" ); wait ( "ranWalk3" ); } else () { if ( random ( 0, 3 ) > 1 ) { do ( "ranWalk2" ); wait ( "ranWalk2" ); } else () { if ( random ( 0, 3 ) > -1 ) { do ( "ranWalk1" ); wait ( "ranWalk1" ); } } } } } All three navgoals are accessible with the script, and the failure is completely spontaneous, with no apparent logical cause. There's no pattern to it. After a random interval the engine fails to run the script. It seems the SET_NAVGOAL related function either misfires a successful return too early, or fails to send a return at all, and causes the script to hang, waiting forever for the SET_NAVGOAL task to finish.
  19. There's nothing wrong with it in practice, but I'm trying to script an intelligent and responsive AI, and BS_WANDER only allows for a very primitive behaviour of walking moving back and forth between waypoints aimlessly. I want to simulate the daily activities of a character, and for that I will need to define potential paths and behaviour, but have the character choose what to do randomly as well -- a sequence at a time. Hmm! This is an interesting tip. I was wondering about this. I think I will remove the stairs from the equation for now, and place all three test navgoals on a flat surface across the big room, so there are no obstacles in the way.
  20. Using this setup and BS_WANDER, I was able to get the character to do the random walk between the three navgoals, no matter how large the distance. However, my script still doesn't work with BS_DEFAULT or BS_CINEMATIC. It works in the sense that the NPC will pick a random navgoal from the three and head to it, but once the NPC has reached their first navgoal, any navgoal change given after that is ignored. This seems to be an error on the programming side of things. Could be OpenJK specific, but I have no means to test my script with the retail game to be sure. This is how my script looks now, and it's set as the NPC entity's spawnscript: rem ( "Random Walker Test Script" ); affect ( "walker", FLUSH ) { set ( "SET_WEAPON", "WP_NONE" ); set ( "SET_PLAYER_TEAM", "TEAM_PLAYER" ); set ( "SET_ENEMY_TEAM", "TEAM_ENEMY" ); set ( "SET_BEHAVIOR_STATE", "BS_DEFAULT" ); set ( "SET_CHASE_ENEMIES", "true" ); set ( "SET_LOOK_FOR_ENEMIES", "true" ); set ( "SET_IGNOREALERTS", "false" ); set ( "SET_WALKING", "true" ); set ( "SET_RUNNING", "false" ); wait ( 4000.000 ); declare ( FLOAT, "ranNum" ); task ( "casualwalk" ) { set ( "ranNum", random ( 0, 3 ) ); if ( get ( FLOAT, "ranNum" ) > 2 ) { set ( "SET_NAVGOAL", "wpoint3" ); } else () { if ( get ( FLOAT, "ranNum" ) > 1 ) { set ( "SET_NAVGOAL", "wpoint2" ); } else () { if ( get ( FLOAT, "ranNum" ) > 0 ) { set ( "SET_NAVGOAL", "wpoint1" ); } } } } loop ( -1 ) { do ( "casualwalk" ); wait ( "casualwalk" ); wait ( random ( 0, 4000 ) ); } }
  21. Muchos gracias! Hmm... I'm gonna have a look at a few well routed BSPs, like this one, and see how the waypoint entities are set up on the ENT (properties/code) side. How many navgoals do you have on this map?
  22. Hmm! While browsing for files I came across something peculiar. Back in 2007 Hoodz made a JKA model that was Darth Maul with his cybernetic legs. The strange thing is this didn't actually appear on-screen till years later in The Clone Wars TV show. Were there any other canon appearances of Darth Maul with cybernetic legs in Star Wars media/fiction before 2008? Or did The Clone Wars team actually take a fan design/idea and turn it into canon? http://mrwonko.de/jk3files/Jedi%20Academy/Models/Star%20Wars/78858/
  23. Could you give me an aerial in-game screenshot (with 'nav show all') of how you've done this on one of your level/map designs where it works, please? I'm curious about the spacing between the waypoints you're using. I've just tried to create a simple setup with 3 distant navgoals and a single linking waypoint in the middle, connecting them all properly to one another. The result is that the NPC walks to the far end to one navgoal, and then forgets about all other navgoals' existence -- because it is located too far from them -- and the game says goodbye to the instructions in my script: rem ( "Random Walker Test Script" ); affect ( "walker", FLUSH ) { set ( "SET_WEAPON", "WP_NONE" ); set ( "SET_PLAYER_TEAM", "TEAM_PLAYER" ); set ( "SET_ENEMY_TEAM", "TEAM_ENEMY" ); set ( "SET_BEHAVIOR_STATE", "BS_DEFAULT" ); set ( "SET_CHASE_ENEMIES", "true" ); set ( "SET_LOOK_FOR_ENEMIES", "true" ); set ( "SET_IGNOREALERTS", "false" ); set ( "SET_WALKING", "true" ); set ( "SET_RUNNING", "false" ); wait ( 4000.000 ); loop ( -1.000 ) { task ( "casualwalk" ) { if ( random ( 0, 3 ) > 2 ) { set ( "SET_NAVGOAL", "wpoint3" ); } else () { if ( random ( 0, 3 ) > 1 ) { set ( "SET_NAVGOAL", "wpoint2" ); } else () { if ( random ( 0, 3 ) > 0 ) { set ( "SET_NAVGOAL", "wpoint1" ); } } } } do ( "casualwalk" ); wait ( "casualwalk" ); wait ( random ( 0, 4000 ) ); } } I honestly don't understand how you can be okay with this if you're doing serious NPC scripting -- unless I am still missing something and/or doing something wrong.
  24. Oh MY GOD! I have to daisy chain these fuckers, one to the other?!!! That's it! I give up! JESUS! Worst NPC path scripting system ever! How can I possibly concentrate on creating intelligent AI when I have to deal with this shit? The stupid NPC is not even smart enough to calculate a path to the objective using available waypoints? That's ridiculous! So basically I have to create SP "bot routes" for the NPCs so they'll have a scripted path to roam on. That's about as primitive as it can possibly get.
×
×
  • Create New...