1 Não perder item apos a troca 12/8/2012, 23:21
Warrior
Ajudante
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:
2 - Antes dessa linha adicione:
3 - No modHandleData, procure por:
4 - Embaixo de:
5 - Adicione:
Creditos:
Valentine por criar
Warrior_Maker por mostrar para vocês
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
Creditos:
Valentine por criar
Warrior_Maker por mostrar para vocês