[[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]]