Jump to content

ICARUS forcé lightning


Go to solution Solved by Asgarath83,

Recommended Posts

Sure,

with SET_FORCE_LIGHTNING , true.

you force a NPC with force lightning power to shoot it. :)

 

You just made my day. :P

I am hosting Jedi Outcast and Jedi Academy servers for free up to 8 servers. Contact me if you are in need of a server for your community. 🙂

Link to comment

Sure,

with SET_FORCE_LIGHTNING , true.

you force a NPC with force lightning power to shoot it. :)

 

i have been trying it with Npc_player but nothing happens :/ I'll try with other and see

 

edit works with ohter npc, gotta check how to mod npc_player

I am hosting Jedi Outcast and Jedi Academy servers for free up to 8 servers. Contact me if you are in need of a server for your community. 🙂

Link to comment

i have been trying it with Npc_player but nothing happens :/ I'll try with other and see

strange. have you setted the right path for your icarus script? it need to match with

radiant script path.

 

example: if Spawnscript is "hotlava/runattack"

you need to make a folder, called hotlava, inside the scripts folder of your mod, and inside put the runattack.IBI.

i suggest you to subdivide script by folder for each map. so every map of the mod get his custom script and they not mixed up.

basically, like into the assest of the game.

if the paths are fine... should be a problem of syntax.

remember this:

if a script is run directly by a NPC, with spawnscript, painscript etc, every istruction you put into the IBI file affected the NPC itself that run the script. basically they run on activator.

 

instead, if you run a script with a target scriptrunner.

if you want a script affect an NPC you need to use

Affect ( Targetname)

set 1

set 2

set 3

 

structire.

where Targetname is the targetname of your NPC that youw want to affect.

for some entity, also is necessary to set a script_targetname flag into the entity on radiabnt, if you want the script affected they.

example:

 

NPC_spawner

Npc_type stormtrooper

Targetname St1

script_targetname St1

spawnscript: hotlava/st1spawn

 

the script hotlava/st1spawn.IBI will Directly affected the NPC when it spawn withoiut any afffect field necessary.

Insead, if the script is run with a target_scriptrunner or a trigger, you need to use

Usescript hotlava/st1_spawn

and inside the script, you need to put the SET istruction inside

affect (St1)

inside the branks of affect, you put SET_FORCE_LIGHTNING, true.

and it will shoot a lightning when it spawn.

Link to comment

strange. have you setted the right path for your icarus script? it need to match with

radiant script path.

 

example: if Spawnscript is "hotlava/runattack"

you need to make a folder, called hotlava, inside the scripts folder of your mod, and inside put the runattack.IBI.

i suggest you to subdivide script by folder for each map. so every map of the mod get his custom script and they not mixed up.

basically, like into the assest of the game.

 

if the paths are fine... should be a problem of syntax.

remember this:

if a script is run directly by a NPC, with spawnscript, painscript etc, every istruction you put into the IBI file affected the NPC itself that run the script. basically they run on activator.

 

instead, if you run a script with a target scriptrunner.

if you want a script affect an NPC you need to use

Affect ( Targetname)

set 1

set 2

set 3

 

structire.

where Targetname is the targetname of your NPC that youw want to affect.

for some entity, also is necessary to set a script_targetname flag into the entity on radiabnt, if you want the script affected they.

example:

 

NPC_spawner

Npc_type stormtrooper

Targetname St1

script_targetname St1

spawnscript: hotlava/st1spawn

 

the script hotlava/st1spawn.IBI will Directly affected the NPC when it spawn withoiut any afffect field necessary.

Insead, if the script is run with a target_scriptrunner or a trigger, you need to use

Usescript hotlava/st1_spawn

and inside the script, you need to put the SET istruction inside

affect (St1)

inside the branks of affect, you put SET_FORCE_LIGHTNING, true.

and it will shoot a lightning when it spawn.

well i was actually trying this:

//Generated by BehavEd

