Page 1 of 1

Help for monster

Posted: Tue Feb 05, 2013 7:36 pm
by manuelspark
How do I make a monster disappears and appears in faraway places?

RE: Help for monster

Posted: Tue Feb 05, 2013 7:39 pm
by Llewellyn
A bit more descriptive please...

RE: Help for monster

Posted: Tue Feb 05, 2013 7:41 pm
by Cruduxy
teleporters without fog?

RE: Help for monster

Posted: Tue Feb 05, 2013 8:56 pm
by Lord_of_D:
i think he means something alike Sjas in Ghoul Forest 3, but by the monsters will, not being damaged. as far as i know, you need scripts for do this shit.

RE: Help for monster

Posted: Wed Feb 06, 2013 12:08 am
by ibm5155
I did this on my monster called ravishing, it use a counter, when he pass some time, he enter on a flag that do it disapear and set noclip and fly actived, and passing sometime he go back to the normal states

Here´s the actual code, it´s not the best because it was adapted from a workin monster for gzdoom, and i didn´t knew the inventory system to replace var...

[spoiler]decorate part

Code: Select all

actor ravishing 31198
{
  MONSTER
  Radius 20//31
  Height 66
  Health 5000000
  Mass 10000
  Speed 16
  Vspeed 16
  scale 0.065
  PainChance 180
   +FLOORCLIP +DONTHURTSPECIES +NOTARGET +BOSS +INVULNERABLE
  SeeSound "EFF6"
  PainSound "EFF9"
  DeathSound "EFF7"
  ActiveSound ""
  AttackSound ""
  MeleeSound ""
  MeleeDamage  15
  Obituary "%o was killed by the ravishing"
  states
  {
  Spawn:
    ghou A 1 A_Look
    Loop
  See:
	ghou A 2 A_Chase
	ghou B 2 A_FaceTarget
	ghou C 2 A_Chase
	ghou D 2 A_FaceTarget
	ghou E 2 A_Chase
	ghou F 2 A_FaceTarget
	ghou G 2 A_Chase
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(9,0)==1,"GHOULALPHAIN")
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(10,0)==2,"GHOULALPHAOUT")
    Loop
  Melee:
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(8,0)==1,"WAITGHOUL")
	ghou A 1 A_SetTranslucent (1.0,0)
	ghou G 0 A_Playsound("EFF8")
    ghou G 1 A_FaceTarget
    ghou G 1 A_MeleeAttack
    ghou HIJKJIH 1
	ghou A 0 A_ChangeFlag("NOCLIP",0) 
	ghou A 0 A_ChangeFlag("NOGRAVITY",0)
	ghou A 0 A_UnsetFloat
	Goto See
  Pain:
    ghou a 2 A_Pain
	Goto See
  WAITGHOUL:
    TNT1 A 1
	Goto See
  
  GHOULALPHAIN:
    ghou A 0 A_ChangeFlag("NOCLIP",1)
	ghou A 0 A_ChangeFlag("NOGRAVITY",1)
	ghou A 0 A_SetFloat
    ghou A 1 A_SetTranslucent (1.0,0)
	ghou A 1 A_SetTranslucent (0.9,0)
	ghou A 1 A_SetTranslucent (0.8,0)
	ghou A 1 A_SetTranslucent (0.7,0)
	ghou A 1 A_SetTranslucent (0.6,0)
	ghou A 1 A_SetTranslucent (0.5,0)
	ghou A 1 A_SetTranslucent (0.4,0)
	ghou A 1 A_SetTranslucent (0.3,0)
	ghou A 1 A_SetTranslucent (0.2,0)
	ghou A 1 A_SetTranslucent (0.1,0)
	ghou A 1 A_SetTranslucent (0.0,0)
	Goto see
  GHOULALPHAOUT:
    ghou A 1 A_SetTranslucent (0.0,0)
	ghou A 1 A_SetTranslucent (0.1,0)
	ghou A 1 A_SetTranslucent (0.2,0)
	ghou A 1 A_SetTranslucent (0.3,0)
	ghou A 1 A_SetTranslucent (0.4,0)
	ghou A 1 A_SetTranslucent (0.5,0)
	ghou A 1 A_SetTranslucent (0.6,0)
	ghou A 1 A_SetTranslucent (0.7,0)
	ghou A 1 A_SetTranslucent (0.8,0)
	ghou A 1 A_SetTranslucent (0.9,0)
	ghou A 1 A_SetTranslucent (1.0,0)
    ghou A 0 A_ChangeFlag("NOCLIP",0)
	ghou A 0 A_ChangeFlag("NOGRAVITY",0)
	ghou A 0 A_UnsetFloat
	Goto see
  Death:
	ghou A 8 
    ghou B 8 A_Scream
    ghou C 8
    ghou D 8 A_SetTranslucent(1.0,0)
    ghou E 8 A_Fall
	ghou D 8
	ghou E 8
    tnt1 A -1 A_SetFloorClip
    Stop
  Raise:
    SCPG A 8 A_UnSetFloorClip
    SCPG A 8
    Goto See
  }
}
ACS part

