Ich hatte es ausprobiert, es müsste funktionieren.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Event Erdbeben mehrmals auslösen ?
Einklappen
X
-
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 DateienZuletzt geändert von SpiderFive; 22.05.2008, 14:02.«Wenn Sie in sieben von zehn Fragen mit mir übereinstimmen, sind Sie nicht teilweise mein Feind, sondern mehrheitlich mein Freund.»(Ronald Reagan)
«Wenn Tyrannen behaupten, sie würden zu Opfern gemacht, bringen sie in Wirklichkeit zum Ausdruck, dass sie anderen das antun wollen, was sie angeblich selbst erleiden..»(Erich Fromm)
Siedele lang und erfolgreich
Kommentar
-
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.
trabbitrabbi
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
Kommentar
-
Zitat von Old McDonald Beitrag anzeigenDas Problem ist, dass Du Earthquake_ResetEarthquakeForPlayer() aufrufst, die Funktion heißt aber Event_ResetEarthquakeForPlayer().
Aber irgendwoher muß ich die Funktion haben *gggg
Zitat von Old McDonald Beitrag anzeigenDer Aufruf ist fast gleich.
Zum Beispiel so:
Code:Earthquake_ResetEarthquakeForPlayer(1, 10, true, { "Dieses Gebäude soll nur beschädigt werden" }).
Ist doch schön wenn sich Dinge so einfach auflösenZuletzt geändert von SpiderFive; 23.05.2008, 23:31.«Wenn Sie in sieben von zehn Fragen mit mir übereinstimmen, sind Sie nicht teilweise mein Feind, sondern mehrheitlich mein Freund.»(Ronald Reagan)
«Wenn Tyrannen behaupten, sie würden zu Opfern gemacht, bringen sie in Wirklichkeit zum Ausdruck, dass sie anderen das antun wollen, was sie angeblich selbst erleiden..»(Erich Fromm)
Siedele lang und erfolgreich
Kommentar
-
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
Code:Earthquake_Orig = completetablecopy(Earthquake)
Code:Earthquake = completetablecopy(Earthquake_Orig)
Code:Earthquake = completetablecopy(Earthquake_Orig) Event_AddEarthquake([hier wie gehabt eure Parameter für den Aufruf])
GuntherZuletzt geändert von Netsurfer; 24.05.2008, 18:21.
Kommentar
-
AW: Event Erdbeben mehrmals auslösen ?
jedenfalls Danke nochmal«Wenn Sie in sieben von zehn Fragen mit mir übereinstimmen, sind Sie nicht teilweise mein Feind, sondern mehrheitlich mein Freund.»(Ronald Reagan)
«Wenn Tyrannen behaupten, sie würden zu Opfern gemacht, bringen sie in Wirklichkeit zum Ausdruck, dass sie anderen das antun wollen, was sie angeblich selbst erleiden..»(Erich Fromm)
Siedele lang und erfolgreich
Kommentar
-
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..«Wenn Sie in sieben von zehn Fragen mit mir übereinstimmen, sind Sie nicht teilweise mein Feind, sondern mehrheitlich mein Freund.»(Ronald Reagan)
«Wenn Tyrannen behaupten, sie würden zu Opfern gemacht, bringen sie in Wirklichkeit zum Ausdruck, dass sie anderen das antun wollen, was sie angeblich selbst erleiden..»(Erich Fromm)
Siedele lang und erfolgreich
Kommentar
-
AW: Event Erdbeben mehrmals auslösen ?
Zitat von SpiderFive Beitrag anzeigenWas aber fetstellbar ist es werden nicht alle Gebäude wieder instandgesetzt..
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
Kommentar
-
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.
Kommentar
-
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.«Wenn Sie in sieben von zehn Fragen mit mir übereinstimmen, sind Sie nicht teilweise mein Feind, sondern mehrheitlich mein Freund.»(Ronald Reagan)
«Wenn Tyrannen behaupten, sie würden zu Opfern gemacht, bringen sie in Wirklichkeit zum Ausdruck, dass sie anderen das antun wollen, was sie angeblich selbst erleiden..»(Erich Fromm)
Siedele lang und erfolgreich
Kommentar
-
AW: Event Erdbeben mehrmals auslösen ?
Zitat von SpiderFive Beitrag anzeigenIch werde Deine Variante aber auch mal testen ..
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"}}
Zuletzt geändert von trabbi; 24.05.2008, 17:05.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
Kommentar
Kommentar