camera ( /*@CAMERA_COMMANDS*/ ENABLE );
camera ( /*@CAMERA_COMMANDS*/ MOVE, $tag( "startcam", ORIGIN)$, 0 );
camera ( /*@CAMERA_COMMANDS*/ PAN, $tag( "startcam", ANGLES)$, < 0.000 0.000 0.000 >, 0 );

affect ( "fakeplayer", FLUSH )
{
	set ( /*@SET_TYPES*/ "SET_ANIM_BOTH", /*@ANIM_NAMES*/ "BOTH_STAND9" );
	set ( /*@SET_TYPES*/ "SET_ANIM_HOLDTIME_BOTH", 2000 );
	wait ( 2000 );
	set ( /*@SET_TYPES*/ "SET_WALKING", /*@BOOL_TYPES*/ "true" );
	set ( /*@SET_TYPES*/ "SET_NAVGOAL", "walkspawn" );
}

wait ( 20000 );

affect ( "fakeplayer", /*@AFFECT_TYPE*/ FLUSH )
{
	set ( "SET_FORCE_LIGHTNING", "true" );
}


task ( "death" )
{
	kill ( "st1" );
	kill ( "st2" );
	kill ( "st3" );
	kill ( "st4" );
	kill ( "st5" );
	kill ( "st6" );
	kill ( "of1" );
}

dowait ( "death" );
wait ( "1500" );
remove ( "fakeplayer" );
camera ( /*@CAMERA_COMMANDS*/ DISABLE );

(i'm using an enemy-team npc in the meanwhile to use the lightning)

 

if i don't put wait after dowait, the thing goes fine, stormies die but the lightning is unseen whereas if i put wait the cinematic doesn't end

 

edit: apparently fixed the cinematic

I am hosting Jedi Outcast and Jedi Academy servers for free up to 8 servers. Contact me if you are in need of a server for your community. 🙂

Link to comment

How you fixed?

Mmm, some force powers are inibited on cinematic, for what i see into the coe... but i am not sure about the force lightning,.

if you remember, tavion cast a force lightning against jaden and kyle on vjun3 final cinematic. check this script and see how works the displaying of the lightning bolt. :)

dark soul likes this
Link to comment

Well apparently I can't use two or more waits in the script. If I do it the cinematic never finishes no matter what.

 

I put waits in the affect block and made the only wait(outside of the block) be a second longer than the affect block.

 

Still, I need an explanation for the multiple waits not working

I am hosting Jedi Outcast and Jedi Academy servers for free up to 8 servers. Contact me if you are in need of a server for your community. 🙂

Link to comment

mmmm...

i am little rust for scripting...

but for what i remember, icarus execure ALL together all istruction that read until the wait value.

so the affect are execute at the same time of the other istruction there are external to affected field.

this can create some conflict between the two wait parameters because they are executed at the same time. 

 

for fix this, put a signal at the end of the affect fakeplayer brank.

and put a waitsignal before the wait 20.000

the name of signal and waitsignal need to match

so, before run the wait 20 000 icarus will wait that is called the signal, so execute first the istruction of affect fake player.

.

Link to comment

Isn't waitsignal the same as a task dowait?

 

Bpe, they are completely different.

waitsignal and signal not use task brank.

check the t1_surprise intro cutscene script and you will see how they works. :)

 

 
//Generated by BehavEd

rem ( "comment" );
camera ( /*@CAMERA_COMMANDS*/ ENABLE );
camera ( /*@CAMERA_COMMANDS*/ MOVE, $tag( "keithCam1", ORIGIN)$, 0 );
camera ( /*@CAMERA_COMMANDS*/ PAN, $tag( "keithCam1", ANGLES)$, < 0.000 0.000 0.000 >, 0 );
camera ( /*@CAMERA_COMMANDS*/ ZOOM, 60.000, 0 );

affect ( "npc_fakePlayer1", /*@AFFECT_TYPE*/ FLUSH )
{
    set ( /*@SET_TYPES*/ "SET_WEAPON", /*@[member='weaponx']_NAMES*/ "WP_NONE" );
    wait ( 500.000 );
    set ( /*@SET_TYPES*/ "SET_ANIM_BOTH", /*@ANIM_NAMES*/ "BOTH_CIN_2" );
    set ( /*@SET_TYPES*/ "SET_ANIM_HOLDTIME_BOTH", -1 );
    waitsignal ( "okay" );
    sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_male/04jak001.mp3" );
    wait ( 1500.000 );
    signal ( "people" );
}


affect ( "npc_Kyle1", /*@AFFECT_TYPE*/ FLUSH )
{
    set ( /*@SET_TYPES*/ "SET_WEAPON", /*@[member='weaponx']_NAMES*/ "WP_NONE" );
    wait ( 500.000 );
    set ( /*@SET_TYPES*/ "SET_ANIM_BOTH", /*@ANIM_NAMES*/ "BOTH_CIN_1" );
    set ( /*@SET_TYPES*/ "SET_ANIM_HOLDTIME_BOTH", -1 );
    wait ( 1050.000 );
    sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/04kyk002.mp3" );
    wait ( 3550.000 );
    camera ( /*@CAMERA_COMMANDS*/ MOVE, $tag( "keithCam1a", ORIGIN)$, 1500 );
    camera ( /*@CAMERA_COMMANDS*/ PAN, $tag( "keithCam1a", ANGLES)$, < 0.000 0.000 0.000 >, 1500 );
    wait ( 1000.000 );
    sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/04kyk003.mp3" );
    wait ( 4850.000 );
    sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/04kyk004.mp3" );
    wait ( 9000.000 );
    signal ( "okay" );
    waitsignal ( "people" );
    sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/04kyk005.mp3" );
    wait ( 3000.000 );
    camera ( /*@CAMERA_COMMANDS*/ FADE, < 0.000 0.000 0.000 >, 0.000, < 0.000 0.000 0.000 >, 1.000, 2000 );
    wait ( 2000.000 );
    camera ( /*@CAMERA_COMMANDS*/ FADE, < 0.000 0.000 0.000 >, 1.000, < 0.000 0.000 0.000 >, 0.000, 2000 );
    camera ( /*@CAMERA_COMMANDS*/ DISABLE );

    affect ( "player", /*@AFFECT_TYPE*/ FLUSH )
    {
        set ( /*@SET_TYPES*/ "SET_WEAPON", /*@[member='weaponx']_NAMES*/ "WP_SABER" );
        set ( /*@SET_TYPES*/ "SET_SABER1", "reaver2" );
        set ( /*@SET_TYPES*/ "SET_SABER2", "none" );
        set ( /*@SET_TYPES*/ "SET_WEAPON", /*@[member='weaponx']_NAMES*/ "WP_BOWCASTER" );
        set ( /*@SET_TYPES*/ "SET_NO_ACROBATICS", /*@BOOL_TYPES*/ "true" );
        set ( /*@SET_TYPES*/ "SET_FORCE_HEAL_LEVEL", /*@[member='Force']_LEVELS*/ "2" );
        set ( /*@SET_TYPES*/ "SET_FORCE_JUMP_LEVEL", /*@[member='Force']_LEVELS*/ "2" );
        set ( /*@SET_TYPES*/ "SET_GRAVITY", 1600.000 );
        set ( /*@SET_TYPES*/ "SET_NO_ACROBATICS", /*@BOOL_TYPES*/ "true" );
        set ( /*@SET_TYPES*/ "SET_FORCE_SPEED_LEVEL", /*@[member='Force']_LEVELS*/ "1" );
        set ( /*@SET_TYPES*/ "SET_FORCE_PUSH_LEVEL", /*@[member='Force']_LEVELS*/ "1" );
        set ( /*@SET_TYPES*/ "SET_FORCE_PULL_LEVEL", /*@[member='Force']_LEVELS*/ "0" );
        set ( /*@SET_TYPES*/ "SET_FORCE_MINDTRICK_LEVEL", /*@[member='Force']_LEVELS*/ "0" );
        set ( /*@SET_TYPES*/ "SET_FORCE_GRIP_LEVEL", /*@[member='Force']_LEVELS*/ "0" );
        set ( /*@SET_TYPES*/ "SET_FORCE_LIGHTNING_LEVEL", /*@[member='Force']_LEVELS*/ "1" );
        set ( /*@SET_TYPES*/ "SET_SABER_THROW", /*@[member='Force']_LEVELS*/ "0" );
        set ( /*@SET_TYPES*/ "SET_SABER_DEFENSE", /*@[member='Force']_LEVELS*/ "1" );
        set ( /*@SET_TYPES*/ "SET_SABER_OFFENSE", /*@[member='Force']_LEVELS*/ "1" );
        set ( /*@SET_TYPES*/ "SET_FORCE_RAGE_LEVEL", /*@[member='Force']_LEVELS*/ "3" );
        set ( /*@SET_TYPES*/ "SET_FORCE_PROTECT_LEVEL", /*@[member='Force']_LEVELS*/ "1" );
        set ( /*@SET_TYPES*/ "SET_FORCE_ABSORB_LEVEL", /*@[member='Force']_LEVELS*/ "0" );
        set ( /*@SET_TYPES*/ "SET_FORCE_DRAIN_LEVEL", /*@[member='Force']_LEVELS*/ "0" );
        set ( /*@SET_TYPES*/ "SET_FORCE_SIGHT_LEVEL", /*@[member='Force']_LEVELS*/ "2" );
    }

    wait ( 2000.000 );
    remove ( "npc_Kyle1" );
    remove ( "npc_fakePlayer1" );
    set ( /*@SET_TYPES*/ "SET_OBJECTIVE_SHOW", /*@OBJECTIVES*/ "T1_SURPRISE_OBJ1" );
}

wait ( 1000.000 );

affect ( "r2_wander_1", /*@AFFECT_TYPE*/ FLUSH )
{
    set ( /*@SET_TYPES*/ "SET_ANGERSCRIPT", "t1_surprise/r2_wander_1" );
}

remove ( "r2d2_1" );
 
 

a my edited version of t1_surprise intro cinematic script. you can see how work the signal and waitsignal here.

Link to comment

Bpe, they are completely different.

waitsignal and signal not use task brank.

check the t1_surprise intro cutscene script and you will see how they works. :)

 
//Generated by BehavEd

rem ( "comment" );
camera ( /*@CAMERA_COMMANDS*/ ENABLE );
camera ( /*@CAMERA_COMMANDS*/ MOVE, $tag( "keithCam1", ORIGIN)$, 0 );
camera ( /*@CAMERA_COMMANDS*/ PAN, $tag( "keithCam1", ANGLES)$, < 0.000 0.000 0.000 >, 0 );
camera ( /*@CAMERA_COMMANDS*/ ZOOM, 60.000, 0 );

affect ( "npc_fakePlayer1", /*@AFFECT_TYPE*/ FLUSH )
{
    set ( /*@SET_TYPES*/ "SET_WEAPON", /*@[member='weaponx']_NAMES*/ "WP_NONE" );
    wait ( 500.000 );
    set ( /*@SET_TYPES*/ "SET_ANIM_BOTH", /*@ANIM_NAMES*/ "BOTH_CIN_2" );
    set ( /*@SET_TYPES*/ "SET_ANIM_HOLDTIME_BOTH", -1 );
    waitsignal ( "okay" );
    sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_male/04jak001.mp3" );
    wait ( 1500.000 );
    signal ( "people" );
}


