public bool ShapeBaseShapeBaseUse(coShapeBase thisobj, coItemData data)
            {

            coGameConnection client = thisobj.getControllingClient();
            if (client.isObject())
                {
                double defaultfov = client.getControlCameraDefaultFov();
                double fov = client.getControlCameraFov();
                if (defaultfov != fov)
                    return false;
                }



            if (ShapeBaseShapeBaseGetInventory(thisobj, data) > 0)
                return data.call("onUse", thisobj).AsBool();

            return false;
            }
 public bool ShapeBaseShapeBaseThrow(coShapeBase thisobj, coItemData data, int amount = 1)
     {
     bool functionresult = false;
     if (ShapeBaseShapeBaseGetInventory(thisobj, data) > 0)
         {
         coSimObject objectid = data.call("onThrow", thisobj, amount.AsString());
             {
             if (objectid != 0)
                 {
                 thisobj.call("throwObject", objectid);
                 AudioServerPlay3D("ThrowSnd", thisobj.getTransform());
                 functionresult = true;
                 }
             }
         }
     return functionresult;
     }
        public int ShapeBaseShapeBaseSetInventory(coShapeBase thisobj, coItemData data, int value = 0)
            {
            if (thisobj == "")
                return 0;
            int max = 0;


            max = ShapeBaseShapeBaseMaxInventory(thisobj, data);
            if (value > max)
                value = max;

            int amount = thisobj["inv[" + data.getName() + "]"].AsInt();


            if (amount != value)
                {
                thisobj["inv[" + data.getName() + "]"] = value.AsString();


                if (console.isMethodInNamespace(data, "onInventory"))
                    data.call("onInventory", thisobj, value.AsString());

                //string datablock = console.getDatablock(thisobj).AsString();

                if (console.isObject((( coSimDataBlock)thisobj.getDataBlock())) && console.isMethodInNamespace((( coSimDataBlock)thisobj.getDataBlock()), "onInventory"))
                    (( coSimDataBlock)thisobj.getDataBlock()).call("onInventory", data, value.AsString());
                }
            return value;
            }