types werden alle angesprochen...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

onkelz89

Betreff: types werden alle angesprochen...

BeitragMi, Mai 04, 2005 2:05
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

ich habe ein problem:

habe einen type(nahrungsmittel)
und unter diesem type ist von a-z alles dabei ein beispiel hier mit einem brot:

also brot liegt rum...
ich gehe hin
mit klick auf "aufnehmen" kommt es per positionentity BROT,0,-500,0
ziemlich weit weg von sichtbaren

dann gehe ich ins menü-> items
dort steht das ich auf slot1 ein brot habe: Richtig
aber dann befehle ich:


BlitzBasic: [AUSKLAPPEN]

For eat.nahrung = Each nahrung
If psa1$=\"Brot\" Then
psa1=\"leer\"
PositionEntity eat\obj,EntityX(cam),EntityY(cam),EntityZ(cam)
EndIf
Next

psa1=PlayerSlotAktiv1

das klappt auch das brot wird an meine position "gelegt" aber wenn ich zB noch im level ein anderes brot habe kommt dies zwar nicht dort hin es ist aber wie ein geist... nicht ansprechbar (nicht aufnehmbar) und auf der stelle wo ich mein brot abgelegt habe kommen im aufnahme menü 2 brot
...
also ist praktisch der "körper" von brot 2 an unveränderten position
aber die "seele" von brot2 ist wie brot1 bei meinen koords...

wie kann ich nur ein brot ansprechen?[/syntax]
 

Dreamora

BeitragMi, Mai 04, 2005 9:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst mittels Exit dafür sorgen, dass er nach dem Auffinden des ersten Brotes abbricht bzw. am besten suchst du erst nach Brot und prüfst dann ob es mit dem spieler kollidiert und nur DANN wirds an eine neue position gesetzt
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

onkelz89

BeitragMi, Mai 04, 2005 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
wie jetzt genau???

BlitzBasic: [AUSKLAPPEN]
If KeyHit(9) Then
idnummer=idnummer+1
eat.nahrung = New nahrung
eat\name$=\"Brot\"
eat\x#=0
eat\y#=0
eat\z#=0
eat\wert=Rand(2,90)
eat\fertig=1
eat\multi=4
eat\big=1
eat\id$=\"NA\"+idnummer
EndIf

For eat.nahrung = Each nahrung
If eat\fertig=1 Then
eat\obj=CopyEntity(kasten)
ScaleEntity eat\obj,0.4,0.2,0.2
PositionEntity eat\obj,0,25,0
eat\fertig=0
EndIf


If EntityDistance(cam,eat\obj)<2 And KeyHit(28) Then infonahrung
Next
.
.
.
If KeyHit(2) Then
For eat.nahrung = Each nahrung
If psa1$=\"Brot\" Then
psa1=\"leer\"
If eat\y#=-999 Then PositionEntity eat\obj,EntityX(cam),EntityY (cam),EntityZ(cam)
EndIf
Next
EndIf
.
.
.
;funktion
Function infonahrung();##########################################################################
For eat.nahrung = Each nahrung
ready=0
While Not ready=1
If KeyHit(1) Then ready=1
Color(0,150,220)
Rect 5,5,200,380
Color(180,150,0)
Rect 10,300,70,25
Color(col1,col2,col3)
SetFont arialb
Text 10,10,\"Info - \"+eat\name$
Text 10,350,\"Wert: \"+eat\wert+\"$ ident:\"+eat\id$
SetFont arialn
Text 700,550,\"ESC - Zurück\"
Text 15,305,\"Aufnehmen\"
Text 10,50,\"Benötigte Slots: \"+eat\big
Text 10,70,\"Freie Slots: \"+pslotfree
If MouseX()>9 And MouseX()<81 And MouseY()>299 And MouseY()<326 And MouseHit(1) Then
If psa1$=eat\name$ Then
If psaa<eat\multi Then
psaa=psaa+1 PositionEntity eat\obj,0,-999,0 Else

.change1
If psb1$=eat\name$ Then
If psba<eat\multi Then
psba=psba+1 PositionEntity eat\obj,0,-999,0 Else

.change2
If psc1$=eat\name$ Then
If psca<eat\multi Then
psca=psca+1 PositionEntity eat\obj,0,-999,0 Else

.change3
If psa1$=\"leer\" Then
psa1$=eat\name$ psaa=1 PositionEntity eat\obj,0,-999,0 Else If psb1$=\"leer\" Then
psb1$=eat\name$ psba=1 PositionEntity eat\obj,0,-999,0 Else If psc1$=\"leer\" Then
psc1$=eat\name$ psca=1 PositionEntity eat\obj,0,-999,0
EndIf
EndIf
Else Goto change3
EndIf
EndIf
Else Goto change2
EndIf
EndIf
Else Goto change1
EndIf
ready=1
EndIf
FlushKeys
Flip
Wend
Next
End Function


