Aussagen Ordenen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Konflaxx

Betreff: Aussagen Ordenen

BeitragMi, Aug 04, 2004 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
So...
Wieder Mal zu meinem 3d-Iso-Rpg:
Hab jetzt selber eine Textengine (scripting language, was auch immer) geschrieben und habe nun ein Problem.
Wenn ich eine Aussage/Befehl einer Person festlege (z.B. Geh, hol Kuchen, wenn du ihn hast kriegste nen Arschtritt) dann setzt ich eine Variable auf 1, wenn ich den Kuchen besorgt habe. Somit weiß die Person dass ich den Kuchen hab (und antwortet: Gut gemacht, haariges Unwesen). So, das ist ja ganz einfach.
Aber Folgendes: (Das Problem liegt eher Im Aufbau meiner "Funktion")
Nehmen wir an, die Person antwortet: Gut gemacht, haariges Unwesen. Dann schalte ich die Textbox weg. Und wenn ich die Person danach noch einmal anspreche, dann soll sie z.B. sage: Jetzt Geh weg und lass mich zufrieden. Nun, das ist das Problem und ich hab ziemlich lange daran gessesen, bin aber auf keine richtige Lösung gekommen.

Also, der Code (ist nur die Textengine, nicht so wichtig)
Code: [AUSKLAPPEN]

Global Menu  = LoadImage("textengine\menu.bmp")
Global Menusm  = LoadImage("textengine\menusm.bmp")


;------------------------------------------------


Function name(Name$)

;spielt Sound ab
klick = PlayMusic("Sound\klick.wav")

;malt die textbox und die namensbox auf den bildschirm
DrawImage menusm,0,548
DrawImage menu,0,568


;malt Namen ein
bmpf_txt(5,550,Name$)


End Function
;------------------------------------------------

Function z1(z1$)
 bmpf_txt(10,578,z1$)
End Function

Function z2(z2$)
 bmpf_txt(10,598,z2$)
End Function

Function z3(z3$)
 bmpf_txt(10,618,z3$)
End Function

Function z4(z4$)
 bmpf_txt(10,638,z4$)
End Function

Function z5(z5$)
 bmpf_txt(10,658,z5$)
End Function

Function Pfeil()
 bmpf_txt(900,718,"Weiter")
End Function


Und hier das eigentliche Problem (Den Teil vom Baum lohnt es sich nur anzuschaen, wegen den Variablen)

Code: [AUSKLAPPEN]

;Haus
If speech2$ = "hans" And j = 1 Then

Name "Haus"

 If j = 1 Then
 Repeat
 FlushKeys()
 Flip



  ;Standartaussage
  If x = 0 Then
  z1 "Hallo, ich bin das Haus vom Nikolaus!"
  z2 "Ich frage mich, ob mich Baum noch liebt..."
  Pfeil()
  EndIf

   If KeyHit(28) Then
   x = x + 1
   EndIf

   If x = 1 Then
   DrawImage menu,0,568
   z1 "Weißt du, du könntest Baum fragen"
   z2 "ob er mich noch liebt."
   z3 "Geh und such ihn!"
   Quest = 1
   EndIf
   
 

   ;Wenn...
   If aufgabe = 1 Then
    DrawImage menu,0,568
    z1 "Baum hasst mich!?"
    z2 "Du scheiß Stück scheiße!"
    z3 "Deine Mutter scheißt beim Kacken!"    ;Hier Das Problem
    aufgabe2 = 1
   EndIf
   

   


   If aufgabe2 = 1 Then                               ; bis hier
    DrawImage menu,0,568
    z4 "Verpiss dich!"
   EndIf


 
 If KeyHit(57) Then
 x = 0
 j = 0
 EndIf

 

 Until j = 0
 EndIf

EndIf

;Baum
If speech2$ = "Baum" And j = 1 Then
 Name "Baum"
 z1 "Geh weg!"
 
  If quest = 1 Then
  Name "Baum"
  z1 "Was!? Er ist ein Hurensohn!"
  z2 "Ich hasse ihn!"
  aufgabe = 1
  EndIf

 If j = 1 Then
 Repeat
 FlushKeys()
 Flip
 j = 0
 Until KeyHit(57) And j = 0
 EndIf

EndIf

(ich weiß eigentlich, dass das nicht funktionieren kann, wegen der Schleife, aber was anderes hat auch nicht geklappt, also hab ich es so stehen lassen)

Das wichtige ist, dass das Spiel angehalten wird, während man etwas liest, und ich habe es mit einer Schleife gelöst (hab ich hier im Forum so in der Art irgendwo gefunden)

Und hier vielleicht noch etwas interresantes:
Code: [AUSKLAPPEN]

;-------------------------------Interaktionsabfrage----------------
;Interaktion
speech = EntityPick(mario, 200)

If speech Then
speech2$ = EntityName$(speech$)
Else
speech2$ = 0
EndIf

;Interaktion
If KeyHit(57) Then
If speech Then
j = 1 - j
EndIf

EndIf
;------------------------------------------------------------------


;--------------------------------Dialoge---------------------------
Include "Textengine\Dialog.bb"
;------------------------------------------------------------------

(das ist im Hauptprogramm)

Hoffe ihr könnt mir Lösungsvorschläge geben!
Ich bin der beste.

Bigmichi

BeitragMi, Aug 04, 2004 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
wieso speicherst du net in einer eigenen vab ob du die Aufgabe schon gemacht hast ? udn wennja soll er sagen hau ab ? würde odch gehen oder nicht ?
 

Apocalyptic

BeitragDo, Aug 05, 2004 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
z1 "Hallo, ich bin das Haus vom Nikolaus!"


Und das funktioniert? So ganz ohne "="? Rolling Eyes

Hat zwar nix mit deinem eigentlichen Problem zu tun, musste aber mal gesagt werden. Wink
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]
 

Timo

BeitragDo, Aug 05, 2004 11:30
Antworten mit Zitat
Benutzer-Profile anzeigen
z1 ist keine Variable sondern eine Funktion, deshalb darf da kein = Zeichen hin! Obwohl ich immer gerne derÜbersicht halber Klammern setzten würde... Very Happy
 

Konflaxx

BeitragDo, Aug 05, 2004 12:33
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Bigmichi
Mir ist gerade aufgefallen, dass ich das Problem nicht richtig zu Ende erklärt habe Embarassed . Aber egal, dann tu ich das jetzt:
Code: [AUSKLAPPEN]

;Wenn...
   If aufgabe = 1 Then
    DrawImage menu,0,568
    z1 "Baum hasst mich!?"
    z2 "Du scheiß Stück scheiße!"
    z3 "Deine Mutter scheißt beim Kacken!"    ;Hier Das Problem
    aufgabe2 = 1
   EndIf
   

   


   If aufgabe2 = 1 Then                               ; bis hier
    DrawImage menu,0,568
    z4 "Verpiss dich!"
   EndIf


Die Sache ist die, Nachdem ich zum Baum gegeangen bin und ihn gefragt habe und dann zurück zum Haus gehe und ihm die Nachricht überbringe, sollte er ja zuerst sagen "Baum hasst mich!? Du..." und erst wenn ich ihn das zweite mal anspreche, soll er sagen "Verpiss dich". Das habe ich ja versucht mit der Variable aufgabe2 zu lösen. Aber da es eine Schleife ist, wird die Variable aufgabe2 sofort auf 1 gestellt und somit sehe ich nur die Nachricht "verpiss dich" aber nicht "Baum hasst mich!? Du...".
Hoffe das Problem ist jetzt Klar
Ich bin der beste.
 

Dreamora

BeitragDo, Aug 05, 2004 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke was gemeint war ist dass du den Wert von Aufgabe selbst raufsetzt auf 2, so das der Wert der Variable Auskunft darüber gibt, wie weit man im Quest ist. ( so haben wir es zumindest auf dem UO Freeshard immer gemacht bei den Quest NPCs )
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Bigmichi

BeitragDo, Aug 05, 2004 13:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora genau !! Very Happy
so hab ich es auch gemeint =)

lucifer

BeitragDo, Aug 05, 2004 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder du setzt die variable auf -1 und am ende der schleife dann mit

Code: [AUSKLAPPEN]

if aufgabe2 = -1 then aufgabe2  = 1


So löse ich das zumindestens bei meinem RPG.
 

Konflaxx

BeitragDo, Aug 05, 2004 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke an an alle vor allem an lucifer, du hast mich nämlich auf ein Idee gebracht und jetzt funktioniert es. Ist zwar total unübersichtlich aber es funzt, danke!
Ich bin der beste.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group