|
#5393 posted by Kell on 2006/10/05 14:52:08
I've got all my textures exported into id1/textures/ as jpegs
How do you load them though? Are you using the latest ( october 1st ) build?
#5394 posted by Inf on 2006/10/05 16:29:33
I tried several 1.5.0 builds and none of them seem to be able to show/load Quake textures.
I tried Tigger his method, what Bazzu suggested, but the editor crashes. Still working that out though. I would prefer not to use Tigger his method because it seems a bit uh...what's the word...unneccesary if you can simply have a editor doing all that for you. Instead of downloading and setting up lots of stuff.
Ofcourse I appreciate the suggestion and if it's the way to go, I'll use it. It's just that I prefer a editor specifically designed to work with Quake.
Attacks
#5395 posted by Preach on 2006/10/05 16:48:24
The monster isn't attacking because none of the ai functions you call in your frame functions actually check for an attack. The normal quake monsters regularly call ai_run, which is the main ai thinking hub. ai_run should be the default action which you only stop using if you don't want the monster to get distracted during its animation - like if it's in pain or attacking or dead.
ai_run calls the function CheckAnyAttack, which determines if a missile attack can hit. If you find CheckAnyAttack in ai.qc, you can see there are lots of if statements that check if the monster is, for example, a shambler, and do the special shambler checkattack if it is. After those there is a generic checking function CheckAttack, which should suffice for your monster.
CheckAttack checks if you're in melee range, and if you are and you have a th_melee it calls that. If not, it checks for a missile attack based on the range to the target. The probability of attack is higher at certain ranges. If so and you have a th_missile, it calls that.
So the flow goes
ai_run -> CheckAnyAttack -> CheckAttack ->.th_missile
To fix the monster, simply add the following lines
void () vorebabe_run1 = [1, vorebabe_run2] {ai_run(1);};
void () vorebabe_run2 = [2, vorebabe_run3] {ai_run(4);};
void () vorebabe_run3 = [3, vorebabe_run4] {ai_run(3);};
void () vorebabe_run4 = [4, vorebabe_run5] {ai_run(5);};
void () vorebabe_run5 = [5, vorebabe_run6] {ai_run(6);};
void () vorebabe_run6 = [6, vorebabe_run7] {ai_run(4);};
void () vorebabe_run7 = [7, vorebabe_run8] {ai_run(4);};
void () vorebabe_run8 = [8, vorebabe_run9] {ai_run(3);};
void () vorebabe_run9 = [9, vorebabe_run10] {ai_run(5);};
void () vorebabe_run10 = [10, vorebabe_run1] {ai_run(6);};
You'll notice the similarity to the vorebaby_walk lines, but that we call ai_run not ai_walk, which is only designed for walking to path_corners. We are reusuing frames 1 through 10, which is allowed : - )
The final part of the fix is to change the line
self.th_run = vorebabe_walk1; to
self.th_run = vorebabe_run1;. Once he wakes up, his behaviour will change to vorebaby_run1, which will check for and call missile attacks.
One final thing I noticed is that the frame numbers you are calling in the code don't quite agree with the model. The frame numbers for the walk sequence in the model are 0,1,2...9, not 1,2,3...10 - the first frame in the model is frame number 0. I've not fixed this in the run code I posted, as frame 10 happens to look much like frame 0, so the animation loops. Perhaps it would be best to use the frame macros $walk1, $walk2 etc in the code rather than the numbers directly, as it's easier to number them correctly like that.
You'll need to fix the frame macro definitions first, take out the dollar signs in the names in the header(but NOT the main code where you add them back in). The first one should read
$frame walk1 walk2 walk3 walk4 walk5 walk6 walk7 walk8 walk9 walk10 with only the $frame retaining the dollar sign, and do the same for the rest of the header. But when you use it in the frame function you put the dollar sign back in, eg:
void () vorebabe_run1 = [$walk1, vorebabe_run2] {ai_run(1);};
Hope that's clear.
Kell:
#5396 posted by metlslime on 2006/10/05 17:22:57
How do you load them though? Are you using the latest ( october 1st ) build?
I load them by opening another map that uses them (sad but true.)
And yes, i am using the october 1st build...
Thanks A Lot!
#5397 posted by madfox on 2006/10/05 20:16:39
preach, although I have read most of the qc files now, I still can't see the logic relations between them, but I'm learning.
I saw the nummers of frames once start with 0 and then with 1. I couldn't get the death frame right, it always jumped back to the stand frame. So I added a death frame and then it didn't occure.
I experimented with pasting parts of the monster attacks into it, but kept errors (of course). Now I can tune it better in.
Host Error
#5398 posted by madfox on 2006/10/05 21:24:17
After I made the changes I can't start Quake.
CALL0 : 1455 (?)
ai.qc : ai_run
vorebabe.qc : vorebabe_run1
NO FUNCTION
I think I have made no definition for the ai_run, but I don't know how.
http://members.home.nl/gimli/vorebabe.qc
And I Run...
#5399 posted by Preach on 2006/10/06 01:05:36
The problem is now too much running. When a monster calls ai_run but doesn't have a target, as happens when this monster spawns, it decides to try and walk if it has a movetarget, or stand otherwise. The problem is that at the moment you've given it the same standing animation as the run animation, so it calls ai_run again, trapping it in a loop.
The fix is to put back the walk frames AS WELL. Don't replace the run animations, but add these functions too:
void () vorebabe_stand1 = [$walk1, vorebabe_stand1] {ai_stand();};
void () vorebabe_walk1 = [$walk1, vorebabe_walk2] {ai_walk(1);};
void () vorebabe_walk2 = [$walk2, vorebabe_walk3] {ai_walk(4);};
void () vorebabe_walk3 = [$walk3, vorebabe_walk4] {ai_walk(3);};
void () vorebabe_walk4 = [$walk4, vorebabe_walk5] {ai_walk(5);};
void () vorebabe_walk5 = [$walk5, vorebabe_walk6] {ai_walk(6);};
void () vorebabe_walk6 = [$walk6, vorebabe_walk7] {ai_walk(4);};
void () vorebabe_walk7 = [$walk7, vorebabe_walk8] {ai_walk(4);};
void () vorebabe_walk8 = [$walk8, vorebabe_walk9] {ai_walk(3);};
void () vorebabe_walk9 = [$walk9, vorebabe_walk10] {ai_walk(5);};
void () vorebabe_walk10 = [$walk10, vorebabe_walk1] {ai_walk(6);};
Then set the lines in monster_vorebabe to look like:
self.th_stand = vorebabe_stand1;
self.th_walk = vorebabe_walk1;
self.th_run = vorebabe_run1;
Then compile and it'll work.
One more thing, you have the glowing effect on for a few frames, which works fine, except it's possible for the monster to die or go into pain inbetween the light going on and the attack turning it off. This means the light doesn't turn off again, which probably isn't what you want. Add self.effects = 0; to the top of vorebabe_die and to the bottom of vorebabe_pain - so only turn the effect off if the vorebabe actually goes into pain, but do it before you think about gibbing it.
Pointless Feature Idea
#5400 posted by neg!ke on 2006/10/06 01:40:19
a "light" field on funcs that lights their faces according to its value?
Metlslime
#5401 posted by Kell on 2006/10/06 01:59:10
#5402 posted by gone on 2006/10/06 04:57:29
you can load jpg/tga textures by loading a folder
textures -> directory list then "load"
AguirRe
#5403 posted by gone on 2006/10/06 08:13:43
Thanks a lot, it works fine (so far :))
makes mapping in radiant much easier
Good
#5404 posted by aguirRe on 2006/10/06 10:26:10
Yeah!!!
#5405 posted by madfox on 2006/10/06 13:05:06
Wauw Preach, that's what I searched!
Although you're magic scriptions aren't really clear to me, they seem to plot their aim.
I've seen so many errors now in proqcc I finally can't believe it works. Now I can add two monsters, and change their behaviour.
I have been looking to the shallrath.qc
I wanted making it throw eggs on the player, that explode these vorebabes.
So I first changed the missiles into grenades, and changed the grenade.mdl into an egg.mdl
When these eggs explode, it would spawn two or three vorebabes.
The first thing went right, the shallrath throws eggs, but the attack amount is much too high. I'm looking for the attack time, but have'nt found it yet.
Another thing is to respawn the vorebabes.
I thought to use the multigrenade code, as it has something in common. They first stick at the wall and then explode. But it is more the subroutine of making something respawn after a grenade explosion I meant.
But I think it needs a lot of coding, when a shalrath respawns two vorebabes, it needs another attack, otherwise there'll be soon to much monsters in play.
Hey.., thanks a lot again.
Kell/Speeds:
#5406 posted by metlslime on 2006/10/06 13:27:57
here is the july version Shaderman linked on Map-Center, it has q1 wad support:
Thanks, I'll check it out.
you can load jpg/tga textures by loading a folder
textures -> directory list then "load"
Ah, but q1 map files don't have directory paths in the map file, so you have to put the textures in id1/textures/ rather than id1/textures/blah/ and id1//textures/ doesn't show up in the directory list.
Water Flow Creation
#5407 posted by JPL on 2006/10/06 14:26:18
I have a small question: I would like to create a flow, in order to force the player to go in a certain direction while crawling.... I tested trigger_push, but unfortunately having a wind sound in the water is not realistic...
So, is there any method to perform a water flow without any sound ?
Invisible, Silent Func_trains
#5408 posted by metlslime on 2006/10/06 16:12:10
maybe?
Water Current
#5409 posted by Kell on 2006/10/06 17:06:12
we'll try to add something like that to Quoth pak1
JPL
#5410 posted by madfox on 2006/10/06 19:16:52
The extras pack has a nice waterflow.
You should cheque it out.
http://members.home.nl/gimli/extras_r4.zip
Kell:
#5411 posted by metlslime on 2006/10/06 23:00:12
thanks again! wads loading in radiant! OMG!
Metlslime / MadFox
#5412 posted by JPL on 2006/10/07 01:39:01
Thanks a lot for your help...
Resetting A Counter...
#5413 posted by generic on 2006/10/08 08:35:48
I can't seem to wrap my brain around it, but can you set up a scenario where you have to keep more than one button pressed, in order to keep a door open, using a counter? I.e. failure to do so in a timely manner causes you to have to go back and forth until all the buttons are pressed.
I assume having the correct number of buttons reported to player via the counter could be problematic:
Only 1 more to go... >> Only 2 more to go... >> Only 1 more to go...
You Could Do It With Logic Gates That Close After A Certain Time
#5414 posted by czg on 2006/10/08 08:55:31
But not with printing anything worthwhile to the player.
What Czg Said
#5415 posted by R.P.G. on 2006/10/08 09:03:40
See this post here about logic gates if you're not familiar already.
http://www.celephais.net/board/view_thread.php?id=37116&start=22
You Could Do It With Logic Gates That Close After A Certain Time
#5416 posted by czg on 2006/10/08 09:32:35
But not with printing anything worthwhile to the player.
Func is being a stupid whore and not responding to my requests so this probably gets doubleposted.
You Could Do It With Logic Gates That Close After A Certain Time
#5417 posted by czg on 2006/10/08 09:48:24
What the hell it's already posted why are you such a dick today, func?
|
|
You must be logged in to post in this thread.
|
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.
|
|