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

mcb
#2
08.12.2013 21:02
Beiträge: 1472

Wird der Text bei einem Umlaut abgeschnitten?

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

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

Impressum