Benutzer-Werkzeuge

Webseiten-Werkzeuge


tutorials:versionsbeschraenkung

Versionsbeschränkung

Chromix

Normalerweise lassen sich die Karten mit jeder beliebigen Spielversion starten. Diese funktionieren aber nicht immer, da ältere Spielversionen manchmal nicht die Funktionalität der Version, für die die Karte geschrieben wurde, besitzen.

Wenn also jemand mit Version 1.03 eine Karte spielt die für Version 1.05 geschrieben wurde, kann es vorkommen, daß die Karte irgendwann einfach nicht mehr funktioniert, oder das Spiel abstürzt.

Mit dieser Funktion ist es möglich, eine aktuelle Spielversion vorauszusetzen.

Wenn die eigene Version „1.05.0216 Extra1“ ist (wirds rechts unten im Hauptmenü angezeigt), dann kommt in die FirstMapAction folgender Aufruf vor den eigenen Code:

RequireVersion( 1, 05, 0216, 1 );

Ist die Version des Spielers zu alt, wird eine Warnung angezeigt aber es wird dem Spieler erlaubt die Karte zu spielen.

Wenn man weiß, daß das eigene Script bestimmte Funktionen verwendet, die in alten Versionen nicht vorhanden sind, so kann man die Karte auch einfach beenden, wenn die Version des Spielers zu alt ist (da sie ja eh nicht wie gewünscht funktionieren würde).

RequireVersion( 1, 05, 0216, 1, true );

Hier nun die Funktion:

function RequireVersion( _major, _minor, _build, _addon, _forcequit )
	assert( type( _major ) == "number" )
	assert( type( _minor ) == "number" )
	assert( type( _build ) == "number" )
	assert( type( _addon ) == "number" )
 
	local restext;
	local action;
 
	local dummy, dummy, nMajor, nMinor, nBuild, nAddon = string.find( Framework.GetProgramVersion(), "^(%d+)%.(%d+)%.(%d+) Extra(%d+)$" );
	if dummy then
		nMajor = tonumber( nMajor );
		nMinor = tonumber( nMinor );
		nBuild = tonumber( nBuild );
		nAddon = tonumber( nAddon );
 
		local tooOld = false;
		if _addon > nAddon or _major > nMajor then
			tooOld = true;
		elseif _major == nMajor then
			if _minor > nMinor then
				tooOld = true;
			elseif _minor == nMinor then
				if _build > nBuild then
				    tooOld = true;
				end
			end
		end
 
		if tooOld then
		    restext = "Ihre Spielversion ist zu alt! @cr Die Karte benoetigt: " .. _major .. "." .. _minor .. "." .. _build .. " Extra" .. _addon .. " @cr Sie haben: " .. nMajor .. "." .. nMinor .. "." .. nBuild .. " Extra" .. nAddon .. " @cr Bitte installieren sie das aktuelle Update von www.siedler.de";
			action = _forcequit and Framework.CloseGame;
		end
 
	else
		restext = "Die Spielversion konnte nicht ermittelt werden. Die Karte wird eventuell nicht normal spielbar sein! @cr Die Karte benoetigt: " .. _major .. "." .. _minor .. "." .. _build .. " Extra" .. _addon;
	end
 
	if restext then
		restext = restext .. string.rep( " ", 200 );
		StartBriefing{ finished = action, { title = "@color:255,0,0 ACHTUNG!", text = restext } };
	end
end 



Zur Tutorial-Übersicht

tutorials/versionsbeschraenkung.txt · Zuletzt geändert: 2021/09/18 19:16 (Externe Bearbeitung)