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
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
» Ainda temos gente aqui?
[Fix] Não perder items no Trade EmptyQui 25 Nov 2021, 14:04 por Halt

» [Dúvida] Como tirar a porcentagem de esquiva
[Fix] Não perder items no Trade EmptySex 19 Nov 2021, 17:14 por Halt

» Pokémon Genesis Online! (PGO)
[Fix] Não perder items no Trade EmptyQua 05 Jul 2017, 18:08 por Lexar

» Tileset Converter to MV
[Fix] Não perder items no Trade EmptySex 12 maio 2017, 14:07 por Douggi

» Pack Resources, Sprites e etc
[Fix] Não perder items no Trade EmptyQua 23 Dez 2015, 12:30 por raydengv

» Download RPG Maker 2003 + RTP em português
[Fix] Não perder items no Trade EmptyTer 22 Dez 2015, 11:14 por ::KimMax::

» Fantasy Art Online
[Fix] Não perder items no Trade EmptyDom 18 Out 2015, 18:42 por daviih123

» Você vai ter medo do Nerve gear?
[Fix] Não perder items no Trade EmptySáb 25 Jul 2015, 17:02 por Kirito-kun

» O Barato é louco
[Fix] Não perder items no Trade EmptySáb 27 Jun 2015, 16:26 por Halt

» Download RPG Maker 2000 + RTP em português
[Fix] Não perder items no Trade EmptyQui 21 maio 2015, 20:28 por Wismael


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

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

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

Halt

Halt
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

https://arenarpgmaker.forumeiros.com

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

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