Suporte no desenvolvimento de jogos


    [Fix] Não perder itens no trade

    Valentine
    Valentine
    Administrador
    Administrador

    Medalhas : [Fix] Não perder itens no trade 94Jxv[Fix] Não perder itens no trade ZgLkiRU
    Mensagens : 5023
    Créditos : 1114
    Cash : 0

    [Fix] Não perder itens no trade Empty [Fix] Não perder itens no trade

    Mensagem por Valentine em Dom Ago 19, 2012 12:05 pm

    A capacidade de itens do inventário é de 35 itens, do trade também, mas vamos supor que você tem 32 itens no inventário e está em uma troca, se um jogador lhe oferece 4 itens ou mais na troca e você aceitar, o item que não cabe no inventário será perdido.

    Abra o servidor

    1 - No modServerTCP, procure por:
    Código:
    Sub SendDataTo(ByVal index As Long, ByRef Data() As Byte)

    2 - Antes dessa linha adicione:
    Código:
    Function IsInventoryFull(ByVal tradeTarget As Long, ByVal index As Long) As Boolean
    Dim InvEmpty As Long, TradeFull As Long, i As Long

        For i = 1 To MAX_INV
            If GetPlayerInvItemNum(tradeTarget, i) > 0 And GetPlayerInvItemNum(tradeTarget, i) <= MAX_ITEMS Then
                InvEmpty = InvEmpty + 1
            End If
        Next
            
        For i = 1 To MAX_INV
            If TempPlayer(index).TradeOffer(i).Num > 0 And TempPlayer(index).TradeOffer(i).Num <= MAX_ITEMS Then
                TradeFull = TradeFull + 1
            End If
        Next
            
        If TradeFull > (MAX_INV - InvEmpty) Then
            IsInventoryFull = True
            Exit Function
        End If
        
        IsInventoryFull = False

    End Function

    3 - No modHandleData, procure por:
    Código:
    Sub HandleAcceptTrade(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)

    4 - Embaixo de:
    Código:
            ' if not both of them accept, then exit
            If Not TempPlayer(tradeTarget).AcceptTrade Then
                SendTradeStatus index, 2
                SendTradeStatus tradeTarget, 1
                Exit Sub
            End If

    5 - Adicione:
    Código:
            ' if not have space in inventory of tradetarget
            If IsInventoryFull(tradeTarget, index) Then
                TempPlayer(index).InTrade = 0
                TempPlayer(tradeTarget).InTrade = 0
                TempPlayer(index).AcceptTrade = False
                TempPlayer(tradeTarget).AcceptTrade = False
                PlayerMsg tradeTarget, "Você não tem espaço suficiente no inventário.", BrightRed
                PlayerMsg index, GetPlayerName(tradeTarget) & " não tem espaço suficiente no inventário.", BrightRed
                SendCloseTrade index
                SendCloseTrade tradeTarget
                Exit Sub
            End If
            
            ' if not have space in inventory of index
            If IsInventoryFull(index, tradeTarget) Then
                TempPlayer(index).InTrade = 0
                TempPlayer(tradeTarget).InTrade = 0
                TempPlayer(index).AcceptTrade = False
                TempPlayer(tradeTarget).AcceptTrade = False
                PlayerMsg index, "Você não tem espaço suficiente no inventário.", BrightRed
                PlayerMsg tradeTarget, GetPlayerName(index) & " não tem espaço suficiente no inventário.", BrightRed
                SendCloseTrade index
                SendCloseTrade tradeTarget
                Exit Sub
            End If

    Créditos:
    Valentine


    Última edição por Valentine em Seg Jul 06, 2015 8:48 pm, editado 1 vez(es)


    _________________
    [Fix] Não perder itens no trade AIymW
    avatar
    adiif1
    Novato
    Novato

    Mensagens : 11
    Créditos : 0
    Cash : 0

    [Fix] Não perder itens no trade Empty Re: [Fix] Não perder itens no trade

    Mensagem por adiif1 em Seg Fev 24, 2014 10:51 am

    Why does the sub have code relating to trades?

      Data/hora atual: Ter Dez 10, 2019 5:58 am