Briefing Problem

» Siedler Map Source Forum » Siedler DEdK Script Forum » Briefing Problem

Seiten: 1

RitterLeo
#1
31.03.2018 19:07
Beiträge: 237

Briefing Problem

Nach diesem Briefing:

function Briefing_Bote()
Briefing_SetParameter(true, 0.8, 2000, 50, 2000,13)
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

geht komischerweise garnix mehr.
Der Bote läuft aber der Npc wird nicht erstellt.
Bitte um hilfe da es sonst nicht weitergeht.
Danke .

____________________
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.

mcb
#2
31.03.2018 20:24
Beiträge: 1472

Wenn der Bote läuft, liegt das Problem wohl in der nachfolgenden Funktion, also CreateNPC_Helias. Kannst du die bitte auch posten?

RitterLeo
#3
01.04.2018 11:04
Beiträge: 237

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()
Briefing_SetParameter(true, 0.8, 2000, 10, 900,13)
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", "Vielleicht weiss er was los ist. @cr Gib mir später bescheid was los ist.", true)
ASP("Dario","Dario","Geht klar, wir sehen uns später.", true)
StartBriefing( briefing)
briefing.finished = function()
CreateNpc_Regent()
Tor1()
ChangePlayer("Helias",5)
end
end

____________________
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.

BalistiK
#4
01.04.2018 13:04
Beiträge: 70

Also das Briefing wird richtig ausgeführt wenn die Zeile

 
  Briefing_SetParameter(true, 0.8, 2000, 10, 900,13)



rausgeschmissen wird. Für was dient denn diese Anweisung, beziehungsweise wie sieht die Funktion aus die damit aufgerufen wird?

RitterLeo
#5
01.04.2018 13:39
Beiträge: 237

Ich glaube dadurch wird eingestellt in welchem Winkel oder so das funktioniert.

____________________
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.

BalistiK
#6
01.04.2018 13:50
Beiträge: 70

Könntest du die Funktion vielleicht ebenfalls mal reinschicken?

Am besten Code-Abschnitte immer mit "code" und einem darauf folgenden
"/code" schreiben. Das code muss dabei in eckigen Klammern stehen. Also so: "[code]" sowie das /code ebenso in [] klammern gepackt werden muss. Ist übersichtlicher.

RitterLeo
#7
01.04.2018 14:01
Beiträge: 237

Es geht trotzdem nicht weiter, der Bote läuft auf der Stelle (nicht unbedingt notwendig) und der Npc wird nicht erstellt.
Kann ich auch irgendwie das gesamte Script hier reinstellen ohne eine ewig lange Seite zu erstellen?

____________________
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.

BalistiK
#8
01.04.2018 14:09
Beiträge: 70

Wenn es viel Code ist dann am Besten nicht alles kopieren, ansonsten hau mal alles rein. Viel Code entspricht alles über 700 Zeilen Code.

Ansonsten kopiere einfach nur alle Funktionen die in Verbindung mit dem Boten-Briefing stehen. Auch die Comfort-Funktionen wie AddPages, BriefingExpansions etc...

Bitte nutze dabei das Format was ich in meiner vorherigen Antwort gegeben habe mit [code].

RitterLeo
#9
01.04.2018 14:14
Beiträge: 237

Mal sehen

____________________
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.

RitterLeo
#10
01.04.2018 14:15
Beiträge: 237

Und wie mache ich das, das man so mit nem Balken seitlich runterscrollen kann?

____________________
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.

mcb
#11
01.04.2018 15:09
Beiträge: 1472

So:

[code]
function foo()
bar()
end
[/code]


Sieht dann so aus:

function foo()
   bar()
end



(Klick auf Zitat, dann siehst du das ganze im Texteditor)

RitterLeo
#12
01.04.2018 15:39
Beiträge: 237

Ich glaube es reicht wenn ich hinschreibe wie die heißen anstatt jetzt alles zu Kopieren, wenn gewünscht kann ich das ja gerne nochmal machen.

Folgende Comfort-Funktionen benutze ich:

-function MachAufOderZu(name, auf, leise)
-function ActivateShareExploration(_player1, _player2, _both)
-function SucheAufDerWelt(_player, _entity, _groesse, _punkt)
-function GetQuestId()
-function ActivateBriefingsExpansion()
-function Briefing_SetParameter(_standard, _time, _zommdistance, _zoomangle, _dialog_zoomdistance, _dialog_zoomangle)
-function CreateNpcTest()
-function ControlNpcMarker()
-function InitColors()
-function StartCountdown(_Limit, _Callback, _Show)
-function ActivateBriefingsExpansion()
-function CreateWoodPile( _posEntity, _resources , _EntityType)


Hoffe ihr wisst was das für Funktionen sind .

____________________
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.

mcb
#13
01.04.2018 17:58
Beiträge: 1472

Ok, gehen wir die Liste mal durch und ich sag dir zu jeder was ich dazu denke (Hat nicht unbedingt was mit deinem Problem zu tun):
- MachAufOderZu: Keine Ahnung, kenne ich nicht. Ich kann mir denken, was sie macht, aber Poste sie zur Sicherheit mal.
- ActivateShareExploration: Für 2 Logic Aufrufe mir persönlich zu viel. Aber für Anfänger gut.
- SucheAufDerWelt: Das alte Ding geistert hier immer noch rum? Sieht mir sehr Fehleranfällig aus, ob es ein Entity in Grenzfällen auch findet. Bessere Alternative: S5Hook.EntityIterator (oder wenn du keinen Hook willst EntityFind)
- GetQuestId: Vollkommen in Ordnung.
- ActivateBriefingsExpansion: Vollkommen Ok. (Gibt aber umfangreicheres)
- Briefing_SetParameter: Noch nie gesehen, ich kann mir aber denken was sie macht. (Auch besser mal Posten)
- CreateNpcTest: Sieht mir nicht wirklich nach ner Comfort aus
- ControlNpcMarker: Noch nie gesehen. Bitte Posten. (Rein nach dem Name, könnte die CreateNPC kaputtmachen)
- InitColors: Keine Ahnung, wahrscheinlich irrelevant hier.
- StartCountdown: Vollkommen Ok.
- ActivateBriefingsExpansion: Nochmal? Hast du die 2 mal im Script?
- CreateWoodPile: Noch nie selbst benutzt aber schon oft genug gesehen.

Wenn jemand Fragt, das gesamte Script zu Posten geht es normalerweise eher weniger um die Comforts (da sind eher wenige Fehler drin) sondern um das was du selbst geschrieben hast und unmittelbar mit dem Fehler zu tun hat.

RitterLeo
#14
01.04.2018 18:49
Beiträge: 237

Na klar, hier haste die funktionen die du wolltest.

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

(Nur zum test)
function CreateNpcTest()
    local npc = {
        name     = "leo",
		heroName = "hero",
		marker = true,
		wrongHeroMessage = "Wo mein Held?",	
        callback = function()
			BriefingTest()
			RemoveNpcFromTable("leo")
		end
    }
    CreateNPC(npc)
end

 (Hier fängt die funktion für die Npcs an.)
function DestroyNPCWrapper(_npc)
	if type(NPC) ~= "table" then NPC={} end	
    local i
	for i = 1, table.getn(NPC) do
		if type(_npc) == "string" then --remove by name
            if NPC[i].name == _npc then
                DestroyNPCOrig(NPC[i])
                RemoveNpcFromTable(_npc)
				return
            end
		else
            if NPC[i].name == _npc.name then --remove by table
                DestroyNPCOrig(_npc)				
				RemoveNpcFromTable(_npc.name)
				return           
			end	 
		end		
	end	
end
function RemoveNpcFromTable(_name)
    if NPC==nil or type(NPC) ~= "table" then return end
	local i
	table.foreach(NPC, function(_k, _v)
        if _v.name == _name then
            table.remove (NPC , _k)
        end
    end)
	if GetN_Table(NPC) == 0 and JobIsRunning(_NpcJobId)==1 then 
		EndJob(_NpcJobId) 
	end
end
function CreateNPCWrapper(_npc)--NPC Table fuellen
	if NPC == nil then NPC={} end
	if type(_npc) == "table" then
        RemoveNpcFromTable(_npc.name)
		CreateNPCOrig(_npc)
		table.insert(NPC, _npc)  
		if _NpcJobId == nil then _NpcJobId=0 end
		if JobIsRunning(_NpcJobId)==0 then
			_NpcJobId = StartSimpleJob("ControlNpcMarker")
		end		
    end
end
function ControlNpcMarker()--hier wird der Marker über dem NPC gesteuert
-- !!!!!!!!!!!!!!!!!!!  der name des helden muss angepasst werden  bei IsNear !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    if NPC==nil or type(NPC) ~= "table" then return end
	local i
	for i = table.getn(NPC),1,-1 do
		if IsNear("Dario",NPC[i].name,1800) and NPC[i].marker == false then			
			NPC[i].marker = true
			EnableNpcMarker(GetEntityId(NPC[i].name))						
		elseif not IsNear("Dario",NPC[i].name,1800) and NPC[i].marker == true then
			NPC[i].marker = false
			DisableNpcMarker(GetEntityId(NPC[i].name))			
		end
	end
