Ankündigung

Einklappen
Keine Ankündigung bisher.

Event Erdbeben mehrmals auslösen ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Annosiedler
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    Hoffentlich kriege ich das auch hin.

    Einen Kommentar schreiben:


  • trabbi
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    Zitat von SpiderFive Beitrag anzeigen
    Ich werde Deine Variante aber auch mal testen ..
    Habe die Scriptteile gemäß Netsurfer ausgetauscht.

    Keine Reaktion. Keine Solsen. Kein Beben.

    Die Functionsnamen hab ich allerdings gelassen,
    da die ja vom Questsytem aufgerufen werden.
    ------------------------------

    Edit: Funktioniert doch !!
    Hatte vergessen die Werte einzutragen.
    Code:
     {1}, 2, {[1]=true}, {[1]={"homestore","homecastle","homechurch"}}
    trabbi
    Zuletzt geändert von trabbi; 24.05.2008, 17:05.

    Einen Kommentar schreiben:


  • SpiderFive
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    Natürlich habe ich es mit der OMCD Variante , nach all den Mühen gemacht...
    Ich werde Deine Variante aber auch mal testen ..
    Ich werde zwei versionen der Testmap vorbereiten..

    Geht nicht um die Hauptgebäude, sondern um Stadtgebäude, einige da werden instandgesetzt, ein paar bleiben mit angekohlten Dachstuhl, man kann sie trotzdem wieder ausbauen, aber sie haben weiterhin einen angekokelten Dachstuhl...
    Ich setze heute Abend mal noch einen Screenshot hier rein.


    Nachtrag: Es scheint auch später das Problem zu geben, das man nicht mehr alle Mauern repariert bekommt...
    Zuletzt geändert von SpiderFive; 24.05.2008, 16:05.

    Einen Kommentar schreiben:


  • Old McDonald
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    Die Hauptgebäude werden nicht automatisch repariert (nur, wenn sie angezündet werden, bei NPCs).
    Das lässt sich mit Logic.SetRepairAlarm(_building, true) verm. einschalten, oder vielleicht auch mit Logic.BuildingSetAutoRepairDisable(_building, false) dauerhaft für das Gebäude. Ist aber nur eine Vermutung.

    Einen Kommentar schreiben:


  • Netsurfer
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    Zitat von SpiderFive Beitrag anzeigen
    Was aber fetstellbar ist es werden nicht alle Gebäude wieder instandgesetzt..
    Kannst du das bitte mal etwas genauer & ausführlicher beschreiben.

    Mit welcher Variante löst du die Beben denn jetzt mehrfach aus?

    Das Erdbeben-Event ist imho nicht ganz perfekt. Ich überlege sowieso, ob man nicht am besten ein ganz neues Event-System schreibt, und dann das Erdbeben noch komfortabler gestaltet. Ich denke da bspw. an die Möglichkeit, anstatt benannte Entities angeben zu müssen, Gebäudetypen angeben zu können, etc.

    Zumindest für die Asia Klimazone habe ich auch noch 2 weitere Events in Arbeit.
    1. Heuschreckenplage
    2. Blitzeinschlag im Lagerhaus mit anschließendem Brand

    Gruß
    Gunther

    Einen Kommentar schreiben:


  • SpiderFive
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    Gerade in der easy Version meiner 2. Map getestet, hihi recht lustig , jetzt wo es klappt ......


    Was aber fetstellbar ist es werden nicht alle Gebäude wieder instandgesetzt..

    Einen Kommentar schreiben:


  • SpiderFive
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    jedenfalls Danke nochmal

    Einen Kommentar schreiben:


  • Netsurfer
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    Es gibt auch noch eine alternative (einfachere?) Möglichkeit.

    Dazu muss in das globale Script folgende Funktion eingefügt werden:
    Code:
    function completetablecopy(object)
        local lookup_table = {}
        local function _copy(object)
            if type(object) ~= "table" then
                return object
            elseif lookup_table[object] then
                return lookup_table[object]
            end
            local new_table = {}
            lookup_table[object] = new_table
            for index, value in pairs(object) do
                new_table[_copy(index)] = _copy(value)
            end
            return setmetatable(new_table, getmetatable(object))
        end
        return _copy(object)
    end
    In die Mission_FirstMapAction() muss folgende Zeile eingefügt werden:
    Code:
    Earthquake_Orig = completetablecopy(Earthquake)
    Danach kann man das Erdbeben-Event beleibig oft immer mit dem ursprünglichen Aufruf starten, dem immer die Zeile
    Code:
    Earthquake = completetablecopy(Earthquake_Orig)
    vorangestellt sein muss. Also so:
    Code:
    Earthquake = completetablecopy(Earthquake_Orig)
    Event_AddEarthquake([hier wie gehabt eure Parameter für den Aufruf])
    Gruß
    Gunther
    Zuletzt geändert von Netsurfer; 24.05.2008, 18:21.

    Einen Kommentar schreiben:


  • SpiderFive
    antwortet
    Zitat von Old McDonald Beitrag anzeigen
    Das Problem ist, dass Du Earthquake_ResetEarthquakeForPlayer() aufrufst, die Funktion heißt aber Event_ResetEarthquakeForPlayer().
    manchmal sieht man den Wald....
    Aber irgendwoher muß ich die Funktion haben *gggg

    Zitat von Old McDonald Beitrag anzeigen
    Der Aufruf ist fast gleich.
    Zum Beispiel so:
    Code:
    Earthquake_ResetEarthquakeForPlayer(1, 10, true, { "Dieses Gebäude soll nur beschädigt werden" }).
    Das funktioniert aber nur, wenn vorher einmal Event_AddEarthquake() verwendet wurde.
    ah daher

    Ist doch schön wenn sich Dinge so einfach auflösen
    Zuletzt geändert von SpiderFive; 23.05.2008, 23:31.

    Einen Kommentar schreiben:


  • trabbi
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    Habe das Script abgeändert.
    Nach der ersten Beförderung, beginnt das Erdbeben.
    Zwischen Beförderung und Erdbeben stehen die Solsen
    in der Burg.


    trabbi

    Einen Kommentar schreiben:


  • Old McDonald
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    Das Problem ist, dass Du Earthquake_ResetEarthquakeForPlayer() aufrufst, die Funktion heißt aber Event_ResetEarthquakeForPlayer().

    Einen Kommentar schreiben:


  • SpiderFive
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    Haste das mal mit meiner Testmap getestet ?
    Interesant ist die normale Erdbebenfunktion funktioniert.
    Danach mit dem Trigger_Time bei Aufruf der mapscriptfunktion sogar eine zusätzlicher Reward CreateBtl nicht mehr funktioniert..
    Löscht man die Mapscriptfunktionsaufrufe geht das wieder..
    Map ist auch dabei.

    Hier mal das Script

    Code:
    ----------------------------------------------------------------------------------------------------------------------
    function Mission_InitPlayers()
     
    end
    ----------------------------------------------------------------------------------------------------------------------
    function Mission_SetStartingMonth()
        Logic.SetMonthOffset(3)
    end
    ----------------------------------------------------------------------------------------------------------------------
    function Mission_InitMerchants()
     
    end
     
    function Mission_FirstMapAction()
        -- init players in singleplayer games only
        if Framework.IsNetworkGame() ~= true then
            Startup_Player()
            Startup_StartGoods()
            Startup_Diplomacy()
     
        end        
        -- create quests
        do
            local MapName = Framework.GetCurrentMapName()
            local ScriptName = "Maps\\ExternalMap\\"..MapName.."\\QuestSystemBehavior.lua"
            Script.Load(ScriptName)
            CreateQuests()
        end
     
    end
    function Event_ResetEarthquakeForPlayer(_player, _duration, _doNotDestroyCompletely, _affectedBuildings)
        if not Earthquake.Players[_player] then
            Earthquake.Players[_player] = {};
            Table_Copy(Earthquake.Players[_player], Earthquake.Data);
            Earthquake.Players[_player].PlayerID = _player;
        end
     
        Earthquake.Players[_player].State = EventState.Waiting;
        MusicStarted = false; -- fix a bug
        Earthquake.Players[_player].SoundPlayed = false;
        if _doNotDestroyCompletely ~= nil then
            Earthquake.Players[_player].DoNotDestroyCompletely = _doNotDestroyCompletely;
        end
        if _duration then
            Earthquake.Players[_player].Duration = _duration;
        end
        if _affectedBuildings and #_affectedBuildings > 0 then
            if not Earthquake.Data.ListAffectedEntities then
                Earthquake.Data.ListAffectedEntities = {};
                for i = 1, 8, 1 do
                    if Earthquake.Players[i] then
                        Earthquake.Players[i].ListAffectedEntities = Earthquake.Data.ListAffectedEntities;
                    end
                end
            end
            Earthquake.Data.ListAffectedEntities[_player] = {}
            for _, v in ipairs(_affectedBuildings) do
                Earthquake.Data.ListAffectedEntities[_player][GetEntityId(v)] = true;
            end
        elseif Earthquake.Data.ListAffectedEntities then
            Earthquake.Data.ListAffectedEntities[_player] = nil;
        end
    end
    function Erdbeben_01()
     Event_AddEarthquake( {1}, 2, {[1]=true}, {[1]={"homestore","homecastle","homechurch"}} )
    end
    function Erdbeben_02()
     Earthquake_ResetEarthquakeForPlayer( 1, 10, true, {"homestore","homecastle","homechurch"})
    end
    function Erdbeben_03()
     Earthquake_ResetEarthquakeForPlayer( 1, 10, true, { "homestore","homecastle","homechurch" })
    end
    Angehängte Dateien
    Zuletzt geändert von SpiderFive; 22.05.2008, 14:02.

    Einen Kommentar schreiben:


  • Old McDonald
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    Ich hatte es ausprobiert, es müsste funktionieren.

    Einen Kommentar schreiben:


  • Netsurfer
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    Zitat von SpiderFive Beitrag anzeigen
    hmmm also irgendwie klappt das nicht bei mir ...
    Da ist ja auch nichts zum Klappen dran ...!

    Aber mal im Ernst:
    Das ist keine brauchbare Fehlerbeschreibung. Wie sieht denn der erste Funktionsaufruf für das Beben aus?
    Wird die Reset-Funktion auch danach aufgerufen?
    Wie und wann werden die Beben denn ausgelöst?
    Und, und, und ...!

    Also, ausreichende Informationen posten - dann klappt's auch mit dem Nachbarn ... äh, dem Beben!

    Gruß
    Gunther

    Einen Kommentar schreiben:


  • SpiderFive
    antwortet
    AW: Event Erdbeben mehrmals auslösen ?

    hmmm also irgendwie klappt das nicht bei mir ...

    und wie sieht es bei den anderen aus ?

    Einen Kommentar schreiben:

Lädt...
X