Code: Select all

script 11 (void)//SCRIPT THAT GIVIE RAVISHING LIFE, REPLACING DECORATE FUNCTIONs BY ACS
{
    
//ravishing tag:24
    ACS_EXECUTE(12,0,0,0,0);//RAVISHING SOUND CODE
    while(true)
    {
    //    print(s:"\nuser_ghoulactivesound:",d:user_ghoulactivesound,s:"\nuser_ghoulinvisible:",d:user_ghoulinvisible,s:"\nsound_toplay:",d:sound_toplay,s:"\nuser_ghoulinvisiblecount:",d:user_ghoulinvisiblecount,s:"\ntimer_GHOUL:",d:timer_GHOUL,s:"\nuser_invisible:",d:user_invisible,s:"\nscript_test:",d:script_test,s:"\nout_invisible:",d:out_invisible);

        /*SIMPLE TIMER TO COUNT IF THE RAVISHING IS NOT TOO MUCH TIME INVISIBLE*/
        if(timer_GHOUL>=12 && user_invisible==1)
        {
            
            user_ghoulinvisible=2;
            while(script_test!=1)//WHILE THE DECORATE DIDN´T SHECK THE SCRIPT DO...
            { 

 				//						 print(s:"loop1");
                user_ghoulinvisible=2;
                delay(1);
            }
            delay(35);
            user_invisible=0;
            timer_GHOUL=0;
            user_ghoulinvisible=0;
            sound_toplay=0;
            SetActorProperty(59,APROP_Speed,16.0);
        }
        /*SIMPLE TIMER TO COUNT IF THE RAVISHING IS NOT TOO MUCH TIME VISIBLE*/
        else if(timer_GHOUL>=7 && user_invisible==0)
        {
            
            user_ghoulinvisible=1;
            while(script_test!=1)//WHILE THE DECORATE DIDN´T SHECK THE SCRIPT DO...
            {
        //        print(s:"loop2");
                user_ghoulinvisible=1;
                delay(1);
            }
            delay(35);
            user_ghoulinvisible=0;
            timer_GHOUL=0;
            user_invisible=1;
            SetActorProperty(59,APROP_Speed,20.0);
        
        
        }
        //----------------------------------------------------
        
        
        /*FILTER IF THE MONSTER IS NEAR TO ATTACK A MARINE OR ZOMBIE AND PUT HE TO GO BACK TO FIGHT*/
        if(out_invisible==1 && user_invisible==1)
        {
            timer_GHOUL=0;
            user_invisible=0;
            user_ghoulinvisible=2;
            while(script_test!=1)//WHILE THE DECORATE DIDN´T SHECK THE SCRIPT DO...
            {
          //      print(s:"loop3");
                user_ghoulinvisible=2;
                delay(1);
            }
            delay(35);
            timer_GHOUL=0;
            user_ghoulinvisible=0;
            out_invisible=0;
            SetActorProperty(59,APROP_Speed,16.0);
        }
        else
        {
            out_invisible=0;
            
        }
        //----------------------------------------------------
        
        /*START SIMPLE FILTER TO SELECT WHAT SOUND TO PLAY*/
        if(user_invisible==1)
        {
            sound_toplay=1;
        }
        else if(user_invisible==0)
        {
            sound_toplay=0;
        }
        //----------------------------------------------------
        
        script_test=0;
        delay(1);    
    }
}