affect ( "npc_Kyle1", /*@AFFECT_TYPE*/ FLUSH )
{
    set ( /*@SET_TYPES*/ "SET_WEAPON", /*@[member='weaponx']_NAMES*/ "WP_NONE" );
    wait ( 500.000 );
    set ( /*@SET_TYPES*/ "SET_ANIM_BOTH", /*@ANIM_NAMES*/ "BOTH_CIN_1" );
    set ( /*@SET_TYPES*/ "SET_ANIM_HOLDTIME_BOTH", -1 );
    wait ( 1050.000 );
    sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/04kyk002.mp3" );
    wait ( 3550.000 );
    camera ( /*@CAMERA_COMMANDS*/ MOVE, $tag( "keithCam1a", ORIGIN)$, 1500 );
    camera ( /*@CAMERA_COMMANDS*/ PAN, $tag( "keithCam1a", ANGLES)$, < 0.000 0.000 0.000 >, 1500 );
    wait ( 1000.000 );
    sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/04kyk003.mp3" );
    wait ( 4850.000 );
    sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/04kyk004.mp3" );
    wait ( 9000.000 );
    signal ( "okay" );
    waitsignal ( "people" );
    sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/04kyk005.mp3" );
    wait ( 3000.000 );
    camera ( /*@CAMERA_COMMANDS*/ FADE, < 0.000 0.000 0.000 >, 0.000, < 0.000 0.000 0.000 >, 1.000, 2000 );
    wait ( 2000.000 );
    camera ( /*@CAMERA_COMMANDS*/ FADE, < 0.000 0.000 0.000 >, 1.000, < 0.000 0.000 0.000 >, 0.000, 2000 );
    camera ( /*@CAMERA_COMMANDS*/ DISABLE );

    affect ( "player", /*@AFFECT_TYPE*/ FLUSH )
    {
        set ( /*@SET_TYPES*/ "SET_WEAPON", /*@[member='weaponx']_NAMES*/ "WP_SABER" );
        set ( /*@SET_TYPES*/ "SET_SABER1", "reaver2" );
        set ( /*@SET_TYPES*/ "SET_SABER2", "none" );
        set ( /*@SET_TYPES*/ "SET_WEAPON", /*@[member='weaponx']_NAMES*/ "WP_BOWCASTER" );
        set ( /*@SET_TYPES*/ "SET_NO_ACROBATICS", /*@BOOL_TYPES*/ "true" );
        set ( /*@SET_TYPES*/ "SET_FORCE_HEAL_LEVEL", /*@[member='Force']_LEVELS*/ "2" );
        set ( /*@SET_TYPES*/ "SET_FORCE_JUMP_LEVEL", /*@[member='Force']_LEVELS*/ "2" );
        set ( /*@SET_TYPES*/ "SET_GRAVITY", 1600.000 );
        set ( /*@SET_TYPES*/ "SET_NO_ACROBATICS", /*@BOOL_TYPES*/ "true" );
        set ( /*@SET_TYPES*/ "SET_FORCE_SPEED_LEVEL", /*@[member='Force']_LEVELS*/ "1" );
        set ( /*@SET_TYPES*/ "SET_FORCE_PUSH_LEVEL", /*@[member='Force']_LEVELS*/ "1" );
        set ( /*@SET_TYPES*/ "SET_FORCE_PULL_LEVEL", /*@[member='Force']_LEVELS*/ "0" );
        set ( /*@SET_TYPES*/ "SET_FORCE_MINDTRICK_LEVEL", /*@[member='Force']_LEVELS*/ "0" );
        set ( /*@SET_TYPES*/ "SET_FORCE_GRIP_LEVEL", /*@[member='Force']_LEVELS*/ "0" );
        set ( /*@SET_TYPES*/ "SET_FORCE_LIGHTNING_LEVEL", /*@[member='Force']_LEVELS*/ "1" );
        set ( /*@SET_TYPES*/ "SET_SABER_THROW", /*@[member='Force']_LEVELS*/ "0" );
        set ( /*@SET_TYPES*/ "SET_SABER_DEFENSE", /*@[member='Force']_LEVELS*/ "1" );
        set ( /*@SET_TYPES*/ "SET_SABER_OFFENSE", /*@[member='Force']_LEVELS*/ "1" );
        set ( /*@SET_TYPES*/ "SET_FORCE_RAGE_LEVEL", /*@[member='Force']_LEVELS*/ "3" );
        set ( /*@SET_TYPES*/ "SET_FORCE_PROTECT_LEVEL", /*@[member='Force']_LEVELS*/ "1" );
        set ( /*@SET_TYPES*/ "SET_FORCE_ABSORB_LEVEL", /*@[member='Force']_LEVELS*/ "0" );
        set ( /*@SET_TYPES*/ "SET_FORCE_DRAIN_LEVEL", /*@[member='Force']_LEVELS*/ "0" );
        set ( /*@SET_TYPES*/ "SET_FORCE_SIGHT_LEVEL", /*@[member='Force']_LEVELS*/ "2" );
    }

    wait ( 2000.000 );
    remove ( "npc_Kyle1" );
    remove ( "npc_fakePlayer1" );
    set ( /*@SET_TYPES*/ "SET_OBJECTIVE_SHOW", /*@OBJECTIVES*/ "T1_SURPRISE_OBJ1" );
}