end
CreateNPCOrig = CreateNPC;
CreateNPC = CreateNPCWrapper;
DestroyNPCOrig = DestroyNPC;
DestroyNPC = DestroyNPCWrapper;

function GetN_Table(_table)
	--table.getn funktioniert nicht immer, deshalb hier diese Funktion
	local _no = 0
	for k,v in pairs(_table) do 
		_no = _no +1
	end	
	return _no
end

InitColors ist nur für farbige Wörter z.B. bei Schatztruhen.


Ja habe wahrscheinlich ActivateBriefingsExpansion versehentlich nochmal Kopiert.

____________________
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.

mcb
#15
01.04.2018 18:59
Beiträge: 1472

Woher hast du denn den NPC-Code? Der sorgt wahrscheinlich für deine Proleme. Unter anderem Zeigt er das ! nur an, wenn Dario neben dem NPC steht.

RitterLeo
#16
01.04.2018 19:02
Beiträge: 237

Diese Funktion hatte mir mal Peter-FS geschickt.

____________________
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.

mcb
#17
01.04.2018 19:07
Beiträge: 1472

Das der Bote auf der Stelle läuft könnte dadran liegen, das er im blocking steht, oder er keinen Weg findet.
Versuch mal, mit Dario an den NPC ranzugehen. Wenn es dann nict funktioniert musst du mal prüfen, ob es irgendwelche Scriptfehler gibt (LuaDebugger oder -debugscript).

RitterLeo
#18
01.04.2018 19:11
Beiträge: 237

Es ist ja so:
erst kommt halt das Anfangs-Briefing mit Dario und direkt danach geht Dario zu dem Boten und das Briefing startet. Dann läuft er einfach auf der Stelle und der Npc wird nicht erstellt. Und welches Blocking meinst du?

____________________
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.

RitterLeo
#19
01.04.2018 19:11
Beiträge: 237

Es ist ja so:
erst kommt halt das Anfangs-Briefing mit Dario und direkt danach geht Dario zu dem Boten und das Briefing startet. Dann läuft er einfach auf der Stelle und der Npc wird nicht erstellt. Und welches Blocking meinst du?

____________________
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.

mcb
#20
01.04.2018 20:14
Beiträge: 1472

Ok, du hast ein Startbriefing, dann den Boten als NPC und dann den kaputten NPC?
Poste am besten mal alle Funktionen, von der FMA aus, wie du zu dem kaputten NPC kommst.

RitterLeo
#21
02.04.2018 12:35
Beiträge: 237

Hier haste mal das gesamte Script ohne Comfort-Funktionen.

--------------------------------------------------------------------------------
-- 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) 
Unverwundbar()
CreateWoodPile("holz1",10000) 
CreateWoodPile("holz2",10000)
Briefing_Anfang()
end
function Unverwundbar()
MakeInvulnerable("Motte1")
MakeInvulnerable("BanditZelt1")
MakeInvulnerable("BanditZelt1")
MakeInvulnerable("BanditZelt1")
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", "Naja egal, dann lasst uns aufbrechen.", 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", "Vielleicht weiss er was los ist. @cr Gib mir später bescheid was los ist.", true)		
		ASP("Dario","Dario","Geht klar, wir sehen uns später.", true)
	StartBriefing( briefing)
	briefing.finished = function()
CreateNpc_Regent()
Tor1()
ChangePlayer("Helias",5)
  			end