script 12(void)//RAVISHING SOUND SCRIPT
{
   while(true)
   {
    /*TWO LOOPS TO PLAY THE SOUNDS*/
    if(sound_toplay==0)
    {
        while(user_ghoulactivesound<4 && user_invisible==0)
        {
          user_ghoulactivesound++;
          delay(35);
        }
        timer_GHOUL++;
        user_ghoulactivesound=0;
        if(user_invisible==1)
        {
            ThingSound(59,"EFF5",127);
        }
        else if(user_ghoulinvisible==0)
        {
            ThingSound(59,"EFF10",127);
        }
     }
     else
     {
        while(user_ghoulactivesound<2 && user_invisible==1)
        {
           user_ghoulactivesound++;
           delay(35);
        }
        timer_GHOUL++;
        user_ghoulactivesound=0;
        if(user_invisible==1)
       { 
          ThingSound(59,"EFF5",127);
       }
       else if(user_ghoulinvisible==0)
       {
         ThingSound(59,"EFF10",127);
       }
     }
        //----------------------------------------------------
    Thing_Activate(23);
   delay(1);
   }
}

script 13 (void)//active ravishing
{
   // SetFont("BIGFONT");
   // HudMessageBold(s:"the ravishing is alive, run!!!"; HUDMSG_FADEOUT, 998, CR_RED, 0.5, 0.4, 5.5, 0.5);
    SetMusic("ibmsnd2");
    SpawnSpot ("ravishing",25,59,24);
    delay(35);
    acs_execute(11,0,0,0,0);
}

/*  END OF RAVISHING CODE*/
[/spoiler]

If it helps here´s the original code

Code: Select all

