[Fix] Não perder itens no trade 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.

[Fix] Não perder itens no trade

2 participantes

Ir para baixo

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

Mensagem por Valentine 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)
Valentine
Valentine
Administrador
Administrador

Medalhas : [Fix] Não perder itens no trade ZgLkiRU
Mensagens : 5345
Créditos : 1164

https://www.aldeiarpg.com/

Kotol gosta desta mensagem

Ir para o topo Ir para baixo

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

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

Why does the sub have code relating to trades?

adiif1
Novato
Novato

Mensagens : 11
Créditos : 0

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