Jump to content
  • 0

Help me with this AI (made by me)


Question

Posted

Hello, i need help with this code, i decide to create this AI,  All works good, except, when chaos start walk myself::AddMoveToDesire( 95904, -110652, -3344, 5000 );

the character starts follow him on camera action, my question is, exists any method to paralyze character or something???

 

can anyone help me? thanks

 

class 1 doctor_chaos1 : citizen
{
parameter:
  int     social = 1;

handler:
  EventHandler TALKED( i0, i1, quest_id, talker )
  {
    if( myself::GetMemoStateEx( talker, 9999, 1 ) < 0 )
    {
      myself::ShowPage( talker, "doctor_chaos_01.htm" );
      myself::SetMemoStateEx( talker, 9999, 1, 1 );
    }
    if( myself::GetMemoStateEx( talker, 9999, 1 ) == 0 )
    {
      myself::ShowPage( talker, "doctor_chaos_01.htm" );
      myself::SetMemoStateEx( talker, 9999, 1, 1 );
    }
    if( myself::GetMemoStateEx( talker, 9999, 1 ) == 1 )
    {
      myself::Say( "How dare you trespass into my territory! Have you no fear?" );
      myself::ShowPage( talker, "doctor_chaos_02.htm" );
      myself::SetMemoStateEx( talker, 9999, 1, 2 );
    }
    if( myself::GetMemoStateEx( talker, 9999, 1 ) == 2 )
    {
      myself::ShowPage( talker, "doctor_chaos_03.htm" );
      myself::SetMemoStateEx( talker, 9999, 1, 0 );
      myself::AddTimerEx( 1, 1000 );
    }
  }

  EventHandler TIMER_FIRED_EX( timer_id, talker )
  {
    if( timer_id == 1 )
    {
      myself::SpecialCamera( myself.sm, 1, 200, 0, 15, 7000, 7000, 0, 0, 1,
                             0 );
      myself::Say( "Fools! Why haven't you fled yet? Prepare to learn a lesson!" );
      myself::AddTimerEx( 2, 3000 );
    }
    if( timer_id == 2 )
    {
      myself::ChangeMoveType( 0 );
      myself::AddMoveToDesire( 95904, -110652, -3344, 5000 );
      myself::AddTimerEx( 3, 5500 );
    }
    if( timer_id == 3 )
    {
      myself::Suicide();
      myself::Despawn();
      myself::CreateOnePrivateEx( 1025512, "dr_chaos_gigantic_golem", 0, 0,
                                  myself::FloatToInt( 96030 ),
                                  myself::FloatToInt( -110777 ),
                                  myself::FloatToInt( -3312 ), 0,
                                  myself.sm.id, 0, 0 );
      myself::AddEffectActionDesire( dr_chaos_gigantic_golem, social, 0, 0 );
    }
  }
}

 

  • Upvote 1

3 answers to this question

Recommended Posts

  • 0
Posted
2 hours ago, Blitzkrieg said:

What if the NPC casts a target cancelling debuff, simirarly to Trick/Switch?

I know, i can add this easy method:

 

myself::AddUseSkillDesire( talker, skill_id, @ST_ATTACK, @AMT_STAND, @MAX_TIMER_ID );

 

But i dont want shits in my code, must exist a code to cancel task or something...

 

thank you anyways :)

  • 0
Posted
On 12/9/2019 at 4:21 PM, steve said:

Hello, i need help with this code, i decide to create this AI,  All works good, except, when chaos start walk myself::AddMoveToDesire( 95904, -110652, -3344, 5000 );

the character starts follow him on camera action, my question is, exists any method to paralyze character or something???

 

can anyone help me? thanks

 


class 1 doctor_chaos1 : citizen
{
parameter:
  int     social = 1;

handler:
  EventHandler TALKED( i0, i1, quest_id, talker )
  {
    if( myself::GetMemoStateEx( talker, 9999, 1 ) < 0 )
    {
      myself::ShowPage( talker, "doctor_chaos_01.htm" );
      myself::SetMemoStateEx( talker, 9999, 1, 1 );
    }
    if( myself::GetMemoStateEx( talker, 9999, 1 ) == 0 )
    {
      myself::ShowPage( talker, "doctor_chaos_01.htm" );
      myself::SetMemoStateEx( talker, 9999, 1, 1 );
    }
    if( myself::GetMemoStateEx( talker, 9999, 1 ) == 1 )
    {
      myself::Say( "How dare you trespass into my territory! Have you no fear?" );
      myself::ShowPage( talker, "doctor_chaos_02.htm" );
      myself::SetMemoStateEx( talker, 9999, 1, 2 );
    }
    if( myself::GetMemoStateEx( talker, 9999, 1 ) == 2 )
    {
      myself::ShowPage( talker, "doctor_chaos_03.htm" );
      myself::SetMemoStateEx( talker, 9999, 1, 0 );
      myself::AddTimerEx( 1, 1000 );
    }
  }

  EventHandler TIMER_FIRED_EX( timer_id, talker )
  {
    if( timer_id == 1 )
    {
      myself::SpecialCamera( myself.sm, 1, 200, 0, 15, 7000, 7000, 0, 0, 1,
                             0 );
      myself::Say( "Fools! Why haven't you fled yet? Prepare to learn a lesson!" );
      myself::AddTimerEx( 2, 3000 );
    }
    if( timer_id == 2 )
    {
      myself::ChangeMoveType( 0 );
      myself::AddMoveToDesire( 95904, -110652, -3344, 5000 );
      myself::AddTimerEx( 3, 5500 );
    }
    if( timer_id == 3 )
    {
      myself::Suicide();
      myself::Despawn();
      myself::CreateOnePrivateEx( 1025512, "dr_chaos_gigantic_golem", 0, 0,
                                  myself::FloatToInt( 96030 ),
                                  myself::FloatToInt( -110777 ),
                                  myself::FloatToInt( -3312 ), 0,
                                  myself.sm.id, 0, 0 );
      myself::AddEffectActionDesire( dr_chaos_gigantic_golem, social, 0, 0 );
    }
  }
}

 

Why don't you add a function that passes that to another timer_id that does nothing and then the timer is reset again ? 

 

What are you trying to accomplish anyway ? 

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...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock