Blockiertes Tributmenü
» Siedler Map Source Forum » Siedler DEdK Script Forum » Blockiertes Tributmenü
Seiten: 1
RitterLeo
|
#1 08.10.2018 10:34 Beiträge: 237 |
Blockiertes Tributmenü
Bei meiner neuen Karte "Fahdes Tal" gibt es ein Problem.
Um genauer zu sein Blockiert irgendetwas das Tributmenü so das man es nicht öffnen kann und ich komme nicht voran, ich habe die Funktionen verrückt und neu geschrieben aber es tut sich nichts.
Wenn jemand von euch eine Lösung weiss bzw. will das ich das Script hier reinstelle dann gerne sagen, ist aber nur ein kleiner Script.
____________________
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.
Zedeg
|
#2 08.10.2018 11:32 Beiträge: 428 |
Klingt so, als seien die Tribute nicht richtig erstellt worden, weshalb sie nicht existieren. Diesen Skriptteil solltest du wohl posten.
____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski
RitterLeo
|
#3 08.10.2018 12:24 Beiträge: 237 |
Zitat von RitterLeo:
Das ist das ganze kleine Script:
-------------------------------------------------------------------------------- -- MapName: Fahdes Tal -- -- 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() end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- This function is called from main script to init all resources for player(s) function InitResources() -- set some resources AddGold (1400) AddSulfur(0) AddIron (10) AddWood (120) AddStone (10) AddClay (50) AddGold (3000,4) AddIron (3000,4) end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- This function is called to setup Technology states on mission start function InitTechnologies() ResearchTechnology(Technologies.GT_ChainBlock,1) ResearchTechnology(Technologies.T_Shoeing,4) 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(1,FRIENDLY_COLOR2) Display.SetPlayerColorMapping(8,NPC_COLOR) end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- This function is called on game start after all initialization is done function FirstMapAction() MapEditor_SetupAI(2, 2, 3000, 1, "Totels", 0, 600) MapEditor_SetupAI(4, 2, 12000, 3, "Warbarin", 1, 0) overrideSetupAITroopTypes(4, {UpgradeCategories.LeaderHeavyCavalry}) SetFriendly(1,4) SetHostile(4,2) SetPlayerName(1,"Nelov") SetPlayerName(2,"Die Totels") SetPlayerName(4,"Warbarin") ActivateShareExploration(1, 4, true) Soldner() StartSimpleJob("VictoryJob") end function Soldner() local mercTent = GetEntityId( "merc" ); Logic.AddMercenaryOffer( mercTent, Entities.PU_LeaderRifle1, 2, ResourceType.Gold, 75, ResourceType.Wood, 31 ); Logic.AddMercenaryOffer( mercTent, Entities.CU_Barbarian_Hero, 1, ResourceType.Gold, 450, ResourceType.Wood, 600); Tribut() end function VictoryJob() if IsDead("Totels") then Victory() return true end function Tribut() local tribute = {} tribute.playerId = 1; tribute.text = "Ari gibt euch die Technologie Meisterschuetze fuer 620 Holz."; tribute.cost = {Wood = 620}; tribute.Callback = TributBezahlt; AddTribute( tribute ) end function TributBezahlt() ResearchTechnology(Technologies.T_BetterTrainingArchery,1) end; -- Quest data MapEditor_QuestTitle = "Die Totels" MapEditor_QuestDescription = "Erledigt alles was dieser Stamm besitzt und nehmt euch das was euch gehoert" end function overrideSetupAITroopTypes(player, types) local i = 1 while MapEditor_Armies[player][i] do MapEditor_Armies[player][i].AllowedTypes = types i = i+1 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 AddTribute( _tribute ) 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 LocalMusic.UseSet = MEDITERANEANMUSIC
Eigentlich denke ich das alles richtig laufen müsste.
____________________
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
|
#4 08.10.2018 12:30 Beiträge: 1472 |
So, hab dein Script gerade durch nen autoformatter gejagt, dann sieht man den Fehler auf den ersten Blick:
function VictoryJob() if IsDead("Totels") then Victory() return true end function Tribut() local tribute = {} tribute.playerId = 1; tribute.text = "Ari gibt euch die Technologie Meisterschuetze fuer 620 Holz."; tribute.cost = {Wood = 620}; tribute.Callback = TributBezahlt; AddTribute( tribute ) end function TributBezahlt() ResearchTechnology(Technologies.T_BetterTrainingArchery,1) end; -- Quest data MapEditor_QuestTitle = "Die Totels" MapEditor_QuestDescription = "Erledigt alles was dieser Stamm besitzt und nehmt euch das was euch gehoert" end
Das end von VictoryJob ist zu weit hinten und außerdem wird Tribut nicht aufgerufen.
RitterLeo
|
#5 08.10.2018 13:20 Beiträge: 237 |
Ach ja das Tribut hatte ich mal dahin versetzt warum auch imemr aber selbst davor ging es nicht.
Ich gucke kurz nach obs geht und dann wird die Map neu hochgeladen.
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.
RitterLeo
|
#6 08.10.2018 13:47 Beiträge: 237 |
Trotz des Aufrufens der Technologie will es irgendwie immer noch nicht, glaube ich bin dafür zu dumm oder faul. Kommt bestimmt von den Ferien.
function FirstMapAction() MapEditor_SetupAI(2, 2, 3000, 1, "Totels", 0, 600) MapEditor_SetupAI(4, 2, 12000, 3, "Warbarin", 1, 0) overrideSetupAITroopTypes(4, {UpgradeCategories.LeaderHeavyCavalry}) SetFriendly(1,4) SetHostile(4,2) SetPlayerName(1,"Nelov") SetPlayerName(2,"Die Totels") SetPlayerName(4,"Warbarin") ActivateShareExploration(1, 4, true) Soldner() Tribut() StartSimpleJob("VictoryJob") end function Soldner() local mercTent = GetEntityId( "merc" ); Logic.AddMercenaryOffer( mercTent, Entities.PU_LeaderRifle1, 2, ResourceType.Gold, 75, ResourceType.Wood, 31 ); Logic.AddMercenaryOffer( mercTent, Entities.CU_Barbarian_Hero, 1, ResourceType.Gold, 450, ResourceType.Wood, 600); end function VictoryJob() if IsDead("Totels") then Victory() return true end function Tribut() local tribute = {} tribute.playerId = 1; tribute.text = "Ari gibt euch die Technologie Meisterschuetze fuer 620 Holz."; tribute.cost = {Wood = 620}; tribute.Callback = TributBezahlt; AddTribute( tribute ) end function TributBezahlt() ResearchTechnology(Technologies.T_BetterTrainingArchery,1) end; -- Quest data MapEditor_QuestTitle = "Die Totels" MapEditor_QuestDescription = "Erledigt alles was dieser Stamm besitzt und nehmt euch das was euch gehoert" end
Habe es doch eigentlich berichtigt.
____________________
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
|
#7 08.10.2018 15:40 Beiträge: 1472 |
Du hast nur den Aufruf hinzugefügt, aber die Funktion nicht aus der VictoryJob rausgeholt. Du versuchst also Tribute() aufzurufen, obwohl es das noch garnicht gibt.
Versuch es also mal so:
function FirstMapAction() MapEditor_SetupAI(2, 2, 3000, 1, "Totels", 0, 600) MapEditor_SetupAI(4, 2, 12000, 3, "Warbarin", 1, 0) overrideSetupAITroopTypes(4, {UpgradeCategories.LeaderHeavyCavalry}) SetFriendly(1,4) SetHostile(4,2) SetPlayerName(1,"Nelov") SetPlayerName(2,"Die Totels") SetPlayerName(4,"Warbarin") ActivateShareExploration(1, 4, true) Soldner() Tribut() StartSimpleJob("VictoryJob") end function Soldner() local mercTent = GetEntityId( "merc" ); Logic.AddMercenaryOffer( mercTent, Entities.PU_LeaderRifle1, 2, ResourceType.Gold, 75, ResourceType.Wood, 31 ); Logic.AddMercenaryOffer( mercTent, Entities.CU_Barbarian_Hero, 1, ResourceType.Gold, 450, ResourceType.Wood, 600); end function VictoryJob() if IsDead("Totels") then Victory() return true end end function Tribut() local tribute = {} tribute.playerId = 1; tribute.text = "Ari gibt euch die Technologie Meisterschuetze fuer 620 Holz."; tribute.cost = {Wood = 620}; tribute.Callback = TributBezahlt; AddTribute( tribute ) end function TributBezahlt() ResearchTechnology(Technologies.T_BetterTrainingArchery,1) end; -- Quest data MapEditor_QuestTitle = "Die Totels" MapEditor_QuestDescription = "Erledigt alles was dieser Stamm besitzt und nehmt euch das was euch gehoert"
Seiten: 1