Jump to content
Search In
  • More options...
Find results that contain...
Find results in...


  • Content count

  • Joined

  • Last visited

About CamtheCat

  • Rank
    Warming Up
  1. So I am just getting familiar with Strife dialogue & conversation in Doom in Hexen format maps in Doom Builder 2 (so bare with me), but thus far have been fairly successful in my incarnations. But I have come upon a roadblock for which I have found no solution. It revolves around the use of ConversationIDs & attempting to control when a player can talk to an NPC about what. It appears as if merely setting a particular ACTOR's property in DECORATE to a certain ConversationID makes one always able to go up to that player & engage in a dialogue, regardless of whether Thing_StartConversation is assigned to that NPC or not. But then it begs the question what is the point of Thing_StartConversation & Thing_SetConversation, & how are they implemented (their ZDoom wiki definitions are sparse of information)? My Doom Builder 2 ACS scripting doesn't appear to work or be compatible with Thing_SetConversation, which seems to be the missing link to my problem. I'm essentially trying to create a work-around to avoid setting an ACTOR's property to a specific ConversationID so that I don't automatically engage in conversation with the NPC when I walk up to him. I want to be able to control at what point he is able to speak to me, but whenever I try to use Thing_SetConversation to assign a particular NPC with a particular TID to a particular convoID at a particular time, the ACS script complier says the function is "used but not defined". Is there something I'm missing? Does anyone know how to actually incorporate Thing_SetConversation into a script?
  2. CamtheCat

    Select music for wad file?

    Hell Revealed is a user-made megawad, am I correct? If not then disregard my ramblings. You would need to use a 'WAD editor' like XWE (as opposed to a map editor like Doom Builder) in order to search the Hell Revealed wad & find the specific music file you are looking for. Then you would simply copy that file in XWE & open your own wad with XWE (make damn sure your map editor is never open at the same time as your WAD editor) to paste that music file into it. Then you would need to use XWE again & create a brand new document for your map in XWE called 'MAPINFO'. There you will need to create some info about your level so that the wad knows to play that specific music for the level. As an example, this would be the MAPINFO 'lump' (file basically) for the first level of DOOM II: --------------------------------- map MAP01 lookup "HUSTR_1" { titlepatch = "CWILV00" next = "MAP02" secretnext = "MAP02" sky1 = "SKY1" cluster = 5 par = 30 music = "$MUSIC_RUNNIN" } --------------------------------- Here, if you replace "lookup "HUSTR_1" " with just "TITLE HERE" of your map where TITLE HERE = your own unique title still in quotations, it will change & show the title at the end of the round along with the % of kills, items, secrets, & par-time (if your map has an end to it.) Same can be said of a few of these parameters, you can change them & you can add an additional new 'sky2' if you feel like it. The "par", of course, is the par time. The '30' implies seconds here, it gives you 30 seconds as the time to complete on the map to be at or under "par" time. Now we get to the question you were really asking about, & that has to do with "music". If you see here, the music's title is in quotations with an $ in front of it. The $ signifies it is a string which should refer back to some other document in your wad called 'LANGUAGE', but we don't need to distract ourselves with that. I'm assuming you used MAP01 as the starting point for your file, if not then refer to this awesome thread for more information: http://www.doomworld.com/vb/doom-editing/52467-i-need-an-original-doom-2-mapinfo-lump/ But anyway, in order to sync up your music to be the music for that particular level, change "$MUSIC_RUNNIN" to "TITL_HRE" with TITL_HRE = your music file's title up to 8 characters long again still in quotations in MAPINFO. That is really all that needs to be said, when you load up the map in ZDoom/Doom Builder, it will play the music that you desire for the level.
  3. I think the key here is that you have to make a new player class if you want the PLAYER sprites to change. My former post made use of changing the MARINE bot sprites. But the principal is the same really in DECORATE. Instead of Marine : Marine, do this: NewPlayer : DoomPlayer Then apply the translation effect in the same way. Finally, you have to make a MAPINFO lump in XWE as well to add your new player class to a GameInfo category, like this: -------------------------------------------- GameInfo { playerclasses = "PlayerPawn", "NewPlayer" } -------------------------------------------- http://zdoom.org/wiki/MAPINFO/GameInfo_definition
  4. I think what you want is the 'translation' effect by creating a new player class in a DECORATE file in XWE. Here's an example: --------------------------------- ACTOR MarineVariant : MarineSSG { //$Category Marines Translation 2 } --------------------------------- This translates the marine's sprites to default RED color. And here's a more advanced example using DOOM's color palette to create a variety of colors. For good measure, I always use the default green color (112:127) as the color being 'translated': --------------------------------- ACTOR MarineChange : MarinePlasma { //$Category Marines Translation "112:127=201:208" } --------------------------------- This translates the marine's sprites from default GREEN color to a royal BLUE color. More information can be found here: http://zdoom.org/wiki/Translation http://zdoom.org/wiki/Palette
  5. CamtheCat

    Making an Advanced On-Screen Timer

    Damn, see, I would have never figured that out with my half-assed math. Thank you all for taking the time to respond & provide your own solutions.
  6. Okay, so I'll be the first to admit that I suck at math, so for the past few days I've been wracking my brain trying to figure out how to get a modulus operator to work for an advanced timer, if at all possible. I searched on the ZDoom Wiki about implementing on-screen timers via print & HUD Message, & found this nice ACS script example: ------------------------------------------------------------------- script 1 ENTER { int t; while(TRUE) { t = Timer() / 35; HudMessage(d:t/60, s:":", d:(t%60)/10, d:t%10; HUDMSG_PLAIN, 1, CR_RED, 0.95, 0.95, 2.0); Delay(35); } } ------------------------------------------------------------------- But this timer's smallest unit of time is the 'second', & what I am trying to accomplish is to basically make a more advanced timer that counts even more accurately to 'tenths of a second'. Now, I don't know if this is even possible due to the limitations of using 'tics' as units of time instead of 'seconds', but it at least seemed mathematically possible, but I am stumped how to get the timer to correctly tally 'tenths of a second'. I even tried some pretty crummy math to get 35 'tics' = 1 'second' to be the same as 3.5 'tics' = 1/10th of a 'second' or (35/10) 'tics' = 1/10th of a 'second', but again, I suck at modulus operators. So...is this even possible at all, or is the 'second' the smallest unit of time able to be calculated in a DOOM timer?
  7. CamtheCat

    Methods to making underwater only monsters?

    The problem with that though, is underwater monsters have to have the +NOGRAVITY & +FLOAT flags to give them the illusion of being suspended in water, so there's still nothing essentially keeping them from rising up above the waterline.
  8. CamtheCat

    polyobj question

    Could it have been an ANIMDEF, not a polyobject? I could be wrong. I'm not very well-versed with polyobjects, but I know many complicated forms can be made with PolyObject_ExplicitLine. Perhaps you can use a combination of that with PolyObject_DoorSwing to get the desired effect, although I'm not exactly sure how to go about it.
  9. CamtheCat

    Polyobject mirror mishap - ZDoom - Doom Builder 2

    Thanks a lot, this may be very helpful in the future. Having done a good bit of experimental polyobject testing at this point, I realize now that even if I can give the polyobjects the appearance of having a finite height, the polyobjects themselves cannot be walked over even in 3-D form, which was one of my original intentions. But all in all, a good learning experience.
  10. I'm using Doom in Hexen format, & I seem to have come across quite a little problem which may or may not be fixable. This is really the first time I've dabbled into polyobjects, & it started out somewhat successfully but now I've hit a brick wall. The problem is I am trying to implement a two-polyobject system with a little sandwich crushing wall action. I am trying to make two polyobjects of finite height, yet I cannot get my polyobjects to mirror properly, having followed all the proper mirroring steps. The thing is, when I first made the polyobjects, they were void spaces with single-sided line defs, & pressing a switch would trigger both the polyobject & its mirror to crush the player betwixt them like I wanted. But of course the problem being that the polyobjects were of infinite height & thus made the area look weird & lose its functionality. So I went to the dummy sector, made the void spaces into sectors, again changed the lines defs to single-sided ones, & adjusted each polyobject sector to the appropriate height I desired. So now in doing that I have somehow severed the mirror-ability of the 2 polyobjects, & upon pressing the switch which activates them to crush the player, only one of the finite-height polyobjects moves as intended. Is there any way to overcome this? I could foresee just making the switch linedef be an activated script which individually activates each polyobject, but then again that would defeat the purpose of mirroring the polyobjects as was possible with the void spaces.