Problem mit Rohstoffen, möglicherweise bekannter Bug?

» Settlers Map Source Forums » Mapping » Problem mit Rohstoffen, möglicherweise bekannter Bug?

Pages: 1

Chemiker
#1
05-04-2009 12:08
Posts: 11

Problem mit Rohstoffen, möglicherweise bekannter Bug?

Hallo, ich versuch mich grade am mappen für DEdK(Nebelreich) und hab folgendes Problem:
Wenn ich die Map zum Testen starte, dann bekomm ich keine Fehlermeldung(beim Script Test sagt er LUA_OK) aber die Rohstoffe sind nicht die im Script eingestellten sondern jeweils null und auch das Auftragsmenü lässt sich nicht öffnen.
Ist das ein bekannter Bug oder soll ich mein Script reinstellen?

Danke schon mal für Eure Hilfe

____________________
Mein Spiel gibt's HIER, selbst gemacht

Bochumer_Dom
#2
05-04-2009 12:24
Posts: 36

Hi Chemiker,
herzlich wilkommen in der Siedler-Gemeinde.
Also ich perönlich habe noch nie von so einem Bug gehört, deswegen würde ich gerne mal das Skript sehen.

Dann habe ich noch eine Frage: Kommt dir im Spiel der obere Displayrand dunkler vor als sonst?
Wenn ja, dies ist meistens ein Anzeichen dafür das etwas im Skript nicht richtig eingestellt ist.

Viele Grüße,
Dom

____________________
Frohes Siedeln

Chemiker
#3
05-04-2009 12:49
Posts: 11

Danke erstmal für deine schnelle Antwort.

Die Map, also auch das Script sind noch ziemlich unvollständig und das sollte erstmal ein Test sein, ob alles geht, was ja leider nicht so ist.
Script:

--------------------------------------------------------------------------------
-- MapName: XXX
--
-- Author: XXX
--
--------------------------------------------------------------------------------

-- 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()
  Setneutral(1,2)
end


--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called from main script to init all resources for player(s)
function InitResources()
    -- set some resources
    AddGold  (1000)
    AddSulfur(500)
    AddIron  (500)
    AddWood  (1000)	
    AddStone (500)	
    AddClay  (1000)	
end

--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called to setup Technology states on mission start
function InitTechnologies()
  ForbidTechnology(GT_StandingArmy)
  ForbidTechnology(GT_GearWheel)
  ForbidTechnology(GT_Alloying)
  ForbidTechnology(GT_Trading)
  ForbidTechnology(GT_Mathematics)
  ForbidTechnology(GT_Tactics)
  ForbidTechnology(GT_Strategies)
  ForbidTechnology(GT_ChainBlock)
  ForbidTechnology(GT_Architecture)
  ForbidTechnology(GT_Metallurgy)
  ForbidTechnology(GT_Chemistry)
  ForbidTechnology(GT_Printing)
  ForbidTechnology(GT_Library)
  ForbidTechnology(GT_Binocular)
  ForbidTechnology(GT_Matchlock)
  ForbidTechnology(GT_PulledBarrel)
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()
end
	
--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called on game start after all initialization is done
function FirstMapAction()

	local VictoryConditionType = 2

	if VictoryConditionType == 1 then
		MapEditor_SetupResourceVictoryCondition(	
													1000,
													1000,
													1000,
													1000,
													1000,
													1000 ) 
	elseif VictoryConditionType == 2 then
		MapEditor_SetupDestroyVictoryCondition(8)
	end

	-- Level 0 is deactivated...ignore
	MapEditor_SetupAI(2, 0, 0, 0, "", 0, 0)
	MapEditor_SetupAI(3, 0, 0, 0, "", 0, 0)
	MapEditor_SetupAI(4, 0, 0, 0, "", 0, 0)
	MapEditor_SetupAI(5, 0, 0, 0, "", 0, 0)
	MapEditor_SetupAI(6, 0, 0, 0, "", 0, 0)
	MapEditor_SetupAI(7, 0, 0, 0, "", 0, 0)
	MapEditor_SetupAI(8, 0, 0, 0, "", 0, 0)

	-- HQ Defeat Condition
	MapEditor_CreateHQDefeatCondition()

  CloseGate()
  SetupQuest:GTWall()
  createBriefingMayor2()
  CreatePlayer2()

end

-- Quest data
MapEditor_QuestTitle				= "Vereinigen Sie das Königreich"
MapEditor_QuestDescription 	= "Sie müssen das Königreich vereinigen und ihm zu Ruhm und Macht verhelfen."
--
function SetupQuest_GTWall()
    -- Zunächst wird das quest Table mit allen Informationen gefüllt
    local quest = {
        -- Name der Entity die diesen Quest erfüllen muss
        EntityName = "Dario",
 
        -- Name des Zielortes, zu dem die angebene Einheit hinlaufen muss
        TargetName = "Tor",
 
        -- Mit einer Toleranz von 300 Siedlerzentimetern um den Zielpunkt
        Distance = 300,
        
        -- Wenn das erledigt wurde, wird Callback_QuestExplore aufgerufen. Diese Funktion kann man natürlich,
        -- wie schon im Briefingtutorial demonstriert, auch gleich hier erstellen
        Callback = Callback_QuestExplore,
    
        -- Jetzt noch ein paar zusätliche Infos für später merken
        -- Man könnte auch "egal" anstatt "MessageText" schreiben, hauptsache man holt den Wert mit diesem Namen später wieder heraus
        MessageText = "Gut, Dario hat das Tor geöffnet."
    };
    
    -- Nun wird der ErkundungsCheck gestartet
    SetupExpedition( quest )
    OpenGate()