end
function Tor1()
MachAufOderZu("Tor1",true,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("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)
CreateMilitaryGroup(1,Entities.PU_LeaderSword2,4,GetPosition("Sword1"))
CreateMilitaryGroup(1,Entities.PU_LeaderBow2,4,GetPosition("Bow1"))
Tools.ExploreArea( 41220, 38172, 250 )
			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 würde ich euch etwas mehr als nur die Westliche Verteidigung überlassen.", true)
     ASP("Ritter","Ritter","Geht so schnell wie es geht zu unserem alten Außenposten im Westen @cr Ich werde ihn euch überlassen.", true)
	StartBriefing( briefing)
	briefing.finished = function()
Logic.RemoveQuest(1, StartQuest1)
ActivateShareExploration(1, 3, true)
ActivateShareExploration(1, 4, true)
ActivateShareExploration(1, 5, true)
Tor2()
GUI.CreateMinimapMarker(40603, 72066, 0)
			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 40 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("Haus",1)
ChangePlayer("Zentrum",1)
ChangePlayer("Kaserne",1)
ChangePlayer("Obelisk",1)
ChangePlayer("Brunnen",1)
ChangePlayer("Burg",1)
ChangePlayer("Schmiede",1)
ChangePlayer("Siedler",1)
TorSchliessen()
GUI.DestroyMinimapPulse(40603, 72066)
    AddGold  (1000)
    AddSulfur(150)
    AddIron  (270)
    AddWood  (420)	
    AddStone (300)	
    AddClay  (300)	
			end
end
function TorSchliessen()
MachAufOderZu("Tor2",true,true)
MachAufOderZu("Palisade1",true,true)
end



____________________
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.

mcb
#22
02.04.2018 14:37
Beiträge: 1472

Könntest du dein Script bitte nächstes mal ordentlich formatieren, so wie ich das hier gemacht habe:

--------------------------------------------------------------------------------
-- 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)
	Unverwundbar()
	CreateWoodPile("holz1",10000)
	CreateWoodPile("holz2",10000)
	Briefing_Anfang()
end
function Unverwundbar()
	MakeInvulnerable("Motte1")
	MakeInvulnerable("BanditZelt1")
	MakeInvulnerable("BanditZelt1")
	MakeInvulnerable("BanditZelt1")
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", "Naja egal, dann lasst uns aufbrechen.", 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", "Vielleicht weiss er was los ist. @cr Gib mir später bescheid was los ist.", true)
	ASP("Dario","Dario","Geht klar, wir sehen uns später.", true)
	StartBriefing( briefing)
	briefing.finished = function()
		CreateNpc_Regent()
		Tor1()
		ChangePlayer("Helias",5)
	end
end
function Tor1()
	MachAufOderZu("Tor1",true,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("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)
		CreateMilitaryGroup(1,Entities.PU_LeaderSword2,4,GetPosition("Sword1"))
		CreateMilitaryGroup(1,Entities.PU_LeaderBow2,4,GetPosition("Bow1"))
		Tools.ExploreArea( 41220, 38172, 250 )
	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 würde ich euch etwas mehr als nur die Westliche Verteidigung überlassen.", true)
	ASP("Ritter","Ritter","Geht so schnell wie es geht zu unserem alten Außenposten im Westen @cr Ich werde ihn euch überlassen.", true)
	StartBriefing( briefing)
	briefing.finished = function()
		Logic.RemoveQuest(1, StartQuest1)
		ActivateShareExploration(1, 3, true)
		ActivateShareExploration(1, 4, true)
		ActivateShareExploration(1, 5, true)
		Tor2()
		GUI.CreateMinimapMarker(40603, 72066, 0)
	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 40 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("Haus",1)
		ChangePlayer("Zentrum",1)
		ChangePlayer("Kaserne",1)
		ChangePlayer("Obelisk",1)
		ChangePlayer("Brunnen",1)
		ChangePlayer("Burg",1)
		ChangePlayer("Schmiede",1)
		ChangePlayer("Siedler",1)
		TorSchliessen()
		GUI.DestroyMinimapPulse(40603, 72066)
		AddGold  (1000)
		AddSulfur(150)
		AddIron  (270)
		AddWood  (420)
		AddStone (300)
		AddClay  (300)
	end
end
function TorSchliessen()
	MachAufOderZu("Tor2",true,true)
	MachAufOderZu("Palisade1",true,true)
end


Erhöht die Lesbarkeit enorm.

Jetzt zu deinem Problem: Ich sehe nicht wirklich einen Fehler in deinem Script, daher vermute ich das es an dieser NPC-Comfort liegt. Entferne die einfach mal und teste es erneut.

Ein Paar kleinere Unschönheiten noch (verursachen keine Fehler, können aber zu langer Sucherei führen, insbesondere, wenn jemand Lua nicht gut kennt):
- funktion Unverwundbar: Du setzt BanditZelt1 3 mal auf Unverwundbar
- briefing.finished ist bei jedem Briefing nach dem StartBriefing Aufruf. Das funktioniert nur, weil Lua tables call-by-reference sind (das heißt nachträgliche Änderungen am table werden übernommen)
- GUI.CreateMinimapMarker: Du gibst die Position direkt an. Besser wäre es, die Position mit GetPosition abzufragen und dann die X und Y Koordinate an GUI.CreateMinimapMarker zu übergeben.

RitterLeo
#23
02.04.2018 15:38
Beiträge: 237

werde ich machen.
Ich selber sehe jetzt nicht den Unterschied zwischen deiner und meiner Variante mit dem formatieren aber ok.
Hoffentlich klappts bald.

____________________
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.

Play4FuN
#24
02.04.2018 15:44
Beiträge: 704

So ähnlich sah das früher bei mir auch aus, und bei vielen anderen bestimmt auch Der Unterschied: Einrückungen - erhöhen die Lesbarkeit sehr! Würde ich dir auch ans Herz legen.

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

Seiten: 1

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum