Alenaldo Membro
Mensagens : 38 Moeda : 104 Pontos : 4 Data de inscrição : 05/01/2013 Idade : 31 Localização : São luis MA
| Assunto: [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 | |
|