end
 
function Callback_QuestExplore( _Quest )
    -- Hier wird die zuvor gespeicherte Nachricht ausgegeben.
    -- Mit einer festen Nachricht macht das natürlich wenig Sinn, aber möglicherweise fällt jemandem eine bessere Verwendungsmöglichkeit ein
    Message( _Quest.MessageText )
    
end

function OpenGate()
  ReplaceEntity('Tor', XDWallStraightGate)
end

function CloseGate()
  ReplaceEntity('Tor', XDWallStraightGate_Closed)
end

function createBriefingMayor2()
BriefingMayor2 = {}
BriefingMayor2.restoreCamera = true
-- call on end of biefing
BriefingMayor2.finished = BriefingMayor2Finished
local page = 0
-- page #1
page = page + 1
BriefingMayor2[page] = {}
BriefingMayor2[page].title = "Bürgermeister"
BriefingMayor2[page].text = "Hallo, was brauchen Sie denn?"
BriefingMayor2[page].position = GetPosition("Mayor2")
BriefingMayor2[page].dialogCamera = true
-- page #2
page = page + 1
BriefingMayor2[page] = {}
BriefingMayor2[page].title = "Dario"
BriefingMayor2[page].text = "Ich will das Königreich vereinigen und dafür bräuchte ich auch Lehm, können Sie mir etwas überlassen?"
BriefingMayor2[page].position = GetPosition("Dario")
-- page #3
page = page + 1
BriefingMayor2[page] = {}
BriefingMayor2[page].title = "Bürgermeister"
BriefingMayor2[page].text = "Naja, vorerst können wir Euch etwas Lehm überlassen, aber Wenn Ihr eine Mine haben wollt, dann müsst Ihr schon mehr leisten! Darauf werde ich aber noch zurückkommen."
BriefingMayor2[page].position = GetPosition("support")
-- setup table for npc
local npcMayor2 = {}
npcMayor2.name = "Bürgermeister"
npcMayor2.briefing = BriefingMayor2
-- create npc
CreateNPC(npcMayor2)
end

function BriefingMayor2Finished()
  AddClay(1000)
  Message('Ihr habt vom Bürgermeister 1000 Lehm erhalten.')
end

function CreatePlayer2()
player2 = {}
player2.id = 2
local description = {serfLimit = 10}
SetupPlayerAi(player2.id,description)
end



Edit: Die Kommentare darin stammen aus dem Tutorial.

____________________
Mein Spiel gibt's HIER, selbst gemacht

This posting has been edited by Chemiker: 05-04-2009 at 12:55.

Bochumer_Dom
#4
05-04-2009 13:28
Posts: 36

Alles klar da haben wir schon ein paar Verschreiber.
1. Regel ist beim Skripten, gut auf die "Rechtschreibung" der Begriffe achten:
- bei InitDiplomacy() sollte stehen SetNeutral
anstatt Setneutral

- bei allen Technologien muss ein Technologies. vor! Ich glaube das haben die im Tutorial auch vergessen zu erwähnen.

- in der FMA ( FirstMapAction ) hast du SetupQuest:GTWall geschrieben. Ich denke das soll heißen SetupQuest_GTWall.

Dies sind kleine Fehler die sich bei jedem einschleichen, deswegen würde ich dir empfehlen dir mal diese Seite hier anzugucken: http://www.chromix.de/dedk/dok...als:fehlermeldungen_aktivieren

Ich denke, wenn du das verbessert hast sollte dein Skript funktionieren, mehr ist mir nicht aufgefallen.
Wenn nicht kannst du mir ja noch mal eine PN schreiben oder vielleicht finden auch andere Mapper noch einen Fehler.

Viel Spaß und Viele Grüße,
Dom

____________________
Frohes Siedeln

Chemiker
#5
05-04-2009 13:45
Posts: 11

ok...
Die Groß- und Kleinschreibung, ich programmiere in Delphi, ist meines Wissens nach egal, aber ich habs mal geändert.

Im Tutorial steht nichts von Technologies, aber ich hab im Tutorial das Beispiel angesehen und daher weiß ichs jetzt

GTWall: Da hast du Recht!

Aber es geht immernoch nicht... ich hab also das mit dieser Seite gemacht und folgende Fehlermeldung erhalten:

[ 2009/04/05 13:38:21 ] ERROR: DEBUG ERROR!

Error: LUA_ERRRUN: [string "Data\Script\MapTools\Comfort.lua"]:1682: assertion failed!


aber das Script hat keine 200 geschweige denn 1600 Zeilen, also versteh ich die Meldung nicht...
Danke für dein Hilfe

____________________
Mein Spiel gibt's HIER, selbst gemacht

Bochumer_Dom
#6
05-04-2009 14:23
Posts: 36

Ja, Delphi ist das wurscht, das macht es dort um einiges leichter wenn man nicht auf Groß- und Kleinschreibung achten muss. Hier ist es aber unbedingt Notwendig.
Was mir auch noch aufgefallen ist:
Bei ReplaceEntity hast du 'Tor' stehen aber hier muss man diese anführunsstriche bentzen : "
Darauf solltest du auch noch achten. Ist auch bei Message passiert. Glaub das kommt auch von Delphi


[ 2009/04/05 13:38:21 ] ERROR: DEBUG ERROR!

Error: LUA_ERRRUN: [string "Data\Script\MapTools\Comfort.lua"]:1682: assertion failed!


Diese bedeutet das ein Fehler im Internen Skript aufgetreten ist, dieses kannst du nicht einsehen und deshalb bringt dir die Zeilenangabe dirt nichts.

Ersetze einfach deine ' gegen " dann, hoffe ich, klappt es.

____________________
Frohes Siedeln

Chemiker
#7
05-04-2009 14:47
Posts: 11

Vielen Dank!

Du hast mir sehr weitergeholfen aber ich habe noch einen weiteren Fehler gemacht, den ich erst jetzt bemerkt hab:
Ich habe die Kamera-Position auf ein Objekt gesetzt das es nicht gibt. Ich Trottel

____________________
Mein Spiel gibt's HIER, selbst gemacht

Chemiker
#8
05-04-2009 15:24
Posts: 11

Soweit so gut

Der Teil geht, jetzt habe ich aber weitere Fragen:
Kann das Auftragsmenü keine Umlaute anzeigen? Bei ö,ü usw. schneidet er mir den Satz ab und danach kommt nix mehr

____________________
Mein Spiel gibt's HIER, selbst gemacht

Chemiker
#9
05-04-2009 15:28
Posts: 11

Weitere Probleme:

1. Ich will das Tor durch ein offenes, bzw. ein zues ersetzten, dann ist es weg!
2. Über dem Bürgermeister Mayor2 erscheint kein Rufezeichen oder sowas
3. Wie füge ich ins Auftragsmenü einen Auftrag hinzu?

Danke schonmal an alle, die mir helfen und nochmal ein Dankeschön an den Bochumer Dom!

____________________
Mein Spiel gibt's HIER, selbst gemacht

Bochumer_Dom
#10
05-04-2009 15:57
Posts: 36

1. die Tor-Entities heißen:
Entities.XD_WallStraightGate (offen)
Etities.XD_WallStraightGate_Closed (geschlossen)

wie bei Technologies. fehlt hier Entities. und Unterstrich zwischen XD und der Wall...

2.Ich wette dein Bürgermeister heißt im Editor nicht Bürgermeister, denn sonst wäre deine Map nicht gespeichert.
NIE Umlaute im Mapenitor benutzen!!
Ich denke der wird heißen Mayor2
dies muss beim npc-Table unter "name =" rein!

3. Dies kannst du entweder durch Briefings machen oder ausgelagert.
Ich denke zu beginn ist Aufträge erstellen durch Briefings einfacher.
Ein Beispiel wäre hier:

-- page #3
page = page + 1
BriefingMayor2[page] = {}
BriefingMayor2[page].title = "Bürgermeister"
BriefingMayor2[page].text = "Naja, vorerst können wir Euch etwas Lehm überlassen, aber Wenn Ihr eine Mine haben wollt, dann müsst Ihr schon mehr leisten! Darauf werde ich aber noch zurückkommen."
BriefingMayor2[page].position = GetPosition("support")
BriefingMayor2[page].quest = {}
BriefingMayor2[page].quest.id = 2
BriefingMayor2[page].quest.type = (möglichkeiten: MAINQUEST_OPEN oder SUBQUEST_OPEN)
BriefingMayor[page].quest.title = "Bringt Ihm mehr!"
BriefingMayor[page].quest.text = "Bringt dem Bürgermeister mehr für sein Lehm, unzwar: ...



damit du ihn nun am Ende abhaken kannst musst du dir die Seite merken:

QuestBringMore = page


wenn es geschafft ist machst du das hier: ResolveBriefing(BriefingMayor2[QuestBringMore])
dann müsste da ein Häckchen sein.

Hier würde ich dir aber Empfehlen mit dem neuen Stil zu beginne, ich finde dieser ist einfacher.
Ich kann dir meinetwegen ein Beispielbriefing schicken!

____________________
Frohes Siedeln

Chemiker
#11
05-04-2009 16:11
Posts: 11

Ein Beispiel geschickt, das könnt ich gut gebrauchen, aber nur wenn du die Zeit und vor allem Nerven dazu hast.

____________________
Mein Spiel gibt's HIER, selbst gemacht

Pages: 1

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

Impressum