FANDOM


twA_Laufschrift ist eine Funktion, die am Spielbeginn einen Text zeilenweise einblendet. Es werden 5 Zeilen angezeigt und der Text wird unten eingeblendet und rutscht dann nach oben hoch, bis er ausgeblendet wird. Die Funktion kann nur dann benutzt werden, wenn noch keine Aufträge aktiv sind.

AufrufBearbeiten

Um die Laufschrift zu starten wird volgende Funktion verwendet:

twA_Laufschrift_Start(_text,_time,_callback)
Argument Beschreibung
_text Table mit dem Text
_time Anzeigezeit in Zehntelsekunden
_callback Funktion, die nach dem Abspielen aufgerufen wird

BeispielBearbeiten

Es folgt ein Beispiel für die Anwendung:

function Vorspann()
	t = {
		{"Dies ist ein Beispiel",},
		{"",},
		{"Der Text wird von unten nach oben durchlaufen",},
		{"und dann wieder verschwinden.",},
		{"",},
		{"Die letzte Zeile muss immer leer sein.",},
		{"",}, -- letzte Zeile
	}
	twA_Laufschrift_Start(t,20,VorspannStopp)
end

function VorspannStopp()
	BriefingMissionStart()
end

Jede Zeile wird als Untertable initialisiert. Die letzte Zeile muss ein leerer String sein. Die Callback-Funktion wird ohne Aufrufklammern angegeben.

FunktionscodeBearbeiten

Diese Funktionen müssen einmalig im globalen Skript vorkommen:

-- Laufschrift von totalwarANGEL ---------------------------------------------------------------
-- Version 9.2012 --------------------------------------------
function twA_Laufschrift_Start(_text,_lenght,_Callback,_textColor)
	assert((type(_text) == "table"), "Laufschrift: Argument #1 '_text' muss ein Table sein.")
	assert((type(_lenght) == "number"), "Laufschrift: Argument #2 '_lenght' muss eine Zahl sein.")
	assert((type(_Callback) == "function"), "Laufschrift: Argument #3 '_Callback' muss eine Funktion sein.")
	if not _textColor then _textColor = "{@color:255,255,255,255}" end
	if not _pos then _pos = {X = 500, Y = 500,}end
	twA_Lauf = {
		text = _text,
		Ctime = _lenght,
		CMax = _lenght,
		Position = _pos,
		Callback = _Callback,
		textColor = _textColor,
		MaxTime = ((#_text)*_lenght)+(_lenght*4),
	}
	
	local index = 5
	for i=1,#twA_Lauf.text do
		index = index + 1
		table.insert(twA_Lauf.text[i],index)
	end
	Logic.ExecuteInLuaLocalState("XGUIEng.ShowWidget('/InGame/Root/Normal/AlignBottomRight',0)")
	Logic.ExecuteInLuaLocalState("XGUIEng.ShowWidget('/InGame/Root/Normal/AlignCenter',0)")
	Logic.ExecuteInLuaLocalState("XGUIEng.ShowWidget('/InGame/Root/Normal/AlignTopLeft/TopBar',0)")
	Logic.ExecuteInLuaLocalState("local size = {GUI.GetScreenSize()};XGUIEng.SetWidgetSize('/InGame/Root/Normal/NotesWindow',size[1],size[2]);XGUIEng.SetWidgetSize('/InGame/Root/Normal/NotesWindow/NotesWindowOutput',size[1],size[2])")
	Logic.ExecuteInLuaLocalState("Camera.SwitchCameraBehaviour(2);GUI.ClearNotes();Camera.FreeView_SetPosition(".._pos.X..",".._pos.Y..");Display.SetRenderSky(0)")
	twA_Lauf.Display = {"","","","",""}
	twA_Lauf.Job = StartSimpleHiResJob("twA_Laufschrift_Job")
	
end
function twA_Laufschrift_Job()
	twA_Lauf.MaxTime = twA_Lauf.MaxTime - 1
	if twA_Lauf.MaxTime > 0 then
		Logic.ExecuteInLuaLocalState("XGUIEng.ShowWidget('/InGame/Root/Normal/AlignBottomLeft',0)")
		twA_Lauf.Ctime = twA_Lauf.Ctime - 1
		if twA_Lauf.Ctime == 0 then
			for i=1,#twA_Lauf.text do
				twA_Lauf.text[i][2] = twA_Lauf.text[i][2] - 1
				if twA_Lauf.text[i][2] < 6 and twA_Lauf.text[i][2] > 0 then
					twA_Lauf.Display[twA_Lauf.text[i][2]] = twA_Lauf.text[i][1]
				end
			end
			twA_Laufschrift_Anzeige(twA_Lauf.Display[1],twA_Lauf.Display[2],twA_Lauf.Display[3],twA_Lauf.Display[4],twA_Lauf.Display[5])
			twA_Lauf.Ctime = twA_Lauf.CMax
		end
	else
		twA_Lauf.Job = nil
		local pos = {X = Logic.WorldGetSize()/2, Y = Logic.WorldGetSize()/2}
		Logic.ExecuteInLuaLocalState("XGUIEng.ShowWidget('/InGame/Root/Normal/AlignBottomLeft',1)")
		Logic.ExecuteInLuaLocalState("XGUIEng.ShowWidget('/InGame/Root/Normal/AlignBottomRight',1)")
		Logic.ExecuteInLuaLocalState("XGUIEng.ShowWidget('/InGame/Root/Normal/AlignCenter',1)")
		Logic.ExecuteInLuaLocalState("XGUIEng.ShowWidget('/InGame/Root/Normal/AlignTopLeft/TopBar',1)")
		Logic.ExecuteInLuaLocalState("Camera.RTS_SetLookAtPosition("..pos.X..","..pos.Y..")")
		Logic.ExecuteInLuaLocalState("Camera.SwitchCameraBehaviour(0)")
		Logic.ExecuteInLuaLocalState("Display.SetRenderSky(1)")
		Logic.ExecuteInLuaLocalState("GUI.ClearNotes()")
		-- workaround to avoid short game freezes
		StartSimpleJobEx( function() twA_Lauf.Callback() return true end)
		return true
	end
end
function twA_Laufschrift_Anzeige(a,b,c,d,e)
	for i=1,10 do Logic.DEBUG_AddNote("")end
	Logic.DEBUG_AddNote(Umlaute("{center} "..twA_Lauf.textColor.." "..a))
	Logic.DEBUG_AddNote(Umlaute("{center} "..twA_Lauf.textColor.." "..b))
	Logic.DEBUG_AddNote(Umlaute("{center} "..twA_Lauf.textColor.." "..c))
	Logic.DEBUG_AddNote(Umlaute("{center} "..twA_Lauf.textColor.." "..d))
	Logic.DEBUG_AddNote(Umlaute("{center} "..twA_Lauf.textColor.." "..e))
	for i=1,2 do Logic.DEBUG_AddNote("")end
end

Damit der Code funktioniert wird zusätzlich die Umlaute-Funktion benötigt. Wenn du den Briefing-Code von OldMacDonald oder das NEP verwendest, muss Umlaute nicht extra ins Skript kopiert werden.

Störung durch Adblocker erkannt!


Wikia ist eine gebührenfreie Seite, die sich durch Werbung finanziert. Benutzer, die Adblocker einsetzen, haben eine modifizierte Ansicht der Seite.

Wikia ist nicht verfügbar, wenn du weitere Modifikationen in dem Adblocker-Programm gemacht hast. Wenn du sie entfernst, dann wird die Seite ohne Probleme geladen.

Auch bei FANDOM

Zufälliges Wiki