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