![]() | |
| |||||||
![]() | Startseite | Registrieren | Projekte | All Albums | Blogs | Hilfe | Benutzerliste | Interessengemeinschaften | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
| Siedler 6 AeK Mapperecke Alles rundum das Mapdesign (Editor) von Siedler 6 Aufstieg eines Königreiches, Rise of an Empire |
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (Permalink) |
| Minenarbeiter Registriert seit: 31.03.2008 Ort: Ludwigshafen
Beiträge: 437
|
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
__________________ Ich wünsch dir einen, der mit dir geht, in Not und Trauer zu dir steht. Der in guten und in schlechten Zeiten als echter Freund dich wird begleiten. MMS-Siller, Musik-, Video-,Grafikbearbeitung. |
| | |
| | #2 (Permalink) | ||||
| Schafszüchter |
Hallo! Zitat:
![]() Zitat:
Zitat:
![]() Zitat:
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 (Permalink) |
| Minenarbeiter Registriert seit: 31.03.2008 Ort: Ludwigshafen
Beiträge: 437
|
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
__________________ Ich wünsch dir einen, der mit dir geht, in Not und Trauer zu dir steht. Der in guten und in schlechten Zeiten als echter Freund dich wird begleiten. MMS-Siller, Musik-, Video-,Grafikbearbeitung. |
| | |
| | #4 (Permalink) | |
| Fischer Registriert seit: 22.10.2007 Ort: Cran Canaria
Beiträge: 236
| Zitat:
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
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
__________________ Für den Weisen bedeutet jeder Tag ein neues Leben. | |
| | |
| | #5 (Permalink) |
| Minenarbeiter Registriert seit: 31.03.2008 Ort: Ludwigshafen
Beiträge: 437
|
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
__________________ Ich wünsch dir einen, der mit dir geht, in Not und Trauer zu dir steht. Der in guten und in schlechten Zeiten als echter Freund dich wird begleiten. MMS-Siller, Musik-, Video-,Grafikbearbeitung. |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| camera, set, user |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Video] Das Lösungsvideo zur User Einzelspielermap Unruhige Zeiten | SpiderFive | Siedler 6 AeK Lösungen | 8 | 23.06.2010 18:07 |
| [Video] Das 2.Lösungsvideo zur User Einzelspielermap Unruhige Zeiten V2 | SpiderFive | Siedler 6 AeK Lösungen | 2 | 29.12.2007 19:32 |
| [Video] Das Lösungsvideo zur User Einzelspielermap Frauen unter sich | SpiderFive | Siedler 6 AeK Lösungen | 2 | 23.12.2007 22:46 |
| Mapbesprechung User-Map 'Die Rückkehr' | neutrum | Siedler 6 AeK Singleplayer | 0 | 16.11.2007 18:38 |