Ergebnis 1 bis 10 von 109

Thema: Habt ihr Map Ideen?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #6
    Semi Pro Avatar von FHG
    Registriert seit
    08.11.2007
    Ort
    Wedemark
    Beiträge
    1.182

    Standard

    Zitat Zitat von DrunkenMonkey Beitrag anzeigen
    Mh das mit dem fluten, man könnte ja nen sehr langen trackview machen und da nen watervolume langsam "steigen" lassen...
    Dafür gibt es schon einen Trigger:

    Spoiler RaisingWater:
    Code:
    RaisingWater = {
        
        type = "Trigger",
    
        Properties = {
            WaterVolume="",
            height_start=0,
            height_end=3,
            fSpeed=0.1, -- between 0 and 1 please
            fUpdateTime=0.1, -- in seconds
            bDrain=0,
            fDrainSpeed=0.1,
        },
        bStopped=0,
        bDraining=0,
        Editor={
            Model="Objects/Editor/T.cgf",
        },
    
    }
    
    -------------------------------------------------------------------------------
    function RaisingWater:OnPropertyChange()
        self:OnReset();
    end;
    
    -------------------------------------------------------------------------------
    function RaisingWater:OnInit()
        self:OnReset();
    end;
    
    -------------------------------------------------------------------------------
    function RaisingWater:OnShutDown()
    end;
    
    -------------------------------------------------------------------------------
    function RaisingWater:OnSave(props)    
        props.currlevel = self.currlevel
        props.bStopped = self.bStopped
        props.bDraining = self.bDraining
        props.band_height = self.band_height
        props.speed = self.speed
        props.drainspeed = self.drainspeed
    end;
    
    -------------------------------------------------------------------------------
    function RaisingWater:OnLoad(props)    
        self.currlevel = props.currlevel
        self.bStopped = props.bStopped
        self.bDraining = props.bDraining
        self.band_height = props.band_height
        self.speed = props.speed
        self.drainspeed = props.drainspeed
        if (self.currlevel>0.0001) then
            self:OnTimer();    
        end
    end;
    
    -------------------------------------------------------------------------------
    function RaisingWater:OnReset()
        self:Activate(1);
        self.currlevel=0;
        self.bStopped=0;
        self.bDraining=0;
        self.band_height=self.Properties.height_end-self.Properties.height_start;
        self.speed=(self.Properties.height_end-self.Properties.height_start)*(self.Properties.fSpeed/100);
        self.drainspeed=(self.Properties.height_end-self.Properties.height_start)*(self.Properties.fDrainSpeed/100);
        System.SetWaterVolumeOffset(self.Properties.WaterVolume,0,0,0);
    end;
    
    -------------------------------------------------------------------------------
    function RaisingWater:Event_RaiseWater()
        self:OnReset();
        self:SetTimer(self.Properties.fUpdateTime*1000,0);
        BroadcastEvent(self, "RaiseWater");
    end;
    -------------------------------------------------------------------------------
    function RaisingWater:Event_StopWater()
        self.bStopped=1;
        if(self.Properties.bDrain==1)then
            self.bDraining=1;
        end;
        BroadcastEvent(self, "StopWater");
    end;
    -------------------------------------------------------------------------------
    function RaisingWater:Event_WaterEnded()
        BroadcastEvent(self, "WaterEnded");
    end;
    
    -------------------------------------------------------------------------------
    function RaisingWater:OnTimer()
    
        if(self.bDraining==1)then
            self.currlevel=self.currlevel-self.drainspeed;
            System.SetWaterVolumeOffset(self.Properties.WaterVolume,0,0,self.currlevel);
            if(math.abs(self.currlevel)>math.abs(self.Properties.height_start))then
                self:SetTimer(self.Properties.fUpdateTime*1000,0);
            else
                System.SetWaterVolumeOffset(self.Properties.WaterVolume,0,0,self.Properties.height_start);
                self:Event_WaterEnded();
            end;    
        else    
            self.currlevel=self.currlevel+self.speed;
            System.SetWaterVolumeOffset(self.Properties.WaterVolume,0,0,self.currlevel);
            if(math.abs(self.currlevel)<math.abs(self.band_height))then
                if(self.bStopped==0)then
                    self:SetTimer(self.Properties.fUpdateTime*1000,0);
                end;
            else
                System.SetWaterVolumeOffset(self.Properties.WaterVolume,0,0,self.band_height);
                self:Event_WaterEnded();
            end;    
        end;
        
    end;
    
    RaisingWater.FlowEvents =
    {
        Inputs =
        {
            RaiseWater = { RaisingWater.Event_RaiseWater, "bool" },
            StopWater = { RaisingWater.Event_StopWater, "bool" },
        },
        Outputs =
        {
            RaiseWater = "bool",
            StopWater = "bool",
            WaterEnded = "bool",
        },
    }
    .. habe damit eine Schleuse nachgebaut.
    Geändert von FHG (19.10.2008 um 14:06 Uhr)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •