Type Item aus Inventar nehmen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Affenmann

Betreff: Type Item aus Inventar nehmen

BeitragSa, Aug 05, 2006 11:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Habe ein Inventar gebaut und hat alles auch Wunderbar geklappt.. Man konnte Items aufheben und auch wieder fallen lassen.
Nachdem ich weiter Programmiert habe, habe ich gemerkt dass man die Items nur noch fallen lassen kann wenn schon irgentwo ein Item liegt.
Habe eigentlich nix an dem Inventar weiter verändert also ka warum das nicht mehr funktioniert ;/

Code: [AUSKLAPPEN]

Type Item
Field Name$
Field Locx
Field Locy
Field Typ$
Field Schaden
Field Geschwindigkeit
Field Deletetimer1
Field Deletetimer2
Field Dropchance
End Type

Dim Inventar$(6,4)
For I=1 To 6
Inventar$(I,1)="Leer"
Next

For Item.Item = Each item
If KeyDown(18) And ImagesOverlap(Mainchar,Spieler\Locx,Spieler\Locy,Schwert,Item\Locx,Item\Locy) And Item\Typ<>"Tränke" And Item\Typ<>"Gold" Then

If Inventar(1,1)="Leer" Then
Inventar(1,1)=Item\Name
Inventar(1,2)=Item\Typ
Inventar(1,3)=Item\Schaden
Inventar(1,4)=Item\Geschwindigkeit
Delete Item
endif
Next

For Item.Item = Each Item
If Inventar$(1,1)<>"Leer" And KeyDown(2) Then
Item.Item = New Item
Item\Name=Inventar(1,1)
Item\Typ=Inventar(1,2)
Item\Schaden=Inventar(1,3)
Item\Geschwindigkeit=Inventar(1,4)
Item\Locx= Spieler\Locx
Item\Locy= Spieler\Locy
item\Deletetimer2=MilliSecs()

Inventar(1,1)="Leer"
Inventar(1,2)=""
Inventar(1,3)=""
Inventar(1,4)=""
endif
next

For Item.Item = Each Item
If KeyDown(18) And ImagesOverlap(Mainchar,Spieler\Locx,Spieler\Locy,Schwert,Item\Locx,Item\Locy) And Item\Typ="Tränke" Then
If Item\Name="Heiltrank" Then
Spieler\Heiltrank=Spieler\Heiltrank+1
Delete Item
EndIf
EndIf
Next


For Item.Item = Each item
If KeyDown(18) And ImagesOverlap(Mainchar,Spieler\Locx,Spieler\Locy,Schwert,Item\Locx,Item\Locy) And Item\Typ="Gold" Then
Spieler\Gold=Spieler\Gold+Item\Schaden
Delete Item
EndIf 
Next

For Item.Item = Each Item
If Item\Deletetimer2+50000<Item\Deletetimer1 Then Delete Item
Next

For Item.Item = Each Item
If Item\Typ="Schwert" Then DrawImage Schwert,Item\Locx-scrollx,Item\Locy-scrolly
If Item\Typ="Tränke" Then DrawImage Heiltrank,Item\Locx-scrollx,Item\Locy-scrolly
If Item\Typ="Gold" Then DrawImage Gold,Item\Locx-scrollx,Item\Locy-scrolly
If ImagesOverlap(Mainchar,Spieler\Locx,Spieler\Locy,Schwert,Item\Locx,Item\Locy) Then
Text 100,140,"Name:"+Item\Name
Text 100,150,"Typ:"+Item\Typ
If Item\Typ="Gold" Then Text 100,160,"Anzahl:"+Item\Schaden Else Text 100,160,"Schaden:"
Text 100,170,"Geschwindigkeit:"+Item\Geschwindigkeit
EndIf
Next


If KeyHit(23) Then
Spieler\Inventarmenu=-Spieler\Inventarmenu
Spieler\Charaktermenu=-1
Spieler\Skillmenu=-1
EndIf

