Komfortfunktion für Skripter

» Siedler Map Source Forum » Siedler DEdK Script Forum » Komfortfunktion für Skripter

Seiten: 1

kingsia
#1
10.07.2010 18:46
Beiträge: 750

Komfortfunktion für Skripter

Wir Skripter wollen jegliche Möglichkeiten ausprobieren und unsere Karten ausgiebig testen bevor wir die Karten veröffentlichen.

Daher ein neue Komfortfunktion die für Skripter gedacht ist.

Damit kann man verschiedene Cheats auswählen beim Start der Karte statt jedesmal den Skript zu ändern.

Es gibt zirka 64 verschiedene Kombinationsmöglichkeiten.
Ich habe nicht alle getestet daher bitte melden wenn ein Kombination nicht wie gewollt funktioniert.

Setzte ein Skriptentität irgendwo mit den Namen jKR_WIPPunkt, am Besten ausser ein sichtbare Bereich und ändere die letzten paar Zeilen deine Karte und Vorschritt entsprechend.

function jKR_WorkInProgress()
	Camera.FollowEntity(GetEntityId("jKR_WIPPunkt"))
	local briefing = {}
	BRIEFING_ZOOMDISTANCE = 1200; BRIEFING_ZOOMANGLE = 5
	local AP, ASP = AddPages(briefing)

	local jKR_WIP_Briefing = {
		{"Mentor", "Option wählen ", "Von vorne anfangen", "Neueste Abschnitt", 2, 4},
		{"Okay, wir werden von vorne anfangen", "Karte sichtbar? ", "Ja", "Nein", 5, 7 },
		{"Nil"},
		{"Okay, Nur den neueste Teil", "Karte sichtbar? ", "Ja", "Nein", 5, 7 },
		{"Okay, Karte wird sichtbar sein", "Willst du Speedups haben? ", "Ja gern", "Nein, normale geschwindidigkeit reicht mir", 8, 10 },
		{"Nil"},
		{"Okay, Karte wird nicht aufgedeckt", "Willst du Speedups haben? ", "Ja gern", "Nein, normale geschwindidigkeit reicht mir", 8,10 },
		{"Okay, Speedups sind verfügbar", "Wie wärs mit extra Resourcen? ", "Ja", "Nein, die brauche ich nicht", 11, 13 },
		{"Nil"},
		{"Okay, Speedups sind ausgeschaltet", "Wie wärs mit extra Resourcen? ", "Ja", "Nein, die brauche ich nicht", 11, 13 },
		{"Okay, Extra Resourcen werden da sein", "Alle Technologien freischalten? ", "Ja", "Nein, das will ich nicht", 14, 16 },
		{"Nil"},
		{"Okay, Normale Startresourcen", "Alle Technologien freischalten? ", "Ja", "Nein, das will ich nicht", 14, 16 },
		{"Technologien werden freigeschaltet", "Jetzt geht es los " },
		{"Nil"},
		{"Technologien werden nicht freigeschaltet", "Jetzt geht es los " },
	}

	local i
	for i = 1, table.getn(jKR_WIP_Briefing) do
		if jKR_WIP_Briefing[i][1] == "Nil" then
			AP (nil);
		elseif jKR_WIP_Briefing[i][3] ~= nil then
			jKR_WIP_Briefing[i][7] = AP {
				mc = {
					title   = jKR_WIP_Briefing[i][1],
					text   = jKR_WIP_Briefing[i][2],
					firstText  = jKR_WIP_Briefing[i][3],
					secondText  = jKR_WIP_Briefing[i][4],
					firstSelected = jKR_WIP_Briefing[i][5],
					secondSelected = jKR_WIP_Briefing[i][6]
				}
			} 
		else
			AP {
				title   = jKR_WIP_Briefing[i][1],
				text   = jKR_WIP_Briefing[i][2],
			} 		
		end
	end
	briefing.finished = function()
		if GetSelectedBriefingMCButton( jKR_WIP_Briefing[2][7] ) == 1 or GetSelectedBriefingMCButton( jKR_WIP_Briefing[4][7] ) == 1 then
			Tools.ExploreArea( 1, -1, 900 )
		end
		if GetSelectedBriefingMCButton( jKR_WIP_Briefing[5][7] ) == 1 or GetSelectedBriefingMCButton( jKR_WIP_Briefing[7][7] ) == 1 then
			function GroupSelection_SelectTroops ( _count )
				mySpeed = mySpeed or 0
				if _count == 1 then
					if mySpeed < 200 then
						Game.GameTimeSpeedUp()
						mySpeed = mySpeed + 1
						Message(mySpeed)
					end
				elseif _count == 2 then
					if mySpeed > -16 then
						Game.GameTimeSlowDown()
						mySpeed = mySpeed - 1
						Message(mySpeed)
					end
				elseif _count == 10 then 
					Game.GameTimeReset()
					mySpeed = 0
				end
			end
		end
		if GetSelectedBriefingMCButton( jKR_WIP_Briefing[8][7] ) == 1 or GetSelectedBriefingMCButton( jKR_WIP_Briefing[10][7] ) == 1 then
			AddGold  (150000)
			AddSulfur(100000)
			AddIron  (100000)
			AddWood  (100000)
			AddStone (100000)
			AddClay  (100000)
		end
		if GetSelectedBriefingMCButton( jKR_WIP_Briefing[11][7] ) == 1 or GetSelectedBriefingMCButton( jKR_WIP_Briefing[13][7] ) == 1 then
			CheatTechnologies(1) for k, v in pairs(Technologies) do ResearchTechnology(v) end
		end
		if GetSelectedBriefingMCButton( jKR_WIP_Briefing[1][7] ) == 1 then
			-- Stelle hier die Funktionsname die als allererstes sufgerufen soll
			Vorspann1() -- Als Beispiel
		else
			-- Stelle hier den Funktionsname für die neueste Abschnitt
			NebelErstellen() --Als Beispiel
		end
	end
	StartBriefing(briefing);
end



Gruss
Kingsia

Mordred
#2
10.07.2010 20:11
Beiträge: 939

das wars bei Anfang einer Legende auch.
mit ca. 20 verschiedenen cheats, alles mögliche.
doch am besten testet man(nach meiner Meinung) so, wie man spielt - mit Zeit
doch die hat nicht jeder...

Flodder
#3
11.07.2010 09:19
Beiträge: 2608

Zitat von kingsia:
Wir Skripter wollen jegliche Möglichkeiten ausprobieren und unsere Karten ausgiebig testen bevor wir die Karten veröffentlichen.


hallo kingsia,
grundsätzlich immer vor Verüffentlichung ausgiebig testen.
Ich persönlich ziehe es allerdings vor, Abschnitte manuell zu testen, bzw. die Startfunktionen in der FMA so einzustellen, dass nur der entsprechende Abschnitt getestet wird, ohne dauernd von vorne beginnen zu müssen. Da weiss ich was ich mache und was dazu gebraucht wird.

So tappe ich z.B. bei dieser Abfrage im Dunkeln:

{"Mentor", "Option wählen ", "Von vorne anfangen", "Neueste Abschnitt", 2, 4},
{"Okay, wir werden von vorne anfangen", "Karte sichtbar? ", "Ja", "Nein", 5, 7 },
{"Nil"},
{"Okay, Nur den neueste Teil", "Karte sichtbar? ", "Ja", "Nein", 5, 7 },


Was genau soll denn da passieren? Genauer gesagt:
Was passiert, wenn man "Neuesten Abschnitt" wählt und im Abschnitt davor z.B. ein Positionstable steht, welches dann im nächsten, also dem "Neuesten" Abschnitt abgefragt wird?

Ich sags Dir:
Der "Neueste Abschnitt" würde nicht laufen. Mehr noch, bei eingeschaltetem debugscript würden vemutlich ERROR-Meldungen angezeigt werden, weil das table noch gar nicht da ist.

Wenn ich das hier:

if GetSelectedBriefingMCButton( jKR_WIP_Briefing[1][7] ) == 1 then
-- Stelle hier die Funktionsname die als allererstes sufgerufen soll 
Vorspann1() -- Als Beispiel


...doch wieder manuell anpassen muss, um bspw. das table mitzustarten, dann kann ich ja gleich die FMA manuell so anpassen, dass der entsprechende Abschnitt korrekt läuft.

Vielleicht hab ich auch nur was übersehen. In dem Fall kannst Du mich gerne berichtigen.

Gruss
-Flodder-

____________________
Take a Nudelholz und hau it on the Kopp of a bekloppt Person .... to give you a better Gefühl than vorher.

Dieser Beitrag wurde von Flodder am 11.07.2010 um 09:31 editiert.

kingsia
#4
11.07.2010 10:43
Beiträge: 750

Hallo Flodder,

Bei dem Fall dass du schilderst wird es nicht laufen aber das liegt nicht an den Komfortfunktion selber sondern das es für die neueste Abschnitt nicht richtig angepasst ist.

Beispiel FMA

function FirstMapAction()
	math.randomseed(XGUIEng.GetSystemTime())
	Score.Player[0] = {}; 
	Score.Player[0]["buildings"] = 0;
	Score.Player[0]["all"] = 0
	ActivateBriefingsExpansion()
	jKR_ActivateMessageExpansion()

--	Vorspann1()
	-- oder
	jKR_WorkInProgress()
end


Erst wenn der Skript komplett fertig ist wird die FMA geändert.

Diese Teil bleibt die ganze Zeit unverändert

	if GetSelectedBriefingMCButton( jKR_WIP_Briefing[1][7] ) == 1 then
		Vorspann1() 




Nur diese Teil muss für jede Abschnitt entsprechend angepasst werden z.B. Tabellen starten usw falls nötig.

	-- Stelle hier den Funktionsname für die neueste Abschnitt
	NebelErstellen() --Als Beispiel




Dann kann ich den Abschnitt schnell testen mit ein Kombination vom Cheats um lögische Abläufe zu prüfen und dann ohne den Skript zu ändern, F1 und Karte neu starten und den Abschnitt testen wie der Spieler es erleben wird.

Gruss
Kingsia

Flodder
#5
11.07.2010 11:07
Beiträge: 2608

Zitat von kingsia:


-- Stelle hier den Funktionsname für die neueste Abschnitt
	NebelErstellen() --Als Beispiel



Ups! Alles klar! Sehr schön das Ganze! Diese Codezeile hatte ich übersehen. Wohl zu heiss heute. Bitte um Entschuldigung.

____________________
Take a Nudelholz und hau it on the Kopp of a bekloppt Person .... to give you a better Gefühl than vorher.

Seiten: 1

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum