Advertisement
Guest User

Visual Basic 6.0 GAME BLEACH

a guest
Dec 9th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. estrutura do NPC    
  2.  
  3. Type NpcRec
  4.     Name As String
  5.     Sprite As Long
  6.     Grande As Byte
  7.     Range As Byte
  8.     Acao As Byte
  9.  
  10.     Ataque As Long
  11.     Armadura As Long
  12.    
  13.     HPLevel As Long
  14.     HPArmadura As Long
  15.     ExpLevel As Long
  16.    
  17.     LevelMin As Long
  18.     LevelMax As Long
  19.     LevelRaro As Long
  20.    
  21.     SpawnSecs As Long
  22.    
  23.     Map_min As Long
  24.     Map_max As Long
  25.     Map_x As Byte
  26.     Map_y As Byte
  27.    
  28.     ReacaoNPC(0 To MAX_CLASSES) As NPCReacaoRec
  29.     ItemNPC(1 To MAX_NPC_DROPS) As NPCEditorRec
  30.     MissaoNPC(1 To MAX_NPC_MISSAO) As NPCMissaoRec
  31. End Type
  32.  
  33. Estrutura do MapNPC
  34.  
  35. Type MapNpcRec
  36.     ID As Long
  37.     Morto As Byte
  38.     Sprite As Long
  39.     Sexo As Byte
  40.     Mapa As Long
  41.     Level As Long
  42.    
  43.     Ataque As Long
  44.     Armadura As Long
  45.    
  46.     AtualHP As Long
  47.     TotalHP As Long
  48.    
  49.     ' For server and cliente only
  50.    Target As Long
  51.     TargetType As Byte
  52.        
  53.     X As Byte
  54.     Y As Byte
  55.     Dir As Integer
  56.    
  57.     SpawnWait As Long
  58.     AttackTimer As Long
  59. End Type
  60.  
  61. Public MapNpc(1 To MAX_MAP_NPCS) As MapNpcRec
  62.  
  63.  
  64. QUANDO CARREGAVA O MAPNPC
  65.  
  66.     MapNpc(1).ID = 1   ' hollow fantasma
  67.    MapNpc(2).ID = 1   ' hollow fantasma
  68.    MapNpc(3).ID = 1   ' hollow fantasma
  69.  
  70. OS ATRIBUTOS DO NPC
  71.  
  72.     With Npc(1)
  73.         .Name = "Hollow"
  74.         .Sprite = 3
  75.         .Grande = YES
  76.         .Range = 5
  77.         .Acao = YES_MOVIMENTO
  78.    
  79.         .Ataque = 6
  80.         .Armadura = 2
  81.        
  82.         .HPLevel = 12
  83.         .HPArmadura = 7
  84.         .ExpLevel = 15
  85.        
  86.         .LevelMin = 1
  87.         .LevelMax = 3
  88.         .LevelRaro = 5
  89.        
  90.         .SpawnSecs = 30
  91.        
  92.         .Map_min = 1
  93.         .Map_max = 2
  94.         .Map_x = 0
  95.         .Map_y = 0
  96.        
  97.         .ReacaoNPC(SHINIGAMI).Tipo = INIMIGO
  98.         .ReacaoNPC(HOLLOW).Tipo = ALIADO
  99.         .ReacaoNPC(FULLBRINGER).Tipo = INIMIGO
  100.         .ReacaoNPC(QUINCY).Tipo = INIMIGO
  101.        
  102.         .ItemNPC(1).ItemNum = 0
  103.         .ItemNPC(1).ItemValue = 0
  104.         .ItemNPC(1).Chance = 0
  105.        
  106.         .MissaoNPC(1).ID = 0
  107.         .MissaoNPC(1).LevelReq = 0
  108.     End With
  109.  
  110. NO SERVIDOR
  111.  
  112. Sub SpawnMapNpc(ByVal MapNpcNum As Long)
  113.     Dim i As Long, X As Long, Y As Long
  114.     Dim NpcNum As Long, MapNum As Long
  115.     Dim Packet As String
  116.     Dim Spawned As Boolean
  117.  
  118.     ' Check for subscript out of range
  119.    If MapNpcNum < 1 Or MapNpcNum > MAX_MAP_NPCS Then Exit Sub
  120.    
  121.     Spawned = False
  122.    
  123.     NpcNum = MapNpc(MapNpcNum).ID
  124.  
  125.     If NpcNum > 0 Then
  126.        MapNpc(MapNpcNum).Morto = NO
  127.        MapNpc(MapNpcNum).Sprite = SelectSprite(NpcNum)
  128.        MapNpc(MapNpcNum).Sexo = Rand(SEX_MALE, SEX_FEMALE)
  129.        MapNpc(MapNpcNum).Mapa = Rand(Npc(NpcNum).Map_min, Npc(NpcNum).Map_max)
  130.        
  131.        ' Randomiza o level do monstro do mapa
  132.       If Not Int(Rnd * 5) = 1 Then
  133.           MapNpc(MapNpcNum).Level = Rand(Npc(NpcNum).LevelMin, Npc(NpcNum).LevelMax)
  134.        Else
  135.           MapNpc(MapNpcNum).Level = Rand(Npc(NpcNum).LevelMax, Npc(NpcNum).LevelRaro)
  136.        End If
  137.        
  138.        MapNpc(MapNpcNum).Ataque = Npc(NpcNum).Ataque
  139.        MapNpc(MapNpcNum).Armadura = Npc(NpcNum).Armadura
  140.        
  141.        MapNpc(MapNpcNum).AtualHP = GetNpcMaxhp(NpcNum, MapNpc(MapNpcNum).Level)
  142.        MapNpc(MapNpcNum).TotalHP = GetNpcMaxhp(NpcNum, MapNpc(MapNpcNum).Level)
  143.    
  144.        MapNpc(MapNpcNum).Target = 0
  145.        MapNpc(MapNpcNum).TargetType = TARGET_TYPE_NONE
  146.        
  147.        MapNpc(MapNpcNum).Dir = Int(Rnd * 4)
  148.        
  149.        ' For server spawn npc on map position
  150.       If Npc(NpcNum).Map_x = 0 And Npc(NpcNum).Map_y = 0 Then
  151.           ' Well try 100 times to randomly place the sprite
  152.          For i = 1 To 100
  153.               X = Int(Rnd * MAX_MAPX)
  154.               Y = Int(Rnd * MAX_MAPY)
  155.              
  156.               ' Check if the tile is walkable
  157.              If map(MapNpc(MapNpcNum).Mapa).Tile(X, Y).Type = TILE_TYPE_WALKABLE Then
  158.                  MapNpc(MapNpcNum).X = X
  159.                  MapNpc(MapNpcNum).Y = Y
  160.                  Spawned = True
  161.                  Exit For
  162.               End If
  163.           Next i
  164.          
  165.           ' Didn't spawn, so now we'll just try to find a free tile
  166.          If Not Spawned Then
  167.              For X = 0 To MAX_MAPX
  168.                  For Y = 0 To MAX_MAPY
  169.                      If map(MapNpc(MapNpcNum).Mapa).Tile(X, Y).Type = TILE_TYPE_WALKABLE Then
  170.                         MapNpc(MapNpcNum).X = X
  171.                         MapNpc(MapNpcNum).Y = Y
  172.                         Spawned = True
  173.                      End If
  174.                  Next Y
  175.              Next X
  176.           End If
  177.        Else
  178.           MapNpc(MapNpcNum).X = Npc(NpcNum).Map_x - 1
  179.           MapNpc(MapNpcNum).Y = Npc(NpcNum).Map_y - 1
  180.           Spawned = True
  181.        End If
  182.        
  183.        ' If we suceeded in spawning then send it to everyone
  184.       If Spawned Then
  185.           Packet = "SPAWNNPC" & SEP_CHAR
  186.           Packet = Packet & MapNpcNum & SEP_CHAR
  187.           Packet = Packet & MapNpc(MapNpcNum).ID & SEP_CHAR
  188.           Packet = Packet & MapNpc(MapNpcNum).Morto & SEP_CHAR
  189.           Packet = Packet & MapNpc(MapNpcNum).Sprite & SEP_CHAR
  190.           Packet = Packet & MapNpc(MapNpcNum).Sexo & SEP_CHAR
  191.           Packet = Packet & MapNpc(MapNpcNum).Mapa & SEP_CHAR
  192.           Packet = Packet & MapNpc(MapNpcNum).Level & SEP_CHAR
  193.           Packet = Packet & MapNpc(MapNpcNum).AtualHP & SEP_CHAR
  194.           Packet = Packet & MapNpc(MapNpcNum).TotalHP & SEP_CHAR
  195.           Packet = Packet & MapNpc(MapNpcNum).X & SEP_CHAR
  196.           Packet = Packet & MapNpc(MapNpcNum).Y & SEP_CHAR
  197.           Packet = Packet & MapNpc(MapNpcNum).Dir & SEP_CHAR
  198.           Packet = Packet & END_CHAR
  199.           Call SendDataToAll(Packet)
  200.        End If
  201.     End If
  202. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement