EDuke32 Scripting "CON coding help"
#3301 Posted 19 April 2023 - 12:30 PM
like just semi randomly place the starting position, then use whatever code there is to teleport the player to XY coördinate and start from there?
#3302 Posted 19 April 2023 - 12:41 PM
#3303 Posted 19 April 2023 - 04:34 PM
Danukem, on 19 April 2023 - 12:01 PM, said:
Looking at the source it seems like that's down in the engine side of things, and never exposed. I'd think the closest you could get is checking the player's position in EVENT_ENTERLEVEL, they should be initialized by that point.
#3304 Posted 19 April 2023 - 07:58 PM
Reaper_Man, on 19 April 2023 - 04:34 PM, said:
Thanks, but the particular issue that has been reported to me is that the angle of the green start arrow in mapster is not preserved and the player is starting at a different angle. I haven't checked yet but I suspect it is already messed up by the time of ENTERLEVEL
#3305 Posted 20 April 2023 - 02:03 PM
#3306 Posted 23 April 2023 - 01:12 PM
Reaper_Man, on 20 April 2023 - 02:03 PM, said:
I'm getting reports from mappers in our own project about the player always starting facing west on the maps they are working on, but that's definitely not the case when I test our predefined episodes. So I don't know... there might be an issue in my code somewhere.
Anyway, I still wish I could access the mapster start coords/angle in CON. Oh well.
#3307 Posted 27 April 2023 - 07:26 PM
Currently my AI is just the following;
ai AIVALDODGE AVALSTRAFE VALRUNVEL dodgebullet
I've tried it with 'geth' instead but that doesn't make much difference.
#3308 Posted 27 April 2023 - 08:05 PM
#3309 Posted 29 April 2023 - 07:56 PM
#3310 Posted 30 April 2023 - 02:49 AM
#3311 Posted 30 April 2023 - 03:03 AM
Danukem, on 30 April 2023 - 02:49 AM, said:
Well the drop velocity works fine; however I wanted it to rise up in the air first before falling... and I agree with you - I wasn't being dismissive regarding your earlier post - I sincerely intend to figure out how to manipulate actor movement.
#3312 Posted 30 April 2023 - 11:57 AM
MC84, on 30 April 2023 - 03:03 AM, said:
That's why you use zshoot or ezshoot and put a negative vertical velocity on the projectile to compensate for the drop, in proportion to the xy distance to the target (the exact amount will also depend on the projectile's defined xy velocity).
#3314 Posted 06 May 2023 - 11:43 AM
onevent EVENT_SPAWN ifactor DRONEMOTHER ifg sprite[].xrepeat 4 state mtrsort endevent state mtrsort cstator 257 getactor[THISACTOR].pal queenp //palette stored at spawn ifspritepal 10 { sizeat 38 44 set queend 1 } else sizeat 28 28 ends //when the enemy fires the projectile eshoot RCORE3 setactor[RETURN].pal queenp //stored palette used //the spritepal is kept as a var instead of being used directly because the palette is set to 6 before and after the behavior each tic //swapping out 'getactor[THISACTOR].pal queenp' with 'set queenp #' did not fix
#3315 Posted 06 May 2023 - 01:28 PM
#3316 Posted 06 May 2023 - 02:17 PM
Danukem, on 06 May 2023 - 01:28 PM, said:
So Respawn is not using event_spawn?
If I'm reading this right sprite 414 is the placed enemy and sprite 5557 is the Respawn. I let them each fire the projectile once.
This would explain why 'set queenp 15' did not work earlier.
#3317 Posted 06 May 2023 - 02:37 PM
lllllllllllllll, on 06 May 2023 - 02:17 PM, said:
You really need to learn how to debug and make it a habit.
With a few lines of code, you can log the sprite number and tile number of anything passing through EVENT_SPAWN to see what is happening there.
My guess: like most sprites without specific hardcoding, your enemy is spawning extremely small and therefore dodging your "state mtrsort". Remember, unless a custom actor is sized immediately in EVENT_EGS, it's going to be small until its actor code kicks in, which happens after EVENT_SPAWN
#3318 Posted 06 May 2023 - 07:25 PM
What are you using to look at the hardcode?
#3319 Posted 10 May 2023 - 03:18 AM
#3320 Posted 10 May 2023 - 04:41 AM
#3321 Posted 10 May 2023 - 07:58 AM
#3322 Posted 06 June 2023 - 07:36 PM
defstate testDISPLAY ifcount 2 { randvar tempA 19 switch tempA case 0 { setvar tempB 9705 resetcount } break case 1 { setvar tempB 9706 resetcount } break case 2 { setvar tempB 9707 resetcount } break case 3 { setvar tempB 9708 resetcount } break case 4 { setvar tempB 9709 resetcount } break case 5 { setvar tempB 9710 resetcount } break case 6 { setvar tempB 9711 resetcount } break case 7 { setvar tempB 9712 resetcount } break case 8 { setvar tempB 9713 resetcount } break case 9 { setvar tempB 9714 resetcount } break case 10 { setvar tempB 9715 resetcount } break case 11 { setvar tempB 9716 resetcount } break case 12 { setvar tempB 9717 resetcount } break case 13 { setvar tempB 9718 resetcount } break case 14 { setvar tempB 9719 resetcount } break case 15 { setvar tempB 9720 resetcount } break case 16 { setvar tempB 9721 resetcount } break case 17 { setvar tempB 9722 resetcount } break case 18 { setvar tempB 9723 resetcount } break case 19 { setvar tempB 9724 resetcount } break endswitch } { rotatesprite 128 100 32768 0 tempB 0 0 0 windowx1 windowy1 windowx2 windowy2 } etc etc
The problem is that this same gamevar will always return the same value; ie instead of having each monitor display different screens at any one time, they all cycle through the same sequence of images in unison. I know there's a very bloated solution to this problem that would involve creating 20 switch statements, with 20 vars but that seems pretty excessive to me... Is there a smarter way to go about this?
EDIT - It just occurred to me that displaying the above during EVENT_DISPLAYMENU doesn't show the animation anyway (I guess ifcount 2 is never true); so I'm not going to bother with this method for now.
This post has been edited by MC84: 06 June 2023 - 08:01 PM
#3323 Posted 06 June 2023 - 08:37 PM
#3324 Posted 06 June 2023 - 08:42 PM
#3325 Posted 06 June 2023 - 09:31 PM
Danukem, on 06 June 2023 - 08:37 PM, said:
Thanks for your explanation - I was referring to the current_menu 0 or MAIN_MENU screen. I decided to go for a much simpler approach but I noticed that even when the animation is set through BAFED or a def file it won't play during this particular screen. However when you press escape and enter current_menu 50 / INGAME the animation does play.
#3326 Posted 15 June 2023 - 09:19 PM
The following actually seems to work (I put that spawn SMOKEPUFF1 bit in there just to check that the timer is actually counting down to zero ) however it only seems to play one of the 3 sounds. I've sat there in the level for 5 mins and it will just play the same sound over and over...
defstate AIRPORTPAstate { ifsound AIRPORTPA1 sub soundtimer 1 ifsound AIRPORTPA2 sub soundtimer 1 ifsound AIRPORTPA3 sub soundtimer 1 ife soundtimer 0 { spawn SMOKEPUFF1 set soundtimer 270 } else ife soundtimer 270 { randvar tempA 2 switch tempA case 0 { sound AIRPORTPA1 break } case 1 { sound AIRPORTPA2 break } case 2 { sound AIRPORTPA3 break } endswitch } else nullop } ends
And then my actor itself is very basic;
useractor notenemy AIRPORTPA cstat 32768 state AIRPORTPAstate enda
TempA is a per-actor var (I also experimented with global vars but it didn't seem to make much difference). soundtimer is initiated to 270, as each sound is approx 9 seconds in length.
This post has been edited by MC84: 15 June 2023 - 09:48 PM
#3327 Posted 15 June 2023 - 10:09 PM
defstate AIRPORTPAstate ifsound AIRPORTPA1 break ifsound AIRPORTPA2 break ifsound AIRPORTPA3 break ifrnd 85 globalsound AIRPORTPA1 else ifrnd 128 globalsound AIRPORTPA2 else globalsound AIRPORTPA3 ends
#3328 Posted 15 June 2023 - 11:51 PM
Danukem, on 15 June 2023 - 10:09 PM, said:
Thanks Dan - I like simple solutions. Well it works just as well my overly complex code, however it still only plays one of the sounds. I must have done something silly somewhere to cause that.
#3329 Posted 16 June 2023 - 12:11 AM
MC84, on 15 June 2023 - 11:51 PM, said:
Look carefully at your sound definitions. You may have accidentally pasted the same sound file name in all 3 of them, even though the sounds have different labels. I have done that before myself.
#3330 Posted 16 June 2023 - 12:16 AM
Danukem, on 16 June 2023 - 12:11 AM, said:
I checked those, and the thing is that when I say it was 'playing the same sound' the sound would actually change between quitting and reloading the map... it's just that it would play the same sound each 'session'.
Anyway I had my sounds defined as 0 0 0 3 0 ... I think I was doing that for ambient sounds? And then I changed it to 0 0 254 0 0 and now it actually cycles randomly through the 3 sounds. Thanks again!