Jump to content

Photo

help with link state script


  • Please log in to reply
4 replies to this topic

#1 Shadowblitz16

Shadowblitz16

    Illustrious

  • Members

Posted 23 October 2016 - 01:18 AM

Can a few people help me with this link state script?

 

THING I NEED HELP WITH:

 

- collision detection with code bounding rect (LinkVars[MASK])

- the dead state (takes place after he is done with is dying animation)

 

 

//import "LinkUtilities.zh"
 
 
//Define Variables
LinkVars;
 
//////////////////////////////////////////////////////////////////////////
//Event Scripts Run these in your global scripts
//////////////////////////////////////////////////////////////////////////
void LinkInit()
{
    LinkVars[CSET]      = 6;
    LinkVars[MASK]      = [7, 9, 12, 16]; //Working on how to implement this
    LinkVars[COMBO]     = ANIM_IDLE;
    LinkVars[DIR]       = 0;
    LinkVars[STATES]    = ["IDLEING", "WALKING", "ATTACKING", "CHARGING", "STABBING", "SPINNING", "PUSHING", "PULLING", "LIFTING", "LIFTWALKING", "THROWING", "HURTING", "DYING", "DEAD"];
    LinkVars[STATE]     = LinkVars[STATES]["IDLE"];
    
}
 
void LinkUpdate()
{
    bool LA_STABBING     = ( LA_CHARGING && LinkSolid(1.5));
    bool LA_PUSHING      = (!LA_CHARGING && LinkSolid(1.5));
    bool LA_PULLING      = false; // not yet implemented
    bool LA_LIFTING      = false; // not yet implemented
    bool LA_LIFTWALKING  = false; // not yet implemented
    bool LA_THROWING     = false; // not yet implemented
    bool LA_DEAD         = false; // not yet implemented
    
    
    
    //Set States
    if (LA_NONE)          { (LinkVars[STATE] = LinkVars[STATES]["IDLEING"]);       }
    if (LA_WALKING )      { (LinkVars[STATE] = LinkVars[STATES]["WALKING"]);       }
    if (LA_ATTACKING)     { (LinkVars[STATE] = LinkVars[STATES]["ATTACKING"]);     }
    if (LA_CHARGING)      { (LinkVars[STATE] = LinkVars[STATES]["CHARGING"]);      }
    if (LA_STABBING)      { (LinkVars[STATE] = LinkVars[STATES]["STABBING"]);      }
    if (LA_SPINNING)      { (LinkVars[STATE] = LinkVars[STATES]["CHARGING"]);      }
    if (LA_PUSHING)       { (LinkVars[STATE] = LinkVars[STATES]["PUSHING"]);       }
    if (LA_PULLING)       { (LinkVars[STATE] = LinkVars[STATES]["PULLING"]);       }
    if (LA_LIFTING)       { (LinkVars[STATE] = LinkVars[STATES]["LIFTING"]);       }
    if (LA_LIFTWALKING)   { (LinkVars[STATE] = LinkVars[STATES]["LIFTWALKING"]);   }
    if (LA_THROWING)      { (LinkVars[STATE] = LinkVars[STATES]["THROWING"]);      }
    if (LA_GOTLANDHURT)   { (LinkVars[STATE] = LinkVars[STATES]["HURTING"]);       }
    if (LA_DYING)         { (LinkVars[STATE] = LinkVars[STATES]["DYING"]);         }
    if (LA_DEAD)          { (LinkVars[STATE] = LinkVars[STATES]["DEAD"]);          }
    
    if (LinkVars[STATE] == LinkVars[STATES]["IDLEING"])     { LinkVars[COMBO] = ANIM_IDLE     + LinkVars[DIR]; LinkIdle();     }
    if (LinkVars[STATE] == LinkVars[STATES]["WALKING"])     { LinkVars[COMBO] = ANIM_WALK     + LinkVars[DIR]; LinkWalk();     }
    if (LinkVars[STATE] == LinkVars[STATES]["ATTACKING"])   { LinkVars[COMBO] = ANIM_ATTACK   + LinkVars[DIR]; LinkAttack();   }
    if (LinkVars[STATE] == LinkVars[STATES]["CHARGING"])    { LinkVars[COMBO] = ANIM_CHARGE   + LinkVars[DIR]; LinkCharge();   }
    if (LinkVars[STATE] == LinkVars[STATES]["STABBING"])    { LinkVars[COMBO] = ANIM_STAB     + LinkVars[DIR]; LinkStab();     }
    if (LinkVars[STATE] == LinkVars[STATES]["SPINNING"])    { LinkVars[COMBO] = ANIM_SPIN     + LinkVars[DIR]; LinkSpin();     }
    if (LinkVars[STATE] == LinkVars[STATES]["PUSHING"])     { LinkVars[COMBO] = ANIM_PUSH     + LinkVars[DIR]; LinkPush();     }
    if (LinkVars[STATE] == LinkVars[STATES]["PULLING"])     { LinkVars[COMBO] = ANIM_PULL     + LinkVars[DIR]; LinkPull();     }
    if (LinkVars[STATE] == LinkVars[STATES]["LIFTING"])     { LinkVars[COMBO] = ANIM_LIFT     + LinkVars[DIR]; LinkLift();     }
    if (LinkVars[STATE] == LinkVars[STATES]["LIFTWALKING"]) { LinkVars[COMBO] = ANIM_LIFTWALK + LinkVars[DIR]; LinkLiftWalk(); }
    if (LinkVars[STATE] == LinkVars[STATES]["THROWING"])    { LinkVars[COMBO] = ANIM_THROWING + LinkVars[DIR]; LinkThrow();    }
    if (LinkVars[STATE] == LinkVars[STATES]["HURTING"])     { LinkVars[COMBO] = ANIM_HURT     + LinkVars[DIR]; LinkHurt();     }
    if (LinkVars[STATE] == LinkVars[STATES]["DYING"])       { LinkVars[COMBO] = ANIM_DYING    + LinkVars[DIR]; LinkDying();    }
    if (LinkVars[STATE] == LinkVars[STATES]["DEAD"])        { LinkVars[COMBO] = ANIM_DEAD     + LinkVars[DIR]; LinkDead();     }
    
    Link->Invisible == true;
    Screen->FastCombo(0, Link->X, Link->Y, LinkVars[COMBO], 6, 128);
    LinkVars[DIR] = Link->Dir;
}
 
//Some way to make this function work with the custom mask?
bool LinkSolid(int step)
{
    if (Link->InputUp    && CanWalk(Link->X, Link->Y, DIR_UP,    step, false))
        return true;
    if (Link->InputDown  && CanWalk(Link->X, Link->Y, DIR_DOWN,  step, false))
        return true;
    if (Link->InputLeft  && CanWalk(Link->X, Link->Y, DIR_LEFT,  step, false))
        return true;
    if (Link->InputRight && CanWalk(Link->X, Link->Y, DIR_RIGHT, step, false))
        return true;
        
    return false;
}
 

Edited by Shadowblitz16, 23 October 2016 - 02:15 AM.


#2 Lejes

Lejes

    Seeker of Runes

  • Members
  • Location:Flying High Above Monsteropolis

Posted 23 October 2016 - 02:08 AM

if (Link->HP <= 0)
If you want to interrupt the death animation to do something, you'll have to set Link's HP to something greater than 0, otherwise he'll just die.

#3 Shadowblitz16

Shadowblitz16

    Illustrious

  • Members

Posted 23 October 2016 - 02:16 AM

@Lejes lol I just edited my post. it explains it in more detail 



#4 Lejes

Lejes

    Seeker of Runes

  • Members
  • Location:Flying High Above Monsteropolis

Posted 23 October 2016 - 02:28 AM

I sort of see what you're trying to do with the states, but I'm not sure what you want to do with the solidity mask. The way ZC does the solidity mask for combos is by setting bits in a single integer. I'm not sure that approach would be all that useful for direction input, though. And ZScript doesn't have 2D arrays or a string data type, so you'll have to restructure a lot of what you have there.

#5 Shadowblitz16

Shadowblitz16

    Illustrious

  • Members

Posted 23 October 2016 - 02:11 PM

@Lejes I was going to make the link combos nonsolid and have a custom defined collision box




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users