Autor Thema: Probleme bei AGS 3.2.1  (Gelesen 14097 mal)

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Probleme bei AGS 3.2.1
« am: 11. April 2011, 18:02:34 »
Beim AGS 3.2 sind sie Fonts ( ich glaube Fonts 2) nicht mehr leserlich...
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #1 am: 11. April 2011, 18:26:59 »
Inwiefern? Mehr Info? Screenshot? ::)

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #2 am: 11. April 2011, 18:37:16 »
Wie mehr Infos ??? halt nicht leserlich...

« Letzte Änderung: 11. April 2011, 18:44:20 von Zak »
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2671
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #3 am: 11. April 2011, 18:45:08 »
liegt an der "Anti-alias TTF fonts" option in den general settings
mach die auf false und es geht wieder  :)
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #4 am: 19. Juni 2011, 21:22:50 »
hi,
stehe vor einem rätsel und brauche hilfe.
wenn ich den wasserhahn aufdrehe und in den raum wieder rein gehe, läuft das wasser noch ( soll ja auch so sein), aber der sound ist weg.
hat einer eine idee ???
[ags]
function room_Load()
{
    oWasser.SetView(58);
    oWasser.Animate(0, 0, eRepeat, eNoBlock);
}
[/ags]

[ags]else if (UsedAction(eActUse))
{
  Wait(5);
  if ( GetGlobalInt(13) == 0 )
   {
     oWasser.Visible = true;
     PlayAmbientSound (1, 95, 150, 51, 131);
     SetGlobalInt(13,1);
    }
     else if ( GetGlobalInt(13) == 1 )
     {
       oWasser.Visible = false;
       StopAmbientSound(1);
       SetGlobalInt(13,0);
      }
}[/ags]
« Letzte Änderung: 19. Juni 2011, 21:26:28 von ZAK »
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

mukk

  • kleiner Tentakel
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #5 am: 19. Juni 2011, 21:53:55 »
Der Sound wird nur nach der Use-Aktion ausgeführt und hört auf wenn man den Raum verlässt.
Benutze deine GlobalInt im Room Load für Sound:

[ags]function room_Load()
{
    oWasser.SetView(58);
    oWasser.Animate(0, 0, eRepeat, eNoBlock);

 if ( GetGlobalInt(13) == 1 ) PlayAmbientSound (1, 95, 150, 51, 131);

}
 [/ags]

Edit: Versuch besser auf die GlobalInts zu verzichten. Du könntest hier zB nach dem Objekt fragen:

[ags] if ( oWasser.Visible == 0 )
   {
     oWasser.Visible = true;
     PlayAmbientSound (1, 95, 150, 51, 131);
    }
     else if ( oWasser.Visible == 1 )
     {
       oWasser.Visible = false;
       StopAmbientSound(1);
      }[/ags]

im RoomLoad dann

[ags] if ( oWasser.Visible == 1 ) PlayAmbientSound (1, 95, 150, 51, 131);[/ags]
« Letzte Änderung: 19. Juni 2011, 22:01:36 von mukk »
Each year, vegetarians bully animals,
cheat in relationships, watch porno and cause pollution.
So join the fight now and stop the vegetarians.

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #6 am: 20. Juni 2011, 11:04:13 »
im RoomLoad dann

[ags] if ( oWasser.Visible == 1 ) PlayAmbientSound (1, 95, 150, 51, 131);[/ags]
Danke, damit funktioniert es nun...

mal was andere... wie kann ich denn ein "timer" in das spiel einbauen ? also ich führe eine aktion aus, wie z.b. ich stelle das wasser an, diese aktion soll dann gestartet wenn ich den raum verlasse und so etwa nach 10 min. soll dann alles unter wasser sein.
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #7 am: 20. Juni 2011, 11:55:03 »
SetTimer() und IsTimerExpired().
Letzteres muss logischerweise innerhalb der repeatedly_execute abgefragt werden.

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #8 am: 20. Juni 2011, 19:42:50 »
SetTimer() und IsTimerExpired().
Letzteres muss logischerweise innerhalb der repeatedly_execute abgefragt werden.
irgendwie funktioniert das nicht so richtig, habe vieles ausprobiert, aber bistlang noch kein erfol damit erzielt.
habe u.a SetTimer(1,1000); dann hat er mit die funktion sofort ausgeführt, habe ich z.b. die "IsTimer" unter leave gemacht, klappte alles nur halt nicht wenn ich mich gerade zu dem zeitpunkt im raum befand...
...naja egal, hab ne andere möglichkeit gefunden es auszuführen, aber leider nicht auf zeit (counter)
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

Der Kompaniechef

  • volljähriger Tentakel
  • *****
  • Beiträge: 689
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #9 am: 20. Juni 2011, 19:57:23 »
ZAK kannst du mir den download link schicken vom Abspann

mukk

  • kleiner Tentakel
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #10 am: 20. Juni 2011, 20:16:48 »
irgendwie funktioniert das nicht so richtig, habe vieles ausprobiert, aber bistlang noch kein erfol damit erzielt.
habe u.a SetTimer(1,1000); dann hat er mit die funktion sofort ausgeführt, habe ich z.b. die "IsTimer" unter leave gemacht, klappte alles nur halt nicht wenn ich mich gerade zu dem zeitpunkt im raum befand...
...naja egal, hab ne andere möglichkeit gefunden es auszuführen, aber leider nicht auf zeit (counter)

Is n bisschen konfus, deine Beschreibung. SetTimer muss in deinem Fall beim Wasserhahn-öffnen-Script rein, dazu ne GlobalInt auf 1 setzen. Beim Wasserhahn schließen den Timer auf 0 setzen und vorher die GlobalInt ebenfalls auf 0 damit du den Timer/Wasserhahn stoppen kannst ohne dein Event auszulösen.
Jetzt schreibst du ins Globalscript unter die function repeatedly_executed [ags]if (IsTimerExpired (x) == true && [die GlobalInt von oben] == 1)
{
///deine Script
}[/ags]
Each year, vegetarians bully animals,
cheat in relationships, watch porno and cause pollution.
So join the fight now and stop the vegetarians.

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #11 am: 20. Juni 2011, 21:36:46 »
mir geht es hier doch nur um die "timerfunktion" einer aktion, welch ja auch funktioniert, aber meine wünsche nicht erfüllt. der wassehahn läuft nach wie vor super und spielt auch den sound ab.
mir war es nur wichtig einen timer einzuschalten, der nach etwa 3 - 5 min. eine aktion hervorruft die ja auch durch ein "objekt" sichtbar ist. nachdem ich alle im skript geschrieben habe klappte es auch alles soweit, nur das er mir die zusatzansprüche, wie der player sagt etwas(egal im welem raum er sich gerade befindet) oder auch das wenn die aktion genau dann aktiviert wired wenn sich der player in diesem raum befindet (welches ich gerne versuche zu vermeiden) eine andere aktion nicht passiert, weil er ja dazu den raum erst betreten muss....
die einfache alternative dazu habe ich ja gefunden (leider nicht auf zeit) durch eine bool in einem andern raum. der nachteil dadurch ist, dass es diesmal nicht zeitbedingt, sonder das der player genau diesen raum betritt...

p.s.:wenn ich zu kompliziert schreiben sollte, dann bitte ich dieses zu entschuldigen.
« Letzte Änderung: 06. Juli 2011, 01:45:38 von ZAK »
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #12 am: 21. Juni 2011, 11:03:31 »
"IsTimer" unter "leave"? Ich hab doch noch extra geschrieben, dass IsTimerExpired in eine der verfügbaren rep_exes muss.

Das Prinzip ist folgendermaßen: SetTimer(1,1000) startet einen internem Timer. 1000 frames sind per Grundeinstellung 25 Sekunden (1 Sek. = 40 Frames).
Dieser Timer läuft nun im Hintergrund runter.

Wird jetzt IsTimerExpired(1) aufgerufen, solange er noch läuft, wird "false" zurückgeliefert. Sobald der Timer abgelaufen ist, liefert IsTimerExpired(1) genau einmal "true" zurück, danach wieder false.

Wenn das Wasser erst auslaufen soll, nachdem man den Raum verlassen hat, setzt man SetTimer(1, GetGameSpeed()*60*3); in leave_room.
(Das sind übrgens drei Minuten. Man kann auch den Raum jederzeit wieder betreten. Falls es nur in Abwesenheit auslaufen soll, deaktiviert man den Timer einfach beim Betreten wieder: SetTimer(1, 0);
Hat übrigens bisschen was von alten Sierra-Spielen, dieses Rätsel. Und das ist kein Kompliment ;))



Dann fügt man Folgendes in repeatedly_execute in Global.asc ein:

[ags]  if (IsTimerexpired(1)) {
    CallRoomScript(1);
    wasser_ausgelaufen = true;
  }[/ags]

wasser_ausgelaufen ist eine globale bool-Variable, mit der ich in "before fadein" der betroffenen Räume beispielsweise Wasserflecken einschalten kann.
CallRoomScript(1) bewirkt, dass AGS in meinem Raumskript "on_call(1);" aufruft, d.h. ich setze z.B. Folgendes ins Raumskript des Flurs vor dem Bad:

[ags]void on_call(int p) {

  if (p == 1) {  // wasser läuft aus
    oWasserLache.Visible = true;
    Wait(5);
    player.Say("Hier ist gerade Wasser ausgelaufen.");
  }[/ags]
« Letzte Änderung: 21. Juni 2011, 11:06:05 von KhrisMUC »

mukk

  • kleiner Tentakel
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Probleme bei AGS 3.2.1
« Antwort #13 am: 21. Juni 2011, 13:03:10 »
Das is besser als meine Variante :)

Mal so zum Verständnis:

p setzt man dann beim Wasserhahn 1 bzw 0 ?
Was ist void?
Each year, vegetarians bully animals,
cheat in relationships, watch porno and cause pollution.
So join the fight now and stop the vegetarians.

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2371
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: Probleme bei AGS 3.2.1
« Antwort #14 am: 21. Juni 2011, 13:14:52 »
p steht hier einfach nur für den Wert der durch
[ags]CallRoomScript(1); ->  void on_call(int p)[/ags]
übergeben wurde und ist in khris beispiel kein bool sondern ein int, das nicht direkt mit dem Wasserhahn in Verbindung steht, sonder einfach nur dazu benutzt wird um in der Funktion
verschiedene Zustände abfragen zu können ->[ags] if (p == 1) [/ags]

on_call ist eine Funktion und jede Funktion wird nach folgendem Muster definiert:
[ags]Rückgabeformat Funktionsname(Funktionsparameter)[/ags]

void heisst, dass diese Funktion keinen Wert zurückgíbt.
in AGS steht normalerweise function vor dem Funktionsname und das ist ein Synoym für int(eger) -> ganze Zahlenwerte.
man kann aber auch chars (Buchstaben) Strings (Zeichenkette) oder floats (Kommazahlen) zurückgeben und in "richtigen" Programmiersprachen auch eigens definierte Datentypen oder structs
(weiss jetzt nicht auswendig ob structs bei AGS auch funktionieren und ob du das überhaupt so genau wissen wolltest.  :cl)



« Letzte Änderung: 21. Juni 2011, 13:26:32 von Rocco »