RPG: Von Map zu Map

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Mashed Crashed

Betreff: RPG: Von Map zu Map

BeitragMo, März 05, 2007 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Moinmoin,
Ich bin dabei ein RPG zumachen, und ich weiß auch was ich da vor mir hab. Nun gut, ich habe Maps(64*64 Felder (32 Pixel Tiles)). da ich erst nicht wusste wie ich das nun mache, wie ich von einer Map zu anderen kommen habe ich beschlossen das durch Portale zumachen. Dummer oder kluger Weise wollte ich die Maps so gestalten und mit Infos verpacken das ich am Ende nur per Editor den Rest machen kann.

kommen wir zu meinem Problem,
Meine Mapdateien sehen wie folgt aus

Code: [AUSKLAPPEN]

64x64 (4096) Zeilen für die Tiles auf der Map
Anzahl der Portale (max 4)
X-position an der der Charackter erscheienn soll
X-position an der der Charackter erscheienn soll
Pfad der neuzuladenen Map
Pfad des neuzuladenen NPC-Scriptes


Um die Identität eines Tores zubekommen habe ich 4 "verschiedene" Tiles benutzt (unteerscheiden sich lediglich an der Zahl auf der map.

Code: [AUSKLAPPEN]

Dim newmap_x (4)
Dim newmap_y (4)
Dim newmappfad$ (4)
Dim newnpc_sc$ (4)

.newmap

If newmap_go > 0 Then
   datei = ReadFile("maps npcs\"+newmappfad$(newmap_go)) ; Mapladen
EndIf


For X = 0 To 63
 For Y = 0 To 63
  map(X,Y) = ReadLine(datei)         ;Mapdatei ind en Speicherschreiben
 Next
Next


 portal_anzahl = ReadLine(datei)  ; Anzahl der Portale lesen
 For I = 1 To portal_anzahl
 newmap_x(I) = ReadLine(datei)   ; Nächsten 4 mögliche X position lesen
 newmap_y(I) = ReadLine(datei)   ; Nächsten 4 mögliche  Y position lesen
 newmappfad$(I) = ReadLine(datei) ; Nächste 4 mögliche Mappfade lesen
 newnpc_sc$(I) = ReadLine(datei) ; Nächsten 4 mögliche Scriptpfade lesen
 Next

CloseFile(datei)                              ; Leveldatei schließen

If newmap_go > 0 Then
 px = newmap_x(newmap_go)      ; Neue X position setzten
 py = newmap_y(newmap_go)      ; Neue Y position setzten
 player_x = px*32                          ; Genaue X position setzten
 player_y = py*32                          ; genaue Y position setzten
 move = 0                                       ; Bewegung auf 0 setzten
 temp_move = 1                             ; Blick nach oben setzten
 newmap_go = 0                            ; Newumap variable auf 0 setzten
EndIf

;;; Hauptschleife

...

;;; Kollision mit dem Tor prüfen + Map zeichnen

For X = 0 To 63
 For Y = 0 To 63
  DrawImage tiles,X*32-scroll_x,Y*32-scroll_y,map(X,Y) 

  If map(X,Y) = 16 Then     ;PORTAL 1
   If X+1 = px And Y = py And temp_move = 3 Then
    newmap_go = 1
    Goto newmap
   EndIf
  EndIf
  If map(X,Y) = 20 Then     ;PORTAL 2
   If X+1 = px And Y = py And temp_move = 3 Then
    newmap_go = 2
    Goto newmap
   EndIf
  EndIf
  If map(X,Y) = 21 Then     ;PORTAL 3
   If X+1 = px And Y = py And temp_move = 3 Then
    newmap_go = 3
    Goto newmap
   EndIf
  EndIf
  If map(X,Y) = 22 Then     ;PORTAL 4
   If X+1 = px And Y = py And temp_move = 3 Then
    newmap_go = 4
    Goto newmap
   EndIf
  EndIf
 Next       
Next



Erklärung: also mit newmap_go überliefert die Tor ID vond er Map um zuwissen welche Map als nächstes geladen werden muss. Die variable datei ist die Leveldatei.Ihr habt es wohl auch richtig gesehen das man nur von links in das Tor gehen kann Wink Und temp_move ist die Richtung inder der Charackter schaut (3 = links).

Mein Frage: warum kann ich pro Map nur einen Startpunkt setzten. Ich hab 3 Maps. 2 Haben einen Startpunkt, die andere hat 2, doch auf der mit 2 Startpunkten komm ich immer auf einen Punkt, egal von welcher Map ich komme. Ich hoffe ihr wisst wo mein Fehler liegt oder kennt eine einfachere Möglichkeit sowas zumachen.

Danke

EDIT: Sorry für den net ganz so ordentlichen Code, achja , es soll kein MMORPG werden Wink für die das immer behaupten das jeder immer gleich ein MMO machen will Wink

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group