Type Item aus Inventar nehmen
Übersicht

AffenmannBetreff: Type Item aus Inventar nehmen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
OK
Mache ich jetzt Vielen Dank ![]() |
||
Affenmann |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So ich habs geschafft.... ![]() 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 ? |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group