Autor Thema: Shoben's Fragethread  (Gelesen 32241 mal)

Shoben

  • volljähriger Tentakel
  • *****
  • Beiträge: 896
  • Geschlecht: Männlich
  • Ich bin ein bischen wie Jesus.
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #15 am: 07. Dezember 2010, 23:33:34 »
Ähhm, leider funktioniert Boogieman´s Code bei mir nicht.
Es passiert überhaupt nichts. Könnte man mir die Funktionen
der Befehle vllt mal erläutern, damit ich den Fehler in der Sache
verstehen kann?


--->Das Voll ist immer halb Glas!<---

--->Würde der klügere nachgeben, wäre die Welten von Idioten beherscht!<---

Don't tell me what I can't do
John Locke

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2681
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #16 am: 08. Dezember 2010, 00:10:57 »
ok, der vorige code war nicht getestet sondern ausm gedächtnis
hier der code, den ich für teds fade-in in TMMCMFH (AGS3.1.2SP1) verwendet hab
ist zwar kein objekt sondern ein char, aber der funktioniert mit sicherheit
ted fängt dabei mit Transparency=100 (unsichtbar) an und macht einen fade-in in 2er-schritten bis er nur noch leicht durchsichtig ist

int iTrans = 100;
while (iTrans > 26) {
  iTrans -= 2;
  cGhost.Transparency = iTrans;
  Wait(1);
}
bin mir nicht mehr sicher, aber ich glaube ich hatte da probleme beim direkten verwenden der Transparency-eigenschaft und hab das dann durch die iTrans variable umgangen  :-\

der code sollte natürlich in ein script für zB "schau an geist" eingebaut werden

kurze erklärung:
"while" ist eine schleife die die befehle in den { } solange wiederholt, bis die angegebene bedingung nicht mehr erfüllt ist (in diesem fall bis die variable iTrans nicht mehr größer als 26 ist)

"cGhost.Transparency" cGhost ist in diesem fall ein character, und Transparency ist dessen durchsichtigkeit (100=unsichtbar, 0=undurchsichtig)

"Wait(1)" ist notwendig, damit ags zeit bekommt, die änderungen an der transparenz auch darzustellen
würde hier kein Wait sein, würde ags die schleife so schnell abarbeiten, dass der spieler die animation nicht sehen würde sondern nur den endzustand nach der schleife
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

Domi

  • Midlife Crisis Tentakel
  • ******
  • Beiträge: 1080
  • Still existing
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #17 am: 08. Dezember 2010, 09:09:08 »
ich machet ja immer so:
player.Transperency=10;
player.Transperency=20;
player.Transperency=30;
player.Transperency=40;
player.Transperency=50;
player.Transperency=60;
USW. bis 100 und dann wenns wuieder sichtbar sein soll einfach 100
90
80...
Hoffe ich konnte helfen ;)
(achja .Transperency geht mit jedem object player gui usw... )
"Das Internet vergisst nie."

Shoben

  • volljähriger Tentakel
  • *****
  • Beiträge: 896
  • Geschlecht: Männlich
  • Ich bin ein bischen wie Jesus.
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #18 am: 08. Dezember 2010, 12:44:23 »
Soweit hat Boogiemans Lösung geklappt, aber wenn ich das gleichzeitig mit mehreren Objekten machen will,
dann klappt es nicht, dann geht nur das erste. :(


--->Das Voll ist immer halb Glas!<---

--->Würde der klügere nachgeben, wäre die Welten von Idioten beherscht!<---

Don't tell me what I can't do
John Locke

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2681
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #19 am: 08. Dezember 2010, 13:08:06 »
die müssen natürlich auch alle in der selben schleife sein
aber poste einfach mal dein script, damit wir den fehler suchen können  ;)
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

Shoben

  • volljähriger Tentakel
  • *****
  • Beiträge: 896
  • Geschlecht: Männlich
  • Ich bin ein bischen wie Jesus.
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #20 am: 08. Dezember 2010, 14:07:12 »
Also, ich habe hier den Ausschnitt des Scripts.
Zuerst möchte ich nur, dass der Spieler ausgeblendet wird.
Aber das geht schon nicht :( :

if (character [GetPlayerCharacter ()].activeinv == 11) {
     Wait (5);
     DisplaySpeech(GetPlayerCharacter(),"Und los gehts...");
     Wait (15);
     PlaySound (4);
     LoseInventory (11);
     Wait (80);
     int iTrans = 0;
     while (iTrans > 100) {
     iTrans -= 2;
     cBernardV.Transparency = iTrans;
     Wait(1);
     }
    }


--->Das Voll ist immer halb Glas!<---

--->Würde der klügere nachgeben, wäre die Welten von Idioten beherscht!<---

Don't tell me what I can't do
John Locke

Endres

  • Midlife Crisis Tentakel
  • ******
  • Beiträge: 1264
  • Geschlecht: Männlich
  • En|dres, der
    • ICQ Messenger - 230191486
    • MSN Messenger - enni_puschner@hotmail.de
    • Profil anzeigen
    • e7p.de
    • E-Mail
Re: Shoben´s Fragethread
« Antwort #21 am: 08. Dezember 2010, 16:05:03 »
if(player.activeinv == 11) {
  Wait(5);
  player.Say("Und los gehts...");
  Wait(15);
  PlaySound(4);
  LoseInventory(11);
  Wait(80);
  while (player.Transparency < 100) {
    player.Transparency += 2;
    Wait(1);
  }
}

Was soll durch eine Variable besser werden?


Domi:"irc hab ich mir viren geholt.. icq hab ich nimmer"

Shoben

  • volljähriger Tentakel
  • *****
  • Beiträge: 896
  • Geschlecht: Männlich
  • Ich bin ein bischen wie Jesus.
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #22 am: 08. Dezember 2010, 17:49:02 »
Ok, so klappt es, aber wenn ich gleichzeitig auch noch 3 Objekte sichtbar machen lassen will, passiert dies nicht, es bleibt beim ausblenden des Spielers:

if (character [GetPlayerCharacter ()].activeinv == 11) {
     Wait (5);
     DisplaySpeech(GetPlayerCharacter(),"Und los gehts...");
     Wait (15);
     PlaySound (4);
     LoseInventory (11);
     Wait (80);
     while (player.Transparency < 100) {
     player.Transparency += 2;
     Wait(1);
     }
     while (oObject2.Transparency < 0) {
     oObject2.Transparency -= 2;
     Wait(1);
     }
     while (oObject3.Transparency < 0) {
     oObject3.Transparency -= 2;
     Wait(1);
     }
     while (oObject4.Transparency < 0) {
     oObject4.Transparency -= 2;
     Wait(1);
     }
    }

Was mache ich hier falsch?


--->Das Voll ist immer halb Glas!<---

--->Würde der klügere nachgeben, wäre die Welten von Idioten beherscht!<---

Don't tell me what I can't do
John Locke

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2375
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: Shoben´s Fragethread
« Antwort #23 am: 08. Dezember 2010, 18:04:41 »
oObject2.Transparency < 0  :cl

solange object2.transparency kleiner 0
kann nicht stimmen
« Letzte Änderung: 08. Dezember 2010, 18:07:06 von Rocco »

Shoben

  • volljähriger Tentakel
  • *****
  • Beiträge: 896
  • Geschlecht: Männlich
  • Ich bin ein bischen wie Jesus.
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #24 am: 08. Dezember 2010, 18:12:05 »
Ahh! Ich Deppschef! Dankeschön 8)


--->Das Voll ist immer halb Glas!<---

--->Würde der klügere nachgeben, wäre die Welten von Idioten beherscht!<---

Don't tell me what I can't do
John Locke

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #25 am: 08. Dezember 2010, 18:50:32 »
ich machet ja immer so:
player.Transperency=10;
player.Transperency=20;
player.Transperency=30;
...

Urg. Bitte nur Lösungsvorschläge posten, die etwas kompetenter sind.

if (character [GetPlayerCharacter ()].activeinv == 11) {
     Wait (5);
     DisplaySpeech(GetPlayerCharacter(),"Und los gehts...");

Wo bitte ist das Tutorial, in dem Du diese Art zu coden gelernt hast, damit ich es mit Stumpf und Stiel ausrotten kann?

So wird das aktuell geschrieben:
if (player.activeinv == 11) {
     Wait (5);
     player.Say("Und los gehts...");

Und bitte keinen dummen Schlaumeierspruch; Du fängst gerade erst an mit AGS, also ist es sinnlos und idiotisch, diese uralten Befehle zu lernen.

Zu deinem Code (gleichzeitiges Blenden war gefragt, oder?):
    int t = 0;
    while (t < 100) {
      t += 2;
      player.Transparency = t;
      oObject2.Transparency = 100-t;
      oObject3.Transparency = 100-t;
      oObject4.Transparency = 100-t;
      Wait(1);
    }

Shoben

  • volljähriger Tentakel
  • *****
  • Beiträge: 896
  • Geschlecht: Männlich
  • Ich bin ein bischen wie Jesus.
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #26 am: 08. Dezember 2010, 19:20:28 »
Problem war inzwischen schon gelöst, hmm ich versuche mir zur Zeit immer weider die neuen Codes anzgewöhnen, hab mir halt immer alles vom Starterpack abzuschauen.
Was ist an den Codes den eig. so schlimm?

>> Und los gehts: Du kannst ja nicht wissen, in welchem Zusammenhang das gesagt wird.


--->Das Voll ist immer halb Glas!<---

--->Würde der klügere nachgeben, wäre die Welten von Idioten beherscht!<---

Don't tell me what I can't do
John Locke

Shoben

  • volljähriger Tentakel
  • *****
  • Beiträge: 896
  • Geschlecht: Männlich
  • Ich bin ein bischen wie Jesus.
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #27 am: 08. Dezember 2010, 20:31:33 »
So, jetzt habe ich wohl ein Problem damit, 2 Inventargegenstände zu verbinden. :(

Nämlich, funktioniert das super, bei Hotspots oder Objekten:

if (UsedAction (A_USE_INV)) {
   if (character [GetPlayerCharacter ()].activeinv == 15) {
     Wait (5);
     etc;
     etc;
     ...

Aber wenn ich das geauso auch bei Inventargegenständen mache funktioniert nichts.
Will heißen, ich bekommen nur "Besser Nicht" zu hören. Muss man bei INV-Gegen-
ständen irgendwas anders machen???
« Letzte Änderung: 08. Dezember 2010, 20:32:54 von The.Shoben »


--->Das Voll ist immer halb Glas!<---

--->Würde der klügere nachgeben, wäre die Welten von Idioten beherscht!<---

Don't tell me what I can't do
John Locke

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #28 am: 08. Dezember 2010, 20:31:48 »
>> Und los gehts: Du kannst ja nicht wissen, in welchem Zusammenhang das gesagt wird.

Häh? Muss ich das wissen? Ich hab die Zeile nur hergenommen, und Dein "DisplaySpeech(GetPlayerCharacter()" durch "player.Say" zu ersetzen.

Was ist an den Codes den eig. so schlimm?

Sie sind umständlich und veraltet. Um mein Beispiel nochmal zu verwenden: Du würdest doch Windows95 auch nicht mehr hernehmen.
Außerdem wird mit ziemlicher Sicherheit der Tag kommen, an dem die alten Befehle nicht mehr verwendet werden können; warum also nicht gleich die neuen, zeitgemäßen, kürzeren und eleganteren Befehle lernen?

Wenn man erst vor Kurzem in MMM und AGS eingestiegen ist, ist es einfach schwachsinnig, sich jetzt noch in AGS 2.X und uralte Befehle einzulernen.
Dass man nicht sofort umsteigt, wenn man seit Jahren an den alten Kram gewöhnt ist, ist ein anderes Thema, aber als Frischling ist das wirklich Käse.

Shoben

  • volljähriger Tentakel
  • *****
  • Beiträge: 896
  • Geschlecht: Männlich
  • Ich bin ein bischen wie Jesus.
    • Profil anzeigen
Re: Shoben´s Fragethread
« Antwort #29 am: 08. Dezember 2010, 20:35:40 »
Achso, ich dachte:

Und bitte keinen dummen Schlaumeierspruch;

wäre auf den Spruch des Spielers "Und los gehts...", bezogen ^^.

BTW: Habe ich bezüglich der alten Codes etwa einen Schlaumeierspruch losgelassen?


--->Das Voll ist immer halb Glas!<---

--->Würde der klügere nachgeben, wäre die Welten von Idioten beherscht!<---

Don't tell me what I can't do
John Locke