Ewiger Anfang

» Siedler Map Source Forum » Siedler DEdK Script Forum » Ewiger Anfang

Seiten: 1

RitterLeo
#1
29.04.2018 19:32
Beiträge: 237

Ewiger Anfang

Zitat von RitterLeo:
Finde den Fehler nicht, das Anfangsbriefing wiederholt sich dauerhaft nach der Cutscene aber nur die 1. Seite.

--------------------------------------------------------------------------------
-- MapName: RitterLeo
--
-- Author: RitterLeo
--
--------------------------------------------------------------------------------

-- Include main function
Script.Load( Folders.MapTools.."Main.lua" )
IncludeGlobals("MapEditorTools")

--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called from main script to initialize the diplomacy states
function InitDiplomacy()
SetPlayerName(3, "Zinndorf" )
SetFriendly(1,3)
SetFriendly(1,5)
SetFriendly(1,4)
SetHostile(1,2)
SetHostile(2,3)
SetHostile(2,4)
SetHostile(2,5)
SetHostile(6,3)
SetHostile(6,4)
SetHostile(6,5)
SetHostile(7,3)
SetHostile(7,4)
SetHostile(7,5)
end


--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called from main script to init all resources for player(s)
function InitResources()
    -- set some resources
    AddGold  (3,50000)
    AddSulfur(0)
    AddIron  (3,50000)
    AddWood  (3,50000)	
    AddStone (0)	
    AddClay  (0)	
end

--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called to setup Technology states on mission start
function InitTechnologies()
end

--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called on game start and after save game is loaded, setup your weather gfx
-- sets here
function InitWeatherGfxSets()
	SetupNormalWeatherGfxSet()
end

--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called on game start you should setup your weather periods here
function InitWeather()
	AddPeriodicSummer(10)
end

--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called on game start and after save game to initialize player colors
function InitPlayerColorMapping()
Display.SetPlayerColorMapping(8,FRIENDLY_COLOR2)
Display.SetPlayerColorMapping(4,FRIENDLY_COLOR2)
Display.SetPlayerColorMapping(5,FRIENDLY_COLOR2)
Display.SetPlayerColorMapping(7,NEPHILIM_COLOR)
Display.SetPlayerColorMapping(6,NEPHILIM_COLOR)
end
	
--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called on game start after all initialization is done
function FirstMapAction()
ActivateBriefingsExpansion()
	MapEditor_SetupAI(3, 1, 2000, 1, "Zinndorf", 0, 0)
	MapEditor_SetupAI(4, 2, 2000, 2, "EastDef", 0, 0)
	MapEditor_SetupAI(5, 2, 2000, 2, "SouthDef", 0, 0)
  MapEditor_SetupAI(7, 2, 2000, 2, "BanditOst", 2, 0)
  MapEditor_SetupAI(6, 2, 2000, 2, "BanditLager", 2, 0)
SetFriendly(1,3)
SetFriendly(1,5)
SetFriendly(1,4)
MapEditor_CreateHQDefeatCondition()
Logic.SetPlayerPaysLeaderFlag(1, 0) 
CreateWoodPile("holz1",10000) 
CreateWoodPile("holz2",10000)
StartSimpleJob("GoldBaum")
StartSimpleJob("GoldLehm")
StartSimpleJob("GoldStein") 
StartSimpleJob("SchwefelEisen")
Outro()
end
function Outro()
local cutsceneTable = {
    StartPosition = {
		position = GetPosition("posOutro_Start"), angle = 10, zoom = 1000, rotation = 10},
        Flights = {
			{
            position = GetPosition("posOutro_Middle1"),
            angle = 10,
            zoom = 1200,
            rotation = 130,
            duration = 13,
			action 	=	function()
			
			end,
			title = "Mentor",			
            text = "Willkommen in Zinndorf, einer wahrlich schönen Stadt.",
            },
			{
            position = GetPosition("posOutro_Middle2"),
            angle = 20,
            zoom = 1200,
            rotation = 180,
            duration = 13,
			action 	=	function()
			
			end,
			title = "Mentor",			
            text = "Doch was hinter den Toren lauert weiss kaum Jemand.",
            },
{
            position = GetPosition("posOutro_end"),
            angle = 20,
            zoom = 1200,
            rotation = 270,
            duration = 13,
			action 	=	function()
			end,
			title = "Mentor",			
            text = "Deswegen wurde Dario um Hilfe gebeten.",
            },
			},
			Callback = function()
			Briefing_Anfang()
SetPosition(Ari, Ari_pos)
			end
    }
    StartCutscene(Umlaute(cutsceneTable))
