+ Antworten
Ergebnis 1 bis 10 von 10
  1. #1
    Holzfäller Avatar von andra2007
    Registriert seit
    18.02.2008
    Ort
    Gelsenkirchen
    Beiträge
    129

    Standard User Set Camera

    Habe mich mal an der Kamera probiert und das User Set Camera aus der Srcipt Wiki soweit in meine lokales und auch globales Script kopiert...der lokale Teil hat beim importieren wunderbar geklappt. Nur meinen globalen Script bemeckert er...kann mir jemand sagen was ich falsch gemacht habe?
    HTML-Code:
    function Camera1(
        {Target = Logic.GetStoreHouse(2),
        OffsetX = 0,
        OffsetY = -1000,
        Duration = 15,
        ZoomFactor = 0.35,
        RotationAngle = 0,
        MayRotate = 0,
        Title = "Der Basar",
        TitleColor = "64, 0, 255",
        TitleAlpha = 128,
        Text = "Ah alle Interessenten sind anwesend...sehr schön",
        TextColor = "255, 255, 255",
        TextAlpha = 255,
        Bars = "black",
        MiniMap = 0,
        MiniMapMarker = 0})
    end
    
    function UserSetCamera(Param)
        assert(Param.Target)
        local id,x,y = 0
        if type(Param.Target) == "number" then
            Param.x,Param.y = Logic.GetEntityPosition(Param.Target)
            Param.ID = Param.Target
        elseif type(Param.Target) == "string" then
            Param.x,Param.y = Logic.GetEntityPosition(Logic.GetEntityIDByName(Param.Target))
            Param.ID = Logic.GetEntityIDByName(Param.Target)
        elseif type(Param.Target) == "table" then
            Param.x = Param.Target[1]
            Param.y = Param.Target[2]
            Param.ID = Logic.GetEntityAtPosition(Param.Target[1], Param.Target[2])
    end
        if not Param.ID then Param.ID = 0 end
        if type(Param.OffsetX) ~= "number" then Param.OffsetX = 0 end
        if type(Param.OffsetY) ~= "number" then Param.OffsetY = 0 end
        if not Param.Duration or Param.Duration > 30 or Param.Duration < 5 then 
            Param.Duration = 5
    end
        if not Param.ZoomFactor or Param.ZoomFactor > 0.5 or Param.ZoomFactor < 0.05 then 
            Param.ZoomFactor = 0.5
    end
        if not Param.RotationAngle or Param.RotationAngle > 180 or Param.RotationAngle < -180 then 
            Param.RotationAngle = -45
    end
        if type(Param.MayRotate) ~= "number" or Param.MayRotate ~= 0 or Param.MayRotate ~= 1 then
            Param.MayRotate = 1
    end
        if not Param.Title or type(Param.Title) ~= "string" then
            Param.Title = ""
        else
            Param.Title = Umlaute(Param.Title)
    end
        if not Param.TitleColor or type(Param.TitleColor) ~= "string" then
            Param.TitleColor = "255, 255, 255"
    end
        if not Param.TitleAlpha or type(Param.TitleAlpha) ~= "number" then
            Param.TitleAlpha = 255
    end
        if not Param.Text or type(Param.Text) ~= "string" then
            Param.Text = ""
        else
            Param.Text = Umlaute(Param.Text)
    end
        if not Param.TextColor or type(Param.TextColor) ~= "string" then
            Param.TextColor = "255, 255, 255"
    end
        if not Param.TextAlpha or type(Param.TextAlpha) ~= "number" then
            Param.TextAlpha = 255
    end
        if not Param.Bars or type(Param.Bars) ~= "string" or Param.Bars ~= "black" and Param.Bars ~= "transp" then 
            Param.Bars = "none"
    end
        if not Param.MiniMap or type(Param.MiniMap) ~= "number" then
            Param.MiniMap = 0
    end
        if not Param.MiniMapMarker or type(Param.MiniMapMarker) ~= "number" then
            Param.MiniMapMarker = 1
    end
        Logic.ExecuteInLuaLocalState("SetLookAt("..Param.ID..", "..Param.x..", "..Param.y..", "..Param.OffsetX..", "..Param.OffsetY..", "..Param.Duration..", "..Param.ZoomFactor..", "..Param.RotationAngle..", ".. Param.MayRotate..", '"..Param.Title.."', '"..Param.TitleColor.."', "..Param.TitleAlpha..", '"..Param.Text.."', '"..Param.TextColor.."', "..Param.TextAlpha..", '"..Param.Bars.."', "..Param.MiniMap..", "..Param.MiniMapMarker..")")
    end
    
    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
        end
    end
    Tausend Dank
    Gruß
    andra
    Geändert von Netsurfer (22.10.2008 um 16:01 Uhr)

  2. #2
    Schafszüchter Avatar von Netsurfer
    Registriert seit
    01.09.2005
    Ort
    Köln/ Cologne
    Beiträge
    1,121
    Blog Einträge
    10

    Standard AW: User Set Camera

    Hi Andra!

    Soweit ich das auf die Schnelle jetzt gesehen habe, liegt dein einziger Fehler, oder dein Problem im richtigen Aufruf der Funktion.

    Du musst, bspw. aus einer anderen Funktion (z.B. Camera1) heraus, die Funktion UserSetCamera() explizit aufrufen (und natürlich mit dem Table mit den gewünschten Werten als Parameter).

    Also in deinem Beispiel:
    Code:
    function Camera1()
        UserSetCamera(
        {Target = Logic.GetStoreHouse(2),
        OffsetX = 0,
        OffsetY = -1000,
        Duration = 15,
        ZoomFactor = 0.35,
        RotationAngle = 0,
        MayRotate = 0,
        Title = "Der Basar",
        TitleColor = "64, 0, 255",
        TitleAlpha = 128,
        Text = "Ah alle Interessenten sind anwesend...sehr schön",
        TextColor = "255, 255, 255",
        TextAlpha = 255,
        Bars = "black",
        MiniMap = 0,
        MiniMapMarker = 0})
    end
    Und genauso könntest du jetzt noch beliebig viele andere Funktionen CameraXY() schreiben und in denen jeweils die Funktion UserSetCamera() mit jeweils anderen Parametern aufrufen.

    Ich hoffe, jetzt ist es etwas klarer & verständlicher für dich geworden?

    Gruß
    Gunther
    ___________________________


    ___________________________

  3. #3
    Holzfäller Avatar von andra2007
    Registriert seit
    18.02.2008
    Ort
    Gelsenkirchen
    Beiträge
    129

    Standard AW: User Set Camera

    Supi, verstanden, eingebaut, klappt! Hervorragend! Tausend Dank!!
    Schönen Sonntag noch!
    Gruß
    andra

  4. #4
    Sombeline
    Gast

    Standard AW: User Set Camera

    Hallo,

    ich habe es jetzt auch zum erstenmal probiert. Leider kommt die Sequenz nicht. Habe ich im Script einen Fehler? Ausgelöst wird es durch die Quest: Trigger_OnQuestSuccess --vorhergehende, Goal_KnightDistance - entitie "pyramide" und Reward_MapScriptFunction - camera1
    DisplayScriptError - sagt nichts.
    Das Script steht in der MissionFirstMapAction an einer freien Stelle.
    Code:
    function camera1()
       UserSetCamera(
               {Target = "cam1",
               OffsetX = 0,
               OffsetY = -500,
               Duration = 15,
               ZoomFactor = 0.35,
               RotationAngle = 0,
               MayRotate = 0,
               Title = "Der Pyramidenaufbau",
               TitleColor = "64, 0, 255",   
               TitleAlpha = 128,
               Text = "",
               TextColor = "255, 255, 89",  
               TextAlpha = 200,
               Bars = "black",
               MiniMap = 0,
               MiniMapMarker = 0}
    )
    end

    Am Ende von Netsurfers Pack habe ich das dazugehörige Scipt global rein ohne Umlaute, da schon vorher vorhanden, und in der FirstMapAction im localen Script das lokale. Wobei ich diese beiden nicht geändert habe.


    Gruß
    Sombeline
    Geändert von Netsurfer (02.11.2008 um 04:00 Uhr)

  5. #5
    Schafszüchter Avatar von Netsurfer
    Registriert seit
    01.09.2005
    Ort
    Köln/ Cologne
    Beiträge
    1,121
    Blog Einträge
    10

    Standard AW: User Set Camera

    Zitat Zitat von Sombeline Beitrag anzeigen
    Das Script steht in der MissionFirstMapAction an einer freien Stelle.
    Was verstehst du denn unter "einer freien Stelle in der MissionFirstMapAction"!?

    Das ist doch eine eigenständige Funktion, die du von deinem Quest aufrufen willst. Also packe sie im globalen Map-Script irgendwo hin, aber nicht in eine andere Funktion rein!

    ..., und in der FirstMapAction im localen Script das lokale.
    Im lokalen Script gibt es keine Mission_FirstMapAction(), sondern nur eine Mission_LocalOnMapStart().

    Und im Wiki steht extra:"Dieser Code muss nur irgendwo an einer freien Stelle in das lokale Map-Script eingefügt werden,..." - s.o.!
    ___________________________


    ___________________________

  6. #6
    Sombeline
    Gast

    Standard AW: User Set Camera

    Hallo,

    also ich habe jetzt alles so eingesetzt, wie es sein soll, wenn es started, bekomme ich folgende Fehlermeldung:

    [code]

    Assertion failed!

    Expression: Lua Error
    Error: LUA_ERRRUN: [string "Script\Global\ScriptSystems\GlobalEndStatis.. ."]:112: attempt to index field '?' (a nil value)
    Stacklevel: 0 Type: C Function: "(null)"
    Stacklevel: 1 Type: Lua File: Script\Global\ScriptSystems\GlobalEndStatisticSyst em.lua Function: "EndStatistic_SettlerSpawned" Line: 112
    Locals:
    Local: 1 Name: _EntityID Number: 4014190
    Local: 2 Name: PlayerID Number: 0
    Local: 3 Name: EntityType Number: 1744
    Local: 4 Name: Workers Number: 0
    Local: 5 Name: (*temporary) Nilvalue
    Local: 6 Name: (*temporary) Number: 0
    Local: 7 Name: (*temporary) Number: 0
    Local: 8 Name: (*temporary) Nilvalue
    Local: 9 Name: (*temporary) String: attempt to index field '?' (a nil value)
    Stacklevel: 2 Type: Lua File: Script\Global\ScriptSystems\GlobalGameCallBacks.lu a Function: "(null)" Line: 158
    Locals:
    Local: 1 Name: (for index) Number: 1
    Local: 2 Name: (for limit) Number: 5
    Local: 3 Name: (for step) Number: 1
    Local: 4 Name: j Number: 1

    Current stack:


    Additional info: Game turn 100759 (167:55)
    ------------------------------------------------------------
    Hier der [code] nochmal
    function camera()
    UserSetCamera(
    {Target = "cam1",
    OffsetX = 0,
    OffsetY = -400,
    Duration = 15,
    ZoomFactor = 0.5,
    RotationAngle = 100,
    MayRotate = 0,
    Title = "Der Pyramidenaufbau",
    TitleColor = "64, 0, 255", ---welche Werte sind da anzugeben
    TitleAlpha = 128,
    Text = "Wie schön, es kommen Arbeiter um die Pyramide wieder aufzubauen!",
    TextColor = "64, 0, 255", ---255,255,89 - gelb
    TextAlpha = 100,
    Bars = black,
    MiniMap = 0,
    MiniMapMarker = 0}
    )
    end



    Verstehe nicht was das für ein Fehler ist.

    Gruß
    Sombeline
    Geändert von Sombeline (02.11.2008 um 18:54 Uhr)

  7. #7
    Schafszüchter Avatar von Netsurfer
    Registriert seit
    01.09.2005
    Ort
    Köln/ Cologne
    Beiträge
    1,121
    Blog Einträge
    10

    Ausrufezeichen AW: User Set Camera

    Zitat Zitat von Sombeline Beitrag anzeigen
    Expression: Lua Error
    Error: LUA_ERRRUN: [string "Script\Global\ScriptSystems\GlobalEndStatis.. ."]:112: attempt to index field '?' (a nil value)
    Stacklevel: 0 Type: C Function: "(null)"
    Stacklevel: 1 Type: Lua File: Script\Global\ScriptSystems\GlobalEndStatisticSyst em.lua Function: "EndStatistic_SettlerSpawned" Line: 112

    ------------------------------------------------------------



    Verstehe nicht was das für ein Fehler ist.
    Der hat jedenfalls nichts mit der Funktion UserSetCamera() zu tun.

    Ich empfehle daher mal Leitfaden: Fehler und Abstürze zu lesen.
    ___________________________


    ___________________________

  8. #8
    Sombeline
    Gast

    Standard AW: User Set Camera

    Danke Netsurfer,

    aber bis zu der Stelle, wo das aufgerufen wird, funktioniert alles wunderbar. Hatte vorher schon einmal zu der Stelle gespielt und da kam
    der Fehler nicht. Die Funktion wurde aufgerufen und abgespielt.

    Gruß
    Sombeline

  9. #9
    Schafszüchter Avatar von Netsurfer
    Registriert seit
    01.09.2005
    Ort
    Köln/ Cologne
    Beiträge
    1,121
    Blog Einträge
    10

    Standard AW: User Set Camera

    Zitat Zitat von Sombeline Beitrag anzeigen
    aber bis zu der Stelle, wo das aufgerufen wird, funktioniert alles wunderbar. Hatte vorher schon einmal zu der Stelle gespielt und da kam
    der Fehler nicht. Die Funktion wurde aufgerufen und abgespielt.
    Ja, also handelt es sich vermutlich um einen Fehler, der nur unter bestimmten Bedingungen/ Konstellationen auftritt.

    Anhand der Fehlermeldung würde ich mal stark vermuten, dass du zu dem Zeitpunkt irgendwo eine Entity (Settler) vom Typ Worker spawnst, die fälschlicherweise die PlayerID 0 (anstatt 1-8) hat, was den o.g. Scriptfehler auslöst.

    Und ich hoffe, du hast den verlinkten Beitrag auch gelesen, denn deine Infos sind abgesehen von der Fehlermeldung wenig aussagekräftig/ hilfreich.
    ___________________________


    ___________________________

  10. #10
    Sombeline
    Gast

    Standard AW: User Set Camera

    Hallo Netsurfer danke ,

    jup, du hast recht. Der Siedler ist Schuld. Ich lasse einen Geologen erscheinen, hatte aber ausversehen bei Anzahl ne 5 stehen.
    Als ich das korrigierte auf 1 ging alles wieder.

    Ja ich habe den Link gesehen und gelesen, dachte, da ich unten schon alles weitere stehen hatte muss das nicht mehr dahin.
    Werde es beim nächsten mal beachten.

    Juhuuuu. Habe Map fertig.

    Gruß
    Sombeline

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. Das Lösungsvideo zur User Einzelspielermap Unruhige Zeiten
    Von SpiderFive im Forum Siedler 6 AeK Lösungen
    Antworten: 8
    Letzter Beitrag: 23.06.2010, 19:07
  2. User set camera
    Von Sombeline im Forum Siedler 6 AeK Mapperecke
    Antworten: 4
    Letzter Beitrag: 18.06.2008, 18:07
  3. Das 2.Lösungsvideo zur User Einzelspielermap Unruhige Zeiten V2
    Von SpiderFive im Forum Siedler 6 AeK Lösungen
    Antworten: 2
    Letzter Beitrag: 29.12.2007, 20:32
  4. Das Lösungsvideo zur User Einzelspielermap Frauen unter sich
    Von SpiderFive im Forum Siedler 6 AeK Lösungen
    Antworten: 2
    Letzter Beitrag: 23.12.2007, 23:46
  5. User-Map 'Die Rückkehr'
    Von neutrum im Forum Siedler 6 AeK Singleplayer
    Antworten: 0
    Letzter Beitrag: 16.11.2007, 19:38

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein