+ Antworten
Ergebnis 1 bis 5 von 5
  1. #1
    Sombeline
    Gast

    Frage User set camera

    Hallo,

    probiere gerade, ob ich es schaffe, im spiel mal mit dem blick auf eine
    Aktion hinzuweisen.
    Dachte User_setcamera wäre das richtige.

    Wie wird das genau benutzt.
    Ich habe die codes ins globale und entsprechend ins Lokale Script kopiert.
    Im Localen ans ende aber noch vor dem letzten end. Hoffe das war richtig.

    beim Aufruf mit Reward_MSF camera habe ich im code dazugeschrieben:
    function camera()

    ans ende ein end -- oder muss da nichts oder was anderes hin.
    Wie muss die Quest aussehen, damit es auslöst und ich diese Stelle gezeigt bekomme?

    Gruß
    Sombeline

  2. #2
    Schafszüchter Avatar von Netsurfer
    Registriert seit
    01.09.2005
    Ort
    Köln/ Cologne
    Beiträge
    1,121
    Blog Einträge
    10

    Frage AW: User set camera

    Hallo!

    Zitat Zitat von Sombeline Beitrag anzeigen
    Hallo,

    probiere gerade, ob ich es schaffe, im spiel mal mit dem blick auf eine
    Aktion hinzuweisen.
    Dachte User_setcamera wäre das richtige.
    Da denkst du richtig ...

    Wie wird das genau benutzt.
    Ich habe die codes ins globale und entsprechend ins Lokale Script kopiert.
    Im Localen ans ende aber noch vor dem letzten end. Hoffe das war richtig.
    Du hoffst vergeblich! End markiert in LUA das Ende eines Anweisungsblocks, also üblicherweise das Ende einer Funktion. Die Teile des lokalen Teils von UserSetCamera sind aber eigenständige Funktionen, die so wie sie im Wiki stehen an eine "freie Stelle" ins Script eingefügt werden müssen.

    beim Aufruf mit Reward_MSF camera habe ich im code dazugeschrieben:
    function camera()
    Wieso das!?

    ans ende ein end -- oder muss da nichts oder was anderes hin.
    Wie muss die Quest aussehen, damit es auslöst und ich diese Stelle gezeigt bekomme?
    Wann du dein Ereignis auslöst (triggerst) hängt natürlich von deiner Map/ Story ab. Der Aufruf der Funktion UserSetCamera erfolgt immer gleich nur halt ggf. mit unterschiedlichen Parametern.

    Was genau verstehst du denn bitte nicht an der Beschreibung und den Beispielen zu der Funktion im Wiki UserSetCamera [AeK Script-Wiki] ?

    Kleine Anmerkung am Rande:
    Du hast ja immer tolle Ideen und Wünsche. Nur wenn du diese auch in deinen Maps umsetzen willst, dann wirst du dich über kurz oder lang wohl auch mal mit den "Grundlagen" von LUA und dem S6-Scripting beschäftigen müssen.
    Auf Dauer ist es nämlich sehr schwierig, dir bei den ganzen Scriptsachen zu helfen, wenn bei dir immer noch keine Grundlagenkenntnisse vorhanden sind. Und auch für deine eigenen Versuche wäre es mit Sicherheit von Vorteil, wenn du bspw. den Unterschied zwischen einem einmaligen Funktionsaufruf und Jobs kennen würdest.

    Gruß
    Gunther
    ___________________________


    ___________________________

  3. #3
    Sombeline
    Gast

    Standard AW: User set camera

    Hallo Netsurfer ,

    Danke für die Antwort. Lua lernen, probiere ich gerade. Habe ein Buch "Programmieren mit Lua"
    nur hilft mir das alles herzlich wenig, wenn ich nicht weiss wie und in welcher Reihenfolge die Zeilen zusammengesetzt sein müssen.
    Da wäre es hilfreich, wenn ich mal jemanden hätte, der mir in einem code mal hinter die zeilen schreibt was das im genauen heisst, denn mein english hilft mir da nicht wirklich weiter, ist nur schulenglisch und das nicht gerade viel.

    Am Wiki verstehe ich da nur nicht, wie ich eben die camera auslösen kann.
    Da muss ja in der lua was angegeben sein.
    Ob das in der lokalen umgebung noch vor dem Victory kommen muss oder danach.

    Hier steht Aufruf im Wiki? aber eben wie, MSF braucht doch funktion davor oder nicht.
    UserSetCamera(
    {Target = Logic.GetStoreHouse(2), hier steht dann meine Entity,die ich will
    OffsetX = 0,
    OffsetY = -1000,
    Duration = 10,
    ZoomFactor = 0.35,
    RotationAngle = 0,
    MayRotate = 1,
    Title = "Ein neuer Titel ...",
    TitleColor = "64, 0, 255",
    TitleAlpha = 128,
    Text = "Und hier der Text ...!",
    TextColor = "255, 255, 255",
    TextAlpha = 255,
    Bars = "black",
    MiniMap = 1,
    MiniMapMarker = 1}
    )

    Gruß
    Sombeline

  4. #4
    Jäger Avatar von Sokrates
    Registriert seit
    22.10.2007
    Ort
    Schweiz / Baselland
    Beiträge
    274

    Standard AW: User set camera

    Zitat Zitat von Sombeline Beitrag anzeigen
    Hallo,

    probiere gerade, ob ich es schaffe, im spiel mal mit dem blick auf eine
    Aktion hinzuweisen.
    Dachte User_setcamera wäre das richtige.

    Gruß
    Sombeline
    Hi

    Meine letzte Map Die Pyramiden beinhalten ein neues Briefingssystem mit dem Du auch die Möglichkeit hast die Kamera auf irgendeine Aktion zu richten.

    Der Aufruf sieht dann so aus:

    Sok_Briefing.Start( {
    { Position = Logic.GetMarketplace(1), Duration = 7, Angle = 35, Rotation = -75, Zoom = 7,
    } } )

    Der Parameter Position braucht eine EntityID in diesem Fall ist es der Marktplatz au den die Kamera gerichtet wird.
    Bei Duration gibt man die Zeit in Sekunden an. Solange bleibt die Kamera an der gewählten Position fixiert.
    Angle (Winkel) Hier kannst du den Kamerawinkel einstellen.
    Bei Rotation gibt man den Drehungswert für die Kamera an. Werte von -180 bis 180 (360 Grad).
    Bei Zoom Werte von 1-10. 1 = ganz Nahe, 10 ganz Weit!

    Notwendiges Skript in der Global lua Datei:
    Code:
    -- Beginn Briefingsystem 
    function InitSok_Briefing()
     -- BarType:   NormalBar, SmallBar, Transparent
     -- SeitenType: { Title = "Titeltext", Text = "Beschreibung" ,  ActionJob = Funktion, 
     -- Position = EntityID oder PosXY = {posX, posY} , Duration = Sekunden,  Zoom =  1 - 10,  Rotation = -180 bis 180  ,  Angle =  10 - 40 }
     InitSok_Camera()            -- Kamera installieren
     Logic.ExecuteInLuaLocalState(' Script.Load("Script\\MainMenu\\Fader.lua") ')
     Logic.ExecuteInLuaLocalState(' g_Fade.To = 0 ')
     Logic.ExecuteInLuaLocalState(' SetFaderAlpha(0) ')
     Sok_Briefing = { CurrBriefing = {}, WaitList = {}, PageList = {}, 
      PageDuration = 5, IsActive = false, FadeOut = false, FaderIsActive = false,
      PageIsActive = false, EndPage = true, TimePage = 0, TitleColor = "{@color:255,250,0,255}",
     }
     
     Sok_Briefing.Start = function(_briefing)
      if Sok_Briefing.IsActive then
       table.insert(Sok_Briefing.WaitList, _briefing)
       if not Sok_Briefing.WaitList.Job then
        Sok_Briefing.WaitList.Job = StartSimpleJob("Sok_Briefing_WaitForNextBriefing")
       end
      else
       Sok_Briefing.ExecuteBriefing(_briefing)
      end
      return
     end
     
     Sok_Briefing.ExecuteBriefing = function(_briefing)
      Sok_Briefing.IsActive = true
      Sok_Briefing.EndPage = true
      FaderIsActive = false
      Sok_Briefing.CurrBriefing = _briefing
      if Sok_Briefing.CurrBriefing.NormalBar or Sok_Briefing.CurrBriefing.SmallBar
        or Sok_Briefing.CurrBriefing.Transparent then 
       Sok_Briefing.PrepareCurrBriefing()
      end 
      Sok_Briefing.ExecutePage(_briefing[1])
      if #_briefing > 1 then
       Sok_Briefing.EndPage = false
       for i = #_briefing, 2, -1 do
        Sok_Briefing.StartPage(_briefing[i])
       end
      end 
      return
     end
     
     Sok_Briefing.StartPage = function(_page)
      if Sok_Briefing.PageIsActive then
       table.insert(Sok_Briefing.PageList, _page)
       if not Sok_Briefing.PageList.Job then
        Sok_Briefing.PageList.Job = StartSimpleJob("Sok_Briefing_WaitForNextPage")
       end
      else
       Sok_Briefing.ExecutePage(_page)
      end
      return
     end
     
     Sok_Briefing.ExecutePage = function(_page)
      Sok_Briefing.PageIsActive = true
      if _page.Position or _page.PosXY then
       if _page.Position then
        Sok_Briefing.PosX, Sok_Briefing.PosY = Logic.GetEntityPosition(_page.Position)
       elseif _page.PosXY then
        Sok_Briefing.PosX = _page.PosXY[1]
        Sok_Briefing.PosY = _page.PosXY[2]
       end 
       Sok_Camera.SetToPosition(Sok_Briefing.PosX, Sok_Briefing.PosY,
        _page.Zoom, _page.Rotation, _page.Angle)
      end
      Sok_Camera.SaveData = false     -- Kamera Standort erst nach Ende des Briefings 
      if _page.Duration then 
       Sok_Briefing.PageDuration = _page.Duration
      else
       Sok_Briefing.PageDuration = 5   -- Mindest Dauer
      end
      if _page.Title then Sok_Briefing.PrepareCurrPage(_page) end
      if _page.ActionJob then _page.ActionJob() end
      StartSimpleJob("Sok_Briefing_WaitForEndPage")
      return
     end
     
     Sok_Briefing.ResetTheBars = function(_briefing)
      Logic.ExecuteInLuaLocalState(' g_Fade.To = 0 ')
      Logic.ExecuteInLuaLocalState(' SetFaderAlpha(0) ')
      Logic.ExecuteInLuaLocalState('XGUIEng.PopPage()') 
      if Sok_Briefing.CurrBriefing.NormalBar or Sok_Briefing.CurrBriefing.SmallBar
        or Sok_Briefing.CurrBriefing.Transparent then 
       Logic.ExecuteInLuaLocalState('XGUIEng.PopPage()') 
       Logic.ExecuteInLuaLocalState('XGUIEng.PopPage()')
       if Sok_Briefing.CurrBriefing.Transparent then
        Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoomBars_Dodge", 0)')
        Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoomBars2_Dodge", 0)')
       else
        Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoomBars", 0)')
        Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoomBars2", 0)')
       end
      end
      return
     end
     
     Sok_Briefing.PrepareCurrBriefing = function()
      if Sok_Briefing.CurrBriefing.NormalBar or Sok_Briefing.CurrBriefing.SmallBar
        or Sok_Briefing.CurrBriefing.Transparent then  
       if Sok_Briefing.CurrBriefing.Transparent then
        Logic.ExecuteInLuaLocalState('XGUIEng.PushPage("/InGame/ThroneRoomBars_Dodge", false)')
        Logic.ExecuteInLuaLocalState('XGUIEng.PushPage("/InGame/ThroneRoomBars2_Dodge", false)')
       else    
        Logic.ExecuteInLuaLocalState('XGUIEng.PushPage("/InGame/ThroneRoomBars", false)')
        Logic.ExecuteInLuaLocalState('XGUIEng.PushPage("/InGame/ThroneRoomBars_2", false)')
       end
       if Sok_Briefing.CurrBriefing.SmallBar then 
        Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoomBars", true)')  
        Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThronRoomBars_2", 0)')  
       end
      end
      Logic.ExecuteInLuaLocalState('ThroneRoomCameraControl = ThroneRoomCameraControl or function() end ')
      Logic.ExecuteInLuaLocalState('ThroneRoomLeftClick = ThroneRoomLeftClick or function() end ')
      Logic.ExecuteInLuaLocalState('XGUIEng.PushPage("/InGame/ThroneRoom/Main", false)')
      Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoom/Main/DialogTopChooseKnight", 0)')
      Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoom/Main/DialogBottomRight3pcs", 0)')
      Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoom/Main/KnightInfoButton", 0)')
      Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoom/Main/Briefing", 0)')
      Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoom/Main/BackButton", 0)')
      Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoom/Main/TitleContainer", 0)')
      Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoom/Main/StartButton", 0)')
      Logic.ExecuteInLuaLocalState('InitializeFader()')
      Logic.ExecuteInLuaLocalState('g_Fade.To = 0')
      FaderIsActive = true
      return
     end
     
     Sok_Briefing.PrepareCurrPage = function(_page)
      if _page.Title then
       Sok_Briefing.title = Umlaute(Sok_Briefing.TitleColor.."{center}{darkshadow}".._page.Title)
       Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoom/Main/MissionBriefing/Title", 1)')
       Logic.ExecuteInLuaLocalState('XGUIEng.SetText("/InGame/ThroneRoom/Main/MissionBriefing/Title", "'..Sok_Briefing.title..'")')
      end 
      if _page.Text then
       if Sok_Briefing.CurrBriefing.SmallBar then
        Sok_Briefing.text = Umlaute("{cr}{cr}{cr}".._page.Text)
       else
        Sok_Briefing.text = Umlaute(_page.Text)
       end 
       Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/ThroneRoom/Main/MissionBriefing/Text", 1)')
       Logic.ExecuteInLuaLocalState('XGUIEng.SetText("/InGame/ThroneRoom/Main/MissionBriefing/Text", "'..Sok_Briefing.text..'")')
      end
      if FaderIsActive then
       if _page.FadeIn then
        if _page.FaderAlpha then
         Logic.ExecuteInLuaLocalState([[g_Fade.To = "'..page.FaderAlpha..'"]])
        end 
        Sok_Briefing.PageDuration = Sok_Briefing.PageDuration + 3
        Logic.ExecuteInLuaLocalState(' FadeIn(3) ')
       end 
       if _page.FadeOut then
        Sok_Briefing.FadeOut = true
       else 
        Sok_Briefing.FadeOut = false
       end
      end 
      return
     end
     
    end 
    function Sok_Briefing_WaitForEndPage()
     if Sok_Briefing.TimePage == (Sok_Briefing.PageDuration) then
      if FaderIsActive then
       if Sok_Briefing.FadeOut then
        Sok_Briefing.PageDuration = Sok_Briefing.PageDuration + 3
        Logic.ExecuteInLuaLocalState(' FadeOut(3) ')
        Sok_Briefing.FadeOut = false
       end
      end 
     end
     if Sok_Briefing.TimePage >= Sok_Briefing.PageDuration then
      Sok_Briefing.PageIsActive = false
      Sok_Briefing.TimePage = 0
      if Sok_Briefing.EndPage then
       Sok_Briefing.FadeOut = false
       Sok_Briefing.IsActive = false
       Sok_Briefing.PageIsActive = false
       if Sok_Briefing.CurrBriefing.NormalBar or Sok_Briefing.CurrBriefing.SmallBar
        or Sok_Briefing.CurrBriefing.Transparent then 
        Sok_Briefing.ResetTheBars()
       end 
       Sok_Camera.Restore()
       Sok_Briefing.CurrBriefing = nil
      end 
      return true
     end 
     Sok_Briefing.TimePage = Sok_Briefing.TimePage + 1
    end
    function Sok_Briefing_WaitForNextBriefing()
     if not Sok_Briefing.IsActive then
      Sok_Briefing.ExecuteBriefing(table.remove(Sok_Briefing.WaitList), 1)
      if #Sok_Briefing.WaitList == 0 then
       Sok_Briefing.WaitList.Job = nil
       return true
      end
     end
    end
    function Sok_Briefing_WaitForNextPage()
     if not Sok_Briefing.PageIsActive then
      Sok_Briefing.ExecutePage(table.remove(Sok_Briefing.PageList), 1)
      if #Sok_Briefing.PageList == 0 then
       Sok_Briefing.PageList.Job = nil
       Sok_Briefing.EndPage = true
       return true
      end
     end
    end
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------
    -- Kameraroutinen
    function InitSok_Camera()    -- in FMA starten
     Sok_Camera = { SaveData = true }        -- Table Kamera Aktionen
     Sok_Camera.Restore = function()
      Sok_Camera.SaveData = true
      Logic.ExecuteInLuaLocalState('Display.SetRenderFogOfWar(1)')
      Logic.ExecuteInLuaLocalState('Sok_CameraRestore(0)')
      Logic.ExecuteInLuaLocalState('Game.GameTimeSetFactor(GUI.GetPlayerID(), g_GameSpeed or 1)')
      Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/Root/Normal", 1)')
      Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/Root/3dOnScreenDisplay", 1)')
      Logic.SetGlobalInvulnerability(0)   -- Unverwundbarkeit aufheben
      return
     end
     
     Sok_Camera.SetToPosition = function(_posX, _posY, _zoomFactor, _rotation, _zoomAngle)
      if Sok_Camera.SaveData then
       Logic.SetGlobalInvulnerability(1)
       Logic.ExecuteInLuaLocalState('Sok_CameraRestore(1,"'.._posX..'","'.._posY..'")') -- Werte sichern
       Logic.ExecuteInLuaLocalState('Game.GameTimeSetFactor(GUI.GetPlayerID(), 1)') -- Normal Geschwindigkeit
       Logic.ExecuteInLuaLocalState('Display.SetRenderFogOfWar(0)')
       Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/Root/Normal", 0)')
       Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/Root/3dOnScreenDisplay", 0)')
      end
      Logic.ExecuteInLuaLocalState('Camera.RTS_SetLookAtPosition("'.._posX..'","'.._posY..'")') -- neue Position
      if _zoomFactor then
       local zoom = (_zoomFactor / 20) 
       Logic.ExecuteInLuaLocalState('Camera.RTS_SetZoomFactor("'..zoom..'")')  -- 0.05 - 0.5
      end
      if _rotation then
       Logic.ExecuteInLuaLocalState('Camera.RTS_SetRotationAngle("'.._rotation..'")')    -- -180 bis 180
      end
      if _zoomAngle then
       Logic.ExecuteInLuaLocalState('Camera.RTS_SetZoomAngle("'.._zoomAngle..'")')    -- 10 - 40
      end
      return
     end
     Sok_Camera.FollowEntity = function (_entity)
      Logic.ExecuteInLuaLocalState('Camera.RTS_FollowEntity("'.._entity..'")')
     end
     
     Sok_Camera.Rotate = function(_enable)
      if _enable then
       Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/Root/Normal", 1)')
       Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/Root/Normal/MissionTimer", 0)')
       Logic.ExecuteInLuaLocalState("CameraAnimation.StartCameraRotation(1)")
      else 
       Logic.ExecuteInLuaLocalState("CameraAnimation.Abort()")
       Logic.ExecuteInLuaLocalState('XGUIEng.ShowWidget("/InGame/Root/Normal/MissionTimer", 1)')
      end
      return true
     end
    end
    Aufrufen in der Global LUA -> Mission_FirstMapAction()

    Skript in der Lokalen LUA Datei:
    Code:
    function Sok_CameraRestore(_enabled, _posX, _posY)  
     if _enabled == 1 then
      Sok_CameraSave = { Pos = {Camera.RTS_GetLookAtPosition() },
      Zoom = Camera.RTS_GetZoomFactor(), Rotation = Camera.RTS_GetRotationAngle(),
      ScrollSpeed = Camera.RTS_GetScrollSpeed(), BorderScroll = Camera.RTS_GetBorderScrollSize() }
      Camera.RTS_SetScrollSpeed(0)
      Camera.RTS_SetBorderScrollSize(0)
     else
      if Sok_CameraSave then
       Camera.RTS_SetLookAtPosition(unpack(Sok_CameraSave.Pos))
       Camera.RTS_SetZoomFactor(Sok_CameraSave.Zoom)
       Camera.RTS_SetRotationAngle(Sok_CameraSave.Rotation)
       Camera.RTS_SetScrollSpeed(Sok_CameraSave.ScrollSpeed)
       Camera.RTS_SetBorderScrollSize(Sok_CameraSave.BorderScroll)
      end
     end
    end
    Gruss Sokrates
    Für den Weisen bedeutet jeder Tag ein neues Leben.

  5. #5
    Sombeline
    Gast

    Standard AW: User set camera

    Danke Sokrates,

    aber Briefings wollte ich noch nicht angehen, da muss ich genau wissen, was ich da tu. Und aus den vielen Zeilen und Parametern werde ich jetzt noch nicht schlau.

    Sombeline

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. Das Lösungsvideo zur User Einzelspielermap Unruhige Zeiten
    Von SpiderFive im Forum Siedler 6 AeK Lösungen
    Antworten: 8
    Letzter Beitrag: 23.06.2010, 19:07
  2. Das 2.Lösungsvideo zur User Einzelspielermap Unruhige Zeiten V2
    Von SpiderFive im Forum Siedler 6 AeK Lösungen
    Antworten: 2
    Letzter Beitrag: 29.12.2007, 20:32
  3. Das Lösungsvideo zur User Einzelspielermap Frauen unter sich
    Von SpiderFive im Forum Siedler 6 AeK Lösungen
    Antworten: 2
    Letzter Beitrag: 23.12.2007, 23:46
  4. User-Map 'Die Rückkehr'
    Von neutrum im Forum Siedler 6 AeK Singleplayer
    Antworten: 0
    Letzter Beitrag: 16.11.2007, 19:38

Stichworte

Berechtigungen

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