~Client Side

Procure por :

Código:


Sub BltPlayer(ByVal Index As Long)


Troque toda a Sub por :

Código:

Sub BltPlayer(ByVal Index As Long)
Dim Anim As Byte
Dim x As Long, y As Long

    ' Only used if ever want to switch to blt rather then bltfast
    With rec_pos
        .top = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset
        .Bottom = .top + PIC_Y
        .Left = GetPlayerX(Index) * PIC_X + Player(Index).XOffset
        .Right = .Left + PIC_X
    End With
   
    ' Check for animation
    Anim = 0
    If Player(Index).Attacking = 0 Then
        Select Case GetPlayerDir(Index)
              Case DIR_UP
                  If (Player(Index).YOffset < PIC_Y / 2) Then Anim = 1
              Case DIR_DOWN
                  If (Player(Index).YOffset < PIC_Y / 2 * -1) Then Anim = 1
              Case DIR_LEFT
                  If (Player(Index).XOffset < PIC_Y / 2) Then Anim = 1
              Case DIR_RIGHT
                  If (Player(Index).XOffset < PIC_Y / 2 * -1) Then Anim = 1
        End Select
    Else
        If Player(Index).AttackTimer + 500 > GetTickCount Then
              Anim = 2
        End If
    End If
   
    ' Check to see if we want to stop making him attack
    If Player(Index).AttackTimer + 1000 < GetTickCount Then
        Player(Index).Attacking = 0
        Player(Index).AttackTimer = 0
    End If
   
    rec.Left = (GetPlayerDir(Index) * 3 + Anim) * PIC_X
    rec.Right = rec.Left + PIC_X
   
    x = GetPlayerX(Index) * PIC_X + Player(Index).XOffset
    y = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset - 4
   
    ' Check if its out of bounds because of the offset
    If y < 0 Then
        y = 0
        rec.top = rec.top + (y * -1)
    End If
   
    If GetPlayerDir(Index) = DIR_UP Then
        If Player(Index).Shield > 0 Then
              rec.top = Item(Player(Index).Shield).Pic * PIC_Y
              rec.Bottom = rec.top + PIC_Y
              Call DD_BackBuffer.BltFast(x, y, DD_ItemSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
        End If
        If Player(Index).Weapon > 0 Then
              rec.top = Item(Player(Index).Weapon).Pic * PIC_Y
              rec.Bottom = rec.top + PIC_Y
              Call DD_BackBuffer.BltFast(x, y, DD_ItemSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
        End If
    End If
   
    rec.top = GetPlayerSprite(Index) * PIC_Y
    rec.Bottom = rec.top + PIC_Y
       
    'Call DD_BackBuffer.Blt(rec_pos, DD_SpriteSurf, rec, DDBLT_WAIT Or DDBLT_KEYSRC)
    Call DD_BackBuffer.BltFast(x, y, DD_SpriteSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
   
    If Player(Index).Armor > 0 Then
        rec.top = Item(Player(Index).Armor).Pic * PIC_Y
        rec.Bottom = rec.top + PIC_Y
        Call DD_BackBuffer.BltFast(x, y, DD_ItemSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
    End If
    If Player(Index).Helmet > 0 Then
        rec.top = Item(Player(Index).Helmet).Pic * PIC_Y
        rec.Bottom = rec.top + PIC_Y
        Call DD_BackBuffer.BltFast(x, y, DD_ItemSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
    End If
    If GetPlayerDir(Index) <> DIR_UP Then
        If Player(Index).Shield > 0 Then
              rec.top = Item(Player(Index).Shield).Pic * PIC_Y
              rec.Bottom = rec.top + PIC_Y
              Call DD_BackBuffer.BltFast(x, y, DD_ItemSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
        End If
        If Player(Index).Weapon > 0 Then
              rec.top = Item(Player(Index).Weapon).Pic * PIC_Y
              rec.Bottom = rec.top + PIC_Y
              Call DD_BackBuffer.BltFast(x, y, DD_ItemSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
        End If
    End If
End Sub


Procure Por :

Código:

Type PlayerRec

Nela Adicione :

Código:

Armor As Long
    Helmet As Long
    Shield As Long
    Weapon As Long


Adicione em qualquer parte da HandleData

Código:

' ::::::::::::::::::::::::::::::::::::::::
    ' :: Index player worn equipment packet ::
    ' ::::::::::::::::::::::::::::::::::::::::
    If LCase(Parse(0)) = "itemworn" Then
        Player(Val(Parse(1))).Armor = Val(Parse(2))
        Player(Val(Parse(1))).Weapon = Val(Parse(3))
        Player(Val(Parse(1))).Helmet = Val(Parse(4))
        Player(Val(Parse(1))).Shield = Val(Parse(5))
        Exit Sub
    End If


~Servidor Side

Em qualquer modulo Adicione :

Código:

Sub SendIndexWornEquipment(ByVal Index As Long)
Dim Packet As String
Dim Armor As Long
Dim Helmet As Long
Dim Shield As Long
Dim Weapon As Long

    Armor = 0
    Helmet = 0
    Shield = 0
    Weapon = 0

    If GetPlayerArmorSlot(Index) > 0 Then Armor = GetPlayerInvItemNum(Index, GetPlayerArmorSlot(Index))
    If GetPlayerHelmetSlot(Index) > 0 Then Helmet = GetPlayerInvItemNum(Index, GetPlayerHelmetSlot(Index))
    If GetPlayerShieldSlot(Index) > 0 Then Shield = GetPlayerInvItemNum(Index, GetPlayerShieldSlot(Index))
    If GetPlayerWeaponSlot(Index) > 0 Then Weapon = GetPlayerInvItemNum(Index, GetPlayerWeaponSlot(Index))
   
    Packet = "itemworn" & SEP_CHAR & Index & SEP_CHAR & Armor & SEP_CHAR & Weapon & SEP_CHAR & Helmet & SEP_CHAR & Shield & SEP_CHAR & END_CHAR
    Call SendDataToMap(GetPlayerMap(Index), Packet)
End Sub

Sub SendIndexWornEquipmentFromMap(ByVal Index As Long)
Dim Packet As String
Dim i As Long
Dim Armor As Long
Dim Helmet As Long
Dim Shield As Long
Dim Weapon As Long
 
    For i = 1 To MAX_PLAYERS
        If IsPlaying(i) = True Then
              If GetPlayerMap(Index) = GetPlayerMap(i) Then
                  Armor = 0
                  Helmet = 0
                  Shield = 0
                  Weapon = 0
             
                  If GetPlayerArmorSlot(i) > 0 Then Armor = GetPlayerInvItemNum(i, GetPlayerArmorSlot(i))
                  If GetPlayerHelmetSlot(i) > 0 Then Helmet = GetPlayerInvItemNum(i, GetPlayerHelmetSlot(i))
                  If GetPlayerShieldSlot(i) > 0 Then Shield = GetPlayerInvItemNum(i, GetPlayerShieldSlot(i))
                  If GetPlayerWeaponSlot(i) > 0 Then Weapon = GetPlayerInvItemNum(i, GetPlayerWeaponSlot(i))
               
                  Packet = "itemworn" & SEP_CHAR & i & SEP_CHAR & Armor & SEP_CHAR & Weapon & SEP_CHAR & Helmet & SEP_CHAR & Shield & SEP_CHAR & END_CHAR
                  Call SendDataTo(Index, Packet)
              End If
        End If
    Next i
End Sub


Procure Por :

Código:

"useitem"


antes de END SUB Adicione :

Código:

' Send everyone player's equipment
        Call SendIndexWornEquipment(Index)



Procure Por :

Código:

"needmap"


Antes de Exit Sub Adicione :

Código:

' Send everyone player's equipment
    Call SendIndexWornEquipment(Index)
    Call SendIndexWornEquipmentFromMap(Index)



~Créditos : Batista