Renegade Public Forums
C&C: Renegade --> Dying since 2003™, resurrected in 2024!
Home » Tiberian Technologies / Blackhand Studios » Tiberian Technologies Forum » Syncing or changing BuildingGameObj 'IsDetroyed' state for clients
Re: Syncing or changing BuildingGameObj 'IsDetroyed' state for clients [message #482895 is a reply to message #482894] Thu, 01 August 2013 03:02 Go to previous messageGo to previous message
Omar007 is currently offline  Omar007
Messages: 1711
Registered: December 2007
Location: Amsterdam
Karma:
General (1 Star)
It has been a really long time since I did something with W3D coding but I was able to dig up some very old code:

void Set_Object_Dirty_Bit_All(BaseControllerClass *Base, DIRTY_BIT Bit, bool Set)
{
    for (int i = 1; i < 0x80; i++)
    {
        if (Set)
        {
            Base->DirtyBits[i] |= Bit;
        }
        else
        {
            Base->DirtyBits[i] &= ~Bit;
        }
    }
}

void Restore_Building(GameObject *obj)
{
    if (!Commands->Get_ID(obj) || !obj)
    {
        return;
    }
    GameObject *o = As_BuildingGameObj(obj);
    if (!o)
    {
        return;
    }
    char *c = (char *)obj;
    c += 0x778;
    bool *x = (bool *)c; //Is building destroyed bool
    *x = false; //Make it false

    BaseControllerClass *b = BaseControllerClass::Find_Base(Get_Object_Type(o));
    if (b && !Is_Building_Dead(obj)) 
    {
        if (Is_SoldierFactory(o))
        {
            b->CanGenerateSoldiers = true;
        }
        else if (Is_WarFactory(o) || Is_Airstrip(o))
        {
            b->CanGenerateVehicles = true;
        }
        else if(Is_PowerPlant(o))
        {
            b->IsPowered = true;
        }
        Set_Object_Dirty_Bit_All(b, DB_RARE, true);

        float max = Commands->Get_Max_Health(o);
        Commands->Set_Health(obj, max);
    }
}


I have no idea if this is still valid code for 4.0. The part that should sync the clients is the Set_Object_Dirty_Bit_All if I recall all of this correctly (and I didn't just dig up old broken code xD)


http://tiberiumredux.omarpakker.nl/Old Unused Parts/Plaatjes/PromoteBanner_Hades_small.jpg

[Updated on: Thu, 01 August 2013 03:07]

Report message to a moderator

 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Trouble downloading scripts
Next Topic: Can't see player names anymore?
Goto Forum:
  


Current Time: Mon May 13 21:00:41 MST 2024

Total time taken to generate the page: 0.02230 seconds