Lucas Roberto Administrador
Mensagens : 711
| Assunto: [EO] Colocando barra de HP nos NPC Sáb 11 Dez 2010, 19:50 | |
| ~Descrição~ •Como o titulo ja diz, o sistema serve para ficar visivel a barrinha de HP dos "monstros". ~Tutorial~ 1) Abra o Server.vbp, que se localiza na pasta Server. 2) Procure no modPlayer: - Código:
-
Sub AttackNpc 3) Nessa sub, procure por: - Código:
-
' NPC not dead, just do the damage MapNpc(MapNum).Npc(MapNpcNum).Vital(Vitals.HP) = MapNpc(MapNum).Npc(MapNpcNum).Vital(Vitals.HP) - Damage
' Check for a weapon and say damage SendActionMsg MapNum, "-" & Damage, BrightRed, 1, (MapNpc(MapNum).Npc(MapNpcNum).x * 32), (MapNpc(MapNum).Npc(MapNpcNum).y * 32) SendBlood GetPlayerMap(Attacker), MapNpc(MapNum).Npc(MapNpcNum).x, MapNpc(MapNum).Npc(MapNpcNum).y 4) Logo abaixo coloque: - Código:
-
SendMapNpcVitals GetPlayerMap(Attacker), MapNpcNum Parte do Server acabada! 5) Agora abra o Client.vbp, que se localiza na pasta Client. 6) No modDirectDraw7, procure por: - Código:
-
Public Sub Render_Graphics 7) Nessa sub, procure por: - Código:
-
' Npcs For I = 1 To MAX_MAP_NPCS If MapNpc(I).Y = Y Then Call BltNpc(I) End If Next [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] Substitua por: - Código:
-
' Npcs For I = 1 To MAX_MAP_NPCS ' Draw out npc hp bars Call BltNpcHP(I) If MapNpc(I).Y = Y Then Call BltNpc(I) End If Next 9) No mesmo mod, procure por: - Código:
-
Public Sub BltNpc 10) Abaixo do código coloque: - Código:
-
Public Sub BltNpcHP(ByVal Index As Long) Dim X As Long, Y As Long, Sprite As Long, NpcNum As Long
NpcNum = MapNpc(Index).Num
If NpcNum = 0 Then Exit Sub End If
' Don't display the HP if the npc is at max hp If MapNpc(Index).Vital(Vitals.HP) = Npc(NpcNum).HP Then Exit Sub End If
' Only display HP for npcs that we can attack If Npc(NpcNum).Behaviour <> NPC_BEHAVIOUR_ATTACKONSIGHT And Npc(NpcNum).Behaviour <> NPC_BEHAVIOUR_ATTACKWHENATTACKED Then Exit Sub End If
Sprite = Npc(NpcNum).Sprite
' Calculate the X coordinate to place the name X = MapNpc(Index).X * PIC_X + MapNpc(Index).XOffset
If Sprite < 1 Or Sprite > NumCharacters Then Y = MapNpc(Index).Y * PIC_Y + MapNpc(Index).YOffset - 22 Else Y = MapNpc(Index).Y * PIC_Y + MapNpc(Index).YOffset - (DDSD_Character(Sprite).lHeight) + 81 End If
' Draw the outside box Call DDS_BackBuffer.SetFillColor(RGB(0, 0, 0)) Call DDS_BackBuffer.DrawBox(ConvertMapX(X), ConvertMapY(Y), ConvertMapX(X + 32), ConvertMapY(Y + 4))
' Draw the HP Call DDS_BackBuffer.SetFillColor(RGB(0, 255, 0)) Call DDS_BackBuffer.DrawBox(ConvertMapX(X), ConvertMapY(Y), ConvertMapX(X + Int(((MapNpc(Index).Vital(Vitals.HP) / 32) / (Npc(NpcNum).HP / 32)) * 32)), ConvertMapY(Y + 4)) End Sub Tutorial acabado. Retirado de: Aldeia RPG | |
|