wo muss das exit jetzt genau hin??? ich kapier das nicht so ganz auch nicht wirklich den sinn... weil ich muss ja auf alle zugreifen können Exit ist doch in diesem fall sowas wie-> abgeschlossen der nächste bitte...

*edit*
sorry das es so verutscht aussieht aber habs halt aus dem editor kopiert (mit verschachtelungen)
 

onkelz89

BeitragDo, Mai 05, 2005 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
weiß das denn keiner von euch?
 

BurningSoul

Betreff: Brot nur den Hungrigen - nicht denen, die schon Satt sind =)

BeitragDo, Mai 05, 2005 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
wie wär's denn hiermit ? =)

BlitzBasic: [AUSKLAPPEN]
For eat.nahrung = Each nahrung
If psa1$=\"Brot\" And satt <> 1 Then
psa1=\"leer\"
PositionEntity eat\obj,EntityX(cam),EntityY(cam),EntityZ(cam)
Satt = 1
EndIf
Next


ich hab mich jetzt mal nur auf den obersten Code Schnipsel bezogen,
denn ich muß Dir gestehen,
dieser riesencode da,
durch den habe ich auf die Schnelle nicht durchgeblickt

Wie funzt das ?

ganz einfach - in dem moment wo Du was gefuttert hast,
wird eine lokale Variable - ich hab se jetzt einfach mal "Satt"
genannt, auf eins gesetzt -
und die Bedingung geändert -
es darf nur essen, wer noch nicht 'satt' ist *g

Fehleranalyse:
Dein Code ging als Schleife ALLE Brot objekte durch , nachdem nur eines davon gegessen war - logisch - wenn Du Dir den Befehl mal übersetzt :
For EACH Brot ... also JEDES Brot dieser Welt wird gegessen,
wenn nur das Item auf Slot Nummer eins ein Brot ist ....

vielleicht noch nen kleiner Tipp : Du kannst das brot auch mit
BlitzBasic: [AUSKLAPPEN]
HideEntity (Brot)


unsichtbar machen - im gegensatz zu

BlitzBasic: [AUSKLAPPEN]
EntityAlpha(Brot,0)


macht Hide auch die Kollisionsabfrage aus - Du behälst es also auf dem Spielfeld, und kannst es z.b nach einiger Zeit Respawnen lassen ...

Viel Vergnügen noch =)

P.S: Worum geht's in Deinem Spiel eigentlich ?
Ist ja mal was ganz neues - ein Spiel ohne Gewalt ? Vielleicht ist diese Welt ja doch noch zu retten Razz
 

onkelz89

BeitragDo, Mai 05, 2005 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
ok erstmal danke für die mühe Smile

aber jetzt:
hab neues prob...(altes/neues)

BlitzBasic: [AUSKLAPPEN]
;nahrungsmittel-erstellung mit TYPE
If KeyHit(9) Then
eat.nahrung = New nahrung
eat\name$=\"Brot\"
eat\x#=EntityX(cam)
eat\y#=EntityY(cam)
eat\z#=EntityZ(cam)
eat\wert=Rand(2,90)
eat\fertig=1
eat\multi=4
eat\big=1
EndIf

For eat.nahrung = Each nahrung
If eat\fertig=1 Then
eat\obj=CopyEntity(kasten)
ScaleEntity eat\obj,0.4,0.2,0.2
PositionEntity eat\obj,eat\x#,eat\y#,eat\z#
eat\fertig=0
EndIf

If EntityDistance(cam,eat\obj)<2 And KeyHit(28) Then infonahrung
Next


wenn ich jetzt "rumfliege" und 3 brote an verschieden stellen "ablege" kann ich nichtmehr die funktion:infonahrung durschlaufen


nur bei dem brot was ich als erstes erstellt habe... dann wenn ich das erste "lösche" gehts beim 2ten und erst nach löschung des 2ten gehts beim 3ten usw...

warum?


achja worum es sich im game handelt usw. werde ich demnächst bei projekte posten(ist jetzt zu lang zum erklären)
achja gewalt -> waffen usw. werden aber auch dabei sein Rolling Eyes


*EDIT*
hab den falschen code gepostet jetzt stimmts aber
 

BurningSoul

BeitragDo, Mai 05, 2005 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
werd da nicht ganz schlau draus - oben ist der neue code ,
aber modifiziert ....
es ist gar nicht nötig, dass Du die Variable dem Objekt zuordnest -
hier ist einfach nur ne lokale variable nötig,
also nicht
type\fertig sondern einfach nur
fertig - die musste dann auch nicht zurücksetzen!

vielleicht liegt der Fehler woanders ... ka!

die Idee sollte jedenfalls sein,
durch jedes Brot zu iterieren,
und bei jedem zu vergleichen ob es in der reichweite des spielers ist,
und falls es das ist , wird die fertig variable gesetzt, was diesen einen durchlauf abbricht !

sorry, habs eilig muss jetzt ma kurz weg !

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group