Advertisement
Guest User

Untitled

a guest
Sep 24th, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Public Sub CargarMapa(ByVal Map As Long, ByRef MAPFl As String)
  2. '***************************************************
  3. 'Author: Unknown
  4. 'Last Modification: 10/08/2010
  5. '10/08/2010 - Pato: Implemento el clsByteBuffer y el clsIniManager para la carga de mapa
  6. '***************************************************
  7.  
  8.    On Error GoTo errh
  9.  
  10.    Dim hFile As Integer
  11.    Dim X As Long
  12.    Dim Y As Long
  13.    Dim ByFlags As Byte
  14.    Dim npcfile As String
  15.    Dim Leer As clsIniManager
  16.    Dim MapReader As clsByteBuffer
  17.    Dim InfReader As clsByteBuffer
  18.    Dim Buff() As Byte
  19.    Dim LoopC As Long
  20.  
  21.    Set MapReader = New clsByteBuffer
  22.    Set InfReader = New clsByteBuffer
  23.    Set Leer = New clsIniManager
  24.  
  25.    npcfile = DatPath & "NPCs.dat"
  26.  
  27.    hFile = FreeFile
  28.  
  29.    Open MAPFl & ".map" For Binary As #hFile
  30.    Seek hFile, 1
  31.  
  32.    If LOF(hFile) = 0 Then
  33.        Close hFile
  34.        Exit Sub
  35.    End If
  36.  
  37.    ReDim Buff(LOF(hFile) - 1) As Byte
  38.  
  39.    Get #hFile, , Buff
  40.    Close hFile
  41.  
  42.    Call MapReader.initializeReader(Buff)
  43.  
  44.    'inf
  45.     Open MAPFl & ".inf" For Binary As #hFile
  46.     Seek hFile, 1
  47.  
  48.     If LOF(hFile) = 0 Then
  49.         Close hFile
  50.         Exit Sub
  51.     End If
  52.  
  53.     ReDim Buff(LOF(hFile) - 1) As Byte
  54.  
  55.     Get #hFile, , Buff
  56.     Close hFile
  57.  
  58.     Call InfReader.initializeReader(Buff)
  59.  
  60.     'map Header
  61.    MapInfo(Map).MapVersion = MapReader.getInteger
  62.  
  63.    MiCabecera.desc = MapReader.getString(Len(MiCabecera.desc))
  64.    MiCabecera.crc = MapReader.getLong
  65.    MiCabecera.MagicWord = MapReader.getLong
  66.  
  67.    Call MapReader.getDouble
  68.  
  69.    'inf Header
  70.     Call InfReader.getDouble
  71.     Call InfReader.getInteger
  72.  
  73.     For Y = YMinMapSize To YMaxMapSize
  74.         For X = XMinMapSize To XMaxMapSize
  75.  
  76.             With MapData(Map, X, Y)
  77.                 '.map file
  78.                .trigger = MapReader.getInteger
  79.  
  80.                For LoopC = 4 To 1 Step -1
  81.                    MapReader.getInteger
  82.                    .Graphic(LoopC) = MapReader.getInteger
  83.                Next LoopC
  84.  
  85.                MapReader.getInteger
  86.                .Blocked = MapReader.getByte
  87.                MapReader.getInteger
  88.  
  89.                '.inf file
  90.                 If .TileExit.Map <> 0 Then
  91.                     InfReader.getInteger
  92.                 Else
  93.                     .TileExit.Map = InfReader.getInteger
  94.                 End If
  95.  
  96.                 If .TileExit.X <> 0 Then
  97.                     InfReader.getInteger
  98.                 Else
  99.                     .TileExit.X = InfReader.getInteger
  100.                 End If
  101.  
  102.                 If .TileExit.Y <> 0 Then
  103.                     InfReader.getInteger
  104.                 Else
  105.                     .TileExit.Y = InfReader.getInteger
  106.                 End If
  107.  
  108.                 If .TileExit.Map > 0 Then
  109.  
  110.                     If Y > MaxYBorder Then    '92
  111.                        MapData(Map, X, MaxYBorder - 1).TileExit.Map = .TileExit.Map
  112.                        MapData(Map, X, MaxYBorder - 1).TileExit.X = .TileExit.X
  113.                        MapData(Map, X, MaxYBorder - 1).TileExit.Y = IIf(.TileExit.Y < MinYBorder, MinYBorder + 2, .TileExit.Y)
  114.  
  115.                        .TileExit.Map = 0
  116.                        .TileExit.X = 0
  117.                        .TileExit.Y = 0
  118.                    End If
  119.  
  120.                    If Y < MinYBorder Then    '9
  121.                         MapData(Map, X, MinYBorder + 1).TileExit.Map = .TileExit.Map
  122.                         MapData(Map, X, MinYBorder + 1).TileExit.X = .TileExit.X
  123.                         MapData(Map, X, MinYBorder + 1).TileExit.Y = IIf(.TileExit.Y > MaxYBorder, MaxYBorder - 2, .TileExit.Y)
  124.  
  125.                         .TileExit.Map = 0
  126.                         .TileExit.X = 0
  127.                         .TileExit.Y = 0
  128.                     End If
  129.  
  130.                     If X < MinXBorder Then    '12
  131.                        MapData(Map, MinXBorder, Y).TileExit.Map = .TileExit.Map
  132.                        MapData(Map, MinXBorder, Y).TileExit.X = IIf(.TileExit.X > MaxXBorder, MaxXBorder - 1, .TileExit.X)
  133.                        MapData(Map, MinXBorder, Y).TileExit.Y = .TileExit.Y
  134.  
  135.                        .TileExit.Map = 0
  136.                        .TileExit.X = 0
  137.                        .TileExit.Y = 0
  138.                    End If
  139.  
  140.                    If X > MaxXBorder Then    '89
  141.                         MapData(Map, MaxXBorder, Y).TileExit.Map = .TileExit.Map
  142.                         MapData(Map, MaxXBorder, Y).TileExit.X = IIf(.TileExit.X < MinXBorder, MinXBorder + 1, .TileExit.X)
  143.                         MapData(Map, MaxXBorder, Y).TileExit.Y = .TileExit.Y
  144.  
  145.                         .TileExit.Map = 0
  146.                         .TileExit.X = 0
  147.                         .TileExit.Y = 0
  148.                     End If
  149.                 End If
  150.  
  151.                 .NpcIndex = InfReader.getInteger
  152.  
  153.                 If .NpcIndex > 0 Then
  154.  
  155.                     'Si el npc debe hacer respawn en la pos
  156.                    'original la guardamos
  157.                     If val(GetVar(npcfile, "NPC" & .NpcIndex, "PosOrig")) = 1 Then
  158.                         .NpcIndex = OpenNPC(.NpcIndex)
  159.                         Npclist(.NpcIndex).Orig.Map = Map
  160.                         Npclist(.NpcIndex).Orig.X = X
  161.                         Npclist(.NpcIndex).Orig.Y = Y
  162.                     Else
  163.                         .NpcIndex = OpenNPC(.NpcIndex)
  164.  
  165.                     End If
  166.  
  167.                     If .NpcIndex = 10001 Then Exit Sub
  168.  
  169.                     Npclist(.NpcIndex).pos.Map = Map
  170.                     Npclist(.NpcIndex).pos.X = X
  171.                     Npclist(.NpcIndex).pos.Y = Y
  172.  
  173.                     Call MakeNPCChar(True, 0, .NpcIndex, Map, X, Y)
  174.  
  175.                 End If
  176.  
  177.                 .ObjInfo.ObjIndex = InfReader.getInteger
  178.                 .ObjInfo.Amount = InfReader.getInteger
  179.  
  180.                 InfReader.getInteger
  181.                 InfReader.getInteger
  182.  
  183.             End With
  184.  
  185.         Next X
  186.     Next Y
  187.  
  188.     Call Leer.Initialize(MAPFl & ".dat")
  189.  
  190.     With MapInfo(Map)
  191.         .Name = Leer.GetValue("Mapa" & Map, "Name")
  192.         .Music = Leer.GetValue("Mapa" & Map, "MusicNum")
  193.         .Dueño = val(Leer.GetValue("Mapa" & Map, "Dueño"))
  194.         .StartPos.Map = val(ReadField(1, Leer.GetValue("Mapa" & Map, "StartPos"), Asc("-")))
  195.         .StartPos.X = val(ReadField(2, Leer.GetValue("Mapa" & Map, "StartPos"), Asc("-")))
  196.         .StartPos.Y = val(ReadField(3, Leer.GetValue("Mapa" & Map, "StartPos"), Asc("-")))
  197.  
  198.         .OnDeathGoTo.Map = val(ReadField(1, Leer.GetValue("Mapa" & Map, "OnDeathGoTo"), Asc("-")))
  199.         .OnDeathGoTo.X = val(ReadField(2, Leer.GetValue("Mapa" & Map, "OnDeathGoTo"), Asc("-")))
  200.         .OnDeathGoTo.Y = val(ReadField(3, Leer.GetValue("Mapa" & Map, "OnDeathGoTo"), Asc("-")))
  201.  
  202.         .MagiaSinEfecto = val(Leer.GetValue("Mapa" & Map, "MagiaSinEfecto"))
  203.         .InviSinEfecto = val(Leer.GetValue("Mapa" & Map, "InviSinEfecto"))
  204.         .ResuSinEfecto = val(Leer.GetValue("Mapa" & Map, "ResuSinEfecto"))
  205.         .OcultarSinEfecto = val(Leer.GetValue("Mapa" & Map, "OcultarSinEfecto"))
  206.         .InvocarSinEfecto = val(Leer.GetValue("Mapa" & Map, "InvocarSinEfecto"))
  207.  
  208.         .NoEncriptarMP = val(Leer.GetValue("Mapa" & Map, "NoEncriptarMP"))
  209.  
  210.         .RoboNpcsPermitido = val(Leer.GetValue("Mapa" & Map, "RoboNpcsPermitido"))
  211.  
  212.         If val(Leer.GetValue("Mapa" & Map, "Pk")) = 0 Then
  213.             .Pk = True
  214.         Else
  215.             .Pk = False
  216.  
  217.         End If
  218.  
  219.         .Terreno = TerrainStringToByte(Leer.GetValue("Mapa" & Map, "Terreno"))
  220.         .Zona = Leer.GetValue("Mapa" & Map, "Zona")
  221.         .Restringir = RestrictStringToByte(Leer.GetValue("Mapa" & Map, "Restringir"))
  222.         .BackUp = val(Leer.GetValue("Mapa" & Map, "BACKUP"))
  223.  
  224.     End With
  225.  
  226.     Set MapReader = Nothing
  227.     Set InfReader = Nothing
  228.     Set Leer = Nothing
  229.  
  230.     Erase Buff
  231.     Exit Sub
  232.  
  233. errh:
  234.     Call LogError("Error cargando mapa: " & Map & " - Pos: " & X & "," & Y & "." & Err.description)
  235.  
  236.     Set MapReader = Nothing
  237.     Set InfReader = Nothing
  238.     Set Leer = Nothing
  239.  
  240. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement