Skripte Debuggen mit mehr als 128 KB

» Siedler Map Source Forum » Siedler DEdK Script Forum » Skripte Debuggen mit mehr als 128 KB

Seiten: 1

aCid
#1
21.01.2010 15:59
Beiträge: 275

Skripte Debuggen mit mehr als 128 KB

ich bin jetzt mit meinem SKript über die 128 kb hinaus.

Nun gibt es ja das problem, dass der Editor immer "Skript-Error" anzeigt. Also der Debugger funzt nicht mehr richtig.

Durch Notepad, kann man ja schon viele Fehler erkennen, wenn man alles einklappt oder ähnliches. Aber bspw ein fehlendes Komma ist manchmal sehr schwer zu finden.

Da wollte ich mal fragen, wie ihr das macht?

Kopiert ihr immer nur einzelne Schnipsel rein udn schaut, ob es Fehlermeldungen gibt? Oder gibts noch ne clevere Lösung?

Vielen Dank im voraus.

lg
aCid

____________________
Das ist und bleibt ein Spiel! - Wir sind hier nicht vor Gericht.
----------------------------------------------------------------------
Mapperhilfen für S5:
http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum-27/index.htm
http://www.siedler-maps.de/for...und-andere-Ressourcen-8688.htm
http://www.siedler-maps.de/for...unktionen-Skripte-etc-8706.htm

Wladimir
#2
21.01.2010 16:02
Beiträge: 489

Zitat von aCid:
ich bin jetzt mit meinem SKript über die 128 kb hinaus.

Nun gibt es ja das problem, dass der Editor immer "Skript-Error" anzeigt. Also der Debugger funzt nicht mehr richtig.

Durch Notepad, kann man ja schon viele Fehler erkennen, wenn man alles einklappt oder ähnliches. Aber bspw ein fehlendes Komma ist manchmal sehr schwer zu finden.

Da wollte ich mal fragen, wie ihr das macht?

Kopiert ihr immer nur einzelne Schnipsel rein udn schaut, ob es Fehlermeldungen gibt? Oder gibts noch ne clevere Lösung?

Vielen Dank im voraus.

lg
aCid



Die Antwort hast du dir beinahe selbst gegeben.

Falls es nicht mehr als 256 kb sind, einfach die Hälfte aller Funktionen in den Skripteditor rein und genauer untersuchen, dann die andere. So hast du wieder den funktionierenden Debugger.

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

fritz_98
#3
21.01.2010 16:24
Beiträge: 472

Ach watt.

http://www.siedler-games.de/si...als:fehlermeldungen_aktivieren

Da wird alles beschrieben, wie du während dem Spiel Laufzeitfehlermeldungen bekommst. Und das ganze funktioniert weit über die Skriptbegrenzung hinaus.

LG
Fritz

aCid
#4
21.01.2010 16:36
Beiträge: 275

so starte ich jeden Testlauf. Deshlab zeiht es sich auch etwas mit dem vorankommen.

Weiss nicht wieso, aber schaff fast jedes Mal bei jeder Fortführung mind. 1 fehler zu produzieren. Buchstabendreher, " vergessen. und und und...

Danke schonmal bis hierher.

Falls doch noch jemand was anderes nutzt oder macht, dann bitte her damit. D:

____________________
Das ist und bleibt ein Spiel! - Wir sind hier nicht vor Gericht.
----------------------------------------------------------------------
Mapperhilfen für S5:
http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum-27/index.htm
http://www.siedler-maps.de/for...und-andere-Ressourcen-8688.htm
http://www.siedler-maps.de/for...unktionen-Skripte-etc-8706.htm

fritz_98
#5
21.01.2010 16:43
Beiträge: 472

Musst ja nicht immer am Start deinen Testlauf beginnen. Einfach einen fehlerfreien Part "weiterschalten" zum nächsten. Mit ausgelagertem Skript moch dazu sparst du damit jede Menge Zeit. Kleines Prinzipbespiel:

function FirstMapAction()
Func1()
end
function Func1()
if aufgabe1 == erledigt then
Func2()
end
end
function Func2()
Foo()
end
function Foo()
if bar == true then
Victory()
end
end


