Briefing
» Siedler Map Source Forum » Siedler DEdK Script Forum » Briefing
Seiten: 1
wilma456
|
#1 08.12.2013 20:55 Beiträge: 460 |
Briefing
Hallo,
ich habe das Problem, das der Text bei allen Briefingseiten nicht vollständig angezeigt wird. Außerdem rennt Kerberos manchmal in oder nach dem Briefing davon, immer in eine andere Richtung. Meistens bleibt er aber stehen und das soll er auch.
____________________
Schlacht um Crawford
Wilmasmod
wilma456
|
#3 08.12.2013 21:07 Beiträge: 460 |
Zitat von mcb:
Wird der Text bei einem Umlaut abgeschnitten?
Ich hab zwar nicht darauf geachtet aber ich glaube nicht. Ich habe auf jeden Fall das Umlaute Skript drin:
function Umlaute( _text ) local texttype = type( _text ); if texttype == "string" then _text = string.gsub( _text, "ä", "\195\164" ); _text = string.gsub( _text, "ö", "\195\182" ); _text = string.gsub( _text, "ü", "\195\188" ); _text = string.gsub( _text, "ß", "\195\159" ); _text = string.gsub( _text, "Ä", "\195\132" ); _text = string.gsub( _text, "Ö", "\195\150" ); _text = string.gsub( _text, "Ü", "\195\156" ); return _text; elseif texttype == "table" then for k,v in _text do _text[k] = Umlaute( v ); end return _text; else return _text; end end function AutoUmlaut() StartBriefingUmlauteOrig = StartBriefing; StartBriefing = function( _briefing ) StartBriefingUmlauteOrig( Umlaute( _briefing ) ); end CreateNPCUmlauteOrig = CreateNPC; CreateNPC = function( _npc ) CreateNPCUmlauteOrig( Umlaute( _npc ) ); end MessageUmlauteOrig = Message; Message = function( _text ) MessageUmlauteOrig( Umlaute( tostring( _text ) ) ); end end
____________________
Schlacht um Crawford
Wilmasmod
jugl
|
#4 08.12.2013 21:10 Beiträge: 803 |
Wenn Kerberos davon rennt, scheint ihm das Briefing nicht zu passen
Nein, war ein Joke. Kann es sein, dass sich in der Nähe, wo das Briefing ausgelöst wird, feindliche Einheiten (Truppen oder Gebäude) befinden ? Dann ist es klar, denn er versucht diese anzugreifen. Dann musst du kurzzeitig über eine AP- Seite in der action = funktion den Gegner auf neutral oder freundlich setzen.
____________________
Si tus vi late, in isse tabernit.
wilma456
|
#5 08.12.2013 21:14 Beiträge: 460 |
Zitat von jugl:
Wenn Kerberos davon rennt, scheint ihm das Briefing nicht zu passen
Nein, war ein Joke. Kann es sein, dass sich in der Nähe, wo das Briefing ausgelöst wird, feindliche Einheiten (Truppen oder Gebäude) befinden ? Dann ist es klar, denn er versucht diese anzugreifen. Dann musst du kurzzeitig über eine AP- Seite in der action = funktion den Gegner auf neutral oder freundlich setzen.
Nein. Auf seiner Site des Flusses sind nur seine eigenen Gebäude.
Wahrscheinlich hat er Angst vor Erec."
____________________
Schlacht um Crawford
Wilmasmod
bobby
|
#6 08.12.2013 22:03 Beiträge: 393 |
Wird dass bei dir in der FMA auch aufgerufen:
AutoUmlaut()
Erfolgt der Aufruf des Briefings in dem Kerberos wegrennt über einen NPC oder über etwas Anderes?
____________________
Tools und Verbesserungen für Siedler: settlers.pro
Neues:
Cutscene Editor
LuaDebugger v0.5.2
wilma456
|
#7 08.12.2013 22:07 Beiträge: 460 |
Zitat von bobby:
Wird dass bei dir in der FMA auch aufgerufen:
AutoUmlaut()
Erfolgt der Aufruf des Briefings in dem Kerberos wegrennt über einen NPC oder über etwas Anderes?
Natürlich
____________________
Schlacht um Crawford
Wilmasmod
bobby
|
#8 08.12.2013 22:12 Beiträge: 393 |
Poste doch bitte das Briefing bei dem Text abgeschnitten wird.
____________________
Tools und Verbesserungen für Siedler: settlers.pro
Neues:
Cutscene Editor
LuaDebugger v0.5.2
wilma456
|
#9 08.12.2013 22:26 Beiträge: 460 |
Ich schreibe gerade von einem anderen PC. Aber es ist bei jedem Briefing so.
____________________
Schlacht um Crawford
Wilmasmod
wilma456
|
#10 08.12.2013 22:40 Beiträge: 460 |
Mir ist gerade eingefallen, das Sascha das Skript überarbeitet hat, weil bei mir das Briefing nicht funktioniert. Er hat es mir per PN geschickt. Hier ist also der relevante Teil:
-- This function is called on game start after all initialization is done function FirstMapAction() CreatePreludeBriefing() ActivateBriefingsExpansion() AutoUmlaut() CreateChest(GetPosition("chest1"), chestCallbackGold) CreateChest(GetPosition("chest2"), chestCallbackIron) CreateChest(GetPosition("chest3"), chestCallbackClay) CreateChest(GetPosition("chest4"), chestCallbackSulfur) CreateChest(GetPosition("chest5"), chestCallbackStone) CreateChest(GetPosition("chest6"), chestCallbackIron2) CreateChest(GetPosition("chest7"), chestCallbackGold2) CreateChestOpener("Erec") StartChestQuest() Explore.Show("ShowFestung", ZurEntity("Festung",0), 3000 ) -- Level 0 is deactivated...ignore MapEditor_SetupAI(2, 3, 0, 0, "Burg", 0, 0) MapEditor_SetupAI(3, 0, 0, 0, "", 0, 0) MapEditor_SetupAI(4, 0, 0, 0, "", 0, 0) MapEditor_SetupAI(5, 0, 0, 0, "", 0, 0) MapEditor_SetupAI(6, 0, 0, 0, "", 0, 0) MapEditor_SetupAI(7, 0, 0, 0, "", 0, 0) MapEditor_SetupAI(8, 0, 0, 0, "", 0, 0) end function CreatePreludeBriefing() local briefing = { noEscape = true }; local AP = function(_page) table.insert(briefing, _page); return _page; end; local page1 = AP{ title = "Prolog", text = "?", npc = { id = GetEntityId("Erec"), isObserved = true }, dialogCamera = true }; local page2 = AP{ title = "Prolog", text = "?", npc = { id = GetEntityId( "Kerberos" ), isObserved = true }, dialogCamera = true }; pageQuestKerberos = AP{ title = "Prolog", text = "Deshalb gibt es nur eine Möglichkeit: Ihr müsst seine Festung zerstören, damit Erec endlich seinen wohhlverdienten Urlaub genießen kann.", position = GetPosition("Festung"), dialogCamera = false, quest = { title = "Kerberos", text = "?", type = MAINQUEST_OPEN, id = 1 } }; briefing.finished = function() ResolveBriefing(page1) ResolveBriefing(page2) StartSimpleJob("VictoryJob") end StartBriefing(briefing); end
PS:
Ich habe den Text durch ein Fragezeichen ersetzt,weil ich die Story nicht verraten will.
____________________
Schlacht um Crawford
Wilmasmod
mcb
|
#11 08.12.2013 23:23 Beiträge: 1472 |
Das PreludeBriefing wird erstellt, bevor ActivateBriefingsExpansion die Umlaute korrigieren kann. Wenn du die beiden Befehle in der FMA tauschst, müsste es funktionieren.
wilma456
|
#12 09.12.2013 12:31 Beiträge: 460 |
Zitat von mcb:
Das PreludeBriefing wird erstellt, bevor ActivateBriefingsExpansion die Umlaute korrigieren kann. Wenn du die beiden Befehle in der FMA tauschst, müsste es funktionieren.
Hab ich jetzt gemacht, aber gebracht hat es nichts.
____________________
Schlacht um Crawford
Wilmasmod
wilma456
|
#13 09.12.2013 15:24 Beiträge: 460 |
Hab jetzt einen Screenshot hochbeladen. Das Biefing bricht ab und Kerberos haut ab. Der Screenshot ist hier zu finden:
http://www.siedler-maps.de/scr...19040d94b95547380a8c376689e243
____________________
Schlacht um Crawford
Wilmasmod
Peter-FS
|
#14 09.12.2013 16:28 Beiträge: 1086 |
Nachdem nicht das ganze Skript zu sehen ist, kann man schlecht etwas sagen. Probier es mal damit, funktioniert in meinen Maps einwandfrei. Wenn das auch nicht funktioniert, bitte das ganze Skript posten.
Autoumlaut, Umlaute und alles dazugehörige deaktivieren.
In die FMA wie bisher den Aufruf:
ActivateBriefingsExpansion()
function ActivateBriefingsExpansion() if not unpack{true} then local unpack2; unpack2 = function( _table, i ) i = i or 1; assert(type(_table) == "table"); if i <= table.getn(_table) then return _table[i], unpack2(_table, i); end end unpack = unpack2; end Briefing_ExtraOrig = Briefing_Extra; Briefing_Extra = function( _v1, _v2 ) for i = 1, 2 do local theButton = "CinematicMC_Button" .. i; XGUIEng.DisableButton(theButton, 1); XGUIEng.DisableButton(theButton, 0); end if _v1.action then assert( type(_v1.action) == "function" ); if type(_v1.parameters) == "table" then _v1.action(unpack(_v1.parameters)); else _v1.action(_v1.parameters); end end Briefing_ExtraOrig( _v1, _v2 ); end; GameCallback_EscapeOrig = GameCallback_Escape; StartBriefingOrig = StartBriefing; EndBriefingOrig = EndBriefing; MessageOrig = Message; CreateNPCOrig = CreateNPC; StartBriefing = function(_briefing) assert(type(_briefing) == "table"); if _briefing.noEscape then GameCallback_Escape = function() end; briefingState.noEscape = true; end StartBriefingOrig(Umlaute(_briefing)); end EndBriefing = function() if briefingState.noEscape then GameCallback_Escape = GameCallback_EscapeOrig; briefingState.noEscape = nil; end EndBriefingOrig(); end; Message = function(_text) MessageOrig(Umlaute(tostring(_text))); end; CreateNPC = function(_npc) CreateNPCOrig(Umlaute(_npc)); end; Umlaute = function(_text) local texttype = type(_text); if texttype == "string" then _text = string.gsub( _text, "ä", "\195\164" ); _text = string.gsub( _text, "ö", "\195\182" ); _text = string.gsub( _text, "ü", "\195\188" ); _text = string.gsub( _text, "ß", "\195\159" ); _text = string.gsub( _text, "Ä", "\195\132" ); _text = string.gsub( _text, "Ö", "\195\150" ); _text = string.gsub( _text, "Ü", "\195\156" ); return _text; elseif texttype == "table" then for k, v in _text do _text[k] = Umlaute( v ); end return _text; else return _text; end end; end
____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!
Kalle
|
#15 09.12.2013 17:10 Beiträge: 1150 |
dem Text nach zu urteiln, wird es heißen "genießen" und das "ß" ist ein deutsches Sonderzeichen, welches nicht dargestellt werden möchte.
Versuch doch mal folgendes: Ändere Deine Texte in "aaaabbccc", also ohne Sonderzeichen, und schon funktioniert es vermutlich. Also liegt Dein Problem an den Umlauten und demzufolge an dem Aufruf der Briefingerweiterung. Dort musst Du sicherlich den Fehler suchen...
____________________
Lieber Siedeln statt (fern)sehen.....
wilma456
|
#16 09.12.2013 17:45 Beiträge: 460 |
Zitat von Kalle:
dem Text nach zu urteiln, wird es heißen "genießen" und das "ß" ist ein deutsches Sonderzeichen, welches nicht dargestellt werden möchte.
Versuch doch mal folgendes: Ändere Deine Texte in "aaaabbccc", also ohne Sonderzeichen, und schon funktioniert es vermutlich. Also liegt Dein Problem an den Umlauten und demzufolge an dem Aufruf der Briefingerweiterung. Dort musst Du sicherlich den Fehler suchen...
Wo soll den ein Fehler sein? Ich habe es kopiert. Was ist eigentlich mit Kerberos?
____________________
Schlacht um Crawford
Wilmasmod
bobby
|
#17 09.12.2013 17:48 Beiträge: 393 |
Kann es sein das Kerberos sich aufgrund der aktivierten KI bewegt?
Ich hab mich noch nicht wirklich damit befasst, aber glaube schon mal gesehen zu haben dass die KI auch Helden steuert...
____________________
Tools und Verbesserungen für Siedler: settlers.pro
Neues:
Cutscene Editor
LuaDebugger v0.5.2
mcb
|
#18 09.12.2013 17:50 Beiträge: 1472 |
Kommentier mal den Aufruf von AutoUmlaute aus. Das ist in ActivateBriefingsExpansion schon mit dabei.
wilma456
|
#19 09.12.2013 17:51 Beiträge: 460 |
Zitat von bobby:
Kann es sein das Kerberos sich aufgrund der aktivierten KI bewegt?
Ich hab mich noch nicht wirklich damit befasst, aber glaube schon mal gesehen zu haben dass die KI auch Helden steuert...
Die KI scheint zu existieren. Leibeigene werden auf dem Screenshot ausgebildet. Ich kann dir das Skript mailen.
____________________
Schlacht um Crawford
Wilmasmod
mcb
|
#20 09.12.2013 17:56 Beiträge: 1472 |
Für die Standard-KI ist ein Held nichts weiter als ein normaler Leader. Er wird automatisch in eine Armee gepackt und dann für was-weiß-ich verwendet. Entweder du aktivierst die KI erst nach dem Briefing (dann rennt Kerberos erst nach dem Briefing rum) oder du machst Kerberos von einem anderen Spieler ohne KI (mit der selben Farbe).
wilma456
|
#21 09.12.2013 17:58 Beiträge: 460 |
Ich habe das Skript bobby gemailt. Deshlab bitte hier erstmal nichts mehr.
____________________
Schlacht um Crawford
Wilmasmod
Peter-FS
|
#22 09.12.2013 17:58 Beiträge: 1086 |
Ein Schritt nach dem anderen!
Erst mal das Briefing zum Laufen bringen, dann kann man sich um Kerberos kümmern.
Deine Umlautefunktion geht nicht!
____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!
Seiten: 1