Hauptmenü

Neuigkeiten:

Bitte unterstützt uns und bestellt über diese Links bei Amazon  oder HumbleBumble!

Bernard-Maniacweed-Starterpack

Begonnen von Cone Arex, 27. Mai 2025, 16:35:36

Vorheriges Thema - Nächstes Thema

Cone Arex

ZitatDer Briefkasten will bei mir mit AGS 3.6.2.10 allerdings nicht. Ich habe das jetzt mit einem neuen, frisch erstellten Spiel aus dem Template 1.1 versucht: Spiel ohne Änderungen kompiliert und es gibt keine Standardaktion.
Ok, ich sehe was du meinst. Ich kümmere mich drum.

ZitatWird ganz bestimmt deshalb so gemacht sein, weil der offene Briefkasten nicht komplett den geschlossenen verdeckt, im Gegensatz zu den Türen.
Korrekt. Das Problem hatten wir bei ein paar Episoden.

Ich habe dann auch mal ein leeres Maniacweed-Template erstellt: https://github.com/ManiacMansionMania/Maniacweed-Empty
Nur Start- und Abspannraum, Bernard als Charakter, ein Lukenöffner als Item (gibt Kompilierfehler, wenn es gar keine Items gibt), keine Musikstücke und Geräusche nur Schritte und Türen. Das Template kann dann auch für MOR verwendet werden. Wenn man Bernard und den Titelbildschirm rauswirft. Den Lukenöffner habe ich gerade neu gemalt (Lizenz: CC0), ist also unbedenklich.


Folge mir auf X und itch.io

AmigaMaster

#16
Ich bin zwar der Meinung, ich habe noch keine Ahnung, was ich tue aber ich habe die OpenCloseExtension Funktion angepasst bekommen, so dass sie auch mit Sprites funktioniert, zumindest tut sie es jetzt auch mit dem Briefkasten. Musste dafür allerdings eine zweiten Parameter einführen und AGS sieht es anscheinend nicht vor, Parameter mit einen Standardwert zu belegen (außer wohl bei int und auch dort nur eingeschränkt).

Bei den Türen ändert sich nichts, bei einem Sprite muss die Sprite-ID des geschlossenen Objekts angegeben werden, im Fall des Briefkastens ist das die 46.

Ich versuche es hier zusammenzufassen:

VerbGui.asc:
/***********************************************************************
* OpenCloseExtension(int id,  string type)
* Used in combination with the door scripts. This function returns a close extension, if the door with the given id is open and vice versa.
* For objects with different sprite graphics, give the sprite ID for the closed object and it returns an open, otherwise a close.
*
***********************************************************************/
static void Verbs::OpenCloseExtension(int id, String type)
{
  Object*oo = Object.GetAtScreenXY(mouse.x, mouse.y);

  if (type == "door") {
    if ((Doors.GetDoorState(id)==0) || (Doors.GetDoorState(id)==2)) {
      Verbs.AddExtension('o');
    } else Verbs.AddExtension('c');
  }
  if (type == "sprite") {
    if (oo.Graphic == id) {
      Verbs.AddExtension('o');
    } else Verbs.AddExtension('c');
  }
}

/***********************************************************************
* VariableExtensions(
* This function is called, if you have have set "v" as an extension for a certain location.
* Currently it is used for the OpenClose extension, but of course you can add your own variable extensions here,
* for example "turn on / turn off"
*
***********************************************************************/
static void Verbs::VariableExtensions()
{
  // define here, which things will use a variable extension (>v)
  // by default, it's only used for doors.
  int r = player.Room;
  Object*oo = Object.GetAtScreenXY(mouse.x, mouse.y);
  int o=0;
  if (oo != null) o = oo.ID;
  Hotspot*hh = Hotspot.GetAtScreenXY(mouse.x, mouse.y);
  int h = hh.ID;

  // Other possible extensions could be: Turn On/Turn Off
 
  // Open/Close Extension:
  // Room | Hotspot |(Door_id)
 
 
  //if (r==2 && h == 1)  Verbs.OpenCloseExtension (10);

  if (r==BernBernardsRoom && h == 1) Verbs.OpenCloseExtension(BernBernardsRoom, "door");
  else if (r==BernHallSecondFloor  && h == 1) Verbs.OpenCloseExtension (BernBritneysRoom, "door");     
  else if (r==BernHallSecondFloor  && h == 2) Verbs.OpenCloseExtension (BernBernardsRoom, "door");   
  else if (r==BernHallSecondFloor  && h == 3) Verbs.OpenCloseExtension (BernBedroom, "door");     
  else if (r==BernHallSecondFloor  && h == 4) Verbs.OpenCloseExtension (BernBath, "door");     
  else if (r==BernBritneysRoom  && h == 1) Verbs.OpenCloseExtension (BernBritneysRoom, "door");     
  else if (r==BernBedroom  && h == 2) Verbs.OpenCloseExtension (BernBedroom, "door");     
  else if (r==BernBath  && h == 2) Verbs.OpenCloseExtension (BernBath, "door");     
  else if (r==BernHallFirstFloor  && h == 1) Verbs.OpenCloseExtension (BernLivingRoom, "door");     
  else if (r==BernHallFirstFloor  && h == 2) Verbs.OpenCloseExtension (BernLibrary, "door");   
  else if (r==BernHallFirstFloor  && h == 3) Verbs.OpenCloseExtension (BernStorageRoom, "door");   
  else if (r==BernStorageRoom  && h == 1) Verbs.OpenCloseExtension (BernStorageRoom, "door");     
  else if (r==BernLibrary  && h == 1) Verbs.OpenCloseExtension (BernLibrary, "door");     
  else if (r==BernLibrary  && h == 2) Verbs.OpenCloseExtension (BernDiningRoom, "door");     
  else if (r==BernDiningRoom  && h == 1) Verbs.OpenCloseExtension (BernDiningRoom, "door");   
  else if (r==BernDiningRoom  && h == 2) Verbs.OpenCloseExtension (BernKitchen, "door");   
  else if (r==BernKitchen  && h == 1) Verbs.OpenCloseExtension (BernKitchen, "door");     
  else if (r==BernLivingRoom  && h == 1) Verbs.OpenCloseExtension (BernLivingRoom, "door");   
  else if (r==BernEntrance  && h == 3) Verbs.OpenCloseExtension (BernEntrance, "door"); 
  else if (r==BernEntrance  && h == 2) Verbs.OpenCloseExtension (BernBasement1, "door"); 
  else if (r==BernBasement1  && h == 2) Verbs.OpenCloseExtension (BernBasement2, "door");     
  else if (r==BernBasement2  && h == 1) Verbs.OpenCloseExtension (BernBasement2, "door");     
  else if (r==BernOutside  && h == 1) Verbs.OpenCloseExtension (BernEntrance, "door");     
  else if (r==BernGarage  && h == 1) Verbs.OpenCloseExtension (BernGarage, "door"); 
  else if (r==BernOutside && o == 1) Verbs.OpenCloseExtension (46, "sprite");
}


In der Vergui.ash muss die Funktion mit den neuen Parameternamen ergänzt werden (Zeile 243).
verbgui.ash:
import static void OpenCloseExtension(int id, String type);
Meine kleine Welt:
YouTube / Odysee
Discord mit vielen Retrobegeisterten
Lösungen jeder kann mitmachen

selloa

#17
Bernard Starterpack - Web Version

Das hübsche Bernard Maniacweed Starterpack v1.1 zum Online erkunden.
Keine Downloads, kein Projekt kompilieren, direkt ausprobieren.
Das Team freut sich sicher über Feedback zum Starterpack!

Hier geht es zur Web - Version

H für Hotspots, Strg-X für Teleport, F5, F8, Strg-S, AGS Version 3.6.1.27


Webversion kompilieren (ab 3.6.X)
Im AGS Editor, auf General Settings, und unter Compiler, bei Build target platforms Web auswählen
Klick Build EXE (F7)
Im Compiled/Web/ Ordner kannst du zum testen einen lokalen Webserver starten
zB in der Kommandozeile python3 -m http.server 8000 eingeben und im Browser localhost:8000 öffnen.
Bemerkung: Auf mobile geht nur links-klick. Zum verschicken den Compiled/Web Ordner zippen.

Bòógieman

#18
Coole Sache! :o  8)
Das wär schon eine feine Sache, wenn wir alle Spiele so anbieten könnten.  :)

Bei mir ruckelt es irgendwie zyklisch. Da friert das Spiel inkl. Musik immer kurz für den Bruchteil einer Sekunde ein. Unabhängig von der Fenstergröße und CPU+RAM sind da auch nicht das Bottleneck. (Firefox unter Win11)

EDIT: im Edge läuft es flüssig :)
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

Titus

Eine interessante Sache.
Bei mir treten ähnliche Schwierigkeiten wie bei Bòógieman auf, hier unter Edge wesentlich stärker als unter Firefox. Außerdem bewegt sich der Cursor etwa im gleichen Rhythmus immer wieder schneller und langsamer. Die Steuerung wäre mir so viel zu anstrengend.


alphawolf300

Also bei mir funktioniert es mit Opera und Edge problemlos...

1mal_volltanken

Ich bekomme bei Klick auf die Webversion immer eine Fehlermeldung 404, dass die GitHub-Seite nicht existiert.

War das übrigens DIE Version, wo bei MouseOver über die Hotspots die Hotspot-Namen direkt am MouseCursor angezeigt werden?

"Tage sind eigentlich wie Nächte...nur nicht ganz so spät!"...hörte ich einmal einen sehr klugen, alten Mann beim Erdnüsse sortieren in der Kneipe sagen, kurz bevor er vom Hocker rutschte.


"Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde!"

selloa

#22
Jetzt geht es wieder.

bernard: https://selloa.github.io/bernardSP-web/
mansion: https://selloa.github.io/mansionspwebtest/

bugs & performance
bei mir laufen die demos mittlerweile gut unter edge, firefox und chrome. wobei alle drei andere eigenheiten haben.
bei mir half es bisher bei problemen, direkt nach öffnen des links in den ladetext zu klicken.
generell empfiehlt es sich bei problemen auch extensions zu prüfen; oder Firefox im Safe Modus zu starten;
wenn das nicht hilft hard reload, und cache leeren damit das spiel neu gezogen wird.

was titus mit dem schneller und langsamer werdenden cursor schreibt, habe ich bisher noch nicht gehabt.
beim bernardSP gibt es zwei laufgeschwindigkeiten die ziemlich abrupt und hektisch wirken. vielleicht hatte es auch etwas damit zu tun...

und: der web compiler ist zwar nicht mehr in beta, und daher auch schon eine weile im ags editor integriert.
aber die web engine ist noch beta. sprich, auch wenn das kompilierte spiel keine probleme hat,  hat die web assembly app die das spiel im browser ausführt noch beta probleme. Soll bis zum AGS v4 Release gelöst werden.