
EDuke32 Scripting "CON coding help"
#3155 Posted 28 December 2022 - 03:57 PM
I've started with this;
action CALLON 1 1 1 1 1 // advance one frame define CALLUP 5872 useractor notenemy CALLUP { ifn sprite[].lotag 0 geta[].lotag lotagsaved } enda define CALLDN 5874 useractor notenemy CALLDN { ifn sprite[].lotag 0 geta[].lotag lotagsaved } enda
Although there are 2 actors, only one will be tagged at a time; the other untagged one will just be for decoration.
I'm not asking to be spoon-fed the answer, but will I need to manipulate a game event so that if the touchplate lotag equals the 'lotagsaved' variable then the action CALLON will run for a certain actioncount?
The art tiles:
This post has been edited by MC84: 28 December 2022 - 04:09 PM
#3156 Posted 28 December 2022 - 08:11 PM
case CALLUP { ifn sprite[].lotag 0 geta[].lotag lotagsaved } break case CALLDN { ifn sprite[].lotag 0 geta[].lotag lotagsaved } break case TOUCHPLATE { ife sprite[].lotag lotagsaved { set linked 1 } } break
Then under the actor declaration I've put this;
action CALLON 1 1 1 1 50 // advance one frame useractor notenemy CALLUP { cstat 80 ifaction CALLON { soundonce 35 ifactioncount 64 { action ZERO break } } ife linked 0 nullop else ife linked 1 { action CALLON } } enda
However, even if I remove the above actor code, it appears that just this statement on its own
case CALLUP { ifn sprite[].lotag 0 geta[].lotag lotagsaved } break
causes the actor CALLUP to disappear when the game runs... Maybe I'm trying to be too ambitious here but can anyone point out why this is occurring?
#3157 Posted 28 December 2022 - 08:26 PM
The exceptions to what I just wrote are the hardcoded effector sprites such as SE, RESPAWN, etc which were designed to have the tags left on them.
#3158 Posted 29 December 2022 - 11:29 AM
AVG antivirus does not really likes the latest Eduke32 and Mapster32 synthesis, they are seen as malware/virus, without even control if the files are false positives. Does not happen with Debug versions.
This post has been edited by Fantinaikos: 29 December 2022 - 11:31 AM
#3159 Posted 29 December 2022 - 05:28 PM
If it's any consolation, I once had my own antivirus trigger after running the eduke32.exe that I just had compiled seconds beforehand.
#3160 Posted 30 December 2022 - 05:22 PM
This post has been edited by MC84: 30 December 2022 - 05:26 PM
#3161 Posted 30 December 2022 - 08:17 PM
#3162 Posted 30 December 2022 - 09:17 PM
VGames, on 30 December 2022 - 08:17 PM, said:
use EVENT_GAME since it doesn't have actor status. In that event,
ifactor APLAYER ife THISACTOR player[].holoduke_on { // put your holoduke code here }
#3163 Posted 31 December 2022 - 12:41 AM
Setting the actor's shade once or multiple times does not work, nor does shadeto, presumably because it is taking the floor's shade/pal after.
So next to try is cstator noshade then set the shade to 0 or -127 and wait to remove noshade on the next tick. If taking off noshade makes the shade jump straight to the floor value instead of fading then 1 or 2 ticks of shadeto before.
Is there an existing command to brighten on shots (or invoke the hardcoded version for another sprite)?
#3164 Posted 31 December 2022 - 02:21 AM
EDIT: I've never used it before, but there is an htflag for hardcoded badguy. I have no idea whether it would cause the sprite to brighten upon firing.
This post has been edited by Danukem: 31 December 2022 - 03:12 AM
#3165 Posted 31 December 2022 - 09:51 AM
lllllllllllllll, on 31 December 2022 - 12:41 AM, said:
Setting the actor's shade once or multiple times does not work
What are you setting the shade to in your code? Setting the actor shade to -127 should illuminate them when they shoot the way hardcoded enemies illuminate. Like:
shoot SOMETHING seta .shade -127
That should be all it takes.
#3166 Posted 31 December 2022 - 10:21 AM
Setting it at spawn I don't see any side effects so far
Reaper_Man, on 31 December 2022 - 09:51 AM, said:
shoot SOMETHING seta .shade -127
That should be all it takes.
It doesn't visibly change
#3167 Posted 31 December 2022 - 12:51 PM

This post has been edited by jimbob: 31 December 2022 - 12:52 PM
#3168 Posted 31 December 2022 - 01:16 PM
lllllllllllllll, on 31 December 2022 - 10:21 AM, said:
Setting it at spawn I don't see any side effects so far
We are talking about the 262144 flag right?
#3169 Posted 31 December 2022 - 01:52 PM
This post has been edited by VGames: 31 December 2022 - 01:53 PM
#3170 Posted 31 December 2022 - 02:08 PM
Dunno when I need "or" I set the vars in such a way that 2 of the 3 values can be lumped together using >, <, and not=
#3171 Posted 31 December 2022 - 02:24 PM
VGames, on 31 December 2022 - 01:52 PM, said:
There really isn't, at least not for generically evaluating statements. You can however use ifor to evaluate pairs of values, providing that they are constants, vars, or specific struct members. For example:
ifor player[].heat_on player[].jetpack_on
al THISACTOR
That code will put the value of THISACTOR in the log when either the goggles are on or the jetpack is on. But the following will NOT compile:
ifor { ifg player[].htextra 0 } { ifg player[].shield_amount 0 } al THISACTOR
And removing the { } would change the meaning.
#3172 Posted 31 December 2022 - 02:32 PM
lllllllllllllll, on 31 December 2022 - 02:08 PM, said:
By the way, I don't understand why your enemies aren't already lighting up when they fire. Mine do automatically, and I have not added that flag to them. I do define them as enemy -- are you not doing that?
#3173 Posted 31 December 2022 - 07:29 PM
onevent EVENT_LOADACTOR switch sprite[].picnum case SEENINE // Alternate explosions { ifn sprite[].extra -1 geta[].extra extrasaved } break endswitch endevent
I had then initially put the following under EVENT_SPAWN... however I have moved it to EVENT_EGS;
onevent EVENT_EGS switch sprite[].picnum case EXPLOSION2 // Alternate explosions { seta[].extra actorvar[sprite[].owner].extrasaved ife sprite[].extra extrasaved { action ASMOKEBLAST1 } else nullop } break endswitch endevent
However it's now doing the opposite of what I intended - if I leave the SEENINE with an extra of -1; they spawn ASMOKEBLAST1, and if I give them an extra value they play the default EXPLOSION2... I suspect I do not properly understand the following command;
seta[].extra actorvar[sprite[].owner].extrasaved
Does this assign the saved extra value (extrasaved) from EXPLOSION2's 'owner' SEENINE to EXPLOSION2?
--- I also wanted to know if switch statements can be nested? IE calling a state within a switch statement that also contains a switch statement?
This post has been edited by MC84: 31 December 2022 - 07:53 PM
#3174 Posted 31 December 2022 - 08:45 PM
Danukem, on 31 December 2022 - 02:32 PM, said:
The actor that was causing problems was BOSS4. I had thought the useractor was only lighting properly because it was using the trooper's firelaser and the newbeast using shrinker.
#3175 Posted 31 December 2022 - 09:18 PM
lllllllllllllll, on 31 December 2022 - 08:45 PM, said:
The vanilla BOSS4 doesn't shoot anything. What are you having it shoot?
#3176 Posted 31 December 2022 - 09:28 PM
MC84, on 31 December 2022 - 07:29 PM, said:
1. In the load actor event, when you grab the altered EXTRA value into a var, it's best to then set the EXTRA back to -1 (just in case the altered extra does something).
2.
case EXPLOSION2 // Alternate explosions { ifn sprite[].owner -1 getav[sprite[].owner].extrasaved extrasaved // CHOOSE A SPECIFIC NUMERICAL VALUE FOR THE ALTERNATE EXPLOSION // LET'S SAY 2 ife extrasaved 2 cstat 32768 // we are just turning it invisible for now } break
3.
Here's the vanilla EXPLOSION2 code:
action EXPLOSION_FRAMES 0 20 1 1 4 actor EXPLOSION2 1 EXPLOSION_FRAMES ifactioncount 20 killit enda
Here's what should be your version:
action EXPLOSION_FRAMES 0 20 1 1 4 action ASMOKEBLAST1 blah blah blah blah actor EXPLOSION2 1 EXPLOSION_FRAMES ife extrasaved 2 ifaction EXPLOSION_FRAMES { action ASMOKEBLAST1 cstat 0 } ifactioncount 20 killit enda
#3178 Posted 01 January 2023 - 12:57 AM
I'll test useractors with custom projectiles and BOSS4 with stock projectiles to see if there's anything to that or not but it seems to just be an issue of how BOSS4 was implemented. I'm wondering if it's even included in killcount or not.
#3179 Posted 01 January 2023 - 01:57 PM
The map I was testing on has some stock enemies in a dark room with the custom ones so it's not a case of none of the shot flashes working, and the animations/projectiles themselves are very distinct as not to mix up which are being shot directly and which are shot by proxy.
I was very happy at seeing BOSS4 light up for the first time I'm not crazy really~~
#3180 Posted 01 January 2023 - 02:18 PM
lllllllllllllll, on 01 January 2023 - 01:57 PM, said:
The map I was testing on has some stock enemies in a dark room with the custom ones so it's not a case of none of the shot flashes working, and the animations/projectiles themselves are very distinct as not to mix up which are being shot directly and which are shot by proxy.
I was very happy at seeing BOSS4 light up for the first time I'm not crazy really~~
Don't feel too bad -- I have been gaslit by Duke many times.
#3181 Posted 01 January 2023 - 08:50 PM
After doing this the load time dropped quite a bit and that was about when I was trying out the htflag.
#3182 Posted 02 January 2023 - 10:35 AM
#3183 Posted 02 January 2023 - 12:32 PM
VGames, on 02 January 2023 - 10:35 AM, said:
This is probably due to these walls being parts of moving sectors (like doors), the bulletholes won't appear on them, as they wouldn't be carried along (and would look stupid just hanging there in the air if the door moves
