InícioCalendárioFAQBuscarMembrosGruposRegistrar-seConectar-se
Os que mais criam tópicos
Sonart
 
Alenaldo
 
Over~
 
Warrior
 
Caio~
 
SSO
 
newbie123
 
Kaue
 
Jim
 
yuri godinho
 
Conectar-se
Nome de usuário:
Senha:
Conexão automática: 
:: Esqueci minha senha

Compartilhe | 
 

 [Fix] Não perder items no Trade

Ir em baixo 
AutorMensagem
Alenaldo
Membro
Membro


Mensagens : 38
Moeda : 104
Pontos : 4
Data de inscrição : 05/01/2013
Idade : 25
Localização : São luis MA

MensagemAssunto: [Fix] Não perder items no Trade   Seg Jan 14, 2013 8:19 am

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:
Código:
Sub SendDataTo(ByVal index As Long, ByRef Data() As Byte)


2 - Antes dessa linha adicione:
CÓDIGO:
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:
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:
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:
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
eu

_________________
[Você precisa estar registrado e conectado para ver esta imagem.]
Voltar ao Topo Ir em baixo
Ver perfil do usuário
 
[Fix] Não perder items no Trade
Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» Pessoas que perdem seu tempo, e nos fazem perder tempo, no Youtube
» Como mudar a versão do meu fórum sem perder as imagens e as folhas CSS
» Já possuo um fórum externo com domínio personalizado, tem como importar para Forumeiros sem perder tudo
» Seleccionar dois ou mais items numa ComboBox
» Jogo da velha

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
 :: Desenvolvimento de Jogos :: Engines :: Eclipse Origins :: Tutoriais-
Ir para: