MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!

Participe do fórum, é rápido e fácil

MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!
MMORPG Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[Correção] Não perder items no Trade

+2
Sαkurαy
Valentine
6 participantes

Ir para baixo

[Correção] Não perder items no Trade Empty [Correção] Não perder items no Trade

Mensagem por Valentine Sáb 04 Ago 2012, 21:32

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
avatar
Valentine
Membro de Honra
Membro de Honra

Mensagens : 472

http://www.aldeiarpgbr.com

Ir para o topo Ir para baixo

[Correção] Não perder items no Trade Empty Re: [Correção] Não perder items no Trade

Mensagem por Sαkurαy Sáb 04 Ago 2012, 21:47

Muito bom Marlos, quase nunca mechi muito no trade, mais valeu pela correção.
+1 Crédito.
Sαkurαy
Sαkurαy
Membro Veterano
Membro Veterano

Mensagens : 1386

Ir para o topo Ir para baixo

[Correção] Não perder items no Trade Empty Re: [Correção] Não perder items no Trade

Mensagem por Ryukaza Dom 05 Ago 2012, 06:17

Mas então Marlos,se esse item não será perdido,pra onde ele irá ?
Ryukaza
Ryukaza
Membro Junior
Membro Junior

Mensagens : 81

Ir para o topo Ir para baixo

[Correção] Não perder items no Trade Empty Re: [Correção] Não perder items no Trade

Mensagem por willunited Dom 05 Ago 2012, 13:04

Ele rejeita trade.
willunited
willunited
Membro
Membro

Mensagens : 227

Ir para o topo Ir para baixo

[Correção] Não perder items no Trade Empty Re: [Correção] Não perder items no Trade

Mensagem por Valentine Dom 05 Ago 2012, 18:22

Ryukaza escreveu:Mas então Marlos,se esse item não será perdido,pra onde ele irá ?
Vai aparecer a mensagem:
Fulano não tem espaço suficiente no inventário.
E então a troca é cancelada.
avatar
Valentine
Membro de Honra
Membro de Honra

Mensagens : 472

http://www.aldeiarpgbr.com

Ir para o topo Ir para baixo

[Correção] Não perder items no Trade Empty Re: [Correção] Não perder items no Trade

Mensagem por preuu Sáb 11 Ago 2012, 07:33

Não entendi essa parte,

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
Essa parte é pra adicionar antes dessa?

Sub SendDataTo(ByVal index As Long, ByRef Data() As Byte)

Ficando assim?

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

Sub SendDataTo(ByVal index As Long, ByRef Data() As Byte)
preuu
preuu
Membro Junior
Membro Junior

Mensagens : 50

Ir para o topo Ir para baixo

[Correção] Não perder items no Trade Empty Re: [Correção] Não perder items no Trade

Mensagem por Wellington Cortez Sáb 11 Ago 2012, 07:42

Valentine vou tentar fazer isso aqui,mas pode me responder uma pergunta?para salvar é só ir em File ir no negocio la substituir pelo outro e salvar?
Wellington Cortez
Wellington Cortez
Membro Junior
Membro Junior

Mensagens : 96

Ir para o topo Ir para baixo

[Correção] Não perder items no Trade Empty Re: [Correção] Não perder items no Trade

Mensagem por Valentine Seg 13 Ago 2012, 11:31

Por favor não destruam meu tópico com esse tipo de perguntas...
avatar
Valentine
Membro de Honra
Membro de Honra

Mensagens : 472

http://www.aldeiarpgbr.com

Ir para o topo Ir para baixo

[Correção] Não perder items no Trade Empty Re: [Correção] Não perder items no Trade

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


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