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