[[http://www.siedler-games.de|{{:sg-link.jpg|}}]] ====== Schreibstile Vergleich ====== Im Laufe der Zeit hat sich nicht nur der Umgang mit den Funktionen und die Vielfalt an Lösungsmöglichkeiten weiterentwickelt, sondern auch der Schreibstil. Dies ist einfach eine Folge der Tatsache das man bestimmte Dinge einfacher, kürzer und nicht so schreibintensiv gestalten wollte. Zudem war das Ziel es lesbarer zu machen damit man als Scripter leichter den Überblick behält/behalten kann. Jedoch sorgt der eine wie der andere Schreibstil auch oft für Verwirrung und Diskussion. Hier soll es nicht darum gehen welcher Schreibstil der bessere ist, sondern nur darum aufzuzeigen in welchen Bereichen er für Erleichterung sorgen kann und darum zu erklären wie man von dem sogenannten "Alten Schreibstil" zu dem sogenannten "Neuen Schreibstil" kommt. ===== Gegenüberstellung "Alter"/"Neuer" Schreibstil ===== Wir bedienen uns dabei zum einen des ScriptExamples das BB uns mit dem ersten wie zweiten AddOn mitgeliefert hat. \\ Ihr findet {{tutorials:scriptexamplevergleich.7z|hier}} die Gegenüberstellung der einzelnen Funktionen im "alten" wie "neuen" Schreibstil als PDF-Dokument mit \\ einigen Erläuterungen dazu. ===== Vom "Alten" zum "Neuem" Briefing ===== \\ \\ Die neue Form ist nichts anderes wie die alte. Wenn man sich einmal damit auseinander gesetzt hat ist sie sogar besser zu handhaben und darüber hinaus auch viel platzsparender. \\ \\ --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ function CreatePreludeBriefing() -- wie das Kind heißt ist egal. Nur so weiß man welches Briefing das ist. preludeBriefing = {} -- Das ist auch egal wie es heißt. Nur so geschrieben ist es eine globale Variable, -- die immer Speicherplatzt belegt besser : local preludeBriefing = {} -- bis hier sind beide formen gleich local page = 0 -- hier wird eine locale Variable angelegt, die page heißt page = page + 1 -- bei jeder neuen Seite müssen wir die Variable um eins erhöhen. preludeBriefing[page] = {} -- hier machen wir nichts anderes wie table.insert(preludeBriefing,{}) preludeBriefing[page].title = "Dario" -- ab hier kommen einige Variable zu dem table preludeBriefing[page] preludeBriefing[page].explore = 1000 preludeBriefing[page].text = "Dann schaun wir mal" preludeBriefing[page].position = GetPosition("Dario") preludeBriefing[page].dialogCamera = true preludeBriefing[page].quest = {} --hier wird eine Variable des tables wieder ein table preludeBriefing[page].quest.id = 1 -- ab hier werden dem table preludeBriefing[page].quest neue Variable zugewiesen preludeBriefing[page].quest.type = MAINQUEST_OPEN preludeBriefing[page].quest.title = "1. Auftrag" preludeBriefing[page].quest.text = "Sucht euren Vater auf!" preludeBriefing[page].action = function() StartDelayFunc( function() IrgendEine(); end ) end; -- hier noch ne Action page = page + 1 -- Noch ne Seite. preludeBriefing[page] = {} preludeBriefing[page].title = "Ottokar" preludeBriefing[page].text = "Anna ick liebe dir" StartBriefing(preludeBriefing) -- Und jetzt ab die Post end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \\ [[#schreibstile_vergleich|nach Oben]] ==== Ein bischen überarbeitet sieht es so aus: ==== \\ --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ function CreatePreludeBriefing() local preludeBriefing = {} local page = 0 page = page + 1 preludeBriefing[page] = { -- hier habe ich das } geklaut title = "Dario", -- hier kommen überall Kommas hin explore = 1000, text = "Dann schaun wir mal", position = GetPosition("Dario"), dialogCamera = true, quest = { -- hier habe auch ich das } geklaut id = 1, -- Kommas nicht vergessen type = MAINQUEST_OPEN, title = "1. Auftrag", text = "Sucht euren Vater auf!", -- Das Komma muß nicht sein, weil es der Letzte Eintrag ist }, -- hier ist das }, das ich bei Quest weggenommen habe action = function() StartDelayFunc( function() IrgendEine(); end ) end; } -- hier ist es wieder von ganz oben page = page + 1 -- Noch ne Seite. preludeBriefing[page] = { title = "Ottokar", text = "Anna ick liebe dir", } StartBriefing(preludeBriefing) -- Und jetzt ab die Post end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ==== Ist aber immer noch vollkommen identisch. ==== \\ \\ [[#schreibstile_vergleich|nach Oben]] --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ function CreatePreludeBriefing() local preludeBriefing = {} table.insert(preludeBriefing , { -- Hier hängen wir an das table PreludeBriefing die seite oben an title = "Dario", explore = 1000, text = "Dann schaun wir mal", position = GetPosition("Dario"), dialogCamera = true, quest = { id = 1, type = MAINQUEST_OPEN, title = "1. Auftrag", text = "Sucht euren Vater auf!", }, action = function() StartDelayFunc( function() IrgendEine(); end ) end; } ) table.insert(preludeBriefing , { title = "Ottokar", text = "Anna ick liebe dir", } ) StartBriefing(preludeBriefing) -- Und jetzt ab die Post end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ==== Immer noch gleich nur jetzt fehlt schon die Variable **page** ==== Was macht diese Zeile: AP = function(_page) table.insert(briefing, _page); return _page; end Das kann man auch so schreibenAP = function(_page) table.insert(briefing, _page); return _page; end Hier wird der Variablen AP eine Funktion zugewiesen. Jedes mal wenn **AP{irgendwas drin}** aufgerufen wird, so ist das **Irgendwas** die** _page**. Das wird mit **table.insert** an das vorhandene **briefing** angehängt. Dann wird das **irgendwas** nochmal mit **return** zurückgegeben. Also nichts anderes wie in der alten Form, nur viel eleganter. \\ \\ Da wir jetzt eine schöne Funktion haben, lassen wir diese das table.insert machen. --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ function CreatePreludeBriefing() local preludeBriefing = {} local AP = function(_page) table.insert(preludeBriefing, _page); return _page; end -- local gemacht AP{ -- jetzt übernimmt AP die Aufgabe mit dem table insert title = "Dario", explore = 1000, text = "Dann schaun wir mal", position = GetPosition("Dario"), dialogCamera = true, quest = { id = 1, type = MAINQUEST_OPEN, title = "1. Auftrag", text = "Sucht euren Vater auf!", }, action = function() StartDelayFunc( function() IrgendEine(); end ) end; } local variable = AP{ -- noch ne Seite title = "Ottokar", text = "Anna ick liebe dir", } -- jetzt haben wir diese Seite zusätzlich in einer Variablen StartBriefing(preludeBriefing) -- Und jetzt ab die Post end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [[#schreibstile_vergleich|nach Oben]] ==== Und hier noch eine Vorlage zum Kopieren ==== \\ Wenn man am Anschluß des Briefings nichts machen will, kann man die **briefing.finished** auch kompl. weg machen. Es schadet aber auch nichts, wenn man sie stehen läßt. Belegt dann nur Speicherplatz. \\ \\ Einfach ausfüllen und wegschneiden, was nicht gebraucht wird. [[tutorials:briefings-erweiterungen#code|Hier]] der Code für Briefings mit allem drin, was gebraucht wird. --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ function Briefing() -- Eindeutigen Namen geben local briefing = { noEscape = true }; -- hieru gehört noch der Code dazu siehe Briefings-Erweiterungen local AP = function(_page) table.insert(briefing, _page); return _page; end AP{ title = "", text = "", position = GetPosition(""), explore = , dialogCamera = true, quest = { id = , type = , title = "", text = "", }, action = function() end, } AP{ title = "", text = "", position = GetPosition(""), explore = , dialogCamera = true, quest = { id = , type = , title = "", text = "", }, action = function() end, } briefing.finished = function() end; StartBriefing(briefing) end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [[#schreibstile_vergleich|nach Oben]] \\ ==Siehe Scriptverwendungen== * [[reference:briefing|Briefing]] * [[tutorials:kurzbriefings|Kurzbriefings]] * [[tutorials:normale_briefings|Normale Briefings]] * [[tutorials:briefings-erweiterungen|Briefings-Erweiterungen]] * [[tutorials:briefings_mit_auswahlmoeglichkeit|Briefings mit Auswahlmöglichkeit]] * [[reference:createnpc|CreateNPC]] \\ \\ \\ [[:tutorials:index#s5-dedk|Zur S5-DEdK Übersicht]]