end
function Briefing_Anfang()
    local briefing = {}
    local AP, ASP = AddPages(briefing);
	ASP("Dario","Dario", "Das ist also Zinndorf. Vor hier aus hat man einen schönen Ausblick.", true)
	ASP("Dario","Dario", "Leider muss ich schon weiter.", true)
	ASP("Dario","Dario","Was die wohl von mir wollen? @cr Und wo ist Helias?", true)
	StartBriefing( briefing)
	briefing.finished = function()
		Briefing_Bote()
     Move("Dario","MoveDario_pos")
	end
end
function Briefing_Bote()
    local briefing = {}
    local AP, ASP = AddPages(briefing);
   ASP("Bote","Bote","Dario zum Glück seit ihr da. @cr Es ist gut zu sehen das ihr wohlbehalten angekommen seit.", true)
   ASP("Bote","Bote","Helias wartet bereits da unten auf euch. @cr Aber beeilt euch, aus Sicherheitsgründen dürfen wir die Tore nicht zu lange offen lassen.", true)
	StartBriefing( briefing)
	briefing.finished = function()
		     Move("Bote","Helias")
CreateNpc_Helias()
	end
end
function CreateNpc_Helias()
	local npc = {
        name     = "Helias", 
		heroName = "Dario",
		marker = true, 
		wrongHeroMessage = "Ich möchte gerne mit Dario sprechen",	
	    callback = function()
			Briefing_Helias()
		RemoveNpcFromTable("Helias")
		end
    }
    CreateNPC(npc)	
end
function Briefing_Helias()
    local briefing = {}
    local AP, ASP = AddPages(briefing); 
		ASP("Helias","Helias", "Ah Dario, da bist du ja. @cr Schön das du die Reise sicher überstanden hast.", true)	
		ASP("Dario","Dario", "Auch schön dich zu sehen Helias, aber sag mir was ist denn hier los?.", true)	
		ASP("Helias","Helias","Ich habe keine Ahnung, der Bürgermeister vom Süden schickte mich hierher um eine Armee aufzustellen.", true)
     ASP("Helias","Helias", "Er hatte es wohl sehr eilig. @cr Sprich mal mit dem Bürgermeister vom Norden.", true)
     ASP("Helias","Helias", "Er müsste sicher etwas über die Dinge hier wissen. @cr Gib mir bitte später bescheid was los ist.", true)		
		ASP("Dario","Dario","Natürlich, bis bald.", true)
	StartBriefing( briefing)
	briefing.finished = function()
CreateNpc_Regent()
ChangePlayer("Helias",5)
TorZu()
  			end
end
function TorZu()
MachAufOderZu("Palisade1",false,true)
end
function CreateNpc_Regent()
	local npc = {
        name     = "Regent", 
		heroName = "Dario",
		marker = true, 
		wrongHeroMessage = "Ich möchte gerne mit Dario sprechen",	
	    callback = function()
			Briefing_Regent()
		RemoveNpcFromTable("Regent")
		end
    }
    CreateNPC(npc)	
end
function Briefing_Regent()
	Briefing_SetParameter(true, 0.8, 2000, 10, 900,13)
    local briefing = {}
    local AP, ASP = AddPages(briefing); 
		ASP("Regent","Dovbar", "Ah du musst Dario sein. @cr Helias sagte schon das du kommst.", true)	
		ASP("Dario","Dario", "Sagt mir, was ist denn so wichtig das ich kommen sollte?", true)	
		ASP("Regent","Dovbar","Das solltest du lieber mit dem Bürgermeister vom Süden der Stadt fragen.", true)	
		ASP("Dario","Dario","Wieso das denn? @cr Wieso wisst ihr nicht was hier los ist?.", true)
		ASP("Regent","Dovbar", "Er warnte uns nur vor etwas, mehr auch nicht.", true)	
		ASP("Regent","Dovbar","Er war es sicher der euch um Hilfe rief.", true)
     ASP("Regent","Dovbar", "Für den Anfang solltest du aber eine Basis haben. @cr Ich übergebe dir den Westlichen teil.", true)
	StartBriefing( briefing)
	briefing.finished = function()
  CreateNpc_Ritter()
ChangePlayer("TowerSP1",1)
ChangePlayer("TowerSP2",1)
ChangePlayer("TowerSP3",1)
ChangePlayer("TowerSP4",1)
ChangePlayer("TurmSP1",1)
ChangePlayer("Lager1",1)
ChangePlayer("Haus",1)
ChangePlayer("Farm",1)
ChangePlayer("Bank",1)
ChangePlayer("Zelt1",1)
ChangePlayer("Zelt2",1)
ChangePlayer("Zelt3",1)
ChangePlayer("Kaserne1",1)
ChangePlayer("Platz1",1)
ChangePlayer("ZentrumSP1",1)
			end
end
function CreateNpc_Ritter()
	local npc = {
        name     = "Ritter", 
		heroName = "Dario",
		marker = true, 
		wrongHeroMessage = "Ich möchte gerne mit Dario sprechen",	
	    callback = function()
			Briefing_Ritter()
			RemoveNpcFromTable("Ritter")
		end
    }
    CreateNPC(npc)	
end
function Briefing_Ritter()
	Briefing_SetParameter(true, 0.8, 2000, 10, 900,13)
    local briefing = {}
    local AP, ASP = AddPages(briefing); 
		ASP("Ritter","RitterLeo", "Da bist du ja Dario. @cr Wir brauchen dringend deine Hilfe.", true)	
		ASP("Dario","Dario", "Sagt mir erstmal worum es geht.", true)	
		ASP("Ritter","RitterLeo","Banditen, sie Rauben, Töten und zerstören unsere Stadt.", true)	
		ASP("Dario","Dario","Banditen? Hier? @cr Was haben die denn vor?", true)
		ASP("Ritter","RitterLeo", "Keine Ahnung, aber wir werden nicht Kampflos aufgeben!", true)	
		ASP("Ritter","RitterLeo","Außerdem habe ich gehört ihr übernehmt die westliche Verteidigung.", true)
     ASP("Ritter","Ritter","Geht so schnell wie es geht zu unserem alten Außenposten im Westen @cr Ich werde ihn euch überlassen.", true)
    ASP("Ritter","Ritter","Und noch etwas, wir werden den Sold eurer Truppen übernehmen @cr Das ist das mindeste was wir tuen können.", true)
	StartBriefing( briefing)
	briefing.finished = function()

			-- gibt es noch nicht, deshalb immer erst aktivieren wenn es vorhanden ist
			--Logic.RemoveQuest(1, StartQuest1)
	
	
		ActivateShareExploration(1, 3, true)
		ActivateShareExploration(1, 4, true)
		ActivateShareExploration(1, 5, true)
		Tor2()
		GUI.CreateMinimapMarker(40603, 72066, 0)
Tools.ExploreArea( 41220, 38172, 190 )
CreateNpc_Siedler()
	end
end
function Tor2()
MachAufOderZu("Palisade1",true,true)
MachAufOderZu("Tor2",true,true)
end
function CreateNpc_Siedler()
	local npc = {
        name     = "Siedler", 
		heroName = "Dario",
		marker = true, 
		wrongHeroMessage = "Ich möchte gerne mit Dario sprechen",	
	    callback = function()
			Briefing_Siedler()
			RemoveNpcFromTable("Siedler")
		end
    }
    CreateNPC(npc)	
