Scriptproblem => Will 2. Gegenstand nicht benutzen

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
DernetteEddy
Süßwasserpirat
Süßwasserpirat
Beiträge: 298
Registriert: 30.06.2004, 00:31

Scriptproblem => Will 2. Gegenstand nicht benutzen

Beitrag von DernetteEddy »

Hallo,

ich habe vor das mein Char 2 Gegenstände hat die er mit einem Object benutzen kann. Er soll aber erst nachdem er den zweiten genutzt hat (Reihenfolge ist egal) etwas bestimmtes tun. Hier ist mein script:

Code: Alles auswählen

	else if (UsedAction (A_USE_INV))
  {
    if (character [GetPlayerCharacter ()].activeinv == 6)
    {
      if (MovePlayer (240, 133))
      {
        if (GetGlobalInt (47) == 0)
        {
					FaceLocation (GetPlayerCharacter (), 240, 1);
					Wait (5);
					SetObjectView (3, 43);
					PlayMusic (31);
					GUIOff (1);
					GUIOff (0);
					oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards);
					Wait (500);
					StopMusic ();
					Wait (100);
					oGeraet.StopAnimating();
					LoseInventory (6);
					GUIOn (1);
					GUIOn (0);
					FaceLocation (GetPlayerCharacter (),  240,  1000);
					Wait (40);
					DisplaySpeech (GetPlayerCharacter (),  "blablablabla.");
				}	
				else if (GetGlobalInt (47) == 1)
				{
					FaceLocation (GetPlayerCharacter (), 240, 1);
					Wait (5);
					SetObjectView (3, 43);
					PlayMusic (31);
					GUIOff (1);							
					GUIOff (0);
					oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards);
					Wait (50);
					StopMusic ();
					Wait (100);
					oGeraet.StopAnimating();
					LoseInventory (6);
					GUIOn (1);
					GUIOn (0);
					FaceLocation (GetPlayerCharacter (),  240,  1000);
					Wait (40);
					DisplaySpeech (GetPlayerCharacter (),  "Info.");
					DisplaySpeech (GetPlayerCharacter (),  "Mehr Info.");
				}  
				SetGlobalInt (47, 1);
			}
		}
	}

else if (UsedAction (A_USE_INV))
  {
    if (character [GetPlayerCharacter ()].activeinv == 10)
    {
      if (MovePlayer (240, 133))
      {
        if (GetGlobalInt (47) == 0)
        {
					FaceLocation (GetPlayerCharacter (), 240, 1);
					Wait (5);
					SetObjectView (3, 43);
					PlayMusic (31);
					GUIOff (1);
					GUIOff (0);
					oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards);
					Wait (500);
					StopMusic ();
					Wait (100);
					oGeraet.StopAnimating();
					LoseInventory (10);
					GUIOn (1);
					GUIOn (0);
					FaceLocation (GetPlayerCharacter (),  240,  1000);
					Wait (40);
					DisplaySpeech (GetPlayerCharacter (),  "blablabla.");
				}	
				else if (GetGlobalInt (47) == 1)
				{
					FaceLocation (GetPlayerCharacter (), 240, 1);
					Wait (5);
					SetObjectView (3, 43);
					PlayMusic (31);
					GUIOff (1);							
					GUIOff (0);
					oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards);
					Wait (50);
					StopMusic ();
					Wait (100);
					oGeraet.StopAnimating();
					LoseInventory (10);
					GUIOn (1);
					GUIOn (0);
					FaceLocation (GetPlayerCharacter (),  240,  1000);
					Wait (40);
					DisplaySpeech (GetPlayerCharacter (),  "Info.");
					DisplaySpeech (GetPlayerCharacter (),  "Merh Info.");
				}  
				SetGlobalInt (47, 1);
			}
		}
	}

  else Unhandled ();
        
      
  
Jetzt nimmt er Inventory 6 und macht auch alles was passieren soll. Inventory 10 kann ich aber nicht benutzen. Da passiert dann gar nichts. Wenn ich die Scripts der Reihenfolge änder, kann ich dann Inventory 6 nicht mehr benutzen. Irgendwo muss der Fehler im oberen Bereich leigen.Ich find aber nicht raus wo. Wer kann mir helfen. Super wäre sogar auch wenn einer ne kürzere Version des Scripts hätte.
Ist auch völlig unabhängig ob vorher der andere Gegenstand benutzt wurde oder nicht. Der zweite funktioniert nicht.
Mit * markierte Felder sind erforderlich
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Re: Scriptproblem => Will 2. Gegenstand nicht benutzen

Beitrag von [ZENSIERT] »

DernetteEddy hat geschrieben:

Code: Alles auswählen

	else if (UsedAction (A_USE_INV))
  {
    if (character [GetPlayerCharacter ()].activeinv == 6)
    {
      if (MovePlayer (240, 133))
      {
        if (GetGlobalInt (47) == 0)
        {
					FaceLocation (GetPlayerCharacter (), 240, 1);
					Wait (5);
					SetObjectView (3, 43);
					PlayMusic (31);
					GUIOff (1);
					GUIOff (0);
					oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards);
					Wait (500);
					StopMusic ();
					Wait (100);
					oGeraet.StopAnimating();
					LoseInventory (6);
					GUIOn (1);
					GUIOn (0);
					FaceLocation (GetPlayerCharacter (),  240,  1000);
					Wait (40);
					DisplaySpeech (GetPlayerCharacter (),  "blablablabla.");
				}	
				else if (GetGlobalInt (47) == 1)
				{
					FaceLocation (GetPlayerCharacter (), 240, 1);
					Wait (5);
					SetObjectView (3, 43);
					PlayMusic (31);
					GUIOff (1);							
					GUIOff (0);
					oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards);
					Wait (50);
					StopMusic ();
					Wait (100);
					oGeraet.StopAnimating();
					LoseInventory (6);
					GUIOn (1);
					GUIOn (0);
					FaceLocation (GetPlayerCharacter (),  240,  1000);
					Wait (40);
					DisplaySpeech (GetPlayerCharacter (),  "Info.");
					DisplaySpeech (GetPlayerCharacter (),  "Mehr Info.");
				}  
				SetGlobalInt (47, 1);
			}
		}
	}

else if (UsedAction (A_USE_INV) )
  {
    if (character [GetPlayerCharacter ()].activeinv == 10)
    {
      if (MovePlayer (240, 133))
      {
        if (GetGlobalInt (47) == 0)
        {
					FaceLocation (GetPlayerCharacter (), 240, 1);
					Wait (5);
					SetObjectView (3, 43);
					PlayMusic (31);
					GUIOff (1);
					GUIOff (0);
					oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards);
					Wait (500);
					StopMusic ();
					Wait (100);
					oGeraet.StopAnimating();
					LoseInventory (10);
					GUIOn (1);
					GUIOn (0);
					FaceLocation (GetPlayerCharacter (),  240,  1000);
					Wait (40);
					DisplaySpeech (GetPlayerCharacter (),  "blablabla.");
				}	
				else if (GetGlobalInt (47) == 1)
				{
					FaceLocation (GetPlayerCharacter (), 240, 1);
					Wait (5);
					SetObjectView (3, 43);
					PlayMusic (31);
					GUIOff (1);							
					GUIOff (0);
					oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards);
					Wait (50);
					StopMusic ();
					Wait (100);
					oGeraet.StopAnimating();
					LoseInventory (10);
					GUIOn (1);
					GUIOn (0);
					FaceLocation (GetPlayerCharacter (),  240,  1000);
					Wait (40);
					DisplaySpeech (GetPlayerCharacter (),  "Info.");
					DisplaySpeech (GetPlayerCharacter (),  "Merh Info.");
				}  
				SetGlobalInt (47, 1);
			}
		}
	}

  else Unhandled ();
        
      
  
Sehr offensichtlich ;)

Code: Alles auswählen

	else if (UsedAction (A_USE_INV) && (character [GetPlayerCharacter ()].activeinv == 6))
  {
      if (MovePlayer (240, 133))
      {
        if (GetGlobalInt (47) == 0)
        {
					FaceLocation (GetPlayerCharacter (), 240, 1);
					Wait (5);
					SetObjectView (3, 43);
					PlayMusic (31);
					GUIOff (1);
					GUIOff (0);
					oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards);
					Wait (500);
					StopMusic ();
					Wait (100);
					oGeraet.StopAnimating();
					LoseInventory (6);
					GUIOn (1);
					GUIOn (0);
					FaceLocation (GetPlayerCharacter (),  240,  1000);
					Wait (40);
					DisplaySpeech (GetPlayerCharacter (),  "blablablabla.");
				}	
				else if (GetGlobalInt (47) == 1)
				{
					FaceLocation (GetPlayerCharacter (), 240, 1);
					Wait (5);
					SetObjectView (3, 43);
					PlayMusic (31);
					GUIOff (1);							
					GUIOff (0);
					oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards);
					Wait (50);
					StopMusic ();
					Wait (100);
					oGeraet.StopAnimating();
					LoseInventory (6);
					GUIOn (1);
					GUIOn (0);
					FaceLocation (GetPlayerCharacter (),  240,  1000);
					Wait (40);
					DisplaySpeech (GetPlayerCharacter (),  "Info.");
					DisplaySpeech (GetPlayerCharacter (),  "Mehr Info.");
				}  
				SetGlobalInt (47, 1);
			}
		}

else if (UsedAction (A_USE_INV) && (character [GetPlayerCharacter ()].activeinv == 10))
  {
      if (MovePlayer (240, 133))
      {
        if (GetGlobalInt (47) == 0)
        {
					FaceLocation (GetPlayerCharacter (), 240, 1);
					Wait (5);
					SetObjectView (3, 43);
					PlayMusic (31);
					GUIOff (1);
					GUIOff (0);
					oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards);
					Wait (500);
					StopMusic ();
					Wait (100);
					oGeraet.StopAnimating();
					LoseInventory (10);
					GUIOn (1);
					GUIOn (0);
					FaceLocation (GetPlayerCharacter (),  240,  1000);
					Wait (40);
					DisplaySpeech (GetPlayerCharacter (),  "blablabla.");
				}	
				else if (GetGlobalInt (47) == 1)
				{
					FaceLocation (GetPlayerCharacter (), 240, 1);
					Wait (5);
					SetObjectView (3, 43);
					PlayMusic (31);
					GUIOff (1);							
					GUIOff (0);
					oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards);
					Wait (50);
					StopMusic ();
					Wait (100);
					oGeraet.StopAnimating();
					LoseInventory (10);
					GUIOn (1);
					GUIOn (0);
					FaceLocation (GetPlayerCharacter (),  240,  1000);
					Wait (40);
					DisplaySpeech (GetPlayerCharacter (),  "Info.");
					DisplaySpeech (GetPlayerCharacter (),  "Merh Info.");
				}  
				SetGlobalInt (47, 1);
			}
		}

  else Unhandled ();
        
      
  
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Benutzeravatar
DernetteEddy
Süßwasserpirat
Süßwasserpirat
Beiträge: 298
Registriert: 30.06.2004, 00:31

Beitrag von DernetteEddy »

Super das ging schnell. Funtioniert.
Also lag es nur an dem?

Code: Alles auswählen

else if (UsedAction (A_USE_INV) && (character [GetPlayerCharacter ()].activeinv == 10)) 
Mit * markierte Felder sind erforderlich
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Wenn eine if-condition bzw. else if-condition gefunden wird, die "true" ist, wird der Rest ignoriert. Deswegen wurde die zeite "else if (UsedAction (A_USE_INV))" nie beachtet.

So geht's auch:

Code: Alles auswählen

else if (UsedAction (A_USE_INV)) 
{ 
  int a=player.activeinv;  // <- edit
  if (a=6 || a=10)         // <- edit
  { 
    if (MovePlayer (240, 133)) 
    { 
      FaceLocation (GetPlayerCharacter (), 240, 1); 
      Wait (5); 
      SetObjectView (3, 43); 
      PlayMusic (31); 
      GUIOff (1); 
      GUIOff (0); 
      oGeraet.Animate(0, 1, eRepeat, eNoBlock, eForwards); 
      Wait (500); 
      StopMusic (); 
      Wait (100); 
      oGeraet.StopAnimating(); 
      LoseInventory (a);        // <- edit
      GUIOn (1); 
      GUIOn (0); 
      FaceLocation (GetPlayerCharacter (),  240,  1000); 
      Wait (40);
      if (GetGlobalInt(47)==0)   // edit
      {
        DisplaySpeech (GetPlayerCharacter (),  "blablablabla.");
        SetGlobalInt(47,1);
      else if (GetGlobalInt(47)==1) 
      { 
        DisplaySpeech (GetPlayerCharacter (),  "Info.");
        DisplaySpeech (GetPlayerCharacter (),  "Mehr Info.");
        SetGlobalInt(47,2);
      }
    } 
  }
}
else Unhandled();
Use gopher repellent on funny little man
Benutzeravatar
DernetteEddy
Süßwasserpirat
Süßwasserpirat
Beiträge: 298
Registriert: 30.06.2004, 00:31

Beitrag von DernetteEddy »

Ihr habt's drauf Jungs. Vielen Dank.
So macht das ganze doch Spaß.....
Mit * markierte Felder sind erforderlich
Antworten