Wenn Func1() nun fehlerfrei läuft, einfach in der FMA gleich Func2() aufrufen. Musst Func1() nicht mehr durchlaufen und sparst wie gesagt ne Menge Zeit.

LG
Fritz

Wladimir
#6
21.01.2010 17:22
Beiträge: 489

Zitat von fritz_98:
Musst ja nicht immer am Start deinen Testlauf beginnen. Einfach einen fehlerfreien Part "weiterschalten" zum nächsten. Mit ausgelagertem Skript moch dazu sparst du damit jede Menge Zeit. Kleines Prinzipbespiel:

function FirstMapAction()
Func1()
end
function Func1()
if aufgabe1 == erledigt then
Func2()
end
end
function Func2()
Foo()
end
function Foo()
if bar == true then
Victory()
end
end


Wenn Func1() nun fehlerfrei läuft, einfach in der FMA gleich Func2() aufrufen. Musst Func1() nicht mehr durchlaufen und sparst wie gesagt ne Menge Zeit.

LG
Fritz



Nicht schlecht die Idee! Werde ich bei meinen Maps zukünftig auch machen. Bisher habe ich immer Rohstoffe beim Testen gecheatet und so das Spiel immer schnell durchgespielt.

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

aCid
#7
21.01.2010 17:27
Beiträge: 275

Hmm. Okay. Es wird also ne nervige Tortur.

Werde die Funktionen dann auf ner testmap laden.

Weil man sonst immer soviele Helden etc. posen muss, und nicht, dass ich nachher noch kirre werd.

Danke aber nochmal für die Anregungen und, dass es Euch ähnlich ergeht.

____________________
Das ist und bleibt ein Spiel! - Wir sind hier nicht vor Gericht.
----------------------------------------------------------------------
Mapperhilfen für S5:
http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum-27/index.htm
http://www.siedler-maps.de/for...und-andere-Ressourcen-8688.htm
http://www.siedler-maps.de/for...unktionen-Skripte-etc-8706.htm

Wladimir
#8
21.01.2010 17:36
Beiträge: 489

Zitat von aCid:
Danke aber nochmal für die Anregungen und, dass es Euch ähnlich ergeht.



Keineswegs.
Meine Skripts waren bisher höchstens 80 kb groß.

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

kingsia
#9
21.01.2010 17:59
Beiträge: 750

Einfache Lösung.

Mit den veschiedene Funktionen auseinandersetzen (verstehen) und der Skript optimieren sodass man die 128KB Grenze nicht überschreitet. Wenn es trotzdem mehr als 128KB braucht dann muss es ein wahnsinnige Karte sein.
Manche Skripte die ich angeschaut habe sind sowas von Platzverschwenderisch ich kann nur mit dem Kopf schutteln.

Wer hilfe braucht den neue Schreibstil zu verstehen oder wissen will wie man den Skript anderswo optimieren kann,braucht mir nur ein PN zu schicken.
Jede Anfrage oder Hilfe wird voll vertraulich behandelt. Keine Name erwähnt und kein Code-schnipsel weitergeben oder anderswo verwendet ohne Zustimmung der Erfinder.

Gruss
Kingsia

aCid
#10
21.01.2010 18:35
Beiträge: 275

ist hier keine Option.
alles schon im neuen Stil.

sind bisher 145 kb und 3/5 durchgescriptet. naja. wird es halt der leidvolle weg.

____________________
Das ist und bleibt ein Spiel! - Wir sind hier nicht vor Gericht.
----------------------------------------------------------------------
Mapperhilfen für S5:
http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum-27/index.htm
http://www.siedler-maps.de/for...und-andere-Ressourcen-8688.htm
http://www.siedler-maps.de/for...unktionen-Skripte-etc-8706.htm

kingsia
#11
21.01.2010 19:03
Beiträge: 750

@ aCid,

Dann warte ich sehnsuchtig auf deine Karte.

gruss
Kingsia

aCid
#12
22.01.2010 12:33
Beiträge: 275

ich bin auch schon sehr gespannt... *fingers_crosed*