actor ravishing 31198
{
  MONSTER
  Radius 16//31
  Height 66
  Health 500
  Mass 100
  scale 0.065
  Speed 12
  PainChance 100
  +DONTHURTSPECIES +NOTARGET +FULLVOLDEATH 
  SeeSound "EFF6"
  PainSound "EFF9"
  DeathSound "EFF7"
  ActiveSound ""
  AttackSound ""
  MeleeSound ""
  MeleeDamage  1
  Obituary "You was killed by the ravishing"
  var int user_ghoulactivesound;
  var int user_ghoulactivesound2;
  var int user_ghoulinvisible;//variavel fala se esta invisivel ou nao
  var int user_ghoulinvisiblecount;//conta tempo que esta invisivel
  var int user_ghoulfirsttime;
  
  States
  {
  Spawn:
    ghou A 0 A_SetUserVar ("user_ghoulfirsttime",1)
    ghou A 0 A_SetUserVar ("user_ghoulactivesound",0)
	ghou A 0 A_SetUserVar ("user_ghoulactivesound2",0)
	ghou A 0 A_SetUserVar ("user_ghoulinvisible",1)
    ghou A 1 A_Look
    Loop
  See:
    ghou A 0 A_JumpIf(user_ghoulfirsttime==1,"GHOULALPHAIN")
    ghou A 0 A_SetUserVar("user_ghoulinvisiblecount",user_ghoulinvisiblecount+1)//0 1 2 3 4 5 6 7 - 8 9 0 1
    ghou A 0 A_JumpIf(user_ghoulactivesound>=7,"GHOULSND")//0 1 2 3 4 5 6 7 0 1 2 - -
	ghou A 0 A_JumpIf(user_ghoulactivesound2>=7,"GHOULSND2")
	ghou A 0 A_JumpIf(user_ghoulinvisible==1,"GHOULNSEE")// 1 1 1 1 1 1 1 - 1 1 1 0 0
	ghou A 0 A_JumpIf(user_ghoulinvisible==0,"GHOULSEE")//  - - - - - - - - - - - 1 1
    Loop
 GHOULNSEE://ghoul invisivel
    ghou A 0 A_ChangeFlag("INVULNERABLE",1)
    ghou A 0 A_SetUserVar("user_ghoulinvisiblecount",user_ghoulinvisiblecount+1)//1 2 3 4 5 6 7 0 1 2 3
    ghou A 0 A_ChangeFlag("NOCLIP",1)
	ghou A 0 A_SetUserVar ("user_ghoulactivesound",user_ghoulactivesound+1)//contador som 1 2 3 4 5 6 7 8 9 10
	ghou G 0 A_JumpIf(user_ghoulinvisiblecount>=60,"GHOULALPHAOUT")//0 0 0 0 0 0 0 0 0 1
    ghou ABCDEFG 2 A_Chase
	Goto see
 GHOULSEE://GHOUL VISIVEL
    ghou A 0 A_ChangeFlag("INVULNERABLE",0)
    ghou A 0 A_ChangeFlag("NOCLIP",0)
	ghou A 0 A_SetUserVar ("user_ghoulactivesound2",user_ghoulactivesound2+1)
	ghou G 0 A_JumpIf(user_ghoulinvisiblecount>=30,"GHOULALPHAIN")
    ghou ABCDEFG 2 A_Chase
	Goto see
 GHOULSND://toca som ativo invisivel
	ghou A 0 A_SetUserVar ("user_ghoulactivesound",0)
	ghou A 0 A_Playsound("EFF5")
	Goto see
 GHOULSND2://toca som ativo visivel
	ghou A 0 A_SetUserVar ("user_ghoulactivesound2",0)
	ghou A 0 A_Playsound("EFF10")
	Goto see
 GHOULALPHAIN://ghoul entrando invisibilidade
	ghou A 0 A_SetUserVar("user_ghoulfirsttime",0)
    ghou A 1 A_SetTranslucent (1.0,0)
	ghou A 1 A_SetTranslucent (0.9,0)
	ghou A 1 A_SetTranslucent (0.8,0)
	ghou A 1 A_SetTranslucent (0.7,0)
	ghou A 1 A_SetTranslucent (0.6,0)
	ghou A 1 A_SetTranslucent (0.5,0)
	ghou A 1 A_SetTranslucent (0.4,0)
	ghou A 1 A_SetTranslucent (0.3,0)
	ghou A 1 A_SetTranslucent (0.2,0)
	ghou A 1 A_SetTranslucent (0.1,0)
	ghou A 1 A_SetTranslucent (0.0,0)
	ghou A 0 A_SetUserVar("user_ghoulinvisiblecount",0)
	ghou A 0 A_SetUserVar("user_ghoulinvisible",1)
	Goto see
 GHOULALPHAOUT://ghoul saindo invisibilidade 
	ghou A 0 A_SetUserVar("user_ghoulfirsttime",0)
    ghou A 1 A_SetTranslucent (0.0,0)
	ghou A 1 A_SetTranslucent (0.1,0)
	ghou A 1 A_SetTranslucent (0.2,0)
	ghou A 1 A_SetTranslucent (0.3,0)
	ghou A 1 A_SetTranslucent (0.4,0)
	ghou A 1 A_SetTranslucent (0.5,0)
	ghou A 1 A_SetTranslucent (0.6,0)
	ghou A 1 A_SetTranslucent (0.7,0)
	ghou A 1 A_SetTranslucent (0.8,0)
	ghou A 1 A_SetTranslucent (0.9,0)
	ghou A 1 A_SetTranslucent (1.0,0)
	ghou A 0 A_SetUserVar("user_ghoulinvisiblecount",0)
	ghou A 0 A_SetUserVar("user_ghoulinvisible",0)
	Goto see
    
  Pain:
    ghou a 0 A_Pain
	Goto See
  Melee:
    ghou G 0 A_JumpIf(user_ghoulinvisible==1,"GHOULNSEE")
	ghou G 0 A_Playsound("EFF8")
    ghou G 1 A_FaceTarget
	ghou G 0 A_MeleeAttack
    ghou HIJKJIH 1 
	Goto See


  Death:
    ghou A 8 
    ghou B 8 A_Scream
    ghou C 8
    ghou D 8 A_SetTranslucent(1.0,0)
    ghou E 8 A_Fall
	ghou D 8
	ghou E 8
    tnt1 A -1 A_SetFloorClip
    Stop
  Raise:
    pair L 8 A_UnSetFloorClip
    pair KJIHG 8
    Goto See

  }
}
Or other way would be, when the monster enter in pain state or other counter, it call an acs that teleport he to otherplace...

RE: Help for monster

Posted: Wed Feb 06, 2013 7:30 pm
by manuelspark
Yeah i want something like SJAS but appears elsewhere anytime

RE: Help for monster

Posted: Wed Feb 06, 2013 7:49 pm
by ibm5155
whe it enter in pain it just use ACS_Execute(script number) on decorate
and teleport it to another place using random function on acs

RE: Help for monster

Posted: Mon Feb 11, 2013 5:28 am
by HexaDoken
http://realm667.com/index.php/component ... 9-overlord
Study.
It's not exactly Sjas but it doesn't require ACS.