21
Projekte und Ideen für MMM / Re: Lets Plays
« Letzter Beitrag von AmigaMaster am 08. Juni 2025, 11:16:15 »Die nächsten paar Wochen wird es feurig
/***********************************************************************
* 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");
}
import static void OpenCloseExtension(int id, String type);
Der 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.
Wird 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 wäre stark dafür, dass die alten Starterpacks nicht auf AGS 3.6, sondern noch auf AGS 3.5 belassen werden.Rückwirkend wäre das wahrscheinlich besser gewesen. Naja, weg sind die Versionen für 3.5 ja nicht.
Der Grund dafür ist, dass man damit den Timidity-Mist eben nicht braucht, um Midis abzuspielen.
Im übrigen plädiere ich aus dem selben Grund dazu, bei den neuen Maniacweed-Starterpacks die Midis in Wav/Ogg umzuwandeln, aber das ist ein anderes Thema.Das wurde für das Maniac-Mansion-Titellied bereits gemacht. Das ist im Maniacweed-Template als OGG verhanden.
Da hast du locker mal 50 MB mehr pro Spiel zum Herunterladen.Ich denke, dass das heutzutage nicht mehr groß ins Gewicht fällt. Wie AmigaMaster schon sagte sind GB-große Updates inzwischen die Regel bei professionellen Spielen. Da sind unsere paar MB nix. Ich bin halt dafür, auf MIDIs zu verzichten, weil es so aussieht als würde dort die Kompatibilität zum Problem werden. Und das Thema Kompatibilität wird in Zukunft noch größer werden.
Funktioniert manchmal aber nur bedingt, da es zu Verzerrungen kommen kann aufgrund der anderen Samples.Und es hört sich teils total anders an. Das hab ich auch schon bei Online-Konvertierungen von midi zu ogg hinter mir. Timidity klingt aber auch schon anders. Ein Grund mehr, von der geschützten Musik wegzukommen.
ZitatStandardaktion SCHAU AN für oMailbox "Briefkasten>l" hinzugefügt"Verstehe nicht, worauf du hier hinaus willst? Eine Aktion für Schau an-Briefkasten ist doch vorhanden? Ebenso hat die Tür die Standardaktion gesetzt.
Hotspot "hFrontDoor", Description "Tür>v"
und Objekt "oFrontDoor", Description "Tür>c" - diese beiden Änderungen führen dazu, dass die Standardaktionen für die Haustür auf ÖFFNEN / SCHLIESSEN gesetzt werden.