Blogs
fällt euch was auf?:
![]()
Geändert von Siedlergamer (15.02.2010 um 12:24 Uhr)
ich habe es korrigiert und danke noch durch das [i] wurde meine map noch schwerer aber ich hab das Problem immer noch !
Der Script :
Code:-------------------------------------------------------------------------------- -- MapName: Der groesste Kampf in Siedler 5 -- Kampfmap -- Author: (c)Siedlergamer -- Maptester : -- Script : (c)Siedlergamer -- Landschaft : (c)Siedlergamer -------------------------------------------------------------------------------- -- 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() SetHostile(1,3) SetPlayerName(3,"Kerberros") end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- This function is called from main script to init all resources for player(s) function InitResources() -- set some resources AddGold (0) AddSulfur(0) AddIron (0) AddWood (0) 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(1000) AddPeriodicRain(100) AddPeriodicWinter(1000) AddPeriodicRain(100) end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- This function is called on game start and after save game to initialize player colors function InitPlayerColorMapping() Display.SetPlayerColorMapping(3,KERBEROS_COLOR) end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- This function is called on game start after all initialization is done function FirstMapAction() armeenmacher() MapEditor_SetupAI(3, 1, 50000, 2, "DARKCASTEL", 0, 0) einleitung() ultraarmy() -- mega armee ! message() test() StartSimpleJob("OpenDoorStein") StartSimpleJob("VictoryJob")-- Sieg ? StartSimpleJob("Dario") StartSimpleJob("Brifings") end function test() SpeedUpGame() SpeedUpGame() SpeedUpGame() Tools.ExploreArea( -1, -1, 900 ) end function ultraarmy() for i = 1, 9928 do Armee(3,8,"ua1") Armee(3,8,"ua2") Armee(3,8,"ua3") Armee(3,8,"ua4") Armee(3,8,"ua5") Armee(3,8,"ua6") StartCountdown(1,ultraarmy2(),false) end end function ultraarmy2() for i = 1, 9928 do Armee(3,8,"ua1") Armee(3,8,"ua2") Armee(3,8,"ua3") Armee(3,8,"ua4") Armee(3,8,"ua5") Armee(3,8,"ua6") StartCountdown(1,ultraarmy(),false) end end function einleitung() local cutscene={ StartPosition={ zoom = 800, rotation = -250, angle = 20, position = GetPosition( "dario" ), }, Flights={ { position = GetPosition( "bishop" ), angle = 15, zoom = 1000, rotation = -150, duration = 10, delay = 0, title = "Mentor", text = "Reded mit dem Wanderer.", }, { position = GetPosition( "HQ1" ), angle = 15, zoom = 2300, rotation = -10, duration = 20, delay = 0, title = "Mentor", text = "Er gibt euch sein Dorf und Rohstoffe", }, { position = GetPosition( "DARKCASTEL" ), angle = 10, zoom = 2000, rotation = 0, duration = 0, delay = 0, title = "Mentor", text = "Ihr m\195\188sst nun eine Armee aufstellen und Kerberros gegenübertreten", }, }, Callback = function() GetPosition( "HQ1" ) sk() end, } StartCutscene( cutscene ) end function sk() -- Das lokale Briefing local briefing = {} -- AddPage Funktion local AP = function( _page ) table.insert( briefing, _page ); return _page; end -- Seite 1 local choicePage = AP{ -- Auswahlseite für die Auswertung merken mc = { -- Multiple Choice title = "Siedlergamer", text = "Welcher Schwierigkeitsgrad solls denn sein?", firstText = "Schwer", secondText = "Sehr Schwer", firstSelected = 2, secondSelected = 4, }, dialogCamera = true, } -- Seite 2 AP{ text = "Ihr habt den Schwierigkeitsgrad schwer gew\195\164hlt!Ihr bekommt 500 Gold.", } -- Seite 3 AP() -- Zwischen beiden Folgebriefings muss mindestens eine "Leerseite" liegen. -- Seite 4 AP{ text = "Ihr habt den Schwierigkeitsgrad sehr schwer gew\195\164hlt!Ihr bekommt 200 Gold abgezogen.", } -- Die finished Funktion: briefing.finished = function() if GetSelectedBriefingMCButton( choicePage ) == 1 then -- Erste Antwort gewählt? AddGold(500) else -- zweite Antwort gewählt? AddGold (-200) end end -- Und los... StartBriefing( briefing) -- soll dieses Briefing nicht aus einer anderen Funktion heraus aufgerufen werden, -- kann hier statt StartBriefing auch ein NPC erzeugt werden end function message() Message("Dario darf NICHT sterben") end function armeenmacher() for i = 1, 9928 do Armee(3,8," armee1") Armee(3,8," armee2") ----------------------- Schwert(3,8," armee1") Schwert(3,8," armee2") StartCountdown(10,endfunction(),false) end end function endfunction() for i = 1, 9928 do Armee(3,8," armee1") Armee(3,8," armee2") ------------------- Speer(3,8," armee1") Speer(3,8," armee2") StartCountdown(10,armeenmacher(),false) end end function VictoryJob() --Das ist ein SimpleJob if IsDead("DARKCASTEL") then -- ist DARKCASTEL tot,dann ... Victory() -- ... Sieg end end function Dario() if IsDead("dario") then Defeat() else Move("1","dario") Move("2","dario") Move("3","dario") Move("4","dario") end end function Brifings() if IsNear("dario","bishop",2000)then Move("bishop","dario") createBriefingBishop() return true end end function createBriefingBishop() -- hier startet das Brifing BriefingBishop = {} BriefingBishop.restoreCamera = true -- call on end of biefing BriefingBishop.finished = BriefingBishopFinished local page = 0 -- page #1 page = page + 1 BriefingBishop[page] = {} BriefingBishop[page].title = "Wanderer" BriefingBishop[page].text = "Hallo!" BriefingBishop[page].position = GetPosition("bishop") BriefingBishop[page].dialogCamera = true -- page #2 page = page + 1 BriefingBishop[page] = {} BriefingBishop[page].title = "Wanderer" BriefingBishop[page].text = "Ich \195\188berlasse dir mein Dorf !!!." BriefingBishop[page].position = GetPosition("bishop") -- Npc local npc = {} npc.name = "bishop" --Name des Npc npc.briefing = BriefingBishop --Briefing npc.heroName = "dario" --Name des Helden mit dem der NPC nur spricht npc.wrongHeroMessage = "Ich rede nur mit Dario !Mach dich Acker." -- Meldung bei falschen Ansprechpartner npc.follow = "dario" -- Startet vom Startpunkt und bewegt sich zum anzusprechenden Npc CreateNPC(npc) end function BriefingBishopFinished() repleace() player() --------------- --ROHSTOFFE-- AddGold (1000) AddSulfur (100) AddIron (100) AddWood (1000) AddStone (1000) AddClay (1000) end function repleace() ReplaceEntity("1", Entities.PU_Serf) ReplaceEntity("2", Entities.PU_Serf) ReplaceEntity("3", Entities.PU_Serf) ReplaceEntity("4", Entities.PU_Serf) end function player () ChangePlayer("HQ1", 1) for i = 5, 29 do ChangePlayer(""..i, 1) end end function OpenDoorStein() if IsDead("toropen1") or IsDead("toropen2") then ReplaceEntity ("gate1", Entities.XD_WallStraightGate ) ReplaceEntity ("gate2", Entities.XD_WallStraightGate ) Message("Das Tor ist nun offen !") return true -- die ständige Abfrage wird beendet, da sie nicht mehr benötigt wird end -- Ende von if end -- Ende von OpenDoorStein -- Mission MapEditor_QuestTitle = "Besiege Kerberos" MapEditor_QuestDescription = "Besiege Kerberos,egal wie.Er ist sehr stark ich sage euch eins : ihr verliert !Wenn ihr trotzdem gewinnt könnt ihr euch als sehr guter S5 Spieler bezeichnen.chr könnt dann Siedlergamer eine PN schiken dann bekommt ihr die extreme Version !" ------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------COMPFORTFUNKTIONEN------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------ function AddTribute( _tribute ) assert( type( _tribute ) == "table", "Tribut muß ein Table sein" ); assert( type( _tribute.text ) == "string", "Tribut.text muß ein String sein" ); assert( type( _tribute.cost ) == "table", "Tribut.cost muß ein Table sein" ); assert( type( _tribute.playerId ) == "number", "Tribut.playerId muß eine Nummer sein" ); assert( not _tribute.Tribute , "Tribut.Tribute darf nicht vorbelegt sein"); uniqueTributeCounter = uniqueTributeCounter or 1; _tribute.Tribute = uniqueTributeCounter; uniqueTributeCounter = uniqueTributeCounter + 1; local tResCost = {}; for k, v in pairs( _tribute.cost ) do assert( ResourceType[k] ); assert( type( v ) == "number" ); table.insert( tResCost, ResourceType[k] ); table.insert( tResCost, v ); end Logic.AddTribute( _tribute.playerId, _tribute.Tribute, 0, 0, _tribute.text, unpack( tResCost ) ); SetupTributePaid( _tribute ); return _tribute.Tribute; end function Armee(_player,_number,_pos) CreateMilitaryGroup(_player,Entities.PU_LeaderBow4,_number,GetPosition(_pos)) CreateMilitaryGroup(_player,Entities.PU_LeaderPoleArm4,_number,GetPosition(_pos)) CreateMilitaryGroup(_player,Entities.PU_LeaderSword4,_number,GetPosition(_pos)) CreateMilitaryGroup(_player,Entities.PU_LeaderHeavyCavalry2,_number,GetPosition(_pos)) CreateMilitaryGroup(_player,Entities.PU_LeaderSoldierCavalry2,_number,GetPosition(_pos)) CreateMilitaryGroup(_player,Entities.PU_LeaderRifle2,_number,GetPosition(_pos)) CreateMilitaryGroup(_player,Entities.PV_Cannon1,_number,GetPosition(_pos)) CreateMilitaryGroup(_player,Entities.PV_Cannon2,_number,GetPosition(_pos)) CreateMilitaryGroup(_player,Entities.PV_Cannon3,_number,GetPosition(_pos)) CreateMilitaryGroup(_player,Entities.PV_Cannon4,_number,GetPosition(_pos)) end function Bogen(_player,_number,_pos) CreateMilitaryGroup(_player,Entities.PU_LeaderBow4,_number,GetPosition(_pos)) end function Speer(_player,_number,_pos) CreateMilitaryGroup(_player,Entities.PU_LeaderPoleArm4,_number,GetPosition(_pos)) end function Schwert(_player,_number,_pos) CreateMilitaryGroup(_player,Entities.PU_LeaderSword4,_number,GetPosition(_pos)) end function Kavallerie(_player,_number,_pos) CreateMilitaryGroup(_player,Entities.PU_LeaderHeavyCavalry2,_number,GetPosition(_pos)) end function KavallerieBogen(_player,_number,_pos) CreateMilitaryGroup(_player,Entities.PU_LeaderSoldierCavalry2,_number,GetPosition(_pos)) end function Gewehr(_player,_number,_pos) CreateMilitaryGroup(_player,Entities.PU_LeaderRifle2,_number,GetPosition(_pos)) end function Kannone1(_player,_number,_pos) CreateMilitaryGroup(_player,Entities.PV_Cannon1,_number,GetPosition(_pos)) end function Kannone2(_player,_number,_pos) CreateMilitaryGroup(_player,Entities.PV_Cannon2,_number,GetPosition(_pos)) end function Kannone3(_player,_number,_pos) CreateMilitaryGroup(_player,Entities.PV_Cannon3,_number,GetPosition(_pos)) end function Kannone4(_player,_number,_pos) CreateMilitaryGroup(_player,Entities.PV_Cannon4,_number,GetPosition(_pos)) end function StartCountdown(_Limit, _Callback, _Show) assert(type(_Limit) == "number") assert( not _Callback or type(_Callback) == "function" ) Counter.Index = (Counter.Index or 0) + 1 if _Show and CountdownIsVisisble() then assert(false, "StartCountdown: A countdown is already visible") end Counter["counter" .. Counter.Index] = {Limit = _Limit, TickCount = 0, Callback = _Callback, Show = _Show, Finished = false} if _Show then MapLocal_StartCountDown(_Limit) end if Counter.JobId == nil then Counter.JobId = StartSimpleJob("CountdownTick") end return Counter.Index end function StopCountdown(_Id) if Counter.Index == nil then return end if _Id == nil then for i = 1, Counter.Index do if Counter.IsValid("counter" .. i) then if Counter["counter" .. i].Show then MapLocal_StopCountDown() end Counter["counter" .. i] = nil end end else if Counter.IsValid("counter" .. _Id) then if Counter["counter" .. _Id].Show then MapLocal_StopCountDown() end Counter["counter" .. _Id] = nil end end end function CountdownIsVisisble() for i = 1, Counter.Index do if Counter.IsValid("counter" .. i) and Counter["counter" .. i].Show then return true end end return false end function CountdownTick() local empty = true for i = 1, Counter.Index do if Counter.IsValid("counter" .. i) then if Counter.Tick("counter" .. i) then Counter["counter" .. i].Finished = true end if Counter["counter" .. i].Finished and not IsBriefingActive() then if Counter["counter" .. i].Show then MapLocal_StopCountDown() end -- callback function if type(Counter["counter" .. i].Callback) == "function" then Counter["counter" .. i].Callback() end Counter["counter" .. i] = nil end empty = false end end if empty then Counter.JobId = nil Counter.Index = nil return true end end
wenn du die Map testest machst du das dann mit der debugscript Funktion? Wenn nicht solltest du das unbedingt machen einfach in irgenteinem Ordner Rechts klick machen dann auf Neu und Verknüpfung (So ähnlich, als wenn man einen neuen Ordner erstellt). Dann sollst du einen Dateipfad eingeben, da muss einfach das hier rein:
Da wo xxx steht muss der Dateipfad von deiner Settlerhok.exe Datei hinCode:"xxx\settlershok.exe" -debugscript
Ansonsten solltest du villeicht eifach mal zum testen jede Funktion einzeln ausführen lassen und am Ende könntest du eine Nachricht ausgeben das alles Funktioniert hat:
HierCode:Message("Funktioniert")
gibt die zweite Zahl "9928" an wie oft der Inhalt der Schleife wiederholt werden soll. Das heißt es wird 9928 malCode:for i = 1, 9928 do Armee(3,8,"ua1") Armee(3,8,"ua2") Armee(3,8,"ua3") Armee(3,8,"ua4") Armee(3,8,"ua5") Armee(3,8,"ua6") StartCountdown(1,ultraarmy2(),false) end
ausgeführt? soll das so?Code:Armee(3,8,"ua1") Armee(3,8,"ua2") Armee(3,8,"ua3") Armee(3,8,"ua4") Armee(3,8,"ua5") Armee(3,8,"ua6") StartCountdown(1,ultraarmy2(),false)![]()
ja soll doch nicht zu meistern sein !
wers doch meistert kann sich als "The Settlers King" (übersetzt :"Der Siedler König")bezeichnen !
deswegen heißt meine map auch "Der größte Kampf in Siedler 5"!
trabbi
Was ist Theorie, - Wenns klappen soll und es klappt nie
Was ist Praxis, - Frag nicht so dumm, wenns klappt und Du weißt nicht warum
bin sowieso gespannt bei wem der rechner dann auch noch unnötig abschmiert.Code:for i = 1, 9928 do for j = 1, 6 do Armee(3,8,"ua"..j) end StartCountdown(1,ultraarmy2(),false) end
ansonsten siehe trabbi.
zumal es nur eine bstimmte Anzahl an Entitäten zugelassen ist!
Das Ding wird nie laufen !
trabbi
Was ist Theorie, - Wenns klappen soll und es klappt nie
Was ist Praxis, - Frag nicht so dumm, wenns klappt und Du weißt nicht warum
und mein Speicher 6,4![]()
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen