Correção - Dropamento do item Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Correção - Dropamento do item

Ir para baixo

Correção - Dropamento do item Empty Correção - Dropamento do item

Mensagem por Ricardo Sáb Jun 23, 2012 10:24 am

Descrição

Após dropar algum item, ele só será visivel para você e não para os outros jogadores, apenas depois de um certo tempo os outros jogadores poderão ver o item dropado.

Client~Side

modDirectDraw7

Procure por:

Código:
    ' if it's not us then don't render
    If MapItem(itemnum).playerName <> vbNullString Then
        If MapItem(itemnum).playerName <> Trim$(GetPlayerName(MyIndex)) Then Exit Sub
    End If

Apague

modHandleData

Procure por:

Código:
            .playerName = Buffer.ReadString

Apague

Procure por:

Código:
        .playerName = Buffer.ReadString

Apague

Server~Side

modDataBase

Mude a Sub ClearMapItem para:

Código:
Sub ClearMapItem(ByVal index As Long, ByVal mapNum As Long)
    Call ZeroMemory(ByVal VarPtr(MapItem(mapNum, index)), LenB(MapItem(mapNum, index)))
    MapItem(mapNum, index).Num = 0
    MapItem(mapNum, index).Value = 0
    MapItem(mapNum, index).x = 0
    MapItem(mapNum, index).y = 0
    MapItem(mapNum, index).canDespawn = False
    MapItem(mapNum, index).despawnTimer = 0
End Sub

modGameLogic

Procure por:

Código:
            MapItem(mapNum, i).playerName = playerName
            MapItem(mapNum, i).playerTimer = GetTickCount + ITEM_SPAWN_TIME

Apague

modServerTcp

Procure por:

Código:
        Buffer.WriteString MapItem(mapNum, i).playerName

Apague

Procure por:

Código:
        Buffer.WriteString MapItem(mapNum, i).playerName

Apague

Procure por:

Código:
    Buffer.WriteString MapItem(mapNum, index).playerName

modServerLoop

Procure por:

Código:
        ' items appearing to everyone
        For i = 1 To MAX_MAP_ITEMS
            If MapItem(mapNum, i).Num > 0 Then
                If MapItem(mapNum, i).playerName <> vbNullString Then
                    ' make item public?
                    If MapItem(mapNum, i).playerTimer < GetTickCount Then
                        ' make it public
                        MapItem(mapNum, i).playerName = vbNullString
                        MapItem(mapNum, i).playerTimer = 0
                        ' send updates to everyone
                        SendMapItemsToAll mapNum
                    End If
                    ' despawn item?
                    If MapItem(mapNum, i).canDespawn Then
                        If MapItem(mapNum, i).despawnTimer < GetTickCount Then
                            ' despawn it
                            ClearMapItem i, mapNum
                            ' send updates to everyone
                            SendMapItemsToAll mapNum
                        End If
                    End If
                End If
            End If
        Next

Mude para:

Código:
        ' items appearing to everyone
        For i = 1 To MAX_MAP_ITEMS
            If MapItem(mapNum, i).Num > 0 Then
                ' despawn item?
                If MapItem(mapNum, i).canDespawn Then
                    If MapItem(mapNum, i).despawnTimer < GetTickCount Then
                        ' despawn it
                        ClearMapItem i, mapNum
                        ' send updates to everyone
                        SendMapItemsToAll mapNum
                    End If
                End If
            End If
        Next

modPlayer

Apague a Function CanPlayerPickupItem.

Procure por:

Código:
                MapItem(GetPlayerMap(index), i).playerName = Trim$(GetPlayerName(index))
                MapItem(GetPlayerMap(index), i).playerTimer = GetTickCount + ITEM_SPAWN_TIME

Apague

Mude a Sub PlayerMapGetItem para:

Código:
Sub PlayerMapGetItem(ByVal index As Long)
    Dim i As Long
    Dim n As Long
    Dim mapNum As Long
    Dim Msg As String

    If Not IsPlaying(index) Then Exit Sub
    mapNum = GetPlayerMap(index)

    For i = 1 To MAX_MAP_ITEMS
        ' See if theres even an item here
        If (MapItem(mapNum, i).Num > 0) And (MapItem(mapNum, i).Num <= MAX_ITEMS) Then
            ' Check if item is at the same location as the player
            If (MapItem(mapNum, i).x = GetPlayerX(index)) Then
                If (MapItem(mapNum, i).y = GetPlayerY(index)) Then
                    ' Find open slot
                    n = FindOpenInvSlot(index, MapItem(mapNum, i).Num)
   
                    ' Open slot available?
                    If n <> 0 Then
                        ' Set item in players inventor
                        Call SetPlayerInvItemNum(index, n, MapItem(mapNum, i).Num)
   
                        If Item(GetPlayerInvItemNum(index, n)).Type = ITEM_TYPE_CURRENCY Then
                            Call SetPlayerInvItemValue(index, n, GetPlayerInvItemValue(index, n) + MapItem(mapNum, i).Value)
                            Msg = MapItem(mapNum, i).Value & " " & Trim$(Item(GetPlayerInvItemNum(index, n)).Name)
                        Else
                            Call SetPlayerInvItemValue(index, n, 0)
                            Msg = Trim$(Item(GetPlayerInvItemNum(index, n)).Name)
                        End If
   
                        ' Erase item from the map
                        ClearMapItem i, mapNum
                           
                        Call SendInventoryUpdate(index, n)
                        Call SpawnItemSlot(i, 0, 0, GetPlayerMap(index), 0, 0)
                        SendActionMsg GetPlayerMap(index), Msg, White, 1, (GetPlayerX(index) * 32), (GetPlayerY(index) * 32)
                        Call CheckTasks(index, QUEST_TYPE_GOGATHER, GetItemNum(Trim$(Item(GetPlayerInvItemNum(index, n)).Name)))
                        Exit For
                    Else
                        Call PlayerMsg(index, "Your inventory is full.", BrightRed)
                        Exit For
                    End If
                End If
            End If
        End If
    Next
End Sub

modTypes

Mude a Type MapItemRec para:

Código:
Private Type MapItemRec
    Num As Long
    Value As Long
    x As Byte
    y As Byte
    ' despawn
    canDespawn As Boolean
    despawnTimer As Long
End Type

Créditos

Ricardo
Ricardo
Ricardo
Ocasional
Ocasional

Mensagens : 162
Créditos : 71

Ficha do personagem
Nível: 1
Experiência:
Correção - Dropamento do item Left_bar_bleue0/0Correção - Dropamento do item Empty_bar_bleue  (0/0)
Vida:
Correção - Dropamento do item Left_bar_bleue30/30Correção - Dropamento do item Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos