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.


Themen - Timer

Seiten: [1]
1
Tipps und Tricks / Hilfe zu "Und Bernard läutet zur Geisterstunde..."
« am: 22. November 2010, 16:58:12 »
Hallo, allerseits... ich hänge. ;)

Spoiler (hover to show)

Könnt ihr mir da weiterhelfen?

2
Tutorials / [AGS - Fortgeschritten] Telefoninterface-Tutorial
« am: 29. September 2010, 19:00:43 »
Um eigene Telefonwähltasten (bzw. eine Codeeingabe, ein Zahlenschloss o.ä.) in AGS umzusetzen, gibt es viele Methoden.
Ich fange mal mit einer einfachen an, die sich beliebig modifizieren lässt, später kommen dann noch ein paar andere Umsetzungsmöglichkeiten hinzu. :)

Methode 1: Mit Hotspots (bzw. Objekten) in einem Raum

(Für AGS 3.x)

Den Spieler für die Eingabe des Codes in einen extra Raum zu schicken, ist wahrscheinlich die übersichtlichste Lösung. Das ganze Zahlenscript ist dann vollkommen abgetrennt vom Rest eures Spieles und ihr werdet nirgendwo mit komischen Codes verwirrt. ;)
Außerdem lassen sich bei dieser Methode die Zifferntasten wunderbar einzeln als anklickbare Bereiche im Raum definieren (als Hotspots oder als einzelne Objekte), somit hat man einen genauen Überblick darüber, was bei jeder einzelnen Taste passiert.

Also: Zu Beginn brauchen wir einen neuen Raum.
Nehmt ihr Hotspots für die Tasten, dann braucht ihr ein passendes Hintergrundbild, ansonsten eben passende Objekte für die einzelnen Tasten.
Für was ihr euch schließlich entscheidet, ist relativ egal. Das meiste wird hier sowieso im Room-Script ablaufen.
...Und am Ende sieht euer Raum in jeden Fall etwa so aus:


Ja, dieses Bild ist als Hintergrund für den Coderaum wunderbar geeignet. Nehmt es.

Das ist schon mal ein guter Anfang, aber...

Wie läuft jetzt der Wählvorgang ab?

Damit jetzt etwas passiert, wenn der Spieler auf die Tasten drückt, müssen wir uns ans Scripten machen.

Dafür brauchen wir eine allgemeine Wählfunktion, die bei jedem Tastendruck (sprich: jedem klick auf einen Tasten-Hotspot/-Objekt) aufgerufen wird und dann:
  • Die gewählte Ziffer zu den (eventuell) bereits vorher gewählten Ziffern hinzufügt
  • Diese neu erhaltene Nummer mit der richtigen, gesuchten Nummer vergleicht
  • ...und anschließend das ausführt, was im jeweiligen Fall passieren soll (z.B. ein Zurücksetzen der Nummer bei einem Fehlschlag.)

Also denn.
Schritt für Schritt:

1. Die gewählte Ziffer zur vorhandenen Nummer hinzufügen:

Damit unsere Funktion die gewählten Ziffern an die bisher vorhandene Nummer anhängen kann, brauchen wir einen Ort, an dem diese "bisher vorhandene Nummer" gespeichert ist. (Vergleichbar mit einem Merkzettel)
Ohne den geht es nicht. (Das wäre, als würde man versuchen, die Zahlen auf den Zettel zu schreiben, obwohl keiner da ist...)

Darum kommt als allererstes diese Zeile ins Roomscript (möglichst weit oben und außerhalb jeder Raumfunktion):

String sNummer;
Somit haben wir einen String (namens "sNummer") erstellt, in dem immer die aktuell gewählte Nummer gespeichert ist.
(Theoretisch könnte man statt einem String auch ein Integer nehmen, aber die String-Methode ist am unkompliziertesten.)

An diese Zahl kann man aber leider immer noch nichts anhängen, weil sie bisher noch überhaupt keinen Inhalt hat.
Darum folgt gleich der nächste Schritt: Wir müssen, wenn der Raum betreten wird, dem String einen Wert geben. Da aber, wenn wir in den Raum kommen, im Normalfall noch keine Nummer gewählt wurde, geben wir "sNummer" beim betreten des Raumes (also in der "Player enters room (before fadein)"-Funktion) einfach einen leeren Wert. Das sieht dann so aus:

function room_Load()
{
  sNummer = "";
}

Jetzt können wir uns an die eigentliche Funktion machen: Wir brauchen eine Funktion, die zur bereits gewählten Nummer (also "sNummer") eine neue Ziffer hinzufügt - und zwar am besten die, die wir gewählt haben.
Die Funktion muss auch direkt ins Raumscript geschrieben werden, damit sie im ganzen Raum verfügbar ist. Am besten schreibt ihr also direkt unter dem sNummer-String:

function NewNumber (String Ziffer)
{
  sNummer = sNummer.Append (Ziffer);
}

Jetzt müssen wir diese Funktion nur noch bei jeder Taste aufrufen. Also erstellen wir für jede Taste ein "Any click on"-Event, bei der die jeweilige Ziffer angehängt wird. Beim Hotspot für die Zahl 1 sähe das dann z.B. so aus:

function h1_AnyClick()
{
  NewNumber ("1");
}

Jetzt wird immer, wenn die Taste 1 angeklickt wird, "1" an "sNummer", also an die bereits gewählten Ziffern angehängt.
Das gleiche passiert bei den anderen Zahlen, wenn die Funktion richtig gesetzt ist... ;)

Das funktioniert jetzt zwar schon wunderbar (wenn ihr keinen Fehler gemacht habt), aber bisher kann man nur leider noch überhaupt nichts sehen.
Es werden zwar immer Zahlen an die Nummer angehängt, sie wird länger und länger... aber sie ist eben nicht sichtbar.

Darum richten wir jetzt gleich einmal ein Overlay ein, auf dem sNummer angezeigt wird und wir somit unseren Wählvorgang wunderbar betrachten können.
Im Prinzip geht das so ähnlich wie bei sNummer:

Diese Zeile muss ganz an den Anfang des Room-Scripts:

Overlay* oAnzeige;
Damit ist das Overlay (Namens oAnzeige) grundsätzlich erschaffen - aber (- wie auch dem String -) es muss auch diesem erst ein Anfangswert zugewiesen werden, bevor wir sinnvoll damit umgehen können. Und zwar am besten auch beim betreten des Raumes. Somit steht in der "Player enters room (before fadein)"-Funktion:

function room_Load()
{
  sNummer = "";
  oAnzeige = Overlay.CreateTextual (115, 120, 200, eFontFont0, 50, "");
}

...und damit in dieser Anzeige auch tatsächlich die bisher gewählte Nummer angezeigt wird, müssen wir noch die Wählfunktion erweitern:

function NewNumber (String Ziffer)
{
  sNummer = sNummer.Append (Ziffer);
  oAnzeige.SetText (200, eFontFont1, 50, sNummer);
}

Somit haben wir bisher ungefähr folgendes Script:

String sNummer;
Overlay* oAnzeige;

function NewNumber (String Ziffer)
{
  sNummer = sNummer.Append (Ziffer);
  oAnzeige.SetText (200, eFontFont1, 50, sNummer);
}

function room_Load()
{
  sNummer = "";
  oAnzeige = Overlay.CreateTextual (115, 120, 200, eFontFont0, 50, "");
}


function h1_AnyClick()
{
  NewNumber ("1");
}

... usw...

2. Die erhaltene Nummer mit der (oder den) "richtigen" vergleichen:

Bis jetzt kann die Funktion nicht wirklich mehr als Nummernfolgen zu produzieren - bis in alle Ewigkeit.
Das bringt uns aber relativ wenig, wenn unsere gesuchte Nummer eigentlich nur 5 Stellen hat. Darum müssen wir mal einen Stopp-Punkt setzen... bzw. zu handeln anfangen, wenn unsere gewählte Nummer die gewünschte Länge erreicht hat.
Und wie das geht? Ganz einfach - mit einer if-Klammer:

function NewNumber (String Ziffer)
{
  sNummer = sNummer.Append (Ziffer);
  oAnzeige.SetText (200, eFontFont1, 50, sNummer);

  if (sNummer.Length == 5)
  {

    // *

  }
}

*: Sobald unsere gewählte Nummer 5 Stellen erreicht, geht es in der Funktion hier weiter.
Und zwar können wir nun prüfen, ob vielleicht die gewählte Nummer eine der Richtigen ist...

Das geht auch wieder ganz einfach mit einer weiteren if-Abfrage:

function NewNumber (String Ziffer)
{
  sNummer = sNummer.Append (Ziffer);
  oAnzeige.SetText (200, eFontFont1, 50, sNummer);

  if (sNummer.Length == 5)
  {
    if (sNummer == "15276")   // Das ist eine richtige Nummer
    {

    }
    else if (sNummer == "00097")     // Das ist auch eine richtige Nummer
    {

    }
    else           // Wenn keine richtige (also eine falsche) Nummer gewählt wurde
    {
      player.Say ("Das war wohl die falsche Nummer.");
    }
  }
}

3. Das Ausführen der ganzen Folgen bei richtigen/falschen Nummern:

Zwischen die geschweiften Klammern könnt ihr nun alles schreiben, was dann bei der richtigen (oder der falschen) Eingabe passieren soll...

Und ihr dürft nicht vergessen, die Zahl danach wieder zurückzusetzen. Sonst wird einfach fröhlich weiterhin an die bestehende Zahl angehängt und ihr bekommt doch wieder eine kilometerlange "sNummer".

function NewNumber (String Ziffer)
{
  sNummer = sNummer.Append (Ziffer);
  oAnzeige.SetText (200, eFontFont1, 50, sNummer);

  if (sNummer.Length == 5)
  {
    if (sNummer == "15276")   // Das ist eine richtige Nummer
    {

    }
    else if (sNummer == "00097")     // Das ist auch eine richtige Nummer
    {

    }
    else           // Wenn keine richtige (also eine falsche) Nummer gewählt wurde
    {
      player.Say ("Das war wohl die falsche Nummer.");
    }
    sNummer = "";
    oAnzeige.SetText (200, eFontFont1, 50, sNummer);
  }
}

Und wenn ihr den Raum verlasst, solltet ihr noch das erschaffene Overlay wieder löschen. Sonst bleibt es noch für den Rest des Spiels sichtbar...
Also schreibt in die "Leave-Room"-Function:

function room_Leave()
{
  oAnzeige.Remove ();
}

Das war eigentlich schon alles Wichtige... ;D
Aus optischen Gründen ist es letzten Endes aber noch schön, wenn das Interface während der Ziffernwahl abgeschaltet ist - das muss man halt noch beim Betreten des Raumes ausmachen (und beim Verlassen des Raumes wieder an...).

So. Alles in allem müsste euer Room-Script dann ungefähr so aussehen:

String sNummer;
Overlay* oAnzeige;

function NewNumber (String Ziffer)
{
  sNummer = sNummer.Append (Ziffer);
  oAnzeige.SetText (200, eFontFont1, 50, sNummer);

  if (sNummer.Length == 5)
  {
    if (sNummer == "15276")   // Das ist eine richtige Nummer
    {

    }
    else if (sNummer == "00097")     // Das ist auch eine richtige Nummer
    {

    }
    else           // Wenn keine richtige (also eine falsche) Nummer gewählt wurde
    {
      player.Say ("Das war wohl die falsche Nummer.");
    }
    sNummer = "";
    oAnzeige.SetText (200, eFontFont1, 50, sNummer);
  }
}

function room_Load()
{
  sNummer = "";
  oAnzeige = Overlay.CreateTextual (115, 120, 200, eFontFont0, 50, "");
  gMaingui.Visible = false;
}

function room_Leave()
{
  oAnzeige.Remove ();
  gMaingui.Visible = true;
}

function h1_AnyClick()
{
  NewNumber ("1");
}

function h2_AnyClick()
{
  NewNumber ("2");
}

...usw...

Ich hoffe mal, das alles funktioniert. Bei mir gehts.
Wenn ihrs nicht hinkriegt, seid ihr zwar selbst Schuld, aber ich stehe euch trotzdem gerne mit Rat und Tat zur Seite. 8)

3
Ressourcen / Ravenbergs Büro?
« am: 30. April 2010, 14:26:37 »
Hallo! Ich hab nur eine kurze Frage: hat denn Ronvilles Bürgermeister, Ravenberg, bereits ein Büro?

Wenn ja, wo kann ich es her bekommen?
Wenn nicht, dann kriegt er jetzt eins. ^^

Danke schon mal für die Antwort(en)! :)

4
So... Da ich hier in letzter Zeit ja so einige Episodenankündigungen hier gelesen habe, dachte ich mir: da machst du mit. ;D

Ich sitze hier nämlich nicht faul herum, nein - ich arbeite auch an einer Episode. ;)


Kurzer Vorgeschmack:
Hoagie hat schon immer einen Hang zu gutem Bier gehabt. Doch auch zu weniger gutem sagt er nicht nein - wenn es etwas zu bieten hat: "Winnickson Beer" veranstaltet ein Preisausschreiben, zu dem er nicht nein sagen kann. Die Lösung ist (wie bei solchen Preisausschreiben üblich...) unerwartet einfach. Jetzt muss sie nur noch verschickt werden. Doch im Briefkasten erwartet ihn etwas, womit er wirklich nicht gerechnet hatte...
*Boah! Spannung!! Was erwartet ihn da???* ;D


Tja, das wars schon wieder. Mehr gibt's für euch nicht - dafür müsst ihr die Episode spielen. ;D
(Anmerkung: Das da oben ist wirklich nur ein kurzer Vorgeschmack. Schließlich will ich ja nicht als Autor der kürzesten Episoden in die MMM-Geschichte eingehen. ;))

OK, bis dann.

5
Tipps und Tricks / Hilfe zu Maniac Dungeon Raum 12
« am: 08. Juni 2008, 13:40:23 »
Ich komme mir jetzt natürlich reichlich doof vor, weil ich jetzt schon um Hilfe rufe, aber ich komme beim besten Willen nicht weiter... :-[

Ich habe bereits das Terminal eingeschaltet (Doors Vista ^^). Ähm... weiter bin ich noch nicht.
Ich habe mit beiden Personen geredet und schließlich noch alle Interaktionsmöglichkeiten mit ihnen, dem Terminal und der Tür durchprobiert. Aber es hat nichts etwas gebracht... Ist vielleicht irgendwo ein Hotspot versteckt, den ich übersehen habe? :-[

6
Tipps und Tricks / Hilfe zur Episode 69 - Samstag
« am: 24. Oktober 2007, 21:14:19 »
Wenn ihr irgendwo nicht weiterkommt oder euch die Motivation verlassen hat, postet euer Problem hier rein!
Dann wird euch geholfen. :)

7
Episoden / Episode 69 - Samstag
« am: 24. Oktober 2007, 20:50:39 »
Und der nächste Autor (das bin ich) gibt hier nun auch seinen Beitag ab:

Episode 69 - Samstag



Ich belege nun den letzten Posten vor Episode 70: Episode 69.

Die Episode ist ganz klassisch: Bernards Haus, Hauptcharakter ist auch Bernard.... Ich sehe schon, wie sich manche die Haare raufen. ;)
Aber das Spiel ist neu. Es hat zwar nicht die Größe von Episode 67 (;)), aber trotzdem:
Viel Spaß damit!

Zur Story: Die trübe Schulwoche ist vorüber, der Himmel lichtet sich wieder... Langsam hellen auch die müden Gesichter der geplagten Schüler wieder auf - Endlich Wochenende!
Nur einer langweilt sich: Bernard hat nichts zu tun. Die Hausaufgaben sind längst erledigt, er kennt den Stoff der 3 nächsten Jahre auswendig...
Nun - was soll man da machen? Bernard hat die Lösung: In den Nachrichten kommt immer etwas Neues. Wenn nur Britney nicht wäre...

Zum Download: HIER KLICKEN!

(Keine Angst - Es ist nicht Rapidshare ;D)

8
Allgemeine Diskussionen / Probleme bei manchen Seiten der Homepage
« am: 16. September 2007, 12:46:12 »
Wenn ich auf 2 Seiten der MMM-Homepage gehen will (Auf die Starterpack-Seite und auf der 2. Seite der Komplettlösungen) kommt ein Fenster wo das hier drinsteht:

WatchGuard firewall: Request denied for http://81.223.238.227:80/: No URI found

Natürlich ist das nicht das, was ich eigentlich wollte...
Ist das nur bei mir oder ist das allgemein? Habt ihr vielleicht eine Idee, wie ich diesen Fehler beheben/umgehen kann?

9
Technik / Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« am: 16. Juni 2007, 16:46:39 »
Ich habe ein Problem, mit dem ich nun schon seit über einer Stunde kämpfe. Ich möchte an einen String eine Zahl anhängen, die ich in der Form eines Integers gespeichert habe.
Ich habe also einen String (z.B. xxx) und einen int (z.B. 22) und möchte daraus xxx22 machen. Kann mir da jemand weiterhelfen? :-\

10
Tipps und Tricks / Hilfe zur Episode 59 - Computerliebe
« am: 21. Mai 2007, 18:55:31 »
Oh! Dann krieg ich wohl jetzt die 60. ;D Hänge schon. Bernard ist mittlerweile am C32, ich kriege ihn aber nicht weg.

11
Technik / Geben von Gegenständen
« am: 20. Mai 2007, 12:36:33 »
Ich habe ein Problem (AGS 2.72). Ich habe in meiner Episode einen Charakter eingebaut, dem man auch etwas geben können sollte... Nur bereitet das Probleme. Wenn ich das Script in "Use Inventory on Charakter" reinschreibe, funktioniert es soweit, dass der Spielercharakter seinen Kommentar bei "gib" und bei "benutze...mit" sagt. Allerdings geht er dann zur Person hin und sagt einen Stardardkommentar. Wenn ich das Script unter "any click on Charakter" reinschreibe, reagiert der Spielercharakter nur auf "benutze...mit". Ich hätte aber gerne, dass man beides verwenden kann und dass er nur einmal einen Kommentar abgibt. Hat jemand eine Lösung für mich?

12
Drumherum / Suche Betatester für neue Folge (erledigt)
« am: 16. Mai 2007, 21:07:59 »
So. Gleich zur Sache: Es geht um einen Betatest... ;D Hat jemand vielleicht Lust auf einen? (Auch wenn die Folge in Bernards Haus spielt?) Es ist mein erster Versuch mit AGS, also nichts zu großes erwarten... Wenn jemand will: PN oder ICQ oder AIM oder Mail... (Könnt ihr alles unter meinem Avatar finden ;)) ...oder einfach einen Post hier rein schreiben ;).

OK, habe jetzt zwei Betatester gefunden, das dürfte wohl reichen. Danke!
Wenn allerdings noch jemand mitmachen will, kein Problem!

13
Technik / GUI-Wechsel
« am: 20. April 2007, 21:01:05 »
Kleine Frage: Wie kann man denn mit AGS das Interface wechseln (Bsp.: Man spielt einen MMM-Character, dann wechselt die Spielerperson und man spielt einen Character aus einem ganz anderen Spiel mit anderem Interface (z.B. Sam aus Sam 'n Max) oder man spielt Bernard in der Gegenwart und wechselt zu Hoagie in die Vergangenheit (und somit auch das Interface...))? Kann mir gut vorstellen, dass es etwas komplizierter wird... :-\
Freue mich über jede Antwort! :)

14
Hallo allerseits,
habt ihr vielleicht Interesse an einer französischen Version vom Bernard-Starterpack? Wenn ja, könnte ich mich da mal ranmachen (falls sich noch nicht jemand anderes damit beschäftigt)...
MMM gäbe es dann in vier Sprachen :) (Und zwar in den am meisten verbreiteten)

15
Ressourcen / 640*400 oder doch lieber Normalmaße?
« am: 16. März 2007, 21:53:13 »
Hallo, zusammen...
(So, mein erster richtiger Beitrag hier :))

Also, Ich arbeite gerade an einer Episode und hätte dazu dann mal zwei Fragen:
Ich habe ein paar Screens für das Spiel gezeichnet, ich fand sie zwar schon ganz nett, aber wollte sie dann auch einmal sehen, wie sie so in 640*400 ausschauen würden. Das Ergebnis gefiel mir schon besser. Da habe ich mich gefragt, ob ich theoretisch meine Folge auch in 640*200 anstatt in 320*200 machen könnte. Es würde grafisch halt etwas mehr Freiraum bieten. Dazu würde ich dann auch den Stil der Charactere etwas umändern müssen, da die MM-Charactere nicht so gut in die 640'ziger Hintergründe hineinpassen. Da wäre nun meine Frage: Darf ich das überhaupt? Oder sollte ich die Charactere möglichst so lassen, wie sie sind? Ich würde meine Episode dann halt einfach in der Normauflösung programmieren. Ich dachte, ich frage mal lieber, bevor ich mir unnötige Arbeit mache.

So, dann zeigt mir doch mal eure Meinung...  ;)

Seiten: [1]