Quote
Thanks a lot! First I'll finish with Dukeplus. If I have no luck, I'll try AWOL.
Quote
Mark, on 14 December 2024 - 07:01 PM, said:
Danukem, on 14 December 2024 - 12:15 PM, said:
vInstruction(CON_KILLIT):
insptr++;
vm.flags |= VM_KILL;
return;
if ((pSprite->lotag > ud.player_skill) || ud.monsters_off == 1)
{
pSprite->xrepeat=pSprite->yrepeat=0;
changespritestat(newSprite, STAT_MISC);
goto SPAWN_END;
}
/*
// Handle game system state machines
*/
appendevent EVENT_WORLD
{
// Process AI Director
for WORLDI sprofstat STAT_AIDIRECTOR
{
setu .vm_sprite WORLDI // Become the sprite we are iterating on
setu .vm_player myconnectindex // Update which sprite the Player is
ife GM_ACTIVE TRUE
state ai_director
}
endevent
/*
// AI Director state machine
*/
defstate ai_director
{
[ an actual ton of code ]
}
ends
/*
// Init system effectors
*/
appendevent EVENT_ENTERLEVEL
{
for ACTORI allsprites
{
// Init AI Director
ife sprite[ACTORI].picnum AI_DIRECTOR
seta[ACTORI].statnum STAT_AIDIRECTOR
}
}
endevent
// Save ourself
set HOST_ID THISACTOR
for ACTORI sprofstat STAT_SOMETHING
{
setu .vm_sprite ACTORI
[ execute remote code ]
}
// Return to ourself
setu .vm_sprite HOST_ID
// Perform particle logic
appendevent EVENT_WORLD
{
for PARTICLE_I sprofstat STAT_EMBER
{
setu .vm_sprite PARTICLE_I // set our "THISACTOR" to the current id
setu .vm_player myconnectindex // set our player to our currently connected player
state particle_ember
state particle_deleteme
}
for PARTICLE_I sprofstat STAT_SMALLFIRE
{
setu .vm_sprite PARTICLE_I
setu .vm_player myconnectindex
state particle_smallfire
state particle_deleteme
}
appendevent EVENT_WORLD
{
for PARTICLE_I sprofstat STAT_PARTICLE
{
setu .vm_sprite PARTICLE_I // set our "THISACTOR" to the current id
setu .vm_player myconnectindex // set our player to our currently connected player
// Remember, we are now running as the sprite PARTICLE_I so we need to check our own picnum instead of "sprite[PARTICLE_I].picnum"
switch sprite[].picnum
{
case SOME_PARTICLE
state particle_ember
break
case OTHER_PARTICLE
state particle_smallfire
break
default
[ some failsafe code ]
break
}
endswitch
state particle_deleteme
}
}
endevent
// Process logic for corpses without making them actors
appendevent EVENT_WORLD
{
for ACTORI sprofstat STAT_CORPSE
{
setu .vm_sprite ACTORI
setu .vm_player myconnectindex
fall
action 0
move 0
state enemy_elite_display // Ignore for this example, this handles their palette and custom sprite display
}
}
endevent
This post has been edited by eniojr: 16 December 2024 - 08:15 AM
Reaper_Man, on 16 December 2024 - 07:53 AM, said:
VGames, on 16 December 2024 - 06:25 AM, said:
onevent EVENT_GAME
{
getactor[THISACTOR].picnum picnum
switch picnum
{
case LADDER
{
ifvare monstflags 1
{
ifvare monstatus 0
{
setvar monstatus 1
setvar temp 0
whilevarn temp 16384
{
getactor[temp].picnum picnum
ifvare picnum LADDER ifvarvarn temp THISACTOR
{
getactorvar[temp].monstflags tempb
ifvare tempb 1
{
getactorvar[temp].hitag tempc
ifvarvare hitag tempc
{
setvarvar myspawner temp
setvar monstatus 1
setvar temp 16383
getactor[THISACTOR].z z
getactor[myspawner].z mz
ifvarvarg z mz
{
setvar mtype 1
setvarvar topladder mz
}
}
}
}
addvar temp 1
}
}
ifvare mtype 1 ifvare dodge 0
{
getplayer[THISACTOR].posz mz
ifp pducking subvar mz 4096
getactor[THISACTOR].z z
addvar z 1024
ifvarvarg mz topladder ifvarvarl mz z
{
getplayer[THISACTOR].i target
ldist xydist THISACTOR target
ifangdiffl 384 ifvarl xydist 384
{
ifvare onladder 0
{
getplayer[THISACTOR].posx lastladderx
getplayer[THISACTOR].posy lastladdery
}
setvar onladder 3
ifvarn lotag 0 setvarvar laddersound lotag else setvar laddersound -1
}
}
}
}
break
}
case APLAYER
{
ifvarg onladder 0 state ladderinteraction
break
}
}
endswitch
}
endevent
state ladderinteraction
{
// Lógica de interação com a escada
ifvarg fpress 0 subvar fpress 1
ifvarg bpress 0 subvar bpress 1
ifvarl onladder 0 addvar onladder 1
ifvarg onladder 0 state laddercode
ifp ponground setvar nofalldamage 0
ifvarn nofalldamage 0 setplayer[THISACTOR].falling_counter 0
ifvarg bhold 7 { setvar btap 0 setvar bhold 0 }
ifvarg fhold 7 { setvar ftap 0 setvar fhold 0 }
ifvarg lhold 7 { setvar ltap 0 setvar lhold 0 }
ifvarg rhold 7 { setvar rtap 0 setvar rhold 0 }
ifvarvarn timer fpresstime setvar fhold 0
ifvarvarn timer bpresstime setvar bhold 0
setvarvar tempb timer
subvarvar tempb fpresstime
ifvarg tempb 4 setvar ftap 0
setvarvar tempb timer
subvarvar tempb bpresstime
ifvarg tempb 4 setvar btap 0
setvarvar tempb timer
subvarvar tempb lpresstime
ifvarg tempb 4 setvar ltap 0
setvarvar tempb timer
subvarvar tempb rpresstime
ifvarg tempb 4 setvar rtap 0
}
ends
This post has been edited by eniojr: 16 December 2024 - 02:28 PM
Danukem, on 16 December 2024 - 12:16 PM, said:
eniojr, on 17 December 2024 - 07:17 AM, said:
This post has been edited by Mark: 17 December 2024 - 08:10 AM
Reaper_Man, on 17 December 2024 - 07:02 AM, said:
VGames, on 17 December 2024 - 08:41 AM, said: