+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 20 von 21
  1. #1
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard Problem: Palisaden unverwundbar machen

    Ich will die Palisade eines Spielers unverwundbar machen. Dazu benutze ich folgende Funktion von Annosiedler (Spieler- und Territoriums ID sind natürlich an meine Karte angepasst):

    Code:
    function unverwundbar()
    
            local cityWalls = {}
            local categories = {
            EntityCategories.CityWallGate,
            EntityCategories.CityWallSegment,         
        }
        for _, Cat in ipairs(categories) do
            for _, ID in ipairs{Logic.GetPlayerEntitiesInCategory(2, Cat)} do  --Spieler_ID
                table.insert(cityWalls, ID)
            end
        end  
        for i = 1, #cityWalls do
            MakeInvulnerable(cityWalls[i]); 
        end    
        local Palisade = {Logic.GetEntitiesOfCategoryInTerritory(2, 2, EntityCategories.PalisadeSegment, 0)} --TerrID, PlayerID, Entity, 0
        for i = 1, #Palisade do
            MakeInvulnerable(Palisade[i]);
        end
    end
    Leider wird damit nur das Palisadentor nicht aber die restliche Palisade unverwundbar. Wie kann man das ändern?

    Hier ist eine Testkarte.

  2. #2
    Schwertkämpfer Avatar von trabbi
    Registriert seit
    09.03.2006
    Beiträge
    4,437

    Standard AW: Problem: Palisaden unverwundbar machen

    Der Tread dazu müsste aber noch vorhanden sein.
    Soweit ich mich erinnern kann, wurden auch 2 verschiedene Scripte benötigt
    trabbi
    Was ist Theorie, - Wenns klappen soll und es klappt nie
    Was ist Praxis, - Frag nicht so dumm, wenns klappt und Du weißt nicht warum

  3. #3
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Problem: Palisaden unverwundbar machen

    siehe hier bei Annos Thread Gesamte Mauer einer ID unverwundbar machen
    Geändert von udi53 (16.02.2011 um 13:01 Uhr)
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  4. #4
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Problem: Palisaden unverwundbar machen

    Ok, jetzt habe ich gesehen, was fehlt. Ich ging davon aus, dass die Version im letzten Beitrag von Anno die endgültug funktionierende sei.

    es funktioniert jetzt einwandfrei, vielen dank dafür
    Soviel dazu.

  5. #5
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Problem: Palisaden unverwundbar machen

    Und wie muß nun der korrekte Code aussehen?
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  6. #6
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Problem: Palisaden unverwundbar machen

    Ich habe die Funktion noch etwas erweitert.


    Code:
    -- SpielerID, TerritoriumsID, 1 für unverwundbar
    function unverwundbar(player, terri, d)
        
            local cityWalls = {}
            local categories = {
            EntityCategories.CityWallGate,
            EntityCategories.CityWallSegment,
            EntityCategories.PalisadeGate,  
            EntityCategories.PalisadeSegment,
        }
        for _, Cat in ipairs(categories) do
            for _, ID in ipairs{Logic.GetPlayerEntitiesInCategory(player, Cat)} do
                table.insert(cityWalls, ID)
            end
        end 
    
        if d == 1 then
            for i = 1, #cityWalls do
                MakeInvulnerable(cityWalls[i]); 
            end 
        else
            for i = 1, #cityWalls do
                MakeVulnerable(cityWalls[i]); 
            end 
        end
        
        local Palisade = {Logic.GetEntitiesOfCategoryInTerritory(terri, player, EntityCategories.PalisadeSegment, 0)}
        if d == 1 then
            for i = 1, #Palisade do
                MakeInvulnerable(Palisade[i]);
            end
        else
            for i = 1, #Palisade do
                MakeVulnerable(Palisade[i]);
            end
        end
    end
    Mit z.B. unverwundbar(2, 3, 1) macht man alle Mauern und Palisaden von Spieler 2 in Territorium 3 unverwundbar, mit unverwundbar(2, 3, 0) wieder verwundbar.

  7. #7
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Problem: Palisaden unverwundbar machen

    Danke, habe das noch nie verwendet, wandert ins Archiv .
    Was man gebunkert hat, muss man sich bei Bedarf nicht zusammensuchen.
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  8. #8
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Problem: Palisaden unverwundbar machen

    Habe es in deiner Testmap mal ausprobiert und es hat nicht funktioniert. Mit ner kleinen Veränderung (rot markiert) gings dann:

    -- SpielerID, TerritoriumsID, 1 für unverwundbar
    function unverwundbar()

    local cityWalls = {}
    local categories = {
    EntityCategories.CityWallGate,
    EntityCategories.CityWallSegment,
    EntityCategories.PalisadeGate,
    EntityCategories.PalisadeSegment,
    }
    for _, Cat in ipairs(categories) do
    for _, ID in ipairs{Logic.GetPlayerEntitiesInCategory(2, Cat)} do
    table.insert(cityWalls, ID)
    end
    end

    if d == 1 then
    for i = 1, #cityWalls do
    MakeInvulnerable(cityWalls[i]);
    end
    else
    for i = 1, #cityWalls do
    Make
    Invulnerable(cityWalls[i]);
    end

    end

    local Palisade = {Logic.GetEntitiesOfCategoryInTerritory(2, 2, EntityCategories.PalisadeSegment, 0)} --TerrID, PlayerID, Entity, 0
    if d == 1 then
    for i = 1, #Palisade do
    MakeInvulnerable(Palisade[i]);
    end
    else
    for i = 1, #Palisade do
    Make
    Invulnerable(Palisade[i]);
    end

    end
    end

    Nun meine Frage: warum die Doppelung (grün markiert)? Mein Lua ist nicht grade das Beste, aber du hast erst Invulnerabel, dann Vulnerabel. konnte nicht gehen, weil es sich wohl aufhebt.
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  9. #9
    Bannermacher
    Registriert seit
    22.04.2005
    Beiträge
    2,476

    Standard AW: Problem: Palisaden unverwundbar machen

    udi, du hast den Parameter d jetzt irgendwie überflüssig gemacht. Bei dir ist es ja immer unverwundbar.
    Geändert von Knight Jim (16.02.2011 um 19:25 Uhr)

  10. #10
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Problem: Palisaden unverwundbar machen

    ich dachte, das wäre das Ziel der Aufgabe gewesen??? wenns denn wieder verwundbar sein soll, dann eine zweite Funktion mit der aufhebung des Schutzzaubers, so kenn ich es mit Figuren oder Gebäuden. was sollte Parameter d bewirken?
    Geändert von udi53 (16.02.2011 um 19:15 Uhr)
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  11. #11
    Bannermacher
    Registriert seit
    22.04.2005
    Beiträge
    2,476

    Standard AW: Problem: Palisaden unverwundbar machen

    Oh, habe jetzt erst gesehen, dass du ja sogar alle Parameter rausgeworfen hast.
    Du hast eine universell einsetzbare Funktion auf einen einzigen Use-Case reduziert.
    Nich umsonst stand dort doch:
    -- SpielerID, TerritoriumsID, 1 für unverwundbar
    function unverwundbar(player, terri, d)

    Worüber man noch streiten könnte wäre über den Namen, wenn sie neben unverwundbar auch wieder verwundbar machen kann, ist er vielleicht etwas unpassend.

  12. #12
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Problem: Palisaden unverwundbar machen

    Naja, bin von seiner Frage ausgegangen, eine Palisade komplett unkaputtbar zu machen, was sollte denn dies Parameterkiste bringen, war ein bissel fett für eine Palisade :-)
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  13. #13
    Brückenarchitekt Avatar von Annosiedler
    Registriert seit
    02.01.2009
    Ort
    Niedersachsen
    Beiträge
    2,868

    Standard AW: Problem: Palisaden unverwundbar machen

    Code:
    function Nurmengrad_Unverwundbar()
            local cityWalls = {}
            local categories = {
            EntityCategories.CityWallGate,
            EntityCategories.CityWallSegment,         
        }
        for _, Cat in ipairs(categories) do
            for _, ID in ipairs{Logic.GetPlayerEntitiesInCategory(3, Cat)} do  --Spieler_ID
                table.insert(cityWalls, ID)
            end
        end  
        for i = 1, #cityWalls do
            MakeInvulnerable(cityWalls[i]); 
        end    
        local Palisade = {Logic.GetEntitiesOfCategoryInTerritory(4, 3, EntityCategories.PalisadeSegment, 0)} --TerrID, PlayerID, Entity, 0
        for i = 1, #Palisade do
            MakeInvulnerable(Palisade[i]);
        end
    end
    Also jetzt muss ich mich auch mal zu Wort melden. Bei mir funktioniert dieser Code einwandfrei, getestet mit Mauer und Palisade + passendem Tor!

  14. #14
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Problem: Palisaden unverwundbar machen

    Bei mir hat er für die Palisadenelemnte nicht funktioniert. Die Palisadenelemente waren wie oben schon gesagt nicht beeinflusst. Das, was ich in meinem vorherigen Beitrag geschrieben habe, hat zumindest in meiner aktuellen Karte auf einem Gebiet, auf dem nur eine Palisad steht, funktioniert.

    @udi: Du brauchst dann insgesamt 2 Funktionen: die oben von mir veröffentlichte und dann noch eine, in der z.B. irgendwo steht

    Code:
    unverwundbar(2, 3, 1)
    Dann werden alle Mauern und Palisaden von Spieler 2 auf Territorium 3 unverwundbar. Irgend eine andere Zahl als 1 an dritter Stelle im Funktionsaufruf macht das wieder rückgängig. Dazu ist auch die if then Anweisung da.

    Man kann die Funktion natürlich beliebig umbenennen.

    Ich kann auch nicht garantieren, dass sie immer funktioniert.Ok, ich hab's jetzt nochmal in meiner Testkarte probiert. Einige Palisadenelemente sind unverwundbar, andere nicht. Es ist zum heulen. Aber ich kämpfe gerade mit interaktiven Objekten und Schiffspfaden. Die machen mir schon genug Sorgen.

  15. #15
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Problem: Palisaden unverwundbar machen

    Hi, du hast ja gesehen was ich aus deiner Funktion gemacht habe, als es nicht funktionierte, ich habe sie einfach reduziert und es funktionierte. Wozu willst du die Palisade unzerstörbar machen, wenn du sie in der gleichen Funktion wieder zerstörbar machst? Vielleicht stehe ich heute auf der Leitung , ich blicke der Übung Ziel nicht. Ich sagte ja, ich kenn das mit Figuren und Gebäuden, die eine Zeit lang unkaputtbar sein sollen, später macht man sie mit einer zweiten Funktion wieder Vulnerabel, aber in der gleichen Funktion, kann ja nicht gehen, das hebt sich ja auf, oder gibt es da einen speziellen Aufruf per Parameter, je nachdem wie du es im Spiel brauchst?
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  16. #16
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Problem: Palisaden unverwundbar machen

    Der Parameter ist d. Der if-Block ist die Fallentscheidung: entweder unverwundbar machen oder verwundbar machen. Es wird nur eines von beiden ausgeführt.

  17. #17
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Problem: Palisaden unverwundbar machen

    Zitat Zitat von siedlereldeis Beitrag anzeigen
    ... Aber ich kämpfe gerade mit interaktiven Objekten und Schiffspfaden. Die machen mir schon genug Sorgen.
    Schiffspfade sind kein Problem, es gibt einige Maps (u.a. von Fidelio und mir) wo das in unterschiedlicher Form praktiziert wird. Musste dir halt mal ein paar Scipte als Vorlagen exportieren.
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  18. #18
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Problem: Palisaden unverwundbar machen

    Zitat Zitat von siedlereldeis Beitrag anzeigen

    Ich kann auch nicht garantieren, dass sie immer funktioniert.Ok, ich hab's jetzt nochmal in meiner Testkarte probiert. Einige Palisadenelemente sind unverwundbar, andere nicht. Es ist zum heulen. ....
    jetzt habe ich den Sinn kapiert, du willst Platz im Script sparen (grins). Nun hast du zwar eine schlaue Universalfunktion gebaut, die aber nicht sicher ist. Das kann dir die ganze Map versaubeuteln. Ich bevorzuge die sichere Variante mit 2 Funktionen, da weiß ich wenigstens, dass dann im Spiel nichts daneben geht. Man weiß ja auch nie so richtig, welche Funktionen im Script sich mit anderen beißen, z.B. wenn noch simple Jobs gleichzeitig laufen.
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  19. #19
    Bannermacher
    Registriert seit
    22.04.2005
    Beiträge
    2,476

    Standard AW: Problem: Palisaden unverwundbar machen

    Hallosiedlereldeis,
    ich habe hier mal gelesen, dass gewisse Entity Funktionen maximal in einem Rutsch 48 Elemente liefern.
    Ich weiss nicht, ob du soviele Palisadenelemente hast, und ob das bei der Funktion vorkommen kann, da müsste sich
    einer der Lua-Experten zu äussern.

    @udi:
    Code-dopplungen zu vermeiden ist aus Programmierersicht häufig sehr sinnvoll.

  20. #20
    Sombeline
    Gast

    Standard AW: Problem: Palisaden unverwundbar machen

    Mit den Schiffspfaden gibt es schon was richtig gutes als Anschauungsmaterial, das ist sehr verständlich gemacht:

    Hafenrundfahrt [AeK Script-Wiki]

Aktive Benutzer

Aktive Benutzer

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

     

Ähnliche Themen

  1. Gesamte Mauer einer ID unverwundbar machen
    Von Annosiedler im Forum S6 Scriptecke
    Antworten: 15
    Letzter Beitrag: 15.01.2011, 09:59
  2. so machen's die Spanier
    Von Brain im Forum Flutlicht Siedlersportforum
    Antworten: 1
    Letzter Beitrag: 04.12.2010, 16:18
  3. Distanzen ersichtlich machen!
    Von Bochumer_Dom im Forum Siedler 5 DEdK Mapperecke
    Antworten: 2
    Letzter Beitrag: 16.09.2010, 20:02
  4. Probleme mit Mauern, Palisaden und Zäunen
    Von Netsurfer im Forum Siedler 6 AeK Mapperecke
    Antworten: 11
    Letzter Beitrag: 15.10.2008, 00:24
  5. Palisaden zerstören wie geht das
    Von Neuling im Forum Siedler 6 AeK Allgemein
    Antworten: 1
    Letzter Beitrag: 01.10.2007, 19:33

Stichworte

Berechtigungen

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