end
function Briefing_Siedler()
	Briefing_SetParameter(true, 0.8, 2000, 10, 900,13)
    local briefing = {}
    local AP, ASP = AddPages(briefing); 
		ASP("Siedler","Siedler", "Du bist bestimmt Dario? @cr Mir wurde schon bescheid gesagt, nehmt ruhig alles.", true)	
		ASP("Siedler","Siedler", "Ich habe schonmal ein paar Rohstoffe für euch zusammen gelegt.", true)	
		ASP("Siedler","Siedler","Ach und außerdem habt ihr nun keinen Kontakt mehr zu Zinndorf.", true)	
		ASP("Siedler","Siedler","Wir haben bereits die Tore geschlossen @cr Aber es gibt noch etwas das ihr Wissen solltet.", true)
		ASP("Siedler","Siedler","Anscheinend bereiten sich die Banditen auf einen Angriff vor @cr In etwa 50 Minuten werden sie kommen und uns töten!", true)	
		ASP("Siedler","Siedler","Außerdem gibt es hier kaum Schwefel und es besteht keine Möglichkeit welchen durch Handel zu bekommen.", true)
     ASP("Siedler","Siedler","Doch da Zinndorf diesen Angriff alleine nicht übersteht werden auch wir dann die Tore öffnen @cr Also bereitet schonmal eine gute Verteidigung vor.", true)
     ASP("Siedler","Siedler","Nun ja, und da ich hier wohl der einzige bin der Bauen kann bin ich bereit euch zu Dienen.", true)
	StartBriefing( briefing)
	briefing.finished = function()
ChangePlayer("Lager",1)
ChangePlayer("Haus1",1)
ChangePlayer("Village",1)
ChangePlayer("Kaserne",1)
ChangePlayer("Obelisk",1)
ChangePlayer("Brunnen",1)
ChangePlayer("Burg",1)
ChangePlayer("Schmiede",1)
ChangePlayer("Siedler",1)
ChangePlayer("Archery1",1)
ChangePlayer("Turm1",1)
ChangePlayer("Turm2",1)
ChangePlayer("Turm3",1)
ChangePlayer("Turm4",1)
ChangePlayer("Tower5",1)
ChangePlayer("Farm2",1)
ChangePlayer("Haus2",1)
TorSchliessen()
GUI.DestroyMinimapPulse(40603, 72066)
    AddGold  (1000)
    AddSulfur(150)
    AddIron  (270)
    AddWood  (420)	
    AddStone (300)	
    AddClay  (300)	
	StartCountdown( 2*60,AngriffFeind,true)
Message("Ich sagte fast 50 Minuten")
			end
end
function AngriffFeind()
MachAufOderZu("Tor1",true,true)
MachAufOderZu("Tor2",true,true)
MachAufOderZu("Palisade1",true,true)
MachAufOderZu("Palisade2",true,true)
MachAufOderZu("Palisade3",true,true)
MachAufOderZu("Palisade4",true,true)
DestroyEntity("Stein1");
DestroyEntity("Stein2");
return true
end
function TorSchliessen()
MachAufOderZu("Tor2",false,true)
MachAufOderZu("Palisade1",false,true)
end
function GoldBaum()
if IsDead("Gold_Baum") then
Message("Nanu, in dem Baum war Gold versteckt")
AddGold(1,"100")
return true
         end
end
function GoldStein()
	if IsDead("Gold_Stein") then
		Message("Nanu, unter dieses Steinen war ja Gold")
		AddGold(1,"100")
		return true
    end
end
function GoldLehm()
	if IsDead("Gold_Lehm") then
		Message("Woow, in dem Lehm war Gold versteckt")
		AddGold(1,"100")
		return true
	end
end
function SchwefelEisen()
	if IsDead("Sulphur_Iron") then
		Message("Unglaublich, ein ganzer Vorrat Schwefel")
		AddSulphur(1,"3700")
		return true
    end
