Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker

Estamos de volta o/ ... Ou não.Eu amo a -Dark
Doações para o fórum abertas, clique aqui e saiba mais.
Últimos assuntos
» Pokémon Genesis Online! (PGO)
Qua 05 Jul 2017, 17:08 por Lexar

» Tileset Converter to MV
Sex 12 Maio 2017, 13:07 por Douggi

» [Dúvida] Como tirar a porcentagem de esquiva
Ter 09 Maio 2017, 22:15 por Neil Flame Runner

» Pack Resources, Sprites e etc
Qua 23 Dez 2015, 09:30 por raydengv

» Download RPG Maker 2003 + RTP em português
Ter 22 Dez 2015, 08:14 por ::KimMax::

» Fantasy Art Online
Dom 18 Out 2015, 16:42 por daviih123

» Você vai ter medo do Nerve gear?
Sab 25 Jul 2015, 16:02 por Kirito-kun

» O Barato é louco
Sab 27 Jun 2015, 15:26 por Halt

» Download RPG Maker 2000 + RTP em português
Qui 21 Maio 2015, 19:28 por Wismael

» Divulgando meu grupo e página do Facebook
Ter 19 Maio 2015, 13:06 por Halt


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1Tutorial [Fix] Não perder items no Trade em Qui 03 Jan 2013, 16:32

Halt

avatar
Administrador
Administrador
Valentine escreveu: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


__________________________________________

Ei Convidado, sim você mesmo! Ajude o fórum à crescer postando coisas úteis, dê sugestões para melhorar-mos e divulgue o fórum.

Step inside, see the devil in I.

Gifts-
Fantasy - Fantasy - Fantasy - ~Razor - Darkmel

Zerei a internet
Ver perfil do usuário http://arenarpgmaker.eclipserpg.com

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum