Topic: Fragen zu Lua
Taurus Topic Opener |
Posted at: 2011-06-06, 16:27
Halli hallo, ich versuch mich grade ein bischen an Lua und habe zu Testzwecken mal eine kleine Mission gemacht.Nun bekomm ich es aber im moment nicht hin, einen Auftrag hinzu zu fügen. Es kommt immer wieder eine Fehler- meldung:"nil value"(Zeile 17): print "#########################" print "Hello world" print "#########################" set_textdomain("scenario_Mission01.wmf") p = wl.Game().players[1] p:forbid_buildings("all") p:allow_buildings{"lumberjacks_hut"} hq = p:place_building("headquarters_interim", wl.Game().map:get_field(47,45),false,true) hq:set_wares{ trunk = 20} hq:set_workers{builder=10,carrier=40,lumberjack=2,stonemason=2} home = wl.Game().map:get_field(47,45) use("aux", "coroutine") title = "Jepp" msg = "test test test 1 2 3 1 2 3" wl.Game().players[1]:message_box(title, msg) p:add_objectiv{name = "aufgabe" ,title = "hallo",body = " welt"} Was mach ich bei "p:add_obje...." falsch? Außerdem hätte ich gerne, dass ein bestimmtes Gebiet erst betreten werden kann, wenn ein paar andere Bedingungen vorher erfüllt werden. Dazu habe ich ein bischen Geröll platziert und würde es gerne entfernen, sobald Bedingung xy erfüllt ist. Nun zu meiner Frage: Ist es möglich mit Lua, während des Spiels, das Geröll zu entfernen und wenn ja, welchen Befehl brauch ich dafür? Ich hab bei "core functionality" schon die "remove()" Funktion gefunden, weiß aber nicht wie ich sie Anwenden muss. Danke im voraus für die Hilfe! Taurus PS: Ich weiß, dass das Thema eigendlich in das "Editor Forum" gehört, aber mein Englisch ist soooo schlecht, dass ich mich nicht mal traue dort was rein zu schreiben Edited: 2011-06-06, 22:46
Top Quote |
Beefy |
Posted at: 2011-06-09, 10:05
Es fehlt ein e. add_objective und nicht add_objectiv Top Quote |
Taurus Topic Opener |
Posted at: 2011-06-09, 10:15
OMG Was für ein dämlicher Fehler! Werde ab jetzt in meiner Fehleranalyse die Rechtschreibung mit einbeziehen ;). Es stürtzt das Spiel im übrigen nach der message_box() ab. In der stdout.txt steht am Ende: Trying to run: map, init: ######################### Hello world Forcing flag at (48, 46) Message: adding (wh) (warehouse) 1 Jetzt bin ich mir nicht sicher was der Fehler ist. Liegt es daran, dass mit dem objectivE nichts passiert? Edited: 2011-06-09, 10:15
Top Quote |
martin |
Posted at: 2011-06-09, 10:34
Hallo Taurus und willkommen im Forum :) Kleiner Hinweis: Quelltext kannst du bei "markdown" in umgekehrten Hochkommata (`) ordentlich darstellen. Deine Zeile 17 lautet also wahrscheinlich folgendermaßen:
Zwei Gedanken hierzu: 1. "Zielvorgabe" heißt im Englischen "objective" - könnte es vielleicht sein, dass du ein "e" vergessen hast? ;) 2. Habe ich die Sternchen (*) korrekt rekonstruiert? Dann probier es mal ohne. Ich wüsste nämlich nicht, warum die dort stehen müssen. Die Syntax ist mir bei Lua zumindest nicht bekannt und dürfte außerdem dazu führen, dass die Zeichenfolgen mit 0 multipliziert werden - und dann wäre deine Fehlermeldung "nil value" sogar ziemlich logisch Top Quote |
Taurus Topic Opener |
Posted at: 2011-06-09, 10:48
Hiho martin, jepp ich hab das e vergessen ^¿^. Die (*) hast du leider nicht richtig rekonstruiert. Eigendlich heißt die Zeile bei mir:
Nun hab ich das in mein Script auch eingefügt und das Spiel stürzt ab. In der stdout.txt steht leider auch nichts brauchbares drin. Ich hab jetzt nach jeder Zeile ein
PS: Danke Beefy&martin für eure Antworten. Edited: 2011-06-09, 10:50
Top Quote |
martin |
Posted at: 2011-06-09, 11:21
Ah, okay, ich seh schon - das waren also die translatable-Markierungen. Bekommst du seit dem "e" immernoch die "nil value" Meldung oder ist es inzwischen ein anderer Fehler? Top Quote |
Taurus Topic Opener |
Posted at: 2011-06-09, 11:34
Es kommt garkeine Fehlermeldung mehr. Das Spiel geht einfach aus. Ich hab auch in der "stdout.txt" nachgeguckt und da ist das letzte was drinne steht, dass das Lied geladen wurde. Ich poste am besten nochmal Quelltext und "stdout.txt":
und in der "stdout.txt" steht am Ende:
Das wars. Ich fass nochmal zusammen: Das "e" hat gefehlt -> "e" hinzugefügt -> Fehlermeldung komm nichtmehr, aber Spiel geht einfach aus -> hab die print "check NR" Zeilen eingefügt -> in der objective Zeile haut irgend etwas nicht hin -> ratlosigkeit Edited: 2011-06-09, 11:36
Top Quote |
martin |
Posted at: 2011-06-10, 10:41
Hmm, lass mal analysieren:
Ich beziehe mich hierbei auf das Beispielskript
Viele Grüße Martin Edited: 2011-06-10, 10:43
Top Quote |
Taurus Topic Opener |
Posted at: 2011-06-10, 20:35
Hiho, vielen Dank martin, dass du dir für mich so viel Mühe gemacht hast und alles auseinander genommen hast. Ich hab jetzt die {} durch () ersetzt und "name =" usw entfernt. Jubel Trubel Heiterkeit! ^¿^ Es funktioniert. Ich muss leider gestehen, dass ich mich mit der Syntax noch nicht auskenne. Ich weiß absolut nicht wann ich () {} oder [] benutzen muss. Deswegen entstehen bei mir so viele Fehler. Im übrigen funktioniert die message_box. Sie wird angezeigt und Was Ich hab mal eine Frage zu den init.lua Dateien aus den anderen Kampagnen. Werden die bei dir auch so zerhackstückelt angezeigt? Ich geb mir nämlich echt viel mühe so viel wie möglich daraus zu lernen und nicht ständig im Forum zu fragen, aber bei mir ist die Darstellung sowas von kacke, dass ich erstmal ne Stunde brauche, eh ich ein bischen Ordnung rein gebracht habe. Nagut, ich glaube ich hab jetzt erstmal alles was ich wissen muss um mir meine erste kleine Mission zurecht zu machen. Ich hoffe dir ist es recht, wenn der Berater von meinem kleinen Thorben ab jetzt Martin heißt Dank für die Hilfe, Taurus Edited: 2011-06-10, 20:38
Top Quote |
ChemBro |
Posted at: 2011-06-10, 20:43
Denk nur dran, dein Scripting woanders zu sichern, solltest du die Karte im Editor bearbeiten, da dieser Ordner einfach überschrieben (bzw. geleert) wird. Erspart dir Zeit und Ärger. Top Quote |