wait ( 1000.000 );

affect ( "r2_wander_1", /*@AFFECT_TYPE*/ FLUSH )
{
    set ( /*@SET_TYPES*/ "SET_ANGERSCRIPT", "t1_surprise/r2_wander_1" );
}

remove ( "r2d2_1" );
 
 

a my edited version of t1_surprise intro cinematic script. you can see how work the signal and waitsignal here.

 

understood the concept from the other post, the hardest part is synchronizing. i did only a test script (1/10 of the complete script), and see what i can do.

 

still, i don't understand very well where i can place 'waits', cause more than two outside the affect blocks breaks it

I am hosting Jedi Outcast and Jedi Academy servers for free up to 8 servers. Contact me if you are in need of a server for your community. 🙂

Link to comment

understood the concept from the other post, the hardest part is synchronizing. i did only a test script (1/10 of the complete script), and see what i can do.

 

still, i don't understand very well where i can place 'waits', cause more than two outside the affect blocks breaks it

 

Your wait issue is strangely, i suggest you to use multiple spawnscript for entities and sincronize that with signal and waitsignal. OR use the affect way. :\ yes, i know the sinchro scripting is the hardest part of icarus.

i get some big headache for making custom cinematics, years ago, for this. >,<

Link to comment

Your wait issue is strangely, i suggest you to use multiple spawnscript for entities and sincronize that with signal and waitsignal. OR use the affect way. :\ yes, i know the sinchro scripting is the hardest part of icarus.

i get some big headache for making custom cinematics, years ago, for this. >,<

might it be cause of openjk? i'm acutally doing the tests there, but as far as I know the only thing that changed in openjk is added things for face anims

I am hosting Jedi Outcast and Jedi Academy servers for free up to 8 servers. Contact me if you are in need of a server for your community. 🙂

Link to comment

might it be cause of openjk? i'm acutally doing the tests there, but as far as I know the only thing that changed in openjk is added things for face anims

 

You can ask this to @@eezstreet, but i really doubt it.

for my personal experience, there are four way for run a script:

1: trigger

2: target scriptrunner

3: NPC entity personal script

4: by another script, with run command.

depend of what kind of method you are using, the script can work or not work.

remember the main thing: in case 1, the script affecting general entitty, you need to use affect field for affect specifical entity.

2: if you use run on activator, the script affecting who run the scripturnner. (player or NPC that activate it)

3: script directly affecting the NPC, so npc not need of affecting command for himself, you can give him the setting without affecting.

4: a script runned by another script can have strange dipendence, maybe depend but WHO run the script that run the script. LOL. in this case you need to see how work with tryes.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...