end
function Banditen()
if IsDead("BanditLager") and IsDead("Platz_Army1") and IsDead("Kas_Bandit") and IsDead("Motte1") then
CreateNpc_Ritter1()
end
end
function CreateNpc_Ritter1()
	local npc = {
        name     = "Ritter", 
		heroName = "Dario",
		marker = true, 
		wrongHeroMessage = "Ich möchte gerne mit Dario sprechen",	
	    callback = function()
			Briefing_Ritter1()
			RemoveNpcFromTable("Ritter")
		end
    }
    CreateNPC(npc)	
end
function Briefing_Ritter1()
	Briefing_SetParameter(true, 0.8, 2000, 10, 900,13)
    local briefing = {}
    local AP, ASP = AddPages(briefing); 
		ASP("Ritter","RitterLeo", "Wir haben es geschafft!. @cr Diese verfluchten Banditen werden sobald nicht wieder kommen.", true)	
		ASP("Dario","Dario", "Bestimmt, aber wisst ihr nun warum sie angegriffen haben?", true)	
		ASP("Ritter","RitterLeo","Nein, bis dahin habe ich allerdings andere Aufgaben für dich.", true)	
		ASP("Ritter","RitterLeo","Unsere äußerer Stadtteil wurde nach Berichten zerstört. @cr Bitte seht nach ob es ein paar Überlebende gibt.", true)
		ASP("Ritter","RitterLeo", "Bis dahin werden wir die Gefangenen verhören.", true)	
	StartBriefing( briefing)
	briefing.finished = function()
CreateNpc_Hauptmann()
DestroyEntity("Stein3")
	end
end
function CreateNpc_Hauptmann()
	local npc = {
        name     = "Hauptmann", 
		heroName = "Dario",
		marker = true, 
		wrongHeroMessage = "Ich möchte gerne mit Dario sprechen",	
	    callback = function()
			Briefing_Hauptmann()
			RemoveNpcFromTable("Hauptmann")
		end
    }
    CreateNPC(npc)	
end
function Briefing_Hauptmann()
	Briefing_SetParameter(true, 0.8, 2000, 10, 900,13)
    local briefing = {}
    local AP, ASP = AddPages(briefing); 
		ASP("Hauptmann","Hauptmann", "ja sagtste mal, was machn der Typ hier. @cr Ich dachts wir wärn uns enesch das hier kene reinkommt.", true)	
		ASP("Hauptmann","Hauptmann", "Nun was lod, bin grad beschäftscht.", true)	
		ASP("Dario","Dario","Ich komme von Zinndorf um nachzusehen ob es euch gut geht.", true)	
		ASP("Hauptmann","Hauptmann","Na se sehn ja dasch hier alles wesch ist. @cr Aber wir wolln hir net weg das is unscher heim.", true)
		ASP("Hauptmann","Hauptmann", "Wir könsch alleine für uns sorschken, all gudi hier.", true)
		ASP("Dario","Dario","Sehr schön, das werde ich dem Bürgermeister ausrichten, braucht ihr sonst noch irgendwelche hilfe?", true)
    ASP("Hauptmann","Hauptmann", "Tja, 10000 Holz wärn nett mehr nisch.", true)	
	StartBriefing( briefing)
	briefing.finished = function()
	end
end




























	--LocalMusic.UseSet = EUROPEMUSIC
	LocalMusic.UseSet = HIGHLANDMUSIC
	--LocalMusic.UseSet = MEDITERANEANMUSIC
	--LocalMusic.UseSet = DARKMOORMUSIC
	--LocalMusic.UseSet = EVELANCEMUSIC
function MachAufOderZu(name, auf, leise)-- by Holger
  local t = Logic.GetEntityType(GetEntityId(name))
  local snd = false
  if auf then
    if t == Entities.XD_WallStraightGate_Closed then
      ReplaceEntity(name, Entities.XD_WallStraightGate)
      snd = true
    elseif t == Entities.XD_DarkWallStraightGate_Closed then
      ReplaceEntity(name, Entities.XD_DarkWallStraightGate)
      snd = true
    elseif t == Entities.XD_DrawBridgeOpen1 then
      ReplaceEntity(name, Entities.PB_DrawBridgeClosed1)
      snd = true
    elseif t == Entities.XD_DrawBridgeOpen2 then
      ReplaceEntity(name, Entities.PB_DrawBridgeClosed2)
      snd = true
    elseif t == Entities.XD_PalisadeGate1 then
      ReplaceEntity(name, Entities.XD_PalisadeGate2)
      snd = true
    elseif t == Entities.XD_ChestClose then
      ReplaceEntity(name, Entities.XD_ChestOpen)
      snd = true	  
    end
  else
    if t == Entities.XD_WallStraightGate then
      ReplaceEntity(name, Entities.XD_WallStraightGate_Closed)
      snd = true
    elseif t == Entities.XD_DarkWallStraightGate then
      ReplaceEntity(name, Entities.XD_DarkWallStraightGate_Closed)
      snd = true
    elseif t == Entities.PB_DrawBridgeClosed1 then
      ReplaceEntity(name, Entities.XD_DrawBridgeOpen1)
      snd = true
    elseif t == Entities.PB_DrawBridgeClosed2 then
      ReplaceEntity(name, Entities.XD_DrawBridgeOpen2)
      snd = true
    elseif t == Entities.XD_PalisadeGate2 then
      ReplaceEntity(name, Entities.XD_PalisadeGate1)
      snd = true
    elseif t == Entities.XD_ChestOpen or t == Entities.XD_ChestOrb then
      ReplaceEntity(name, Entities.XD_ChestClose)
      snd = true	  
    end
  end
  if snd and not leise == true then
 --   Sound.PlayGUISound(Sounds.Misc_SO_BuildWood_rnd_1, PosVolume(name))
  end
end

function ActivateShareExploration(_player1, _player2, _both)
    assert(type(_player1) == "number" and type(_player2) == "number" and _player1 <= 8 and _player2 <= 8 and _player1 >= 1 and _player2 >= 1)
    if _both == false then
        Logic.SetShareExplorationWithPlayerFlag(_player1, _player2, 1)
    else
        Logic.SetShareExplorationWithPlayerFlag(_player1, _player2, 1)
        Logic.SetShareExplorationWithPlayerFlag(_player2, _player1, 1)
    end
end
function SucheAufDerWelt(_player, _entity, _groesse, _punkt)
  local punktX1, punktX2, punktY1, punktY2, data
  local gefunden = {}
  local rueck
  if not _groesse then
    _groesse = Logic.WorldGetSize()
	_groesse = math.floor(_groesse * 0.71)
  end
  if not _punkt then
    _punkt = {X = _groesse/2, Y = _groesse/2}
  end
  if _player == 0 then
    data ={Logic.GetEntitiesInArea(_entity, _punkt.X, _punkt.Y, _groesse, 16)}
  else
    data ={Logic.GetPlayerEntitiesInArea(_player,_entity, _punkt.X, _punkt.Y, _groesse, 16)}
  end
  if data[1] >= 16 then 
    local _klgroesse = _groesse / 2 
    local punktX1 = _punkt.X - _groesse / 4
    local punktX2 = _punkt.X + _groesse / 4
    local punktY1 = _punkt.Y - _groesse / 4
    local punkt


Schonmal danke im vorraus .

____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.

Dieser Beitrag wurde von RitterLeo am 29.04.2018 um 19:38 editiert.

warrior1024
#2
01.05.2018 11:40
Beiträge: 345

Ich vermute, dass die Zeile

SetPosition(Ari, Ari_pos)


für den Fehler verantwortlich ist.

Der erste Parameter muss ein EntityName(z.B. "Dario" ) oder eine ID sein, der zweite Parameter ein Positiontable(z.B. {X = 1000, Y = 2000} oder GetPosition("TollerName" )) sein.

____________________
"Banken machen keine Fehlentscheidungen! Haben Euch das Eure Eltern nicht beigebracht?"
- Bankier Samael Silren, Enderal

RitterLeo
#3
01.05.2018 13:02
Beiträge: 237

Es funktioniert.
Nun würde ich gerne noch Darios fähigkeit den Falken zu schicken verbieten.
Weiss jemand wie das geht?

