Banner left   Banner center   Banner right

Germanenglish Home · News · Diary · Screenshots · Documentation (Wiki) · Downloads · Guestbook · Forum

Home · Benutzer registrieren · Suchen · Statistik · FAQ · Benutzerliste

Zur Zeit online: keiner ausser dir

 X-Force - Fight For Destiny - Forum —› X-Skript / Developer-Pack —› Vervollständigung der Referenz

Seite: 1 [2] [3] >>

Autor Mitteilung
verfasst am: 28.07.2009, 18:34 · Edited by: sujin
Spielsatz Alliances

Registrierdatum: 14.07.2004, 14:47

 Beiträge: 1185
Schon trostlos, wenn man sich in der Referenz umblickt... regelmäßig springt einen ein rotes *) an und erklärt einem hämisch: "Diese Seite zeigt dir nur [Funktionskopf/Prozedurkopf/Typdefinition] an und nicht, was du eventuell zur genauen Anwendung wissen willst, harhar!"
Gut, der Funktionskopf zeigt tatsächlich die wichtigsten Daten an - Anzahl und Typ der Parameter sowie Typ des Rückhabewerts. Aber mehr auch nicht. Und bei den Typen ist rätselraten angesagt, wenn man nicht Bescheid weiß...
Was zum Geier soll z.B. TRoom.LargeSchiff sein? Gut, ich weiß es (ist ein Relikt eines uralten Ansatzes, Flugzeuge in groß und klein einzuteilen und wird garnicht benutzt) - aber das muss man irgendwo im Forum aufschnappen, denn die Referenz verrät's einem nicht.
Und soweiter, und so fort...

Deshalb bitte ich jeden, der sich dazu imstande sieht und Zeit zu verschwenden hat, sich hin und wieder ein paar Einträge anzusehen und gegenenfalls ein paar Informative Zeilen niederzuschreiben. Sei es über weniger intuitives Verhalten (Index, die ja üblicherweise anders zählen als jeder Mensch), über nicht-selbsterklärende Objekteigenschaften, über andere Befehle, die man häufig mit diesem kombinieren (muss/sollte), oder über sonst irgendwas, was so fehlt.


Ich bin mal mit (mehr oder weniger) gutem Beispiel vorrangegangen. Das die Standard-Typen nicht dokumentiert sind, ist eigentlich ein Verbrechen. Denn längst nicht alle Infos, die man dazu im www findet, treffen auch auf die Datentypen von PascalSkript zu - in üblichen Hochsprachen hat ShortInt afaik einen Maximalwert über 32.000 (16 Bits, signed), während sich "unser" ShortInt mit knuffigen 128 (8 Bit, signed) begnügt, also eigentlich nur ein besserer Byte ist ^^
Hab erstmal noch kein "%comment% done" reingesetzt, will erst ein paar Meinungen.
http://doc.xforce-online.de/ger_pages/XSkriptReferenz/TypByte.html
http://doc.xforce-online.de/ger_pages/XSkriptReferenz/TypChar.html
http://doc.xforce-online.de/ger_pages/XSkriptReferenz/TypShortInt.html
http://doc.xforce-online.de/ger_pages/XSkriptReferenz/TypWord.html
verfasst am: 28.07.2009, 20:10
Registrierdatum: 11.06.2009, 18:38

 Beiträge: 84
Hab es mir mal als Laie durchgelesen

Du hast an einer Stelle geschrieben:

wird stattdessen der Modulo 65535 zugewiesen (Rest der Division mit 255)

müsste das nicht auch 65535 heißen?
verfasst am: 28.07.2009, 20:22
Spielsatz Alliances

Registrierdatum: 14.07.2004, 14:47

 Beiträge: 1185
Au verdammt, das hat man davon, wenn man Teile einfach kopiert -.-
Danke für den Hinweis.
verfasst am: 28.07.2009, 21:07
Registrierdatum: 11.06.2009, 18:38

 Beiträge: 84
verfasst am: 28.07.2009, 22:32 · Edited by: Natter
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Es geschehen noch Zeichen und Wunder oO

Die Referenz steht nicht umsonst im Wiki. leider haben sich bisher nicht viele daran beteiligt. Nur zur Info - wenn eine Beschreibung ergänzt wurde, und es keinen weiteren Korrekturbedarf mehr gibt, dann müsst ihr noch ein %done% einfügen (einfach mal bei einer anderen Beschreibung anschauen). Nur so wird im Inhaltsverzeichnis sichtbar, dass es zu dem Eintrag eine Beschreibung gibt (allerdings erst, wenn ich mal wieder die Referenz update).
verfasst am: 28.07.2009, 22:40
Spielsatz Alliances

Registrierdatum: 14.07.2004, 14:47

 Beiträge: 1185
