I setup breaks on the server in debug mode to tell me WHEN it was calling SendDataTo(Index, packet). Well, to my surprise, after the Next I, it was skipped. I don't even know...why? I mean, I recently changed some of the things from integers, to longs, and vice versa, so here are all of my recs and stuff with shops.
Client Side
Code:
Type TradeItemRec
GiveItem As Long
GiveValue As Long
GetItem As Long
GetValue As Long
End Type
Type ShopRec
name As String * NAME_LENGTH
JoinSay As String * 255
LeaveSay As String * 255
FixesItems As Byte
TradeItem(1 To MAX_TRADES) As TradeItemRec
End Type
Code:
' Request Trade
If LCase(Mid(MyText, 1, 6)) = "/trade" Then
Call SendData("trade" & SEP_CHAR & END_CHAR)
MyText = ""
Exit Sub
End If
Code:
Private Sub picTrade_Click()
Call SendData("trade" & SEP_CHAR & END_CHAR)
End Sub
Code:
' ::::::::::::::::::
' :: Trade packet ::
' ::::::::::::::::::
If (LCase(Parse(0)) = "trade") Then
ShopNum = Val(Parse(1))
If Val(Parse(2)) = 1 Then
frmTrade.picFixItems.Visible = True
Else
frmTrade.picFixItems.Visible = False
End If
n = 3
For I = 1 To MAX_TRADES
GiveItem = Val(Parse(n))
GiveValue = Val(Parse(n + 1))
GetItem = Val(Parse(n + 2))
GetValue = Val(Parse(n + 3))
If GiveItem > 0 And GetItem > 0 Then
frmTrade.lstTrade.AddItem "Give " & Trim(Shop(ShopNum).name) & " " & GiveValue & " " & Trim(Item(GiveItem).name) & " for " & GetValue & " " & Trim(Item(GetItem).name)
End If
n = n + 4
Next I
If frmTrade.lstTrade.ListCount > 0 Then
frmTrade.lstTrade.ListIndex = 0
End If
frmTrade.Show vbModal
Exit Sub
End If
Server SideCode:
Type TradeItemRec
GiveItem As Long
GiveValue As Long
GetItem As Long
GetValue As Long
End Type
Type ShopRec
name As String * NAME_LENGTH
JoinSay As String * 255
LeaveSay As String * 255
FixesItems As Byte
TradeItem(1 To MAX_TRADES) As TradeItemRec
End Type
Code:
' ::::::::::::::::::
' :: Trade packet ::
' ::::::::::::::::::
If LCase$(Parse(0)) = "trade" Then
If Map(GetPlayerMap(Index)).Shop > 0 Then
Call SendTrade(Index, Map(GetPlayerMap(Index)).Shop)
Else
Call PlayerMsg(Index, "There is no shop here.", BrightRed)
End If
Exit Sub
End If
Code:
Sub SendTrade(ByVal Index As Long, ByVal ShopNum As Long)
Dim Packet As String
Dim I As Long, X As Long, y As Long
Packet = "TRADE" & SEP_CHAR & Trim$(ShopNum) & SEP_CHAR & Shop(ShopNum).FixesItems & SEP_CHAR
For I = 1 To MAX_TRADES
Packet = Packet & Trim$(Shop(ShopNum).TradeItem(I).GiveItem) & SEP_CHAR & Trim$(Shop(ShopNum).TradeItem(I).GiveValue) & SEP_CHAR & Trim$(Shop(ShopNum).TradeItem(I).GetItem) & SEP_CHAR & Trim$(Shop(ShopNum).TradeItem(I).GetValue) & SEP_CHAR
' Item #
X = Trim$(Shop(ShopNum).TradeItem(I).GetItem)
If Item(X).Type = ITEM_TYPE_SPELL Then
' Spell class requirement
y = Spell(Item(X).Data1).ClassReq
If y = 0 Then
Call PlayerMsg(Index, Trim$(Item(X).name) & " can be used by all classes.", Yellow)
Else
Call PlayerMsg(Index, Trim$(Item(X).name) & " can only be used by a " & GetClassName(y - 1) & ".", Yellow)
End If
End If
Next I
Packet = Packet & END_CHAR
Call SendDataTo(Index, Packet)
End Sub
So, the last line here, SendDataTo(Index, Packet) Isn't even being activated, for an unknown reason. Sorry for the code repeat, just here for quick reference.