Beiträge anzeigen

Diese Sektion erlaubt es ihnen alle Beiträge dieses Mitglieds zu sehen. Beachten sie, dass sie nur solche Beiträge sehen können, zu denen sie auch Zugriffsrechte haben.


Nachrichten - JackLD

Seiten: [1]
1
Technik / Re: Der Function-Befehl in AGS
« am: 08. September 2013, 12:20:02 »
'function's sind in AGS in etwa das was Funktionen in C oder C++ sind und keine Objekte wie z.B. in Python oder Javascript: Eine Funktion landet in einem speziellen (skript-lokalen) Namensraum für Funktionen, der zur Compile-Zeit aufgelöst wird, und die danach nur noch eine Nummer ist. Modifikatoren wie 'privat' oder 'öffentlich' sind da nicht nötig - eine Funktion ist wenn man so will immer 'öffentlich'. Diese Modifikatoren braucht man nur bei extrem vererbungslastiger Objektorientierung (wie in Java oder C++) zur eindeutigen Auflösung von Attributnamen in Klassen - und das konnte AGS noch nie.

(( Was du wahrscheinlich indirekt gefragt hast, ist, wie du eine Funktion aus dem Global-Script oder einem Modul in lokalen Scripts verwenden willst. Dafür muss die Funktion nochmal zusätzlich im Global Header oder Modul-Header deklariert werden, damit AGS das Ganze beim Kompilieren auflösen kann. ))

2
Projekte und Ideen für MMM / Re: MMMLauncher v3
« am: 31. August 2013, 01:25:45 »
.episoden.json:

{
  "error": {
    "code": 30,
    "message": "PHP Error: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in mysql.inc.php:2"
  }
}

Version 3.0.4 für Windows7

3
Technik / Re: Problem mit Tür
« am: 08. Februar 2013, 00:01:11 »
Bei allem Respekt für Neueinsteiger, bei Sachen wie dem Starterpack sollte die explizite Lösung eines Problems immer vor einer impliziten stehen. Wenn ich will, dass eine Tür undurchquerbar ist, dann löse ich sowas doch besser explizit mit Globalints und Konsorten, anstatt implizit eine Walkable Area auszuschalten, was wie man hier sieht, schnell zu Fehlern führt.

Mit diesem (still eingeführten) Feature schleppen wir uns eigentlich nur Inkonsistenzen ein. Bei Türen muss ich keinen expliziten Erreichbarkeits-Check machen, bei allen anderen Hotspots aber schon? Dass MovePlayer(x,y)==2 geht, wusste ich nicht einmal, das ist nirgendwo dokumentiert, wie das meiste des Starterpacks.

Hier mal ein Vorschlag, um das ganze konsistenter und einleuchtender zu machen:

Wie wäre es mit optionalen Parameter für sowohl MovePlayer als auch die Tür-Funktionen, die dafür sorgen, dass die Funktionen false zurück liefern, falls der Punkt nicht erreicht wird und den Fall "nicht erreicht" in Unhandled abfängt? In den 99% der Fälle, wo man diese Abfrage nicht braucht, ignoriert man den Parameter schlicht und einfach, in allen anderen hängt man ihn an. Durch die Autovervollständigung sieht man ihn dann und weiß, dass es ihn gibt (geht mit Rückgabewert ==2 nicht, wenn man nicht die Kommentare im GS liest). Bei dieser Methode muss man explizit dazu sagen, was man gerade braucht und hat das Ganze zudem etwas ausdrucksstärker verpackt, so dass man dem Code anlesen kann, was er Besonderes tut.

Das Ganze könnte dann so aussehen:

[ags]if(MovePlayer(123,456,eCheckReached)) { ... }[/ags]

Analog mit den Türen.

Stelle das einfach mal als Alternative zur Diskussion.

Gruß
JackLD

4
Technik / Re: Abfrage bei Rechtsklick
« am: 27. Januar 2013, 10:59:49 »
Mal ein ganz einfacher Gedanke, vielleicht isses das ja schon: Vielleicht macht AGS keine silent conversion, wenn die Funktion nicht "false" sondern "0" zurück liefert. Dann wäre dieses Verhalten nachvollziehbar, denn "0"!="false". (muss zugeben, ich habe die Formulierung "x==False" auch noch nie gelesen geschweige denn benutzt. AGS kann das aber durchaus als "x ist GENAU false" interpretieren).

Daher der Vorschlag, ersetz es doch mal mit

[ags]if(!UsedAction(A_LOOK_AT)) {[/ags]

AGS prüft dann nicht die (zugegeben logisch äquivalente) Behauptung, ob der Ausdruck genau False ist, sondern nur, ob er irgendwas Anderes als True (bzw. mit True gleichwertiges, wie "1") ist.

Ist wie gesagt einfach mal ins Blaue geraten, anders kann ich mir nicht erklären.

Gruß
JackLD

Seiten: [1]