EDuke32 Scripting "CON coding help"
#3211 Posted 10 January 2023 - 11:44 PM
Since cstat
8192 is dynamic shadow
16384 is invis with dynamic shadow
32768 is invis
Maybe 65536 , 131072, or 262144
Emitting dynamic light is 256 in spriteflags and I don't think there's much chance a receiving dynamic flag is hidden at the bottom (536870912, 1073741824, 2147483648)
There should not be any arbitrary non-powers of 2 like in the WORKSLIKE flags because those are brought on by one value or the other being impossible to use together.
#3212 Posted 11 January 2023 - 12:47 AM
#3213 Posted 11 January 2023 - 06:21 AM
This post has been edited by VGames: 11 January 2023 - 06:23 AM
#3214 Posted 11 January 2023 - 11:25 AM
VGames, on 11 January 2023 - 06:21 AM, said:
nonono, I was saying they don't exist. You literally can't enter a higher value than that, mapster won't even let you.
#3215 Posted 11 January 2023 - 12:43 PM
#3216 Posted 11 January 2023 - 09:16 PM
This one is popping up as if it has not yet been cstat'd while none of the others have this problem.
#3217 Posted 11 January 2023 - 09:20 PM
#3219 Posted 12 January 2023 - 02:13 AM
speaking of the heavyhbomb, would it theotretically work if i check if its moving to play a random "rolling on the floor" sound like in Powerslave/Exumed? with a iffloordist check ofcourse.
This post has been edited by jimbob: 12 January 2023 - 02:15 AM
#3220 Posted 12 January 2023 - 02:30 AM
jimbob, on 12 January 2023 - 02:13 AM, said:
If it was me I would just replace it with my own actor as you suggested. It's a cleaner solution than trying to fight the hardcoding.
jimbob, on 12 January 2023 - 02:13 AM, said:
Yes, but also stop the sound when it stops moving or when it blows up.
#3221 Posted 12 January 2023 - 03:33 AM
Danukem, on 12 January 2023 - 02:30 AM, said:
Quote
nice, i'll look into it.
#3222 Posted 15 January 2023 - 09:05 PM
#3224 Posted 20 January 2023 - 01:22 AM
i think i did a rough google translate version of it but i dont know if i still have it.
This post has been edited by jimbob: 20 January 2023 - 01:23 AM
#3225 Posted 20 January 2023 - 02:34 AM
1) Put all of the graphics you need for displaying the weapon in the game (.art tiles, DEFed in models, or whatever medium you are using)
2) Add all the sounds, too, with definesound and whatever sound files you are using
3) Decide what weapon slot your weapon is going on, and set the predefined values for that weapon slot to the values you want. https://wiki.eduke32...efined_gamevars
3.1 For example, if it is going on the pistol slot and you want it to shoot ROCKETS, then in your code declare "gamevar WEAPON1_SHOOTS RPG 1"
3.2 Study the list of weapon variables and experiment with changing the values on them. Spend some time on this. Just try changing the SHOTSPERBURST on a weapon, its TOTALTIME, what it SHOOTS, the sound it makes when it shoots, etc etc etc. Spend hours on this if necessary and do not move on until you are competent at changing the more important vars and understanding what they do.
4) If needed, define a custom projectile for your weapon to shoot. Skip this step if it is going to shoot one of the projectiles already in the base game. https://wiki.eduke32...efineprojectile
4.1 Look at the linked entry on defineprojectile. It's accurate and even has an example. If you set WEAPONX_SHOOTS to your custom projectile tile number, your weapon will shoot that projectile.
4.2 There are literally hundreds and probably thousands of custom projectiles defined in various released mods. Maybe take a look at them if you aren't sure on what values to use. You are looking for entries that say "defineprojectile" in the code.
4.3 If your custom projectile spawns something and/or has a trail, select the relevant actors for that or make them if needed.
5) If you are using your own weapon art, then use https://wiki.eduke32...VENT_DRAWWEAPON to cancel out the hardcoded display of the weapon on your slot and then display your weapon.
5.1. E.g. if you are using the pistol slot then use "ife currentweapon PISTOL_WEAPON set RETURN -1" to cancel out the hardcoded display of the pistol.
5.2 Use the rotatesprite command to draw your weapon. This may require multiple draws depending on what is going on (.e.g if the weapon is reloading you may be drawing the weapon plus a separate hand sprite and also a clip sprite)
5.3 Weapon positioning is somewhat trial and error ,but there are many examples to look at in various mods. In general, though, you start with base x and y values for the screen coordinates that put the weapon in the right place, and you adjust those based on certain hardcoded values relating to weapon sway and bob. You want to subtract looking_angSR1 from x, add weapon_xoffset to x, add looking_arc to y, and subtract gun_pos from y (all of those constantly updated vars have wiki entries and most of the examples I alluded to use those vars to adjust positioning).
5.4 You can disregard the hardcoded weapon sway and bob stuff and make your own, though.
5.5 weaponcount in the display event is equivalent to player[].kickback_pic and obviously you want your display to change depending on the weaponcount in most cases. Since you studied the weapon properties page and experimented, you know that the max weaponcount is the WEAPONX_TOTALTIME.
#3226 Posted 21 January 2023 - 03:52 PM
#3227 Posted 21 January 2023 - 04:06 PM
#3229 Posted 21 January 2023 - 11:43 PM
lllllllllllllll, on 21 January 2023 - 11:22 PM, said:
I forgot about that one.
#3230 Posted 24 January 2023 - 12:27 PM
#3231 Posted 25 January 2023 - 02:22 AM
If by correct you're talking about sleeping actors getting squished it won't matter what method is used when it's placed inside the actor's code (it won't work during sleep).
This post has been edited by lllllllllllllll: 25 January 2023 - 02:24 AM
#3232 Posted 26 January 2023 - 11:08 AM
#3233 Posted 26 January 2023 - 12:50 PM
lllllllllllllll, on 25 January 2023 - 02:22 AM, said:
If by correct you're talking about sleeping actors getting squished it won't matter what method is used when it's placed inside the actor's code (it won't work during sleep).
Why not use ifgapzl ?? The distance to the ceiling alone is not a reliable indicator since an actor could jump or fly near the ceiling and be quite far from the floor.
VGames, on 26 January 2023 - 11:08 AM, said:
Of course, it's not even hardcoded. Just modify the state that makes the jib sounds in the CON code.
#3234 Posted 26 January 2023 - 01:25 PM
With gapz they would trigger a squish by roaming into a tiny sector when they're shrunk. I didn't know gapz existed though.
#3235 Posted 26 January 2023 - 03:19 PM
RPD Guy, on 24 January 2023 - 12:27 PM, said:
Why is ifsquished not viable?
Looking at the source code, the short answer of how it works is it checks if the difference between the sprite's sector floor and ceiling is less than or equal to 3072, and if so then it is "squished".
There's a bunch of other checks - if the sprite is PAL 1 (meaning they are frozen) then the distance is actually 8192, if they are NOT in an "above water" sector or a ST 23 Swinging Door sector, so on - but depending on what you're doing or why ifsquished isn't viable, they may not necessarily be relevant to replicate.
#3236 Posted 28 January 2023 - 10:35 AM
Reaper_Man, on 26 January 2023 - 03:19 PM, said:
Looking at the source code, the short answer of how it works is it checks if the difference between the sprite's sector floor and ceiling is less than or equal to 3072, and if so then it is "squished".
There's a bunch of other checks - if the sprite is PAL 1 (meaning they are frozen) then the distance is actually 8192, if they are NOT in an "above water" sector or a ST 23 Swinging Door sector, so on - but depending on what you're doing or why ifsquished isn't viable, they may not necessarily be relevant to replicate.
I don't want to use "ifsquished" because of the hard-coded quote #10 "SQUISHED!" that keeps showing up.
I'll try this one
Reaper_Man, on 26 January 2023 - 03:19 PM, said:
#3237 Posted 28 January 2023 - 10:59 AM
Reaper_Man, on 26 January 2023 - 03:19 PM, said:
It seems to be working fine.
var b_is_squished FALSE 2 var b_distance 0 2 defstate b_global_check_squished set b_is_squished FALSE set b_distance 0 geta[THISACTOR].sectnum b_sectnum ife b_sectnum -1 { set b_is_squished TRUE // out of bounds? } else { gets[b_sectnum].ceilingz b_ceilingz gets[b_sectnum].floorz b_floorz set b_distance b_floorz sub b_distance b_ceilingz ifg b_distance 3072 { nullop } else { set b_is_squished TRUE } } ends
This post has been edited by RPD Guy: 28 January 2023 - 11:01 AM
#3238 Posted 28 January 2023 - 12:11 PM
Otherwise if you still want to go with a custom route, you may run into problems with TROR sectors and actors being "squished" by portals they should be able to pop through. Also you could streamline your code a fair bit:
var b_is_squished FALSE 2 var b_distance 0 2 defstate b_global_check_squished set b_is_squished FALSE set b_distance 0 geta[THISACTOR].sectnum b_sectnum ife b_sectnum -1 set b_is_squished TRUE // out of bounds? else { set b_distance sector[b_sectnum].floorz sub b_distance sector[b_sectnum].ceilingz ifl b_distance 3072 set b_is_squished TRUE } ends
#3239 Posted 03 February 2023 - 12:56 AM
actor A ifhitweapon ifdead iffloordistl 8 //for actor B's floordist enda
And are states purely for convenience? Putting them behind conditionals won't make an actor lighter up until it fires?
#3240 Posted 03 February 2023 - 01:09 AM
lllllllllllllll, on 03 February 2023 - 12:56 AM, said:
No.
lllllllllllllll, on 03 February 2023 - 12:56 AM, said:
Convenience and reducing the amount of code that needs to be compiled, on the assumption that a state will be called in more than one place.