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

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

Impressum