If Spieler\Inventarmenu=1 Then
Text 70,50,Inventar(1,1)
Text 70,60,Inventar(1,2)
;Text 70,70,"Schaden: "+Inventar(1,3)
;Text 70,80,"Gesch: "+Inventar(1,4)
endif


So das hat alles in meinen Code mit dem Inventar zu tun
Ziehmlich viele For Next schleifen inzwischen^^

Normalerweise ist das alles für 1-6 im Inventar... Hab aber mal nur für 1 geschrieben sonst wäre der Text zulang^^

garret

BeitragSa, Aug 05, 2006 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast 5 (!) For Item.item = Each Item-Schleifen. Die kannst du zu einer zusammenfassen. Außerdem ist zweimal die Abfrage If Keydown(18) drin.

Ich weiß zwar noch nicht, wo der Fehler liegt, aber wenn du alles zusammenfässt, ist der gesamte Code übersichtlicher. Dann können dir andere besser helfen. Vielleicht erkennst du den Fehler ja auch gleich selbst?

Und das hier könntest du in eine Funktion auslagern:
Zitat:

Item.Item = New Item
Item\Name=Inventar(1,1)
Item\Typ=Inventar(1,2)
Item\Schaden=Inventar(1,3)
Item\Geschwindigkeit=Inventar(1,4)
Item\Locx= Spieler\Locx
Item\Locy= Spieler\Locy
item\Deletetimer2=MilliSecs()


Erstell einfach eine Funktion, z.B. CreateItem(name$,typ%, etc.) dir die Items erstellt, dann sparst du dir später viel Schreibarbeit.


MfG garret
 

Affenmann

BeitragSa, Aug 05, 2006 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
OK
Mache ich jetzt
Vielen Dank Wink
 

Affenmann

BeitragSa, Aug 05, 2006 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
So konnte grad doch noch nicht aber nun habe ich versucht alles in eine For Next schleife zu bekommen... Doch noch bekomme ich die Fehler Meldung
Objekt does not exist ... Wenn ich wieder For Next für den Code alleine schreibe dann klappt es : /

EDIT: Ah ok
Hatte nen Endif zufrüh... ;P

Aber Items fallen lassen klappt immer noch nicht ; (

garret

BeitragSo, Aug 06, 2006 0:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann bearbeite deinen ersten Beitrag doch einfach und füge dort den aktuellen Code ein.

MfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)
 

Affenmann

BeitragSo, Aug 06, 2006 15:00
Antworten mit Zitat
Benutzer-Profile anzeigen
So ich habs geschafft.... Cool

Es fehlte ein
Code: [AUSKLAPPEN]

Global Item.Item = New Item



Wie is das eigentlich mit den For Next Schleifen ?

Kostet das viel Rechenleistung wenn ich mehrere For Next schleifen habe ?

BladeRunner

Moderator

BeitragSo, Aug 06, 2006 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Stell Dir vor Du willst In 500 Ordnern eine Adresse eintragen.
Was ist schneller :
Ordner nehmen, Name schreiben, odner zuklappen. Nächsten Ordner nehmen, Name ...
Dann Ordner nehmen, Strasse schreiben, Ordner zuklappen...

ODER:

Ordner nehmen, Adresse komplett eintragen, Ordner zuklappen.


---> das Ganze Ordner nehmen und zuklappen summiert sich zu einer Riesenzeit.

Daher immer soviel wie möglich auf einmal erledigen lassen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

garret

BeitragSo, Aug 06, 2006 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder plastischer: Du willst zehn Farbeimer von A nach B tragen. Entweder trägst du immer einen Eimer und läufst zehnmal, oder du trägst alle und läufst einmal.

MfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)
 

Affenmann

BeitragSo, Aug 06, 2006 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok danke für die erklärung^^

Nun hab ich alles in eine For Next schleife gemacht.. nun klappt das wieder nich ... ich dreh noch durch^^ ich poste morgen mal die for next schleifen ; P
Vielleicht findet ja wer nen fehler ;P

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group