Ist (mir zumindest) bekannt. Aber auf Rückmeldungen zum Korrekturbedarf warte ich ja ^^
verfasst am: 28.07.2009, 22:47
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Ich denke, das sollte soweit stimmen. DIe Überläufe etc. könntest du ja zur Not nochmal in medit testen (also z.B. was passiert bei x:=255; x:=x+1, oder klappt die MessageBox wirklich mit Char).
verfasst am: 28.07.2009, 22:51
Spielsatz Alliances

Registrierdatum: 14.07.2004, 14:47

 Beiträge: 1185
Das habe ich alles im MEdit getestet bzw. teilweise erst da herausgefunden (die genauen Werte, Überlauf an sich ist ja in bekanntes Phänomen).
verfasst am: 28.07.2009, 22:52
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Dann kannst du die Sachen mit done erledigen.
verfasst am: 28.07.2009, 23:02
Spielsatz Alliances

Registrierdatum: 14.07.2004, 14:47

 Beiträge: 1185
%comment% done
;-)

btw, ist mir grade aufgefallen (wollte aus Interesse den QUellcode der earth_api_InScanArea im nachschlagen - ich hab's nach langem herumgeirre in der RaumschiffList.pas als Methode von TScanWorld gefunden o.O): Gibt es ein Auflistung, wo sich der wirkliche Quellcode der Funktionen findet? Wäre grade fürs Schreiben der Referenz nützlich, da man sich so u.U. viel Herumprobieren sparen kann.

Evtl liegt's auch nur daran, dass ich keine Erfahrung mit dem SVN und dem Quellcode generell habe ^^
verfasst am: 28.07.2009, 23:06
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5595
Zitat: sujin
Gibt es ein Auflistung, wo sich der wirkliche Quellcode der Funktionen findet

nein

Das wollte ich mal haben, als ich das Projekt offiziell übernommen habe - aber leider ist die Codeanalyse nicht weit gekommen, die Anfänge sind irgendwo im Wiki.

Momentan muss man in der Regel über mehrere Umwandlungen suchen, aber diese Zwischenbefehle definieren die Schnittstellen und sind nötig, damit die Programmierung stabil bleibt.
verfasst am: 28.07.2009, 23:16
Spielsatz Alliances

Registrierdatum: 14.07.2004, 14:47

 Beiträge: 1185
Zitat: DirkF
die Anfänge sind irgendwo im Wiki.

Nicht zufällig http://doc.xforce-online.de/ger_pages/Programming/CodeDokuXForce.html oder?
Zitat: DirkF
Momentan muss man in der Regel über mehrere Umwandlungen suchen

Ja, das habe ich festgestellt. Es ist durchaus machbar, auch wenn man kein Stück eingearbeitet ist... aber es raubt schon Zeit und Nerven -.-
verfasst am: 29.07.2009, 08:01 · Edited by: Natter
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Zitat: sujin

Ja, das habe ich festgestellt. Es ist durchaus machbar, auch wenn man kein Stück eingearbeitet ist... aber es raubt schon Zeit und Nerven

Naja, so schwer ist das eigentlich nicht. Wenn du den Quellcode hast, dann musst du (außer bei den Standardfunktionen, die du z.B. in der Delphihilfe findest) nur in die register_ScriptTypes schauen, und dort nach dem gewünschten Funktionsnamen suchen. Dort findest du dann sowas wie:
RegisterScriptFunction(@game_api_Question,'function game_api_Question(Message: String; Caption: String): Boolean;');
Falls du z.B. Delphi 2006 Turbo installiert hast, kannst du dann einfach mit Rechtsklick auf den Funktionsnamen (das was nach @ steht. Deshalb ist auch der Umweg über die ScriptTypes nötig - interner Name und Name in X-Skript können sich unterscheiden) -> Deklaration suchen direkt zu der Stelle springen, wo die Funktion deklariert wurde. Die entsprechende Datei (meist eine der apis) wird automatisch an der richtigen Stelle geöffnet. Das klappt fast immer. Wenns mal nicht klappen sollte, kann man aber auch bequem die Suche verwenden (die Suche über alle Dateien im Projekt). Wenn dann in der Deklaration wieder andere Funktionen aufgerufen werden, deren Funktion dir unklar sind, dann kannst du wieder Rechtsklick->Deklaration suchen verwenden. Da die Deklarationen meist in verschiedenen Dateien stehen, wird dabei immer eine neue Datei geöffnet, und man findet leicht wieder zurück. Ist das mal nicht der Fall - einfach einen Haltepunkt setzen. Die Liste der Haltepunkte eignet sich hervorragend zur Navigation im Quellcode. Ansonsten - einfache Datentypen (Records, Aufzählungen etc.) findest du in der XForce_Types. Dort sind oft auch die Eigenschaften näher erläutert. Für die Objekte kannst vorgehen wie bei den Funktionen. Einfach nach dem Objektnamen in der register_scripttypes suchen, z.B.
RegisterClass('TObject',TGround);

und dann wie oben vorgehen.
verfasst am: 29.07.2009, 12:39
Registrierdatum: 11.06.2009, 18:38

 Beiträge: 84
Mal ne Frage: Ich hab mir jetzt mal aus dem Netz und aus meinen bescheidenen Pascal Kenntnissen eine Definition zu boolean ausgedacht (war nicht grad schwer, ich wunder mich dass es sowas noch nicht gibt...)
Was haltet ihr davon, wenns gut ist, kann ich es ins wiki stellen:



Der Typ boolean dient zum Speichern der logischen Werte true und false (wahr und falsch).

Eine Variable vom Typ Boolean kann daher immer nur "true" oder "false" sein, nie etwas anderes (z.B. eine Zahl).

So kann man überprüfen ob eine Aussage wahr oder falsch ist.

Beispiele:

program test;

var
flag: boolean;

begin
  flag:=1>2; //flag=false; da 1 nicht größer als 2 ist ist die Variable flag natürlich false
  
  flag:=5=5; //flag=true
end.


Außerdem liefern einige Funktionen einen Rückgabewert vom Typ boolean.
verfasst am: 29.07.2009, 14:05 · Edited by: Natter
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Hmm, also wenn man schon eine Beschreibung des Typs Boolean für nötig hält, dann sollte man imho vor alle die dazugehörigen Operatoren und die Regeln zur Reihenfolge behandeln (>, <, or, and, xor, not, = ...) oder auf ein entsprechendes Kapitel im Tutorial verweisen.

Der Hinweis auf Funktionen mit Rückgabewert boolean ist überflüssig - eine Funktion kann jeden Typ zurückliefern.
verfasst am: 29.07.2009, 14:45
Spielsatz Alliances

Registrierdatum: 14.07.2004, 14:47

 Beiträge: 1185
Naja, Booleans sind an sich der simpelste und am leichtesten verständliche Typ, aber auch ein sehr mächtiger, wenn richtig eingesetzt. Genauer gesagt ie Grundlage aller Kontrollstrukturen. Was ein Boolean an sich ist, sollte schon jedem bekannt sein, ein Satz dazu reicht ("Booleans speichern Wahrheitswerte, true oder false"). Wichtiger wäre besagte Operatorrangfolge. Eventuell erwähnenswert ist, dass alle if-statements im Endeffekt auf wahr/falsch reduziert werden, genauso wie Boolean-Zuweisungen (Flag:=7<5;). D.h. "if (Flag) then..." klappt wunderbar. Das vergessen manche leider und verrennen sich in überladenen Abfragen von was-weiß-ich-nicht-alles-für-Umgebungsvariablen ^^

Eine Beschreibung an sich halte ich schon für sinnvoll, rein der Form halber ;-)

@Quellcode: Hab garkein Delphi-Compiler o.Ä.
Sollte ich aber vielleicht mal ändern...
verfasst am: 29.07.2009, 15:37
Spielsatz Alliances

Registrierdatum: 14.07.2004, 14:47

 Beiträge: 1185
verfasst am: 29.07.2009, 15:56
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Zitat: sujin
earth_api_RandomLatitude ist erledigt.

Das eigentlich interessante an der Funktion ist, dass die Breitengrade gewichtet ermittelt werden. Soll heißen, ein Breitengrad in Äquatornähe ist als Rückgabewert wahrscheinlicher, als ein Breitengrad in Polnähe (gleicht die Verzerrung durch die Kugeloberfläche aus).
verfasst am: 29.07.2009, 17:14
Spielsatz Alliances

Registrierdatum: 14.07.2004, 14:47

 Beiträge: 1185
Hat's meinen Post verschluckt oder war ich nur zu doof, den abzusenden?
Naja, jedenfalls ist die Beschribung jetzt(bzw seit 30m) entsprechend geändert.
verfasst am: 29.07.2009, 19:06
Registrierdatum: 11.06.2009, 18:38

 Beiträge: 84
Zitat: Natter
Hmm, also wenn man schon eine Beschreibung des Typs Boolean für nötig hält



Zitat: sujin
Naja, Booleans sind an sich der simpelste und am leichtesten verständliche Typ


Ja, eigentlich sollte jeder wissen was ein boolean ist...

Hab einfach mal den Satz "Der Typ boolean dient zum Speichern der logischen Werte true und false (wahr und falsch)." eingefügt, damit die Beschreibung wenigstens nicht leer ist...

Alles andere zum Typ boolean kann man auch binnen 10 sekunden mit google rausfinden.

Das mit den logischen Operatoren (and, or, xor, not, etc.) mach ich vielleicht noch mal später.

Seite: 1 [2] [3] >>




Du musst dich registrieren um auf dieses Thema zu antworten.
Login :: » Name » Passwort

Ladezeit (sec.): 0.045 · Powered by miniBB 1.6 with parts of 1.7 © 2001-2003