Probleme bei Map-Editor + Download
Übersicht

![]() |
WEBLinkBetreff: Probleme bei Map-Editor + Download |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
das Problem wird im Code beschrieben. Wer das Programm braucht sagt bescheid und ich werde es ihm schicken. Ich hab den Code viel beschrieben damit man sich vorstellen kann was wo passiert. Code: [AUSKLAPPEN] Graphics 800,600,0,1
map_name$ = "Demo" ; Maus mousezei = LoadImage("gfx\datagfx\mouse.bmp") mouse = LoadImage("gfx\datagfx\point.bmp") ; Editorkram kasten = LoadImage("gfx\datagfx\kasten.bmp") menue = LoadImage("gfx\datagfx\menue.bmp") full = LoadImage("gfx\datagfx\full.bmp") neu = LoadImage("gfx\datagfx\new.bmp") del = LoadImage("gfx\datagfx\del.bmp") balken = LoadImage("gfx\datagfx\balken.bmp") rechts = LoadImage("gfx\datagfx\rechts.bmp") links = LoadImage("gfx\datagfx\links.bmp") save = LoadImage("gfx\datagfx\save.bmp") laden = LoadImage("gfx\datagfx\laden.bmp") scroll = LoadImage("gfx\datagfx\scroll.bmp") anzahl2 = 1 anzahl3 = 4 anzahl2e2 = 1 anzahl3e2 = 4 ; Chipsets anzahl = 10 anzahle2 = 2 chipmax = 10000 kartexmax = 1600 karteymax = 1600 Dim Ebene1(anzahl) ; Anzahl der chips in Ebene 1 Dim Ebene2(anzahl) ; Anzahl der chips in Ebene 1 Dim Ebeseavefarbe(100000) ; Farbe des chips in der ebene VERÄNDERT Dim Ebeseavefarbee2(100000) ; Farbe des chips in der ebene VERÄNDERT Dim Ebene1a(100) Dim Ebene2a(100) Dim Ebeseavex(chipmax) Dim Ebeseavey(chipmax) Dim Ebeseavexe2(chipmax) Dim Ebeseaveye2(chipmax) Dim Anibildausein(1000) Dim kastenx(100000) Dim kasteny(100000) Dim zahl(100) Dim anianzahl(100) Dim anizahl(100) For Ebene1Chip = 1 To anzahl ; Chips werden einmal durchgegangen Ebene1a(Ebene1Chip) = LoadImage("gfx\"+Ebene1Chip+".bmp") ; Laden aller Chips Next For Ebene2Chip = 1 To 2 ; Chips werden einmal durchgegangen Ebene2a(Ebene2Chip) = LoadImage("gfx\ezwei\"+Ebene2Chip+".bmp") ; Laden aller Chips breite = ImageWidth(Ebene2a(Ebene2Chip)) zahl(Ebene2Chip) = breite / 20 xxzah = zahl(Ebene2Chip) Ebene2a(Ebene2Chip) = LoadAnimImage("gfx\ezwei\"+Ebene2Chip+".bmp",20,20,0,xxzah) MaskImage Ebene2a(Ebene2Chip),0,255,0 Next MaskImage Ebene1a(1),0,255,0 MaskImage menue,0,255,0 MaskImage mousezei,0,255,0 MaskImage kasten,0,255,0 MaskImage balken,0,255,0 MaskImage scroll,0,255,0 kasten_nor = kasten Framemax=CreateTimer(60) free=AvailVidMem()/1024 font=LoadFont ("arial",15,3) SetFont font SetBuffer BackBuffer() Repeat Cls . back1 WaitTimer (Framemax) ; Mousepositionen mx = MouseX() my = MouseY() ; Fülloption und Darstellen der Kästchen zu beginn For kasteny(fachx) = 0 To karteymax Step 20 For kastenx(fachx) = 0 To kartexmax Step 20 If fachx < kartexmax Then fachx = fachx + 1 EndIf DrawImage kasten_nor, kastenx(fachx) + sk, kasteny(fachx) + sk2 Next Next fuellart = kasten_nor If possavee2 > 0 Then For possave2e2 = 1 To possavee2 Text 110,110, ""+zahl(Ebene2paint)+","+Ebene2paint+"" If MilliSecs() > maustimer + 500 Then maustimer=MilliSecs() eb2frame =(eb2frame + 1) Mod zahl(Ebene2paint) End If DrawImage Ebene2a(Ebeseavefarbee2(possave2e2)),Ebeseavexe2(possave2e2) + sk,Ebeseaveye2(possave2e2) + sk2,eb2frame ; ACHTUNG: BESCHREIBUNG DES PROBLEMS ; So, hier ist nun das Problem, wenn man jetzt das Bild mit dem 4 Animationen setzt werden auch 4 angeziegt setzt danach das mit 3 werden bei beiden nur noch 3 angezeigt, weshalb das so ist ist ja logisch da die animationbilder nicht noch mal selber gespeichert werden. Wie mach cih das also (hab schon SOOO viel versucht ;) ) Next EndIf ; Gesetzte Chips werden gezeichnet If possave > 0 Then For possave2 = 1 To possave DrawImage Ebene1a(Ebeseavefarbe(possave2)),Ebeseavex(possave2) + sk,Ebeseavey(possave2) + sk2 ;VERÄNDERT! Next EndIf DrawImage balken,0, 480 ; UNTERE MENÜ DrawImage menue,0,400 DrawImage neu,10,410 DrawImage full,40,410 DrawImage del,70,410 DrawImage save,100,410 DrawImage laden, 130, 410 DrawImage rechts, 147, 481 DrawImage links, 41, 481 DrawImage rechts, 147, 521 DrawImage links, 41, 521 ;--------------------- If ImagesOverlap(mouse,mx,my,save,100,410) Then Text 550,410, "Karte speichern" If MouseHit(1) Then Goto Mapspeichern FlushMouse If ImagesOverlap(mouse,mx,my,laden,130,410) Then Text 550,410, "Karte laden" If MouseHit(1) Then Goto MapLaden FlushMouse ; EBENE 1 (Nicht animiert) If einmal = 0 Then anzahl4 = anzahl3 ; ganz am Anfang anzahl4 = anzahl3 somit anzahl4 = 4, es ;werden also 4 Chips angezeigt dies wird nur einmal am Anfang durchgeführt EndIf If anzahl3 >= anzahl Then nichtweiter = 1 ; Wenn anzahl3 größer sein sollte als Chips vorhanden ; sind wird anzahl3 wieder auf den höchsten Wert Anzahl verwiesen If anzahl2 <= 1 Then nichtweiter2 = 1 ; das gleiche nur diesmal wenn kleiner als 1 ist ; nächsten 4 Tiles werden angezeigt If ImagesOverlap(mouse,mx,my,rechts,147,481) Then Text 550,410, "Nächste Spalte" If nichtweiter = 0 Then If MouseHit(1) Then anzahl2 = anzahl4 + 1 ; aus z.b. chip 4 wird nun chip 5 und ist an erster Stelle anzahl3 = anzahl4 + 4 ; nächsten 4 Chips werden angezeigt nichtweiter2 = 0 If anzahl3 > (anzahl - 1) Then anzahl3 = anzahl : einmal = 1 EndIf If Not MouseHit(1) Then einmal = 0 FlushMouse EndIf EndIf EndIf ; vorherigen 4 Tiles werden angezeigt ; Das gleiche wie oben nur andersrum If ImagesOverlap(mouse,mx,my,links,41,481) Then Text 550,410, "Vorherige Spalte" If nichtweiter2 = 0 Then If MouseHit(1) Then anzahl3 = anzahl2 - 1 anzahl2 = anzahl3 - 3 nichtweiter = 0 FlushMouse EndIf EndIf EndIf ; EBENE 2 (ANIMIERT) If einmale2 = 0 Then anzahl4e2 = anzahl3e2 EndIf If anzahl3e2 >= anzahle2 Then nichtweitere2 = 1 If anzahl2e2 <= 1 Then nichtweiter2e2 = 1 ; nächsten 4 Tiles werden angezeigt If ImagesOverlap(mouse,mx,my,rechts,147,521) Then Text 550,410, "Nächste Spalte" If nichtweitere2 = 0 Then If MouseHit(1) Then anzahl2e2 = anzahl4e2 + 1 anzahl3e2 = anzahl4e2 + 4 nichtweiter2e2 = 0 If anzahl3e2 > (anzahle2 - 1) Then anzahl3e2 = anzahle2 : einmale2 = 1 ;: EndIf If Not MouseHit(1) Then einmale2 = 0 FlushMouse EndIf EndIf EndIf ; vorherigen 4 Tiles werden angezeigt If ImagesOverlap(mouse,mx,my,links,41,521) Then Text 550,410, "Vorherige Spalte" If nichtweiter2e2 = 0 Then If MouseHit(1) Then anzahl3e2 = anzahl2e2 - 1 anzahl2e2 = anzahl3e2 - 3 nichtweitere2 = 0 FlushMouse EndIf EndIf EndIf ; Ebene 1, Chips werden im menü gezeichnet ;Text 20, 440,"Ebene 1:" For Ebene1Chip = anzahl2 To anzahl3; Chips werden fürs zeichnen durchgegangen DrawImage Ebene1a(Ebene1Chip), 35 + (22 * (Ebene1Chip - anzahl2 + 1)) + cs , 480 ; Chips werden gezeichnet (nebeneinander) If ImagesOverlap(Ebene1a(Ebene1Chip),35 + (22 * (Ebene1Chip - anzahl2 + 1)) + cs, 480, mouse, mx ,my) Then Text mx,my - 20, ""+Ebene1Chip+"" If MouseHit(1) Then Ebene2Chip = 0 Ebene1paint = Ebene1Chip : push = 1 : FlushMouse EndIf If ImagesOverlap(mouse,mx,my,full,40,410) Then Text 550,410, "Karte mit Chip füllen" If MouseHit(1) Then If Ebene1paint > 0 Then Kasten_nor = Ebene1a(Ebene1paint) : FlushMouse Next For Ebene2Chip = 1 To anzahle2; Chips werden fürs zeichnen durchgegangen If MilliSecs() > maustimer + 500 Then maustimer=MilliSecs() mausframe=(mausframe + 1) Mod zahl(Ebene2Chip) End If DrawImage Ebene2a(Ebene2Chip), 35 + (22 * (Ebene2Chip - anzahl2e2 + 1)) + cs , 520, mausframe ; Chips werden gezeichnet (nebeneinander) If ImagesOverlap(Ebene2a(Ebene2Chip),35 + (22 * (Ebene2Chip - anzahl2e2 + 1)) + cs, 520, mouse, mx ,my) Then Text mx,my - 20, "Chipnummer: "+Ebene2Chip+",Animationsbilder: "+zahl(Ebene2Chip)+" If MouseHit(1) Then e = 1 :Ebene2paint = Ebene2Chip : pushe2 = 1 : FlushMouse EndIf Next If ImagesOverlap(mouse,mx,my,del,70,410) Then Text 550,410, "Letzten Chip löschen" If MouseHit(1) Then possave = possave - 1 : FlushMouse If ImagesOverlap(mouse,mx,my,neu,10,410) Then Text 550,410, "--NEU--" If MouseHit(1) Then possave = 0 kasten_nor = kasten : FlushMouse ; Scroll ;If push = 0 Then If MouseDown(2) Then If einmalm2 = 0 Then mxxz = mx myyz = my einmalm2 = 1 EndIf DrawImage scroll, mxxz, myyz If mx > mxxz Then sk = sk - 4 If mx < mxxz Then sk = sk + 4 If my > myyz Then sk2 = sk2 - 4 If my < myyz Then sk2 = sk2 + 4 Else einmalm2 = 0 EndIf ; Wenn die Maus im Menü ist darf kein Chip mehr gezeichnet werden If my > 400 Then dontpush = 1 Else dontpush = 0 EndIf ; Mausposition mit Scroll wird berechnet mmaxx = mx - sk mmaxy = my - sk2 ; Wenn die Maus über den Kartenbereich ist ; können keine Chips mehr gemalt werden If mmaxx > kartexmax Or mmaxx < 0 Then dontpush = 1 EndIf If mmaxy > karteymax Or mmaxy < 0 Then dontpush = 1 EndIf If pushe2 = 1 Then push = 0 DrawImage Ebene2a(Ebene2paint) , mx , my If dontpush = 0 Then If MouseHit(1) Then possavee2 = possavee2 + 1 Ebeseavexe2(possavee2) = mx - sk Ebeseaveye2(possavee2) = my - sk2 Ebeseavefarbee2(possavee2) = Ebene2paint;verändert! FlushMouse EndIf EndIf EndIf ; Ebene 1 Daten werden beim Druck der Maustaste gespeichert (auch Art des Chips und Anzahl) If push = 1 Then push2 = 0 DrawImage Ebene1a(Ebene1paint) , mx , my If dontpush = 0 Then If MouseHit(1) Then possave = possave + 1 Ebeseavex(possave) = mx - sk Ebeseavey(possave) = my - sk2 Ebeseavefarbe(possave) = Ebene1paint;verändert! FlushMouse EndIf EndIf EndIf ; Technische Daten ;----------------- fpscounter2 = fpscounter2 + 1 If fpstimer + 1000 < MilliSecs() Then fpscounter = fpscounter2:fpscounter2 = 0:fpstimer = MilliSecs() End If Color 255,255,255 fpsstring$ = "FPS : " + Str(fpscounter) Text 580,580,fpsstring$+" "+free+" GraKaSpeicher" Scrollwert = 800 - sk Scrollwert2 = 400 - sk2 Text 550,450,"Größe : X= "+kartexmax+" Y= "+karteymax+"" Text 550,462,"Scroll : X= "+Scrollwert+" Y= "+Scrollwert2+"" Text 550,474,"Mouse : X= "+mmaxx+" Y= "+mmaxy+"" Text 550,486,"Ges. Chips : "+dapo+"" Text 550,498,"Verbrauch : "+verbrauch+"" Text 550,520,"1 = wenig ... 10 = viel" If dapo < 50 Then verbrauch = 0 If dapo = 50 Then verbrauch = 1 If dapo = 150 Then verbrauch = 2 If dapo = 250 Then verbrauch = 3 If dapo = 400 Then verbrauch = 4 If dapo = 600 Then verbrauch = 5 If dapo = 750 Then verbrauch = 6 If dapo = 900 Then verbrauch = 7 If dapo = 1100 Then verbrauch = 8 If dapo = 1400 Then verbrauch = 9 If dapo = 2000 Then verbrauch = 10 If kartexmax > 1000 And karteymax > 1000 Then verbrauch = 5 If possave < 1 Then possave = 0 dapo = possave If MouseHit(3) Then push = 0 FlushMouse DrawImage mousezei, mx , my DrawImage mouse, mx + 3, my + 1 ;Screenshot ;---------- If KeyDown(59) Then For x=01 To 100 tmp=ReadFile("Screenshots\Screenshot"+x+".bmp") If Not tmp Then SaveBuffer(FrontBuffer(),"Screenshots\Screenshot"+x+".bmp") time = MilliSecs() Exit EndIf Next EndIf FlushMouse Flip Until KeyDown(1) End . MapLaden mapssave = ReadFile("Maps\"+map_name$+".map") fuellart = ReadLine(mapssave) kartexmax = ReadLine(mapssave) karteymax =ReadLine(mapssave) ;For possave2 = 1 To possave ;Ebeseavefarbe(possave) = ReadLine(mapssave) ;Ebene1a(Ebeseavefarbe(possave2)) = ReadLine(mapssave) ;Ebeseavey(possave2) = ReadLine(mapssave) ;Ebeseavex(possave2) = ReadLine(mapssave) ;Next CloseFile mapssave kasten_nor = fuellart Goto back1 .Mapspeichern mapssave = WriteFile("Maps\"+map_name$+".map") WriteLine mapssave,fuellart WriteLine mapssave,kartexmax WriteLine mapssave,karteymax ;For possave2 = 1 To possave ;WriteLine mapssave,Ebeseavefarbe(possave) ;WriteLine mapssave,Ebene1a(Ebeseavefarbe(possave2)) ;WriteLine mapssave,Ebeseavey(possave2) ;WriteLine mapssave,Ebeseavex(possave2) ;Next CloseFile mapssave Goto back1;: |
||
- Zuletzt bearbeitet von WEBLink am Mi, Apr 21, 2004 21:14, insgesamt einmal bearbeitet
![]() |
WEBLink |
![]() Antworten mit Zitat ![]() |
---|---|---|
Braucht´ihr noch weitere Infos? Oder ist das doch zu viel Code? | ||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist schon eine ganze Menge Code wenn man den zum ersten mal sieht, weil man ja gar keinen Bezug dazu hat. Vielleicht wärs am besten wenn Du das Problem genau beschreibst und den Codefetzen in dem Du den Fehler vermutest postest. | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
WEBLink |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If possavee2 > 0 Then For possave2e2 = 1 To possavee2 Text 110,110, ""+zahl(Ebene2paint)+","+Ebene2paint+"" If MilliSecs() > maustimer + 500 Then maustimer=MilliSecs() eb2frame =(eb2frame + 1) Mod zahl(Ebene2paint) End If DrawImage Ebene2a(Ebeseavefarbee2(possave2e2)),Ebeseavexe2(possave2e2) + sk,Ebeseaveye2(possave2e2) + sk2,eb2frame ; ACHTUNG: BESCHREIBUNG DES PROBLEMS ; So, hier ist nun das Problem, wenn man jetzt das Bild mit dem 4 Animationen setzt werden auch 4 angeziegt setzt danach das mit 3 werden bei beiden nur noch 3 angezeigt, weshalb das so ist ist ja logisch da die animationbilder nicht noch mal selber gespeichert werden. Wie mach cih das also (hab schon SOOO viel versucht ;) ) Next EndIf Das ist der Teil wo ich den Fehler vermute, steht ja auch da^^ Es soll ja nur einfach noch mal die Zahl gespeichert werden, dafür bin ich zur Zeit zu blond^^ Thanks |
||
![]() |
WEBLink |
![]() Antworten mit Zitat ![]() |
---|---|---|
Werden noch informationen benötigt? | ||
![]() |
WEBLink |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mhh, ich möchte jetzt nicht unhöflich erscheinen. Kann mir denn wirklich keiner helfen? Oder hat man eine Gruppe gegen WEBLink gegründet??? | ||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm fremde sources gucke ich mir nie an... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
WEBLink |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es sagt ja auch keiner das jeder das muss. Aber wenn mir wenigstens einer helfen würde währe ich dankbar. Wenn das aber dennoch hier überhaupt keiner macht, dann sagt mir das bitte damit ich nicht weiter rumspammen muss. | ||
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei so großen Codes braucht man eine lauffähige Version um das Problem selbst nachvollziehen zu können. Wenn das schon der komplette Code ist, solltest du noch die Grafiken zur Verfügung stellen...
Dann würde ich mir das auch mal näher ansehen(Obs was hilft steht natürlich in den Sternen ![]() |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
![]() |
WEBLink |
![]() Antworten mit Zitat ![]() |
---|---|---|
WEBLink hat Folgendes geschrieben: Code: [AUSKLAPPEN]
If possavee2 > 0 Then For possave2e2 = 1 To possavee2 Text 110,110, ""+zahl(Ebene2paint)+","+Ebene2paint+"" If MilliSecs() > maustimer + 500 Then maustimer=MilliSecs() eb2frame =(eb2frame + 1) Mod zahl(Ebene2paint) End If DrawImage Ebene2a(Ebeseavefarbee2(possave2e2)),Ebeseavexe2(possave2e2) + sk,Ebeseaveye2(possave2e2) + sk2,eb2frame ; ACHTUNG: BESCHREIBUNG DES PROBLEMS ; So, hier ist nun das Problem, wenn man jetzt das Bild mit dem 4 Animationen setzt werden auch 4 angeziegt setzt danach das mit 3 werden bei beiden nur noch 3 angezeigt, weshalb das so ist ist ja logisch da die animationbilder nicht noch mal selber gespeichert werden. Wie mach cih das also (hab schon SOOO viel versucht ;) ) Next EndIf Das ist der Teil wo ich den Fehler vermute, steht ja auch da^^ Es soll ja nur einfach noch mal die Zahl gespeichert werden, dafür bin ich zur Zeit zu blond^^ Thanks Hab doch den wichtigen Bereich rauskopiert. |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde Dir wirklich gerne helfen, werde aber aus Deinem Code absolut nicht schlau. Wenn Du etwas Webspace hast zip das ganze zusammen mit Bildern und den ganzen Zeugs. So ist das echt schwer ![]() Falls kein Webspace vorhanden ist, schicks per Email damit ichs hochladen kann. |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
WEBLink |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
das angebot lass ich mir nicht nehmen. OK, hab den Editor hochgeladen. Schnell was zur Steuerung. Linke Maustaste: Tile auswählen, Tiel setzen, Option ausführen Rechte Maustaste (Auf Karte + in eine Richtung ziehen) : Karte scrollen Mittlere Maustaste: Ausgewählten Tile zurücksetzen F1 : Screenshot Beim den derzeitigen Buttons, steht deren Beschreibung rechts auf gleicher höhe. http://weblink.art-fx.org/Editor.rar Hoffe das mir jetzt jemand helfen kann. THX |
||
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst natürlich erstmal die Animationsphasen für die animierten Chips extra abspeichern.
Wenn die Animationen synchron laufen sollen, so reicht es einen einzigen Zähler zu definieren, der alle 500 ms um eins hochzählt. Für die einzelnen Tiles musst du dann als AnimationsFrame einfach nur noch "Zähler MOD AnzFrames" angeben. Ich schicke dir den korrigierten Quellcode als PM... |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Klappts mit BigBug's Code? | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
WEBLink |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, sogar einwandfrei. Vielen Dank BIG BUG.
Ich hoffe das ich euch demnächst nicht noch mal Nerven muss. Danke nochmals. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group