____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.

Der_Deutsche
#4
01.05.2018 13:06
Beiträge: 349

Schau mal im Skript-Wiki, da gibt es jede Menge funktionen.

____________________
Nachbau von Siedler 5 Lobbys "Ubi.Com"

Updatelösungen Siedler 5 Patch 1.06

Creators Update Lösung Windows 10 Siedler 5

RitterLeo
#5
01.05.2018 13:32
Beiträge: 237

Habe gefunden wie die der Effekt heißt aber was muss ich machen um diese zu verbieten? Einfach wieder ForbidTechnologie oder was?

____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.

warrior1024
#6
01.05.2018 17:08
Beiträge: 345

Der Button, der zum Falken schicken gehört, heißt "Hero1_SendHawk" und ruft die Funktion GUIAction_Hero1SendHawk auf.

Du könntest einfach den Button verschwinden lassen:

XGUIEng.ShowWidget("Hero1_SendHawk", 0)

oder ausgrauen:

XGUIEng.DisableButton("Hero1_SendHawk", 1)

oder die dahinter liegende Funktion überschreiben:

GUIAction_Hero1SendHawk = function()
    Message("Darios Falke sagt nein.")
    Sound.PlayGUISound( Sounds.VoicesHero1_HERO1_FunnyComment_rnd_01, 60 )
end

Die XGUIEng-Funktionen überleben ein Speichern&Laden vermutlich nicht, deswegen solltest du die in InitPlayerColorMapping packen.

____________________
"Banken machen keine Fehlentscheidungen! Haben Euch das Eure Eltern nicht beigebracht?"
- Bankier Samael Silren, Enderal

RitterLeo
#7
02.05.2018 18:43
Beiträge: 237

Danke dafür, langsam gehts vorran .

____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.

Peter-FS
#8
03.05.2018 06:20
Beiträge: 1086

Falken löschen

Hi,

man kann den Falken auch ganz löschen, habe ich in meiner Map Zwillinge gemacht.

 
--Aufruf dazu: DeleteHawk("dario")

	-- ##Falken löschen:  Flodder ##############################################
	function DeleteHawk(_EntityName)
		local darioPos=GetPosition(_EntityName)
		local Data = { Logic.GetEntitiesInArea( Entities.PU_Hero1_Hawk, darioPos.X, darioPos.Y, 5000, 20)};
		if Data[1]>0 then
			DestroyEntity(Data[2])
		end
	end

--dazu dann die Funktionen zum Tooltip und den Aufruf verhindern

	GUIAction_Hero1SendHawkOrig = GUIAction_Hero1SendHawk
	GUIAction_Hero1SendHawk = function()
	end	
	GUIAction_Hero1LookAtHawkOrig = GUIAction_Hero1LookAtHawk
	GUIAction_Hero1LookAtHawk = function()
	end	

	GUITooltip_NormalButton_Orig = GUITooltip_NormalButton
	GUITooltip_NormalButton= function(_x)
		if string.find(_x,"command_sendhawk") ~= nil then
			XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, "Dario hat seinen Falken zu Hause gelassen."  )
		elseif string.find(_x,"command_lookathawk") ~= nil then
			XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, "Dario hat seinen Falken zu Hause gelassen."  )		
		else
			GUITooltip_NormalButton_Orig(_x)
		end
	end

--ein Problem, wenn Dario stirbt und wieder erwacht, wird der Falke neu erstellt. Dazu folgende Lösung, einmal in der FMA Setup_DestroyDario() aufrufen, damit wird das ableben und erwachen von Dario überwacht und der Falke wieder gelöscht.

-- Die Falken erneut löschen, wenn der Held wieder erwacht ist.
function Setup_DestroyDario()
    local quest = {
        Target = "dario",
        Callback = function()
		StartSimpleJob("CheckDarioLebt")
        end,
    }
    SetupDestroy( quest )
end
function CheckDarioLebt()
	if not IsDead("dario") then
		DeleteHawk("dario")
		Setup_DestroyDario()
		return true
	end
end



____________________
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