ZoriaRPG icon

Scripts.zh (Script Execution and Management), v0.2

ZoriaRPG | PRO | 05/30/19 06:10:48 AM UTC | 0 ⭐ | 718 👁️ | Never ⏰ | []
C++ |

3 KB

|

None

|

0 👍

/

0 👎

/*! Script Execution and Management, scripts.zh
* By: ZOriaRPG
* Version 0.2
* 29th May, 2019
*/
 
namespace Scripts
{
    const int IFLAG_SCRITPERPETUAL = 15;
    
    //! Runs an arbitrary item script.
    //! Itemname is the name of the item used to run script scriptname.
    //! If the arg passed to itemname is a literal value, and not a string.
    //! then we use iy as the literal item id.
    //! Returns the script number. 
    int RunItem(int scriptname, int itemname)
    {
        int itemid;
        if ( std::sizeof(itemname) < 2 ) 
        {
            itemid = itemname;
        }
        else
        {
            itemid = Game->GetItem("itemname");
        }
        itemdata id = Game->LoadItemData(itemid);
        int script_number = Game->GetItemScript(scriptname);
        id->Script = script_number;
        id->RunScript();
        return script_number;
    }
    //! As RunItem(int, int), except that we supply new InitD
    int RunItem(int scriptname, int itemname, int initd)
    {
        int itemid;
        if ( std::sizeof(itemname) < 2 ) 
        {
            itemid = itemname;
        }
        else
        {
            itemid = Game->GetItem("itemname");
        }
        itemdata id = Game->LoadItemData(itemid);
        int sz = std::sizeof(initd); /only on valid arrays
        for ( int q = 0; q < sz; ++q )
        {
            id->InitD[q] = initd[q];
        }
            
        
        int script_number = Game->GetItemScript(scriptname);
        id->Script = script_number;
        id->RunScript();
        return script_number;
    }
 
    //! Runs arbitrary ffc script 'name'.
    ffc RunFFC(int name)
    {
        int id; ffc f;
        int script_id = Game->GetFFCScript(name);
        for ( int q - 1; q < 33; ++q)
        {
            f = Screen->LoadFFC(q);
            if ( !f->Script )
            {
                int cmb = Game->GetCombo("Invisible");
                f->Data = cmb;
                f->Script = script_id;
            }
        }
        return f;
    }
    ffc RunFFC(int name, int initd)
    {
        int id; ffc f;
        int script_id = Game->GetFFCScript(name);
        for ( int q - 1; q < 33; ++q)
        {
            f = Screen->LoadFFC(q);
            if ( !f->Script )
            {
                int cmb = Game->GetCombo("Invisible");
                f->Data = cmb;
                f->Script = script_id;
                if ( initd )
                {
                    int sz = std::sizeof(initd);
                    for ( int q = 0; q < sz; ++q )
                    {
                        f->InitD[q] = initd[q];
                    }
                }
            }
        }
        return f;
    }
 
    //! Toggles a perpetual item script on or off using itemdata.
    void ToggleItem(itemdata id, bool on)
    {
        id->Flags[IFLAG_SCRITPERPETUAL] = (on ? true : false );
    }
    
    //! Toggles a perpetual item script on or off using either a literal item ID
    //! or the name of an item, suplied as a string. 
    //! This is automatic: If a string is supplied, we go forward by its contents; 
    //! otherwise, we use the literal value supplied as the item ID
    int ToggleItem(int name, bool state)
    {
        int sz = std::sizeof(name);
        int itemid;
        if ( sz < 1 ) itemid = name;
        else itemid = Game->GetItem(name);
        itemdata id  = Game->LoadItemData(itemid);
        id->Flags[IFLAG_SCRITPERPETUAL] = (on ? true : false );
    }
    
    //ResetItem : Changes a scrit and optionally loads new InitD
    
    //! Spawns an noc, and runs a script.
    //npc RunNPC(npc n, int name)
    //{
        
    //}
    
}

Comments