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