____________________
Das ist und bleibt ein Spiel! - Wir sind hier nicht vor Gericht.
----------------------------------------------------------------------
Mapperhilfen für S5:
http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum-27/index.htm
http://www.siedler-maps.de/for...und-andere-Ressourcen-8688.htm
http://www.siedler-maps.de/for...unktionen-Skripte-etc-8706.htm

Kalle
#13
22.01.2010 13:32
Beiträge: 1150

eventuell den Editor zweimal starten, einmal mit Tiny, einmal Original starten.

Mit dem Tiny-Editor Map laden. Bei dem Original-Editor Script aufrufen, und komplett löschen, Script-Editor durch SCRIPT-BEENDEN wieder verlassen (jetzt ist die leere Map auch ohne Script).

Dann aus Tiny-Editor die Funktion oder den Block mittels Copy (markieren und STRG-C) und Paste (STRG-V) in den Original-Editor kopieren, dort Syntax-Check ausführen. Am besten nach Check mittels Abbruch(x) verlassen, dann bleibt der Script-Editor leer.

So kann man den Editor mit Syntax-Check ohne Probleme behalten und benutzen, und Schreibfehler/Tipp-Teufel finden. Wenn die kopierte Function/Block verändert wurde (wegen Fehlern), dann einfach mittels Copy/Paste vom Original-Editor zum Tíny-Editor zurück-kopieren.

So fand ich das einfacher...


Bin sehr gespannt auf die Map.....

Gruß Kalle

____________________
Lieber Siedeln statt (fern)sehen.....

aCid
#14
22.01.2010 15:02
Beiträge: 275

ja kalle. das stimmt. dachte, aber das gibt es noch eine einfachere lösung.

erwartet mal bitte alle nicht soviel von der map. wird ne ganz normale. schlüssel hier finden. schafe da gesammelt.

____________________
Das ist und bleibt ein Spiel! - Wir sind hier nicht vor Gericht.
----------------------------------------------------------------------
Mapperhilfen für S5:
http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum-27/index.htm
http://www.siedler-maps.de/for...und-andere-Ressourcen-8688.htm
http://www.siedler-maps.de/for...unktionen-Skripte-etc-8706.htm

Kalle
#15
22.01.2010 16:56
Beiträge: 1150

... eventuell weiß Flodder da mehr ...

Ich habe mal irgendwo gelesen, dass der Notepad++ so eine Syntax-Prüfung und viele weitere Prüfungen durchführen kann. Auch nach doppelten Variablen etc...

Aber soweit bin ich auch noch nicht gegangen....

____________________
Lieber Siedeln statt (fern)sehen.....

Siedler_Team
#16
22.01.2010 19:30
Beiträge: 847

Zitat von Kalle:
... eventuell weiß Flodder da mehr ...


Hallo Mapper und Skripter.
Ich kann ja mal meine Arbeitsweise in einzelnen, gut nachvollziehbaren Schritten schildern. Damit habe ich persönlich immer gute Erfahrungen gemacht und vielleicht hilft das dem einen oder anderen Kollegen.

Zu den einzelnen Schritten:
Punkt eins:
Sobald ich eine neue Map erstelle, bekommt sie zunächst einen Namen. Dann wird konsequent alles was im internen Skripteditor steht, gelöscht! Dafür kommt eine einzige Zeile rein!

Beispiel:
Script.Load ( "E:\\Scripte\\Flodder\\Greyfell.lua" )

Mehr steht im internen Skripteditor nicht. Doppel Backslash ist wichtig!

Das bedeutet:
Das Skript ist nun ausgelagert und ein Zugrifft auf den Editor ist nur noch nötig, wenn die Map selbst gestalterisch bearbeitet werden muss, oder neue Entities gesetzt werden.

Dem Spiel ist es egal, woher es sein Skript bekommt. Ob nun aus dem Internen Skripteditor oder aus einem Verzeichnis. Bei Spielstart (...Testläufen) schaut das Game zuallererst in den Internen Editor. Das ist vorgegeben.

Dort findet es nun lediglich obige Zeile. Die folgendes bedeutet:
"Liebes Spiel, hole dir das Skript Greyfell.lua aus dem Laufwerk E:\ --> Verzeichnis Scripte --> Unterverzeichnis Flodder und lade es."

Laufwerk und Verzeichnisse natürlich individuell anpassen. Nicht jedem steht die Partition E:\ zur Verfügung. Kann also auch C:\ D:\ oder sonst ein Laufwerk sein.

Zusätzlich noch folgendes machen:
Nach Installation des Spiels "Siedler 5" werden sogenannte Start-Ikons" angelegt. Das sind Verknüpfungen zu der Legenden.exe oder zu Nebelreich.exe die das Spiel bei Betätigung starten.

Beispiel Vernüpfungsbutton zur Legenden.exe:
Auf den Startbutton rechtsklicken, --> auf Eigenschaften linksklicken, --> in die Zeile Ziel schauen --> dort hinter ...settlershok.exe" ein Freizeichen setzen und dann -debugscript eintragen (nicht das Minuszeichen vor debugscript vergessen!). Danach auf Übernehmen und OK klicken. Fertig!

Jetzt passiert folgendes:
1. Spiel wird gestartet,
2. lua wird aus angegebenen Zielverzeichnis geladen,
3. Der Debugger wird gestartet und überprüft in Echtzeit das Script, bzw. gestartete Abschnitte. Und jetzt greift der Vorschlag von Fritz:

Abschnitte aufteilen! Das erspart jede Menge Zeit! Läuft ein Abschnitt ohne irgendwelche ERROR-Meldungen, kann zum nächsten Abschnitt übergegangen werden.

Bei dieser Methode geben ausgewiesene ERROR-Meldungen sofort an, in welcher Zeile genau oder in etwa der Fehler liegt.

Dann stoppt man das Spiel einfach mit der Pause-Taste und minimiert es mit der Tastenkombination ALT plus TAB. Das Game liegt nun in der Taskleiste und es erscheint bei geöffnetem NP++ das Script. Da man aus der ERROR-Meldung, die nun auch im NP++ stehen bleibt weiss, in welcher Zeile der Fehler liegt, wird das näher untersucht, geändert und das Script neu gespeichert.

Danach Spiel wieder aus der Taskleiste maximieren, Pause deaktivieren und neu starten (F1) Das wiederholt man so lange, bis keine ERROR-Meldung mehr erscheint. Damit wäre dann der jeweilige Abschnitt "gegessen"!

Erst wenn das gesamte Spiel geprüft und fehlerfrei ist, das Script wieder in den Internen Editor per Strg plus A --> Strg plus C --> Strg plus V laden UND NICHT ANDERS, sonst werden möglicherweise Steuerzeichen übertragen die dazu führen können, dass das Spiel mit eingebundenem Skript nicht mehr lauffähig ist!

____________________
Wer altes Wissen ehrt und neues Wissen erlangt, ist bereit, ein Lehrer zu sein. ( -Konfuzius- )

Dieser Beitrag wurde von Siedler_Team am 22.01.2010 um 23:01 editiert.

Wladimir
#17
24.01.2010 20:56
Beiträge: 489

Eine Frage dazu

Hier
steht, dass man ein Skript irgentwie automatisch verkleinern kann. Doch die Seite erfordert ein Password, welches ich nicht besitze. (Dort können also nur angemeldete Benutzer rein)

Hat da wer Ahnung, was da mit dem Skript passierte und warum das net mehr geht?

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

aCid
#18
24.01.2010 21:02
Beiträge: 275

was da passiert steht ebenfalls da.


*
Leerzeilen entfernen
*
Kommentare entfernen
*
Einrückung entfernen
*
Überflüssige Leerzeichen in einer Zeile entfernen
*
Leerzeichen vor und hinter Operatoren und Klammern entfernen
*
Optionale Semikolons am Ende der Zeile entfernen


war aber nur sinnvoll, als es noch nicht das TinySkript gab.

und es geht nicht mehr, da die seite chromix.de down ist.
somit bezieht sich der login generell auf die url, die existiert.

____________________
Das ist und bleibt ein Spiel! - Wir sind hier nicht vor Gericht.
----------------------------------------------------------------------
Mapperhilfen für S5:
http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum-27/index.htm
http://www.siedler-maps.de/for...und-andere-Ressourcen-8688.htm
http://www.siedler-maps.de/for...unktionen-Skripte-etc-8706.htm

Wladimir
#19
24.01.2010 21:07
Beiträge: 489

Zitat von aCid:
was da passiert steht ebenfalls da.


*
Leerzeilen entfernen
*
Kommentare entfernen
*
Einrückung entfernen
*
Überflüssige Leerzeichen in einer Zeile entfernen
*
Leerzeichen vor und hinter Operatoren und Klammern entfernen
*
Optionale Semikolons am Ende der Zeile entfernen


war aber nur sinnvoll, als es noch nicht das TinySkript gab.

und es geht nicht mehr, da die seite chromix.de down ist.
somit bezieht sich der login generell auf die url, die existiert.



Lies dir das mal genau durch.
Das was du sagtest, bezieht sich darauf, was man selbst mit dem Skript im Editor machen kann, um es kleiner zu kriegen, nicht was beim automatischen Verkleinern geschieht.

Wladimir.

Da steht u.A.:

Leerzeilen entfernen
Kommentare entfernen
Einrückung entfernen
Überflüssige Leerzeichen in einer Zeile entfernen
Leerzeichen vor und hinter Operatoren und Klammern entfernen
Optionale Semikolons am Ende der Zeile entfernen

Die einfachste Möglichkeit ist, das Script automatisch verkleinern zu lassen. Hierdurch wird das Script allerdings extrem unleserlich. Man sollte also immer eine Sicherheitskopie aufbewahren, und das geschrumpfte Script nur in die fertige Map kopieren, aber nie direkt bearbeiten.



____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

aCid
#20
24.01.2010 21:48
Beiträge: 275

genau das macht es. so dass eine lange skriptzeile entsteht.
deshlab ist es einfacher, weil dann ein prog, genau diese sachen gesucht hatte.

was noch hinzukommen kann, ist auslesen von funktionen, variablen, etc. und durch 3 teilige zeichen zu ersetzen a la kampf der magier.

mehr könnte ich mir nicht vorstellen. vlt. weiss noch jemand anderes, der das mal genutzt hatte.

____________________
Das ist und bleibt ein Spiel! - Wir sind hier nicht vor Gericht.
----------------------------------------------------------------------
Mapperhilfen für S5:
http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum-27/index.htm
http://www.siedler-maps.de/for...und-andere-Ressourcen-8688.htm
http://www.siedler-maps.de/for...unktionen-Skripte-etc-8706.htm

Dieser Beitrag wurde von aCid am 24.01.2010 um 22:20 editiert.

Wladimir
#21
25.01.2010 15:54
Beiträge: 489

Was mir am wichtigsten wäre: Wie kann ich das noch nutzen? Was es bringt, sieht man danach ja am Skript.

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

Rafael
#22
25.01.2010 22:04
Beiträge: 460

Zitat von aCid:
...auslesen von funktionen, variablen, etc. und durch 3 teilige zeichen zu ersetzen a la kampf der magier.

mehr könnte ich mir nicht vorstellen. vlt. weiss noch jemand anderes, der das mal genutzt hatte.


Hm, wenn man´s auf die Spitze treiben will kann man jemanden fragen der sich mit Packprogrammen gut auskennt.
Wer kennt da jemanden?
Was mir dazu einfällt ist noch eine Auswertung welche Funktionen und Variablen am häufigsten benutzt werden.
Denen kann man dann Namen mit nur einem Buchstaben geben.
Lua unterscheidet Groß/Klein. Also hätte man die Möglichkeit function a und function A zu definieren.
Weitere Möglichkeit Standardfunktionen umkopieren:
m = message -> m("Hallo Siedler" ) ergibt dann eine Textausgabe.
Desweiteren: häufig benutzte Textteile in Variablen mit kurzem Namen ablegen...

Das alles dient dann aber sicher nicht der Übersicht!
Dieses Script kann man dann nur noch benutzen um ein Neutrum zu erschrecken.
Praktisch gesehen also eine Spinnerei. Dank TinyScript!


Gruß
Rafael

Seiten: 1

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

Impressum